Browse Source

Merge branch 'main' into task/migrate-eslint-configuration-to-flat-config-without-flatcompat

pull/7938/head
David Requeno 11 hours ago
committed by GitHub
parent
commit
458ffba9cb
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 28
      CHANGELOG.md
  2. 2
      README.md
  3. 2
      apps/api/src/app/auth-device/auth-device.controller.ts
  4. 2
      apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts
  5. 2
      apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts
  6. 2
      apps/api/src/app/endpoints/market-data/market-data.controller.ts
  7. 105
      apps/api/src/app/endpoints/mcp/mcp.controller.spec.ts
  8. 8
      apps/api/src/app/endpoints/mcp/mcp.controller.ts
  9. 4
      apps/api/src/app/endpoints/mcp/mcp.module.ts
  10. 2
      apps/api/src/app/endpoints/tags/tags.controller.ts
  11. 2
      apps/api/src/app/endpoints/watchlist/watchlist.controller.ts
  12. 2
      apps/api/src/app/endpoints/watchlist/watchlist.service.ts
  13. 15
      apps/api/src/app/logo/logo.controller.ts
  14. 125
      apps/api/src/app/portfolio/calculator/portfolio-calculator.ts
  15. 6
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts
  16. 6
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts
  17. 6
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts
  18. 362
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-fee-and-dividend.spec.ts
  19. 6
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts
  20. 6
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts
  21. 50
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts
  22. 1
      apps/api/src/app/portfolio/interfaces/accumulated-values.interface.ts
  23. 9
      apps/api/src/app/portfolio/portfolio.controller.ts
  24. 198
      apps/api/src/app/portfolio/portfolio.service.spec.ts
  25. 136
      apps/api/src/app/portfolio/portfolio.service.ts
  26. 1
      apps/api/src/app/portfolio/types/performance-percentages.type.ts
  27. 38
      apps/api/src/assets/cryptocurrencies/cryptocurrencies.json
  28. 11
      apps/api/src/decorators/requires-scope-of-access.decorator.ts
  29. 8
      apps/api/src/guards/access.guard.ts
  30. 31
      apps/api/src/helper/bearer-token.helper.spec.ts
  31. 29
      apps/api/src/helper/bearer-token.helper.ts
  32. 38
      apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
  33. 4
      apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts
  34. 2
      apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html
  35. 40
      apps/client/src/app/pages/portfolio/analysis/analysis-page.html
  36. 162
      apps/client/src/locales/messages.ca.xlf
  37. 102
      apps/client/src/locales/messages.de.xlf
  38. 102
      apps/client/src/locales/messages.es.xlf
  39. 102
      apps/client/src/locales/messages.fr.xlf
  40. 102
      apps/client/src/locales/messages.it.xlf
  41. 102
      apps/client/src/locales/messages.ja.xlf
  42. 102
      apps/client/src/locales/messages.ko.xlf
  43. 102
      apps/client/src/locales/messages.nl.xlf
  44. 102
      apps/client/src/locales/messages.pl.xlf
  45. 102
      apps/client/src/locales/messages.pt.xlf
  46. 102
      apps/client/src/locales/messages.tr.xlf
  47. 102
      apps/client/src/locales/messages.uk.xlf
  48. 99
      apps/client/src/locales/messages.xlf
  49. 102
      apps/client/src/locales/messages.zh.xlf
  50. 2
      libs/common/src/lib/interfaces/historical-data-item.interface.ts
  51. 2
      libs/common/src/lib/interfaces/portfolio-performance.interface.ts
  52. 1
      libs/common/src/lib/interfaces/portfolio-summary.interface.ts
  53. 1
      libs/common/src/lib/interfaces/product.interface.ts
  54. 1407
      libs/common/src/lib/personal-finance-tools.ts
  55. 1
      libs/common/src/lib/types/product-category.type.ts
  56. 16
      libs/ui/src/lib/accounts-table/accounts-table.component.html
  57. 1
      libs/ui/src/lib/i18n.ts
  58. 84
      package-lock.json
  59. 4
      package.json

28
CHANGELOG.md

@ -5,14 +5,40 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
## 3.74.0 - 2026-09-27
### Added
- Added the dividend performance to the analysis page (experimental)
### Changed
- Migrated the _ESLint_ configuration to the flat config format without `FlatCompat`
- Simplified the portfolio summary by hiding the currency on mobile
- Improved the performance of the logo endpoints by enabling the browser cache
- Improved the language localization for Catalan (`ca`)
- Improved the language localization for German (`de`)
### Fixed
- Fixed the wrapping of the name column in the accounts table component on mobile
- Fixed the sorting of the watchlist for asset profiles without a name
## 3.73.0 - 2026-09-26
### Changed
- Improved the server of the Model Context Protocol (MCP) to list only the tools covered by the scopes of the access (experimental)
- Refreshed the cryptocurrencies list
- Improved the language localization for Catalan (`ca`)
- Upgraded `@rekog/mcp-nest` from version `2.0.2` to `2.0.7`
- Upgraded `bull-board` from version `9.9.0` to `9.10.1`
- Upgraded `zod` from version `4.5.4` to `4.6.5`
### Fixed
- Fixed the value of the holdings excluded from analysis in the portfolio summary
## 3.72.0 - 2026-09-20
### Added

2
README.md

@ -173,7 +173,7 @@ docker compose -f docker/docker-compose.build.yml up -d
### Home Server Systems (Community)
Ghostfolio is available for various home server systems, including [CasaOS](https://github.com/bigbeartechworld/big-bear-casaos), [Home Assistant](https://github.com/lildude/ha-addon-ghostfolio), [Runtipi](https://www.runtipi.io/docs/apps-available), [TrueCharts](https://truecharts.org/charts/stable/ghostfolio), [Umbrel](https://apps.umbrel.com/app/ghostfolio), and [Unraid](https://unraid.net/community/apps?q=ghostfolio).
Ghostfolio is available for various home server systems, including [CasaOS](https://github.com/bigbeartechworld/big-bear-casaos), [Easypanel](https://easypanel.io/templates/ghostfolio), [Home Assistant](https://github.com/lildude/ha-addon-ghostfolio), [Runtipi](https://www.runtipi.io/docs/apps-available), [TrueCharts](https://truecharts.org/charts/stable/ghostfolio), [Umbrel](https://apps.umbrel.com/app/ghostfolio), and [Unraid](https://unraid.net/community/apps?q=ghostfolio).
## Development

2
apps/api/src/app/auth-device/auth-device.controller.ts

@ -3,7 +3,7 @@ import { AllowDuringImpersonation } from '@ghostfolio/api/decorators/allow-durin
import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator';
import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard';
import { permissions } from '@ghostfolio/common/permissions';
import { RequestWithUser } from '@ghostfolio/common/types';
import type { RequestWithUser } from '@ghostfolio/common/types';
import {
Controller,

2
apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts

@ -17,7 +17,7 @@ import {
} from '@ghostfolio/common/interfaces';
import { hasPermission } from '@ghostfolio/common/permissions';
import { permissions } from '@ghostfolio/common/permissions';
import { RequestWithUser } from '@ghostfolio/common/types';
import type { RequestWithUser } from '@ghostfolio/common/types';
import {
Body,

2
apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts

@ -12,7 +12,7 @@ import {
QuotesResponse
} from '@ghostfolio/common/interfaces';
import { permissions } from '@ghostfolio/common/permissions';
import { RequestWithUser } from '@ghostfolio/common/types';
import type { RequestWithUser } from '@ghostfolio/common/types';
import {
Controller,

2
apps/api/src/app/endpoints/market-data/market-data.controller.ts

@ -8,7 +8,7 @@ import { UpdateBulkMarketDataDto } from '@ghostfolio/common/dtos';
import { getCurrencyFromSymbol, isCurrency } from '@ghostfolio/common/helper';
import { MarketDataOfMarketsResponse } from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { RequestWithUser } from '@ghostfolio/common/types';
import type { RequestWithUser } from '@ghostfolio/common/types';
import {
Body,

105
apps/api/src/app/endpoints/mcp/mcp.controller.spec.ts

@ -1,13 +1,26 @@
import { REQUIRES_SCOPE_KEY } from '@ghostfolio/api/decorators/requires-scope.decorator';
import { McpToolExceptionFilter } from '@ghostfolio/api/filters/mcp-tool-exception.filter';
import { AccessGuard } from '@ghostfolio/api/guards/access.guard';
import { Scope, scopes } from '@ghostfolio/common/scopes';
import { getMcpUserOfBearerToken } from '@ghostfolio/api/helper/bearer-token.helper';
import {
getScopesOfAccess,
getScopesOfAccessLevel,
Scope,
scopes
} from '@ghostfolio/common/scopes';
import {
EXCEPTION_FILTERS_METADATA,
GUARDS_METADATA
} from '@nestjs/common/constants';
import { MCP_TOOL_METADATA_KEY, ToolMetadata } from '@rekog/mcp-nest';
import {
AccessMatchMode,
MCP_SCOPES_MATCH_METADATA_KEY,
MCP_SCOPES_METADATA_KEY,
MCP_TOOL_METADATA_KEY,
ToolAuthorizationService,
ToolMetadata
} from '@rekog/mcp-nest';
import { GhostfolioMcpController } from './mcp.controller';
@ -35,6 +48,41 @@ function getToolMethodNames() {
);
}
/**
* Gives the names of the tools which the transport lists for the request. The
* metadata of each tool is read as the transport reads it.
*/
function getNamesOfListedTools(request: unknown) {
const toolAuthorizationService = new ToolAuthorizationService();
const user = getMcpUserOfBearerToken(request);
return getToolMethodNames()
.map((methodName) => {
return {
metadata: {
...getMetadataOfMethod<ToolMetadata>(
MCP_TOOL_METADATA_KEY,
methodName
),
requiredScopes: getMetadataOfMethod<string[]>(
MCP_SCOPES_METADATA_KEY,
methodName
),
requiredScopesMatch: getMetadataOfMethod<AccessMatchMode>(
MCP_SCOPES_MATCH_METADATA_KEY,
methodName
)
}
};
})
.filter((tool) => {
return toolAuthorizationService.canAccessTool(user, tool);
})
.map(({ metadata: { name } }) => {
return name;
});
}
describe('GhostfolioMcpController', () => {
// A tool without the decorator of the scope would be open to every access,
// hence a new tool has to declare its scope
@ -71,6 +119,59 @@ describe('GhostfolioMcpController', () => {
expect(toolMethodNamesWithoutGuardOfAccess).toEqual([]);
});
it('Lists only the tools to read for an access with the permission "Restricted view"', () => {
expect(
getNamesOfListedTools({
impersonationOfBearerToken: {
isActive: true,
scopes: getScopesOfAccess({
scopes: getScopesOfAccessLevel('READ_RESTRICTED'),
type: 'MCP'
})
}
})
).toEqual([
'get-accounts',
'get-activities',
'get-portfolio',
'get-watchlist'
]);
});
it('Lists every tool for an access with the permission "Restricted view and manage"', () => {
expect(
getNamesOfListedTools({
impersonationOfBearerToken: {
isActive: true,
scopes: getScopesOfAccess({
scopes: getScopesOfAccessLevel(
'CREATE_READ_RESTRICTED_UPDATE_DELETE'
),
type: 'MCP'
})
}
})
).toEqual([
'get-accounts',
'get-activities',
'get-portfolio',
'get-watchlist',
'import-activities',
'search-asset-profiles'
]);
});
it('Lists no tool for an inactive access', () => {
expect(
getNamesOfListedTools({
impersonationOfBearerToken: {
isActive: false,
scopes: getScopesOfAccessLevel('CREATE_READ_RESTRICTED_UPDATE_DELETE')
}
})
).toEqual([]);
});
it('Requires the scope to create an activity for the tool to import activities', () => {
expect(
getMetadataOfMethod<Scope[]>(REQUIRES_SCOPE_KEY, 'importActivities')

8
apps/api/src/app/endpoints/mcp/mcp.controller.ts

@ -101,12 +101,6 @@ export class GhostfolioMcpController {
return this.mcpService.getWatchlist({ userId });
}
/**
* The transport gives the tool to every client, because it filters the list
* of the tools by the scopes of request.user, which a request of an access
* never has. The guard refuses the call itself, hence the description names
* the permission which the access needs.
*/
@RequiresScopeOfAccess(scopes.activityCreate)
@Tool({
annotations: {
@ -115,7 +109,7 @@ export class GhostfolioMcpController {
readOnlyHint: false,
title: 'Import activities'
},
description: `Imports activities into the portfolio and gives the number of the imported activities and the number of the skipped activities. Use search-asset-profiles first unless the exact symbol and data source are already known. An activity is skipped if an equal activity is in the portfolio already, hence send each activity one time only: two equal activities of the same call are both imported. The access needs the permission "Restricted view and manage". At most ${MCP_MAX_ACTIVITIES} activities are imported per call, while the instance can have a lower limit, which an error names. An error does not remove the activities of the same call which are imported already, hence get the activities after an error before you import them again.`,
description: `Imports activities into the portfolio and gives the number of the imported activities and the number of the skipped activities. Use search-asset-profiles first unless the exact symbol and data source are already known. An activity is skipped if an equal activity is in the portfolio already, hence send each activity one time only: two equal activities of the same call are both imported. At most ${MCP_MAX_ACTIVITIES} activities are imported per call, while the instance can have a lower limit, which an error names. An error does not remove the activities of the same call which are imported already, hence get the activities after an error before you import them again.`,
name: 'import-activities',
parameters: IMPORT_ACTIVITIES_PARAMETERS
})

4
apps/api/src/app/endpoints/mcp/mcp.module.ts

@ -2,6 +2,7 @@ import { ImportModule } from '@ghostfolio/api/app/import/import.module';
import { SymbolModule } from '@ghostfolio/api/app/symbol/symbol.module';
import { UserModule } from '@ghostfolio/api/app/user/user.module';
import { environment } from '@ghostfolio/api/environments/environment';
import { getMcpUserOfBearerToken } from '@ghostfolio/api/helper/bearer-token.helper';
import { ApiModule } from '@ghostfolio/api/services/api/api.module';
import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
@ -38,8 +39,9 @@ import { McpService } from './mcp.service';
return new McpStrategy({
instructions:
'Ghostfolio is a wealth management application. The tools read the portfolio and the watchlist of the user who granted the access and import activities into the portfolio. They give no quantity and no monetary value (except the unit price of an activity).',
'Ghostfolio is a wealth management application. The tools read the portfolio and the watchlist of the user who granted the access and import activities into the portfolio. They give no quantity and no monetary value (except the unit price of an activity). Only the tools which the permission of the access covers are listed. To import activities, the access needs the permission "Restricted view and manage".',
name: 'ghostfolio',
resolveUser: getMcpUserOfBearerToken,
title: 'Ghostfolio',
transports: [
new StreamableHttpTransport({

2
apps/api/src/app/endpoints/tags/tags.controller.ts

@ -5,7 +5,7 @@ import { TagService } from '@ghostfolio/api/services/tag/tag.service';
import { CreateTagDto, UpdateTagDto } from '@ghostfolio/common/dtos';
import { isSystemTag } from '@ghostfolio/common/helper';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { RequestWithUser } from '@ghostfolio/common/types';
import type { RequestWithUser } from '@ghostfolio/common/types';
import {
Body,

2
apps/api/src/app/endpoints/watchlist/watchlist.controller.ts

@ -7,7 +7,7 @@ import { CreateWatchlistItemDto } from '@ghostfolio/common/dtos';
import { WatchlistResponse } from '@ghostfolio/common/interfaces';
import { permissions } from '@ghostfolio/common/permissions';
import { scopes } from '@ghostfolio/common/scopes';
import { ImpersonationContext } from '@ghostfolio/common/types';
import type { ImpersonationContext } from '@ghostfolio/common/types';
import {
Body,

2
apps/api/src/app/endpoints/watchlist/watchlist.service.ts

@ -151,7 +151,7 @@ export class WatchlistService {
);
return watchlist.sort((a, b) => {
return a.name.localeCompare(b.name);
return (a.name ?? '').localeCompare(b.name ?? '');
});
}

15
apps/api/src/app/logo/logo.controller.ts

@ -11,12 +11,15 @@ import {
} from '@nestjs/common';
import { DataSource } from '@prisma/client';
import { Response } from 'express';
import ms from 'ms';
import { GetLogoDto } from './get-logo.dto';
import { LogoService } from './logo.service';
@Controller('logo')
export class LogoController {
private static readonly CACHE_MAX_AGE_IN_SECONDS = ms('7 days') / 1000;
public constructor(private readonly logoService: LogoService) {}
@Get(':dataSource/:symbol')
@ -34,6 +37,12 @@ export class LogoController {
});
response.contentType(type);
response.setHeader(
'Cache-Control',
`public, max-age=${LogoController.CACHE_MAX_AGE_IN_SECONDS}`
);
response.send(buffer);
} catch {
response.status(HttpStatus.NOT_FOUND).send();
@ -49,6 +58,12 @@ export class LogoController {
const { buffer, type } = await this.logoService.getLogoByUrl(url);
response.contentType(type);
response.setHeader(
'Cache-Control',
`public, max-age=${LogoController.CACHE_MAX_AGE_IN_SECONDS}`
);
response.send(buffer);
} catch {
response.status(HttpStatus.NOT_FOUND).send();

125
apps/api/src/app/portfolio/calculator/portfolio-calculator.ts

@ -223,15 +223,19 @@ export abstract class PortfolioCalculator {
): PortfolioSnapshot;
protected abstract calculatePerformancePercentages({
accumulatedValuesByDate
accumulatedValuesByDate,
holdings
}: {
accumulatedValuesByDate: { [date: string]: AccumulatedValues };
holdings: PortfolioSnapshotHolding[];
}): { [date: string]: PerformancePercentages };
protected abstract calculatePerformancePercentagesForDateRange({
historicalDataItems
historicalDataItems,
holdings
}: {
historicalDataItems: HistoricalDataItem[];
holdings: PortfolioSnapshotHolding[];
}): { [date: string]: PerformancePercentages };
@LogPerformance
@ -544,6 +548,13 @@ export abstract class PortfolioCalculator {
}
}
const totalDividendValueWithCurrencyEffectByDate =
this.getTotalDividendValueWithCurrencyEffectByDate({
chartDates,
exchangeRatesByCurrency,
holdings: positions
});
const assetProfileIdentifiers = Object.keys(valuesByAssetProfileIdentifier);
for (const dateString of chartDates) {
@ -620,6 +631,8 @@ export abstract class PortfolioCalculator {
accumulatedValuesByDate[dateString]
?.totalCurrentValueWithCurrencyEffect ?? new Big(0)
).add(currentValueWithCurrencyEffect),
totalDividendValueWithCurrencyEffect:
totalDividendValueWithCurrencyEffectByDate[dateString],
totalInvestmentValue: (
accumulatedValuesByDate[dateString]?.totalInvestmentValue ??
new Big(0)
@ -644,8 +657,18 @@ export abstract class PortfolioCalculator {
}
}
const positionsIncludedInHoldings = positions
.filter(({ includeInHoldings }) => {
return includeInHoldings;
})
// eslint-disable-next-line @typescript-eslint/no-unused-vars
.map(({ includeInHoldings, includeInPerformance, ...rest }) => {
return rest;
});
const performancePercentagesByDate = this.calculatePerformancePercentages({
accumulatedValuesByDate
accumulatedValuesByDate,
holdings: positionsIncludedInHoldings
});
const historicalData: HistoricalDataItem[] = Object.entries(
@ -656,6 +679,7 @@ export abstract class PortfolioCalculator {
totalCashValueWithCurrencyEffect,
totalCurrentValue,
totalCurrentValueWithCurrencyEffect,
totalDividendValueWithCurrencyEffect,
totalInvestmentValue,
totalInvestmentValueWithCurrencyEffect,
totalNetPerformanceValue,
@ -666,6 +690,7 @@ export abstract class PortfolioCalculator {
return {
...performancePercentagesByDate[date],
date,
dividendInBaseCurrency: totalDividendValueWithCurrencyEffect.toNumber(),
investmentValueWithCurrencyEffect:
investmentValueWithCurrencyEffect.toNumber(),
netPerformance: totalNetPerformanceValue.toNumber(),
@ -683,15 +708,6 @@ export abstract class PortfolioCalculator {
const overall = this.calculateOverallPerformance(positions);
const positionsIncludedInHoldings = positions
.filter(({ includeInHoldings }) => {
return includeInHoldings;
})
// eslint-disable-next-line @typescript-eslint/no-unused-vars
.map(({ includeInHoldings, includeInPerformance, ...rest }) => {
return rest;
});
return {
...overall,
errors,
@ -1343,6 +1359,7 @@ export abstract class PortfolioCalculator {
const historicalDataItemsOfDateRange: HistoricalDataItem[] = [];
let dividendInBaseCurrencyAtStartDate: number;
let netPerformanceAtStartDate: number;
let netPerformanceWithCurrencyEffectAtStartDate: number;
@ -1353,6 +1370,11 @@ export abstract class PortfolioCalculator {
// Take the values at the start date from the first day of the date
// range
if (historicalDataItemsOfDateRange.length === 0) {
// TODO: Remove the fallback to 0 with the next release, when each
// cached portfolio snapshot contains the dividend
dividendInBaseCurrencyAtStartDate =
historicalDataItem.dividendInBaseCurrency ?? 0;
netPerformanceAtStartDate = historicalDataItem.netPerformance;
netPerformanceWithCurrencyEffectAtStartDate =
@ -1361,6 +1383,11 @@ export abstract class PortfolioCalculator {
historicalDataItemsOfDateRange.push({
...historicalDataItem,
// TODO: Remove the fallback to 0 with the next release, when each
// cached portfolio snapshot contains the dividend
dividendInBaseCurrency:
(historicalDataItem.dividendInBaseCurrency ?? 0) -
dividendInBaseCurrencyAtStartDate,
netPerformance:
historicalDataItem.netPerformance - netPerformanceAtStartDate,
netPerformanceWithCurrencyEffect:
@ -1372,7 +1399,8 @@ export abstract class PortfolioCalculator {
const performancePercentagesByDate =
this.calculatePerformancePercentagesForDateRange({
historicalDataItems: historicalDataItemsOfDateRange
historicalDataItems: historicalDataItemsOfDateRange,
holdings: this.snapshot.positions
});
const chart = historicalDataItemsOfDateRange.map((historicalDataItem) => {
@ -1734,6 +1762,77 @@ export abstract class PortfolioCalculator {
return chartDateMap;
}
private getTotalDividendValueWithCurrencyEffectByDate({
chartDates,
exchangeRatesByCurrency,
holdings
}: {
chartDates: string[];
exchangeRatesByCurrency: {
[currencyPair: string]: { [dateString: string]: number };
};
holdings: PortfolioCalculatorHolding[];
}): { [date: string]: Big } {
// Take the dividend from the same holdings as the portfolio summary, so
// that the response shows one dividend only
const assetProfileIdentifiersIncludedInHoldings = new Set(
holdings
.filter(({ includeInHoldings }) => {
return includeInHoldings;
})
.map(({ dataSource, symbol }) => {
return getAssetProfileIdentifier({ dataSource, symbol });
})
);
const dividendActivities = this.activities.filter(
({ assetProfile, type }) => {
return (
type === 'DIVIDEND' &&
assetProfileIdentifiersIncludedInHoldings.has(
getAssetProfileIdentifier(assetProfile)
)
);
}
);
const totalDividendValueWithCurrencyEffectByDate: { [date: string]: Big } =
{};
let index = 0;
let totalDividendValueWithCurrencyEffect = new Big(0);
// The activities and the chart dates are sorted by date, so one pass over
// both gives the dividends received up to each chart date
for (const chartDate of chartDates) {
while (
index < dividendActivities.length &&
dividendActivities[index].date <= chartDate
) {
const { assetProfile, date, quantity, unitPrice } =
dividendActivities[index];
totalDividendValueWithCurrencyEffect =
totalDividendValueWithCurrencyEffect.plus(
quantity
.mul(unitPrice)
.mul(
exchangeRatesByCurrency[
`${assetProfile.currency}${this.currency}`
]?.[date] ?? 1
)
);
index++;
}
totalDividendValueWithCurrencyEffectByDate[chartDate] =
totalDividendValueWithCurrencyEffect;
}
return totalDividendValueWithCurrencyEffectByDate;
}
@LogPerformance
private async initialize(attempt = 1) {
const startTimeTotal = performance.now();

6
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts

@ -142,6 +142,8 @@ describe('PortfolioCalculator', () => {
expect(portfolioSnapshot.historicalData[0]).toEqual({
date: '2021-12-11',
dividendInBaseCurrency: 0,
dividendInPercentageWithCurrencyEffect: 0,
investmentValueWithCurrencyEffect: 0,
netPerformance: 0,
netPerformanceInPercentage: 0,
@ -160,6 +162,8 @@ describe('PortfolioCalculator', () => {
*/
expect(portfolioSnapshot.historicalData[1]).toEqual({
date: '2021-12-12',
dividendInBaseCurrency: 0,
dividendInPercentageWithCurrencyEffect: 0,
investmentValueWithCurrencyEffect: 44558.42,
netPerformance: 5535.42, // 1 * (50098.3 - 44558.42) - 4.46 = 5535.42
netPerformanceInPercentage: 0.12422837255001412, // 5535.42 ÷ 44558.42 = 0.12422837255001412
@ -179,6 +183,8 @@ describe('PortfolioCalculator', () => {
]
).toEqual({
date: '2022-01-14',
dividendInBaseCurrency: 0,
dividendInPercentageWithCurrencyEffect: 0,
investmentValueWithCurrencyEffect: 0,
netPerformance: -1463.18,
netPerformanceInPercentage: -0.032837340282712,

6
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts

@ -142,6 +142,8 @@ describe('PortfolioCalculator', () => {
expect(portfolioSnapshot.historicalData[0]).toEqual({
date: '2021-12-11',
dividendInBaseCurrency: 0,
dividendInPercentageWithCurrencyEffect: 0,
investmentValueWithCurrencyEffect: 0,
netPerformance: 0,
netPerformanceInPercentage: 0,
@ -160,6 +162,8 @@ describe('PortfolioCalculator', () => {
*/
expect(portfolioSnapshot.historicalData[1]).toEqual({
date: '2021-12-12',
dividendInBaseCurrency: 0,
dividendInPercentageWithCurrencyEffect: 0,
investmentValueWithCurrencyEffect: 44558.42,
netPerformance: 5535.42, // 1 * (50098.3 - 44558.42) - 4.46 = 5535.42
netPerformanceInPercentage: 0.12422837255001412, // 5535.42 ÷ 44558.42 = 0.12422837255001412
@ -179,6 +183,8 @@ describe('PortfolioCalculator', () => {
]
).toEqual({
date: '2022-01-14',
dividendInBaseCurrency: 0,
dividendInPercentageWithCurrencyEffect: 0,
investmentValueWithCurrencyEffect: 0,
netPerformance: -1463.18,
netPerformanceInPercentage: -0.032837340282712,

6
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts

@ -321,6 +321,8 @@ describe('PortfolioCalculator', () => {
*/
expect(portfolioSnapshot.historicalData.at(-1)).toEqual({
date: '2025-01-01',
dividendInBaseCurrency: 0,
dividendInPercentageWithCurrencyEffect: 0,
investmentValueWithCurrencyEffect: 0,
netPerformance: 0,
netPerformanceInPercentage: 0,
@ -459,6 +461,8 @@ describe('PortfolioCalculator', () => {
*/
expect(portfolioSnapshot.historicalData.at(-1)).toEqual({
date: '2025-01-01',
dividendInBaseCurrency: 0,
dividendInPercentageWithCurrencyEffect: 0,
investmentValueWithCurrencyEffect: 0,
netPerformance: 0,
netPerformanceInPercentage: 0,
@ -601,6 +605,8 @@ describe('PortfolioCalculator', () => {
*/
expect(portfolioSnapshot.historicalData.at(-1)).toEqual({
date: '2025-01-01',
dividendInBaseCurrency: 0,
dividendInPercentageWithCurrencyEffect: 0,
investmentValueWithCurrencyEffect: 0,
netPerformance: 0,
netPerformanceInPercentage: 0,

362
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-fee-and-dividend.spec.ts

@ -0,0 +1,362 @@
import {
activityDummyData,
assetProfileDummyData,
getPerformanceByDateRange,
userDummyData
} from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator-test-utils';
import { PortfolioCalculatorFactory } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator.factory';
import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.service';
import { CurrentRateServiceMock } from '@ghostfolio/api/app/portfolio/current-rate.service.mock';
import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service';
import { RedisCacheServiceMock } from '@ghostfolio/api/app/redis-cache/redis-cache.service.mock';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service';
import { PortfolioSnapshotService } from '@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.service';
import { PortfolioSnapshotServiceMock } from '@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.service.mock';
import { parseDate } from '@ghostfolio/common/helper';
import { Activity } from '@ghostfolio/common/interfaces';
import { PerformanceCalculationType } from '@ghostfolio/common/types/performance-calculation-type.type';
import { Big } from 'big.js';
jest.mock('@ghostfolio/api/app/portfolio/current-rate.service', () => {
return {
CurrentRateService: jest.fn().mockImplementation(() => {
return CurrentRateServiceMock;
})
};
});
jest.mock(
'@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.service',
() => {
return {
PortfolioSnapshotService: jest.fn().mockImplementation(() => {
return PortfolioSnapshotServiceMock;
})
};
}
);
jest.mock('@ghostfolio/api/app/redis-cache/redis-cache.service', () => {
return {
RedisCacheService: jest.fn().mockImplementation(() => {
return RedisCacheServiceMock;
})
};
});
describe('PortfolioCalculator', () => {
let configurationService: ConfigurationService;
let currentRateService: CurrentRateService;
let exchangeRateDataService: ExchangeRateDataService;
let portfolioCalculatorFactory: PortfolioCalculatorFactory;
let portfolioSnapshotService: PortfolioSnapshotService;
let redisCacheService: RedisCacheService;
beforeEach(() => {
PortfolioSnapshotServiceMock.reset();
RedisCacheServiceMock.reset();
configurationService = new ConfigurationService();
currentRateService = new CurrentRateService(null, null, null);
exchangeRateDataService = new ExchangeRateDataService(
null,
null,
null,
null
);
portfolioSnapshotService = new PortfolioSnapshotService(null, null);
redisCacheService = new RedisCacheService(null, null);
portfolioCalculatorFactory = new PortfolioCalculatorFactory(
configurationService,
currentRateService,
exchangeRateDataService,
portfolioSnapshotService,
redisCacheService
);
});
describe('get current positions', () => {
it('with GOOGL fee and dividend', async () => {
jest.useFakeTimers().setSystemTime(parseDate('2023-07-10').getTime());
const activities: Activity[] = [
{
...activityDummyData,
assetProfile: {
...assetProfileDummyData,
currency: 'USD',
dataSource: 'YAHOO',
name: 'Microsoft Inc.',
symbol: 'MSFT'
},
date: new Date('2021-09-16'),
feeInAssetProfileCurrency: 19,
feeInBaseCurrency: 19,
quantity: 1,
type: 'BUY',
unitPriceInAssetProfileCurrency: 298.58
},
{
...activityDummyData,
assetProfile: {
...assetProfileDummyData,
currency: 'USD',
dataSource: 'YAHOO',
name: 'Microsoft Inc.',
symbol: 'MSFT'
},
date: new Date('2021-11-16'),
feeInAssetProfileCurrency: 0,
feeInBaseCurrency: 0,
quantity: 1,
type: 'DIVIDEND',
unitPriceInAssetProfileCurrency: 0.62
},
{
// The first activity of this asset profile is a fee, which is not an
// investment activity. Thus the holding is not included in the
// holdings of the portfolio summary, and its dividend must not be
// included in the chart
...activityDummyData,
assetProfile: {
...assetProfileDummyData,
currency: 'USD',
dataSource: 'YAHOO',
name: 'Alphabet Inc.',
symbol: 'GOOGL'
},
date: new Date('2023-01-03'),
feeInAssetProfileCurrency: 1,
feeInBaseCurrency: 1,
quantity: 0,
type: 'FEE',
unitPriceInAssetProfileCurrency: 0
},
{
...activityDummyData,
assetProfile: {
...assetProfileDummyData,
currency: 'USD',
dataSource: 'YAHOO',
name: 'Alphabet Inc.',
symbol: 'GOOGL'
},
date: new Date('2023-07-10'),
feeInAssetProfileCurrency: 0,
feeInBaseCurrency: 0,
quantity: 1,
type: 'DIVIDEND',
unitPriceInAssetProfileCurrency: 5
}
];
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities,
calculationType: PerformanceCalculationType.ROAI,
currency: 'USD',
usePortfolioSnapshotCache: false,
userId: userDummyData.id
});
const portfolioSnapshot = await portfolioCalculator.computeSnapshot();
const dividendInBaseCurrency =
await portfolioCalculator.getDividendInBaseCurrency();
expect(
portfolioSnapshot.positions.map(({ symbol }) => {
return symbol;
})
).toEqual(['MSFT']);
// The chart and the portfolio summary must show the same dividend
expect(dividendInBaseCurrency).toEqual(new Big('0.62'));
expect(
portfolioSnapshot.historicalData.at(-1).dividendInBaseCurrency
).toEqual(0.62);
});
it('with GOOGL dividend without investment', async () => {
jest.useFakeTimers().setSystemTime(parseDate('2023-07-10').getTime());
const activities: Activity[] = [
{
...activityDummyData,
assetProfile: {
...assetProfileDummyData,
currency: 'USD',
dataSource: 'YAHOO',
name: 'Microsoft Inc.',
symbol: 'MSFT'
},
date: new Date('2021-09-16'),
feeInAssetProfileCurrency: 19,
feeInBaseCurrency: 19,
quantity: 1,
type: 'BUY',
unitPriceInAssetProfileCurrency: 298.58
},
{
...activityDummyData,
assetProfile: {
...assetProfileDummyData,
currency: 'USD',
dataSource: 'YAHOO',
name: 'Microsoft Inc.',
symbol: 'MSFT'
},
date: new Date('2021-11-16'),
feeInAssetProfileCurrency: 0,
feeInBaseCurrency: 0,
quantity: 1,
type: 'DIVIDEND',
unitPriceInAssetProfileCurrency: 0.62
},
{
// The holding has a dividend, but no average investment. Thus the
// dividend percentage stays 0, like the dividend yield
...activityDummyData,
assetProfile: {
...assetProfileDummyData,
currency: 'USD',
dataSource: 'YAHOO',
name: 'Alphabet Inc.',
symbol: 'GOOGL'
},
date: new Date('2023-07-10'),
feeInAssetProfileCurrency: 0,
feeInBaseCurrency: 0,
quantity: 1,
type: 'DIVIDEND',
unitPriceInAssetProfileCurrency: 5
}
];
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities,
calculationType: PerformanceCalculationType.ROAI,
currency: 'USD',
usePortfolioSnapshotCache: false,
userId: userDummyData.id
});
const portfolioSnapshot = await portfolioCalculator.computeSnapshot();
const performanceByDateRange = await getPerformanceByDateRange({
portfolioCalculator,
dateRanges: ['max']
});
expect(portfolioSnapshot).toMatchObject({
dividendYieldPercentWithCurrencyEffect: new Big(0)
});
expect(portfolioSnapshot.historicalData.at(-1)).toMatchObject({
dividendInBaseCurrency: 5.62,
dividendInPercentageWithCurrencyEffect: 0
});
expect(performanceByDateRange).toMatchObject({
max: {
dividendInBaseCurrency: 5.62,
dividendInPercentageWithCurrencyEffect: 0
}
});
});
it('with MSFT dividend before and in the date range', async () => {
jest.useFakeTimers().setSystemTime(parseDate('2023-07-10').getTime());
const activities: Activity[] = [
{
...activityDummyData,
assetProfile: {
...assetProfileDummyData,
currency: 'USD',
dataSource: 'YAHOO',
name: 'Microsoft Inc.',
symbol: 'MSFT'
},
date: new Date('2021-09-16'),
feeInAssetProfileCurrency: 19,
feeInBaseCurrency: 19,
quantity: 1,
type: 'BUY',
unitPriceInAssetProfileCurrency: 298.58
},
{
...activityDummyData,
assetProfile: {
...assetProfileDummyData,
currency: 'USD',
dataSource: 'YAHOO',
name: 'Microsoft Inc.',
symbol: 'MSFT'
},
date: new Date('2021-11-16'),
feeInAssetProfileCurrency: 0,
feeInBaseCurrency: 0,
quantity: 1,
type: 'DIVIDEND',
unitPriceInAssetProfileCurrency: 0.62
},
{
...activityDummyData,
assetProfile: {
...assetProfileDummyData,
currency: 'USD',
dataSource: 'YAHOO',
name: 'Microsoft Inc.',
symbol: 'MSFT'
},
date: new Date('2023-07-10'),
feeInAssetProfileCurrency: 0,
feeInBaseCurrency: 0,
quantity: 1,
type: 'DIVIDEND',
unitPriceInAssetProfileCurrency: 0.68
}
];
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities,
calculationType: PerformanceCalculationType.ROAI,
currency: 'USD',
usePortfolioSnapshotCache: false,
userId: userDummyData.id
});
await portfolioCalculator.computeSnapshot();
const performanceByDateRange = await getPerformanceByDateRange({
portfolioCalculator,
dateRanges: ['1d', 'max', 'ytd']
});
// The dividend before the date range is subtracted, so that the date
// range shows the dividend in the date range only
expect(performanceByDateRange).toMatchObject({
'1d': {
dividendInBaseCurrency: 0.68,
dividendInPercentageWithCurrencyEffect: 0.002016487752802325
},
max: {
dividendInBaseCurrency: 1.3,
dividendInPercentageWithCurrencyEffect: 0.004353941992095899
},
ytd: {
dividendInBaseCurrency: 0.68,
dividendInPercentageWithCurrencyEffect: 0.002002886512915673
}
});
});
});
});

6
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts

@ -198,6 +198,8 @@ describe('PortfolioCalculator', () => {
expect(performanceByDateRange).toMatchObject({
'1d': {
date: '2023-07-10',
dividendInBaseCurrency: 0,
dividendInPercentageWithCurrencyEffect: 0,
netPerformance: -5.390000000000001,
netPerformanceInPercentage: -0.015983630864124312,
netPerformanceInPercentageWithCurrencyEffect: -0.015983630864124312,
@ -207,6 +209,8 @@ describe('PortfolioCalculator', () => {
},
max: {
date: '2023-07-10',
dividendInBaseCurrency: 0.62,
dividendInPercentageWithCurrencyEffect: 0.002076495411614967,
netPerformance: 14.25,
netPerformanceInPercentage: 0.04772590260566659,
netPerformanceInPercentageWithCurrencyEffect: 0.04772590260566659,
@ -216,6 +220,8 @@ describe('PortfolioCalculator', () => {
},
ytd: {
date: '2023-07-10',
dividendInBaseCurrency: 0,
dividendInPercentageWithCurrencyEffect: 0,
netPerformance: -7.68,
netPerformanceInPercentage: -0.022620835910577012,
netPerformanceInPercentageWithCurrencyEffect: -0.022620835910577012,

6
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts

@ -139,6 +139,8 @@ describe('PortfolioCalculator', () => {
expect(portfolioSnapshot.historicalData[0]).toEqual({
date: '2022-03-06',
dividendInBaseCurrency: 0,
dividendInPercentageWithCurrencyEffect: 0,
investmentValueWithCurrencyEffect: 0,
netPerformance: 0,
netPerformanceInPercentage: 0,
@ -158,6 +160,8 @@ describe('PortfolioCalculator', () => {
*/
expect(portfolioSnapshot.historicalData[1]).toEqual({
date: '2022-03-07',
dividendInBaseCurrency: 0,
dividendInPercentageWithCurrencyEffect: 0,
investmentValueWithCurrencyEffect: 151.6,
netPerformance: 0, // 2 * (75.8 - 75.8) = 0
netPerformanceInPercentage: 0, // 0 ÷ 151.6 = 0
@ -177,6 +181,8 @@ describe('PortfolioCalculator', () => {
]
).toEqual({
date: '2022-04-11',
dividendInBaseCurrency: 0,
dividendInPercentageWithCurrencyEffect: 0,
investmentValueWithCurrencyEffect: 0,
netPerformance: 19.86,
netPerformanceInPercentage: 0.13100263852242744,

50
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts

@ -17,7 +17,10 @@ import {
AssetProfileIdentifier,
HistoricalDataItem
} from '@ghostfolio/common/interfaces';
import { PortfolioSnapshot } from '@ghostfolio/common/models';
import {
PortfolioSnapshot,
PortfolioSnapshotHolding
} from '@ghostfolio/common/models';
import { DateRange } from '@ghostfolio/common/types';
import { PerformanceCalculationType } from '@ghostfolio/common/types/performance-calculation-type.type';
@ -165,10 +168,15 @@ export class RoaiPortfolioCalculator extends PortfolioCalculator {
}
protected calculatePerformancePercentages({
accumulatedValuesByDate
accumulatedValuesByDate,
holdings
}: {
accumulatedValuesByDate: { [date: string]: AccumulatedValues };
holdings: PortfolioSnapshotHolding[];
}): { [date: string]: PerformancePercentages } {
const hasDividendWithoutAverageInvestment =
this.hasDividendWithoutAverageInvestment(holdings);
const performancePercentagesByDate: {
[date: string]: PerformancePercentages;
} = {};
@ -178,11 +186,19 @@ export class RoaiPortfolioCalculator extends PortfolioCalculator {
{
totalAverageInvestmentValue,
totalAverageInvestmentValueWithCurrencyEffect,
totalDividendValueWithCurrencyEffect,
totalNetPerformanceValue,
totalNetPerformanceValueWithCurrencyEffect
}
] of Object.entries(accumulatedValuesByDate)) {
performancePercentagesByDate[date] = {
dividendInPercentageWithCurrencyEffect:
hasDividendWithoutAverageInvestment ||
totalAverageInvestmentValueWithCurrencyEffect.eq(0)
? 0
: totalDividendValueWithCurrencyEffect
.div(totalAverageInvestmentValueWithCurrencyEffect)
.toNumber(),
netPerformanceInPercentage: totalAverageInvestmentValue.eq(0)
? 0
: totalNetPerformanceValue
@ -201,10 +217,15 @@ export class RoaiPortfolioCalculator extends PortfolioCalculator {
}
protected calculatePerformancePercentagesForDateRange({
historicalDataItems
historicalDataItems,
holdings
}: {
historicalDataItems: HistoricalDataItem[];
holdings: PortfolioSnapshotHolding[];
}): { [date: string]: PerformancePercentages } {
const hasDividendWithoutAverageInvestment =
this.hasDividendWithoutAverageInvestment(holdings);
const averageInvestmentValues: number[] = [];
const averageInvestmentValuesWithCurrencyEffect: number[] = [];
let grossPerformanceAtStartDate: number;
@ -254,6 +275,12 @@ export class RoaiPortfolioCalculator extends PortfolioCalculator {
: 0;
performancePercentagesByDate[historicalDataItem.date] = {
dividendInPercentageWithCurrencyEffect:
!hasDividendWithoutAverageInvestment &&
averageInvestmentValueWithCurrencyEffect > 0
? historicalDataItem.dividendInBaseCurrency /
averageInvestmentValueWithCurrencyEffect
: 0,
netPerformanceInPercentage:
averageInvestmentValue > 0
? historicalDataItem.netPerformance / averageInvestmentValue
@ -741,4 +768,21 @@ export class RoaiPortfolioCalculator extends PortfolioCalculator {
protected getPerformanceCalculationType() {
return PerformanceCalculationType.ROAI;
}
private hasDividendWithoutAverageInvestment(
holdings: PortfolioSnapshotHolding[]
) {
// A holding with a dividend only (without a buy activity), and a holding
// without a market price, gives a dividend but no average investment.
// Such a holding makes the dividend percentage too high. Therefore the
// dividend percentage stays 0 in this case, like the dividend yield.
return holdings.some(
({ averageInvestmentWithCurrencyEffect, dividendInBaseCurrency }) => {
return (
!dividendInBaseCurrency.eq(0) &&
averageInvestmentWithCurrencyEffect.eq(0)
);
}
);
}
}

1
apps/api/src/app/portfolio/interfaces/accumulated-values.interface.ts

@ -7,6 +7,7 @@ export interface AccumulatedValues {
totalCashValueWithCurrencyEffect: Big;
totalCurrentValue: Big;
totalCurrentValueWithCurrencyEffect: Big;
totalDividendValueWithCurrencyEffect: Big;
totalInvestmentValue: Big;
totalInvestmentValueWithCurrencyEffect: Big;
totalNetPerformanceValue: Big;

9
apps/api/src/app/portfolio/portfolio.controller.ts

@ -565,6 +565,7 @@ export class PortfolioController {
[
'currentNetWorth',
'currentValueInBaseCurrency',
'dividendInBaseCurrency',
'grossPerformance',
'grossPerformanceWithCurrencyEffect',
'netPerformance',
@ -580,12 +581,16 @@ export class PortfolioController {
) {
performanceInformation.chart = performanceInformation.chart.map(
(item) => {
return nullifyValuesInObject(item, ['totalInvestment', 'value']);
return nullifyValuesInObject(item, [
'dividendInBaseCurrency',
'totalInvestment',
'value'
]);
}
);
performanceInformation.performance = nullifyValuesInObject(
performanceInformation.performance,
['netPerformance']
['dividendInBaseCurrency', 'netPerformance']
);
}

198
apps/api/src/app/portfolio/portfolio.service.spec.ts

@ -773,6 +773,27 @@ describe('PortfolioService', () => {
).getSummary(args);
};
function createExcludedActivity({
currency = 'CHF',
quantity,
symbol,
type,
unitPrice
}: Pick<Activity, 'quantity' | 'type' | 'unitPrice'> & {
currency?: string;
symbol: string;
}) {
return {
currency,
quantity,
type,
unitPrice,
account: { tags: [{ id: TAG_ID_EXCLUDE_FROM_ANALYSIS }] },
assetProfile: { currency, symbol, dataSource: DataSource.YAHOO },
tags: []
} as unknown as Activity;
}
function createPortfolioCalculator() {
return {
getDividendInBaseCurrency: jest.fn().mockResolvedValue(new Big(0)),
@ -791,9 +812,13 @@ describe('PortfolioService', () => {
beforeEach(() => {
jest
.spyOn(activitiesService, 'getActivities')
.spyOn(activitiesService, 'getActivitiesForPortfolioCalculator')
.mockResolvedValue({ activities: [], count: 0 });
jest
.spyOn(exchangeRateDataService, 'toCurrency')
.mockImplementation((aValue) => aValue);
jest.spyOn(portfolioService, 'getPerformance').mockResolvedValue({
performance: {
currentValueInBaseCurrency: 3000,
@ -837,6 +862,177 @@ describe('PortfolioService', () => {
expect(summary.totalAssetsInBaseCurrency).toBe(3000);
expect(summary.totalValueInBaseCurrency).toBe(3000);
});
it('should value the open holdings of excluded accounts at the current market price', async () => {
jest.spyOn(accountService, 'getCashDetails').mockResolvedValue({
accounts: [],
balanceInBaseCurrency: 1500
});
jest
.spyOn(activitiesService, 'getActivitiesForPortfolioCalculator')
.mockResolvedValue({
activities: [
createExcludedActivity({
quantity: 10,
symbol: 'AAPL',
type: 'BUY',
unitPrice: 100
}),
createExcludedActivity({
quantity: 4,
symbol: 'AAPL',
type: 'SELL',
unitPrice: 150
}),
createExcludedActivity({
quantity: 5,
symbol: 'MSFT',
type: 'BUY',
unitPrice: 100
}),
createExcludedActivity({
quantity: 5,
symbol: 'MSFT',
type: 'SELL',
unitPrice: 120
})
],
count: 4
});
const getQuotes = jest
.spyOn(dataProviderService, 'getQuotes')
.mockResolvedValue({
'YAHOO-AAPL': {
currency: 'CHF',
dataSource: DataSource.YAHOO,
marketPrice: 200,
marketState: 'open'
}
});
const summary = await getSummary({
balanceInBaseCurrency: 1000,
emergencyFundHoldingsValueInBaseCurrency: 0,
filteredValueInBaseCurrency: new Big(3000),
portfolioCalculator: createPortfolioCalculator(),
userCurrency: 'CHF',
userId: userDummyData.id
});
// The closed holding (MSFT) does not need a quote
expect(getQuotes).toHaveBeenCalledWith(
expect.objectContaining({
items: [{ dataSource: DataSource.YAHOO, symbol: 'AAPL' }]
})
);
// 500 (balance of excluded accounts) + 6 * 200 (AAPL) + 0 (MSFT)
expect(summary.excludedAccountsAndActivities).toBe(1700);
expect(summary.totalValueInBaseCurrency).toBe(4700);
});
it('should convert the market value of an excluded holding from the currency of the asset profile to the user currency', async () => {
jest.spyOn(accountService, 'getCashDetails').mockResolvedValue({
accounts: [],
balanceInBaseCurrency: 1000
});
jest
.spyOn(activitiesService, 'getActivitiesForPortfolioCalculator')
.mockResolvedValue({
activities: [
createExcludedActivity({
currency: 'USD',
quantity: 10,
symbol: 'AAPL',
type: 'BUY',
unitPrice: 100
}),
createExcludedActivity({
currency: 'USD',
quantity: 4,
symbol: 'AAPL',
type: 'SELL',
unitPrice: 150
})
],
count: 2
});
jest.spyOn(dataProviderService, 'getQuotes').mockResolvedValue({
'YAHOO-AAPL': {
currency: 'USD',
dataSource: DataSource.YAHOO,
marketPrice: 200,
marketState: 'open'
}
});
jest
.spyOn(exchangeRateDataService, 'toCurrency')
.mockImplementation((aValue, aFromCurrency, aToCurrency) => {
return aFromCurrency === 'USD' && aToCurrency === 'CHF'
? aValue * 0.8
: aValue;
});
const summary = await getSummary({
balanceInBaseCurrency: 1000,
emergencyFundHoldingsValueInBaseCurrency: 0,
filteredValueInBaseCurrency: new Big(3000),
portfolioCalculator: createPortfolioCalculator(),
userCurrency: 'CHF',
userId: userDummyData.id
});
// 6 * 200 USD (AAPL) * 0.8 (USDCHF)
expect(summary.excludedAccountsAndActivities).toBe(960);
expect(summary.totalValueInBaseCurrency).toBe(3960);
});
it('should fall back to the unit price of the latest activity of an excluded holding without a market price', async () => {
jest.spyOn(accountService, 'getCashDetails').mockResolvedValue({
accounts: [],
balanceInBaseCurrency: 1000
});
jest
.spyOn(activitiesService, 'getActivitiesForPortfolioCalculator')
.mockResolvedValue({
activities: [
createExcludedActivity({
quantity: 10,
symbol: 'AAPL',
type: 'BUY',
unitPrice: 100
}),
createExcludedActivity({
quantity: 4,
symbol: 'AAPL',
type: 'SELL',
unitPrice: 150
})
],
count: 2
});
jest.spyOn(dataProviderService, 'getQuotes').mockResolvedValue({});
const summary = await getSummary({
balanceInBaseCurrency: 1000,
emergencyFundHoldingsValueInBaseCurrency: 0,
filteredValueInBaseCurrency: new Big(3000),
portfolioCalculator: createPortfolioCalculator(),
userCurrency: 'CHF',
userId: userDummyData.id
});
// 6 * 150 (unit price of the latest activity)
expect(summary.excludedAccountsAndActivities).toBe(900);
expect(summary.totalValueInBaseCurrency).toBe(3900);
});
});
describe('getValueOfAccountsAndPlatforms', () => {

136
apps/api/src/app/portfolio/portfolio.service.ts

@ -39,6 +39,7 @@ import {
TAG_ID_EXCLUDE_FROM_ANALYSIS,
UNKNOWN_KEY
} from '@ghostfolio/common/config';
import { SubscriptionType } from '@ghostfolio/common/enums';
import {
DATE_FORMAT,
getAssetProfileIdentifier,
@ -1220,6 +1221,8 @@ export class PortfolioService {
performance: {
currentNetWorth: 0,
currentValueInBaseCurrency: 0,
dividendInBaseCurrency: 0,
dividendPercentageWithCurrencyEffect: 0,
netPerformance: 0,
netPerformancePercentage: 0,
netPerformancePercentageWithCurrencyEffect: 0,
@ -1251,6 +1254,8 @@ export class PortfolioService {
});
const {
dividendInBaseCurrency,
dividendInPercentageWithCurrencyEffect,
netPerformance,
netPerformanceInPercentage,
netPerformanceInPercentageWithCurrencyEffect,
@ -1260,6 +1265,8 @@ export class PortfolioService {
totalInvestmentValueWithCurrencyEffect,
valueWithCurrencyEffect
} = chart?.at(-1) ?? {
dividendInBaseCurrency: 0,
dividendInPercentageWithCurrencyEffect: 0,
netPerformance: 0,
netPerformanceInPercentage: 0,
netPerformanceInPercentageWithCurrencyEffect: 0,
@ -1275,12 +1282,15 @@ export class PortfolioService {
hasErrors,
dateOfFirstActivity: parseDate(historicalData[0]?.date),
performance: {
dividendInBaseCurrency,
netPerformance,
netPerformanceWithCurrencyEffect,
totalInvestment,
totalInvestmentValueWithCurrencyEffect,
currentNetWorth: netWorth,
currentValueInBaseCurrency: valueWithCurrencyEffect,
dividendPercentageWithCurrencyEffect:
dividendInPercentageWithCurrencyEffect,
netPerformancePercentage: netPerformanceInPercentage,
netPerformancePercentageWithCurrencyEffect:
netPerformanceInPercentageWithCurrencyEffect
@ -2093,11 +2103,12 @@ export class PortfolioService {
}): Promise<PortfolioSummary> {
const user = await this.userService.user({ id: userId });
const { activities } = await this.activitiesService.getActivities({
userCurrency,
userId,
withExcludedAccountsAndActivities: true
});
const { activities } =
await this.activitiesService.getActivitiesForPortfolioCalculator({
userCurrency,
userId,
withExcludedAccountsAndActivities: true
});
const excludedActivities: Activity[] = [];
const nonExcludedActivities: Activity[] = [];
@ -2164,31 +2175,28 @@ export class PortfolioService {
.plus(emergencyFundHoldingsValueInBaseCurrency)
.toNumber();
const totalOfExcludedActivities = this.getSumOfActivityType({
userCurrency,
activities: excludedActivities,
activityType: 'BUY'
}).minus(
this.getSumOfActivityType({
userCurrency,
activities: excludedActivities,
activityType: 'SELL'
})
);
const cashDetailsWithExcludedAccounts =
await this.accountService.getCashDetails({
const [
cashDetailsWithExcludedAccounts,
valueOfExcludedActivitiesInBaseCurrency
] = await Promise.all([
this.accountService.getCashDetails({
userId,
currency: userCurrency,
withExcludedAccounts: true
});
}),
this.getValueOfExcludedActivitiesInBaseCurrency({
userCurrency,
activities: excludedActivities,
subscriptionType: user.subscription?.type
})
]);
const excludedBalanceInBaseCurrency = new Big(
cashDetailsWithExcludedAccounts.balanceInBaseCurrency
).minus(balanceInBaseCurrency);
const excludedAccountsAndActivities = excludedBalanceInBaseCurrency
.plus(totalOfExcludedActivities)
.plus(valueOfExcludedActivitiesInBaseCurrency)
.toNumber();
// Exclude emergency fund from the financial independence calculation
@ -2491,6 +2499,92 @@ export class PortfolioService {
return { accounts, platforms };
}
private async getValueOfExcludedActivitiesInBaseCurrency({
activities,
subscriptionType,
userCurrency
}: {
activities: Activity[];
subscriptionType?: SubscriptionType;
userCurrency: string;
}) {
const holdings: {
[assetProfileIdentifier: string]: {
latestActivity: Activity;
quantity: Big;
};
} = {};
// The activities are sorted by date in ascending order
for (const activity of activities) {
const factor = getFactor(activity.type);
if (factor === 0 || isDraftActivity(activity)) {
continue;
}
const assetProfileIdentifier = getAssetProfileIdentifier(
activity.assetProfile
);
const quantity = holdings[assetProfileIdentifier]?.quantity ?? new Big(0);
holdings[assetProfileIdentifier] = {
latestActivity: activity,
quantity: quantity.plus(new Big(activity.quantity).mul(factor))
};
}
const openHoldings = Object.values(holdings).filter(({ quantity }) => {
return !quantity.eq(0);
});
const quotes =
openHoldings.length > 0
? await this.dataProviderService.getQuotes({
subscriptionType,
items: openHoldings.map(
({
latestActivity: {
assetProfile: { dataSource, symbol }
}
}) => {
return { dataSource, symbol };
}
)
})
: {};
return getSum(
openHoldings.map(({ latestActivity, quantity }) => {
const { assetProfile, currency, unitPrice } = latestActivity;
const marketPrice =
quotes[getAssetProfileIdentifier(assetProfile)]?.marketPrice;
if (!marketPrice) {
// Fall back to the unit price of the latest activity without a
// market price
return new Big(
this.exchangeRateDataService.toCurrency(
quantity.mul(unitPrice).toNumber(),
currency ?? assetProfile.currency,
userCurrency
)
);
}
return new Big(
this.exchangeRateDataService.toCurrency(
quantity.mul(marketPrice).toNumber(),
assetProfile.currency,
userCurrency
)
);
})
);
}
private isExcludedFromAnalysis(activity: Activity) {
return (
isAccountExcluded(activity.account) ||

1
apps/api/src/app/portfolio/types/performance-percentages.type.ts

@ -3,6 +3,7 @@ import { HistoricalDataItem } from '@ghostfolio/common/interfaces';
export type PerformancePercentages = Required<
Pick<
HistoricalDataItem,
| 'dividendInPercentageWithCurrencyEffect'
| 'netPerformanceInPercentage'
| 'netPerformanceInPercentageWithCurrencyEffect'
>

38
apps/api/src/assets/cryptocurrencies/cryptocurrencies.json

@ -459,7 +459,7 @@
"AHARWBTC": "Aave Harmony WBTC",
"AHOO": "Ahoolee",
"AHT": "AhaToken",
"AI": "Flourishing AI",
"AI": "Gensyn",
"AI16Z": "ai16z",
"AI21X": "ai21x",
"AI23T": "23 Turtles",
@ -467,7 +467,7 @@
"AI3": "Autonomys Network",
"AI4": "AI⁴",
"AI69SAKURA": "Sakura",
"AIA": "AIA Chain",
"AIA": "DeAgentAI",
"AIACHAIN": "AIA Chain",
"AIAF": "AI Agent Factory",
"AIAGENT": "AI Agents",
@ -1338,7 +1338,6 @@
"AUX": "Auxilium",
"AV": "AvatarCoin",
"AVA": "AVA",
"AVA34326": "AVA Chiang Mai Night Safari",
"AVAAI": "Ava AI",
"AVACN": "AVACOIN",
"AVAI": "Orca AVAI",
@ -2066,7 +2065,7 @@
"BHIGH": "Backed HIGH € High Yield Corp Bond",
"BHIRE": "BitHIRE",
"BHIVE": "Hive",
"BHO": "Bholdus",
"BHO": "Bholdus Token",
"BHP": "Blockchain of Hash Power",
"BHPC": "BHPCash",
"BIAFRA": "Biafra Coin",
@ -3064,6 +3063,7 @@
"BTU": "BTU Protocol",
"BTV": "Bitvote",
"BTW": "BitWhite",
"BTW39158": "Bitway",
"BTX": "BitCore",
"BTXC": "Bettex coin",
"BTXEX": "BTXEX",
@ -4055,7 +4055,6 @@
"COMAI": "Commune AI",
"COMB": "Combine.finance",
"COMBO": "COMBO",
"COMBO8259": "Furucombo",
"COMBOX": "ComBox",
"COMC": "ComCrica Token",
"COME": "Community of Meme",
@ -4096,7 +4095,7 @@
"COOHA": "CoolHash",
"COOK": "Cook Finance",
"COOK33720": "mETH Protocol",
"COOKIE": "CookieSale",
"COOKIE": "Cookie DAO",
"COOKTOKEN": "Cook",
"COOL": "CoolCoin",
"COOP": "Coop Network",
@ -8898,6 +8897,7 @@
"IMS": "Independent Money System",
"IMST": "Imsmart",
"IMT": "Moneytoken",
"IMU": "Immunefi",
"IMUSIFY": "imusify",
"IMVR": "ImmVRse",
"IMX": "Immutable",
@ -9654,6 +9654,7 @@
"KINECOSYSTEM": "Kin",
"KINET": "KinetixFi",
"KING": "King Swap",
"KING33695": "King Protocol",
"KING93": "King93",
"KINGB": "King Bean",
"KINGBONK": "King Bonk",
@ -9981,7 +9982,6 @@
"LAELAPS": "Laelaps",
"LAFFIN": "Laffin Kamala",
"LAI": "LayerAI",
"LAI23846": "LayerAI",
"LAIKA": "LAIKA",
"LAIKAPROTOCOL": "Laika Protocol",
"LAINESOL": "Laine Staked SOL",
@ -11576,7 +11576,8 @@
"MOMO": "Momo",
"MOMO2": "MOMO 2.0",
"MOMO2025": "momo",
"MON": "PocMon",
"MON": "Monad",
"MON22337": "PocMon",
"MON30495": "Monad",
"MON30950": "MON",
"MONA": "MonaCoin",
@ -11645,7 +11646,6 @@
"MOOMEME": "MOO MOO",
"MOOMOO": "MOOMOO THE BULL",
"MOON": "MoonSwap",
"MOON7396": "r/CryptoCurrency Moons",
"MOONARCH": "Moonarch.app",
"MOONB": "Moon Base",
"MOONBEANS": "Moonbeans",
@ -13604,7 +13604,8 @@
"PHV": "PATHHIVE",
"PHX": "Phoenix Global [old]",
"PHY": "DePHY",
"PI": "Plian",
"PI": "Pi Network",
"PI2620": "Plian",
"PI35697": "Pi",
"PIA": "Olympia AI",
"PIAI": "Pi Network AI",
@ -13830,7 +13831,7 @@
"PNDC": "Pond Coin",
"PNDN": "Pandana",
"PNDO": "Pondo",
"PNDR": "Pandora Protocol",
"PNDR": "Pandora Finance",
"PNFT": "Pawn My NFT",
"PNG": "Pangolin",
"PNGDA": "Pengda Yellow Panda",
@ -14001,7 +14002,7 @@
"POWERMARKET": "POWER MARKET",
"POWR": "Powerledger",
"POWSCHE": "Powsche",
"POX": "Pollux Coin",
"POX": "Monkey Pox",
"POZO": "Pozo Coin",
"PP": "Phoenix Protocol Dao",
"PPAD": "PlayPad",
@ -14508,6 +14509,7 @@
"RAIL": "Railgun",
"RAILS": "Rails Token",
"RAIN": "Rainmaker Games",
"RAIN38341": "Rain",
"RAINBOW": "Rainbow Token",
"RAINBOWTOKEN": "Rainbow Token",
"RAINC": "RainCheck",
@ -15930,7 +15932,8 @@
"SKULL": "Skull Order",
"SKUY": "SEKUYA",
"SKX": "SKPANAX",
"SKY": "Skycoin",
"SKY": "Sky",
"SKY1619": "Skycoin",
"SKY33038": "Sky",
"SKYA": "Sekuya Multiverse",
"SKYAI": "SKYAI",
@ -18274,7 +18277,8 @@
"USDQ": "Quantoz USDQ",
"USDQSTABLE": "USDQ",
"USDR": "Wrapped USDR",
"USDS": "Stably Classic",
"USDS": "USDS",
"USDS20039": "USDS",
"USDS33039": "USDS",
"USDSB": "USDSB",
"USDSTABLY": "StableUSD",
@ -18698,7 +18702,7 @@
"VPAY": "VPay by Virtuals",
"VPK": "Vulture Peak",
"VPND": "VaporNodes",
"VPP": "Virtue Poker",
"VPP": "Virtue Poker Points",
"VPR": "VaporWallet",
"VPRC": "VapersCoin",
"VPS": "VPS AI",
@ -18948,7 +18952,7 @@
"WDOT": "WDOT",
"WDR": "Wider Coin",
"WDX": "WeiDex",
"WE": "Wanda Exchange",
"WE": "WeBuy",
"WEALTH": "WealthCoin",
"WEAPON": "MEGAWEAPON",
"WEAR": "MetaWear",
@ -19116,7 +19120,6 @@
"WINB": "WINBIT CASINO",
"WINE": "Wine Shares",
"WING": "Wing Finance",
"WING7048": "Wing Finance",
"WINGS": "Wings",
"WINK": "Wink",
"WINN": "Winnerz",
@ -19687,7 +19690,6 @@
"XPLA": "XPLA",
"XPLL": "ParallelChain",
"XPM": "Primecoin",
"XPM20261": "XPMarket",
"XPN": "PANTHEON X",
"XPND": "Time Raiders",
"XPNET": "XP NETWORK",

11
apps/api/src/decorators/requires-scope-of-access.decorator.ts

@ -4,15 +4,24 @@ import { ScopeGuard } from '@ghostfolio/api/guards/scope.guard';
import { Scope } from '@ghostfolio/common/scopes';
import { applyDecorators, SetMetadata, UseGuards } from '@nestjs/common';
import { ToolScopes } from '@rekog/mcp-nest';
/**
* Marks a handler which requires the given scopes of an access, but no
* authenticated user. The access itself is the credential, hence a client of
* the model context protocol can use it.
*
* The same scopes are declared to the transport of the model context
* protocol, which lists a tool only for an access whose scopes cover it. The
* transport refuses the call of a tool which it does not list with a protocol
* error before the guards and the filter of the exceptions run.
*/
export function RequiresScopeOfAccess(...requiredScopes: Scope[]) {
export function RequiresScopeOfAccess(scope: Scope, ...otherScopes: Scope[]) {
const requiredScopes = [scope, ...otherScopes];
return applyDecorators(
SetMetadata(REQUIRES_SCOPE_KEY, requiredScopes),
ToolScopes(requiredScopes),
UseGuards(AccessGuard, ScopeGuard)
);
}

8
apps/api/src/guards/access.guard.ts

@ -1,3 +1,4 @@
import { getActiveImpersonationOfBearerToken } from '@ghostfolio/api/helper/bearer-token.helper';
import { getRequest } from '@ghostfolio/api/helper/execution-context.helper';
import type { RequestWithUser } from '@ghostfolio/common/types';
@ -28,14 +29,17 @@ export class AccessGuard implements CanActivate {
public canActivate(context: ExecutionContext) {
const request = getRequest<RequestWithUser>(context);
if (!request?.impersonationOfBearerToken?.isActive) {
const impersonationOfBearerToken =
getActiveImpersonationOfBearerToken(request);
if (!impersonationOfBearerToken) {
throw new HttpException(
getReasonPhrase(StatusCodes.FORBIDDEN),
StatusCodes.FORBIDDEN
);
}
request.impersonation = request.impersonationOfBearerToken;
request.impersonation = impersonationOfBearerToken;
return true;
}

31
apps/api/src/helper/bearer-token.helper.spec.ts

@ -0,0 +1,31 @@
import { scopes } from '@ghostfolio/common/scopes';
import { getMcpUserOfBearerToken } from './bearer-token.helper';
describe('getMcpUserOfBearerToken', () => {
it('should give the scopes of an active access', () => {
expect(
getMcpUserOfBearerToken({
impersonationOfBearerToken: {
isActive: true,
scopes: [scopes.portfolioRead]
}
})
).toEqual({ scopes: [scopes.portfolioRead] });
});
it('should give no user for an inactive access', () => {
expect(
getMcpUserOfBearerToken({
impersonationOfBearerToken: {
isActive: false,
scopes: [scopes.portfolioRead]
}
})
).toBeUndefined();
});
it('should give no user without an access', () => {
expect(getMcpUserOfBearerToken({})).toBeUndefined();
});
});

29
apps/api/src/helper/bearer-token.helper.ts

@ -1,3 +1,5 @@
import type { RequestWithUser } from '@ghostfolio/common/types';
const PREFIX_OF_BEARER_TOKEN = 'bearer ';
/**
@ -16,3 +18,30 @@ export function getAccessIdOfBearerToken(authorization?: string) {
? value.slice(PREFIX_OF_BEARER_TOKEN.length).trim() || undefined
: undefined;
}
/**
* Gives the context of the access which the authorization middleware of the
* model context protocol resolved from the bearer token, but only while the
* access is active
*/
export function getActiveImpersonationOfBearerToken(
request?: Pick<RequestWithUser, 'impersonationOfBearerToken'>
) {
return request?.impersonationOfBearerToken?.isActive
? request.impersonationOfBearerToken
: undefined;
}
/**
* Gives the user which the transport of the model context protocol evaluates
* to list and to call the tools. It carries the scopes of the active access,
* hence the transport lists only the tools which the access covers.
*/
export function getMcpUserOfBearerToken(request: unknown) {
const impersonationOfBearerToken =
getActiveImpersonationOfBearerToken(request);
return impersonationOfBearerToken
? { scopes: impersonationOfBearerToken.scopes }
: undefined;
}

38
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html

@ -48,7 +48,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.totalBuy"
/>
</div>
@ -62,7 +62,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.totalSell"
/>
</div>
@ -79,7 +79,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.totalInvestmentValueWithCurrencyEffect"
/>
</div>
@ -93,7 +93,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.grossPerformanceWithCurrencyEffect"
/>
</div>
@ -110,7 +110,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.fees"
/>
</div>
@ -127,7 +127,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.netPerformanceWithCurrencyEffect"
/>
</div>
@ -171,7 +171,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.totalAssetsInBaseCurrency"
/>
</div>
@ -217,7 +217,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="holdingsInBaseCurrency"
/>
</div>
@ -233,7 +233,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="investmentsInBaseCurrency"
/>
</div>
@ -248,7 +248,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.emergencyFund?.assets"
/>
</div>
@ -295,7 +295,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.totalCashInBaseCurrency"
/>
</div>
@ -311,7 +311,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.cash"
/>
</div>
@ -326,7 +326,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.emergencyFund?.cash"
/>
</div>
@ -356,7 +356,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.excludedAccountsAndActivities"
/>
</div>
@ -379,7 +379,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.liabilitiesInBaseCurrency"
/>
</div>
@ -396,7 +396,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.totalValueInBaseCurrency"
/>
</div>
@ -469,7 +469,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.emergencyFund?.total"
/>
</div>
@ -483,7 +483,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.interestInBaseCurrency"
/>
</div>
@ -497,7 +497,7 @@
[isLoading]="isLoading"
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
[unit]="displayedCurrency"
[value]="summary?.dividendInBaseCurrency"
/>
</div>

4
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts

@ -79,6 +79,10 @@ export class GfPortfolioSummaryComponent implements OnChanges {
: 0;
}
protected get displayedCurrency() {
return this.deviceType === 'mobile' ? undefined : this.baseCurrency;
}
protected get emergencyFundPercentage() {
return this.summary?.totalValueInBaseCurrency
? (this.summary.emergencyFund?.total || 0) /

2
apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html

@ -30,7 +30,7 @@
systems, including
<a href="https://github.com/bigbeartechworld/big-bear-casaos"
>CasaOS</a
>,
>, <a href="https://easypanel.io/templates/ghostfolio">Easypanel</a>,
<a href="https://github.com/lildude/ha-addon-ghostfolio"
>Home Assistant</a
>, <a href="https://www.runtipi.io/docs/apps-available">Runtipi</a>,

40
apps/client/src/app/pages/portfolio/analysis/analysis-page.html

@ -279,6 +279,46 @@
/>
</div>
</div>
@if (user?.settings?.isExperimentalFeatures) {
<div><hr /></div>
<div class="d-flex py-1">
<div
class="align-items-center d-flex flex-grow-1 mr-2 text-truncate"
>
<span i18n>Absolute Dividend Performance</span>
@if (user?.subscription?.type === 'Basic') {
<gf-premium-indicator class="ml-1" />
}
</div>
<div class="d-flex justify-content-end">
<gf-value
class="justify-content-end"
position="end"
[isCurrency]="true"
[isLoading]="isLoadingInvestmentChart"
[locale]="user?.settings?.locale"
[unit]="user?.settings?.baseCurrency"
[value]="performance?.dividendInBaseCurrency"
/>
</div>
</div>
<div class="d-flex ml-3 py-1">
<div class="flex-grow-1 mr-2 text-truncate">
<ng-container i18n>Dividend Performance</ng-container>
</div>
<div class="d-flex justify-content-end">
<gf-value
class="justify-content-end"
position="end"
[colorizeSign]="true"
[isLoading]="isLoadingInvestmentChart"
[isPercent]="true"
[locale]="user?.settings?.locale"
[value]="performance?.dividendPercentageWithCurrencyEffect"
/>
</div>
</div>
}
</mat-card-content>
</mat-card>
</div>

162
apps/client/src/locales/messages.ca.xlf

@ -3,7 +3,7 @@
<body>
<trans-unit id="659291745893337969" datatype="html">
<source>Invalid API key</source>
<target state="new">Invalid API key</target>
<target state="translated">Clau API no vàlida</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">115</context>
@ -324,7 +324,7 @@
</trans-unit>
<trans-unit id="251113330629316982" datatype="html">
<source>Date must be in the future.</source>
<target state="new">Date must be in the future.</target>
<target state="translated">La data ha de ser futura.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html</context>
<context context-type="linenumber">70</context>
@ -332,7 +332,7 @@
</trans-unit>
<trans-unit id="2522011507610634749" datatype="html">
<source>Fetch market price</source>
<target state="new">Fetch market price</target>
<target state="translated">Recupera el preu de mercat</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
<context context-type="linenumber">40</context>
@ -372,7 +372,7 @@
</trans-unit>
<trans-unit id="8264632476919693099" datatype="html">
<source>Any person who has the link can view the data.</source>
<target state="new">Any person who has the link can view the data.</target>
<target state="translated">Qualsevol persona que tingui l’enllaç pot veure les dades.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html</context>
<context context-type="linenumber">42</context>
@ -399,7 +399,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">161</context>
<context context-type="linenumber">163</context>
</context-group>
</trans-unit>
<trans-unit id="962765493084218985" datatype="html">
@ -415,7 +415,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">94</context>
</context-group>
</trans-unit>
<trans-unit id="67448018899048896" datatype="html">
@ -495,7 +495,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">35</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -511,12 +511,12 @@
<target state="translated">Total</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">61</context>
<context context-type="linenumber">63</context>
</context-group>
</trans-unit>
<trans-unit id="4323470180912194028" datatype="html">
<source>Copy</source>
<target state="new">Copy</target>
<target state="translated">Copia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/notifications/alert-dialog/alert-dialog.html</context>
<context context-type="linenumber">20</context>
@ -547,7 +547,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -579,11 +579,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">198</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">231</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -595,7 +595,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -627,7 +627,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">350</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -675,7 +675,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">361</context>
<context context-type="linenumber">363</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -696,7 +696,7 @@
</trans-unit>
<trans-unit id="8282940047848889809" datatype="html">
<source>Paid</source>
<target state="new">Paid</target>
<target state="translated">De pagament</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts</context>
<context context-type="linenumber">136</context>
@ -788,7 +788,7 @@
</trans-unit>
<trans-unit id="4467323362722952678" datatype="html">
<source>Unknown</source>
<target state="new">Unknown</target>
<target state="translated">Desconegut</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">89</context>
@ -804,7 +804,7 @@
</trans-unit>
<trans-unit id="4472298507300372923" datatype="html">
<source>View and manage</source>
<target state="new">View and manage</target>
<target state="translated">Veure i gestionar</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/access-level-icon/access-level-icon.component.html</context>
<context context-type="linenumber">9</context>
@ -904,7 +904,7 @@
</trans-unit>
<trans-unit id="3973560112150137298" datatype="html">
<source>Find an account...</source>
<target state="new">Find an account...</target>
<target state="translated">Cerca un compte...</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">450</context>
@ -984,7 +984,7 @@
</trans-unit>
<trans-unit id="1806667489382256324" datatype="html">
<source>Category</source>
<target state="new">Category</target>
<target state="translated">Categoria</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.html</context>
<context context-type="linenumber">76</context>
@ -1039,7 +1039,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">63</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="641154803270226443" datatype="html">
@ -1052,7 +1052,7 @@
</trans-unit>
<trans-unit id="6418462810730461014" datatype="html">
<source>Data Gathering Frequency</source>
<target state="new">Data Gathering Frequency</target>
<target state="translated">Freqüència de recollida de dades</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html</context>
<context context-type="linenumber">477</context>
@ -1088,7 +1088,7 @@
</trans-unit>
<trans-unit id="6131560364436366828" datatype="html">
<source>Apply current market price</source>
<target state="new">Apply current market price</target>
<target state="translated">Aplica el preu de mercat actual</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">221</context>
@ -1096,7 +1096,7 @@
</trans-unit>
<trans-unit id="6135731497699355929" datatype="html">
<source>Subscription History</source>
<target state="new">Subscription History</target>
<target state="translated">Historial de subscripcions</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">156</context>
@ -1144,7 +1144,7 @@
</trans-unit>
<trans-unit id="7194017842579795231" datatype="html">
<source>Healthcare</source>
<target state="new">Healthcare</target>
<target state="translated">Salut</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">98</context>
@ -1276,7 +1276,7 @@
</trans-unit>
<trans-unit id="5765523585863707029" datatype="html">
<source>Technology</source>
<target state="new">Technology</target>
<target state="translated">Tecnologia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">102</context>
@ -1298,6 +1298,14 @@
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5918319622596548216" datatype="html">
<source>Financial Advisor</source>
<target state="new">Financial Advisor</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
</context-group>
</trans-unit>
<trans-unit id="5918502349406094800" datatype="html">
<source>Scraper Configuration</source>
<target state="translated">Configuració del Proveïdor de Dades</target>
@ -1344,7 +1352,7 @@
</trans-unit>
<trans-unit id="8319378030525016917" datatype="html">
<source>Asset profile has been saved</source>
<target state="new">Asset profile has been saved</target>
<target state="translated">El perfil de l’actiu s’ha desat</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts</context>
<context context-type="linenumber">754</context>
@ -1367,7 +1375,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">307</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -1512,7 +1520,7 @@
</trans-unit>
<trans-unit id="8155924822307560615" datatype="html">
<source>Update Account</source>
<target state="new">Update Account</target>
<target state="translated">Actualitza el compte</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context>
<context context-type="linenumber">120</context>
@ -1644,7 +1652,7 @@
</trans-unit>
<trans-unit id="4340477809050781416" datatype="html">
<source>Current year</source>
<target state="new">Current year</target>
<target state="translated">Any actual</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts</context>
<context context-type="linenumber">267</context>
@ -1660,7 +1668,7 @@
</trans-unit>
<trans-unit id="4344577155823592293" datatype="html">
<source>Cache has been flushed.</source>
<target state="new">Cache has been flushed.</target>
<target state="translated">La memòria cau s’ha buidat.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">281</context>
@ -1955,7 +1963,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">141</context>
<context context-type="linenumber">143</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -1963,7 +1971,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">87</context>
<context context-type="linenumber">88</context>
</context-group>
</trans-unit>
<trans-unit id="1999364180941264642" datatype="html">
@ -2080,7 +2088,7 @@
</trans-unit>
<trans-unit id="1022809987579838138" datatype="html">
<source>Last Used</source>
<target state="new">Last Used</target>
<target state="translated">Últim ús</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/access-table/access-table.component.html</context>
<context context-type="linenumber">31</context>
@ -2184,7 +2192,7 @@
</trans-unit>
<trans-unit id="6004588582437169024" datatype="html">
<source>Current week</source>
<target state="new">Current week</target>
<target state="translated">Setmana actual</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts</context>
<context context-type="linenumber">259</context>
@ -2212,7 +2220,7 @@
</trans-unit>
<trans-unit id="8186013988289067040" datatype="html">
<source>Code</source>
<target state="new">Code</target>
<target state="translated">Codi</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">165</context>
@ -2312,7 +2320,7 @@
</trans-unit>
<trans-unit id="273949409065292025" datatype="html">
<source>Energy</source>
<target state="new">Energy</target>
<target state="translated">Energia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">96</context>
@ -2447,7 +2455,7 @@
<target state="translated">Definiu l’import del vostre fons d’emergència.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="5451369123952965511" datatype="html">
@ -2676,7 +2684,7 @@
</trans-unit>
<trans-unit id="4037247308022519888" datatype="html">
<source>The value has been copied to the clipboard</source>
<target state="new">The value has been copied to the clipboard</target>
<target state="translated">El valor s’ha copiat al porta-retalls</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/notifications/alert-dialog/alert-dialog.component.ts</context>
<context context-type="linenumber">46</context>
@ -2752,7 +2760,7 @@
</trans-unit>
<trans-unit id="1259421956660976189" datatype="html">
<source>Add Account</source>
<target state="new">Add Account</target>
<target state="translated">Afegeix un compte</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context>
<context context-type="linenumber">101</context>
@ -2848,7 +2856,7 @@
</trans-unit>
<trans-unit id="570056762949632344" datatype="html">
<source>Clone Activity</source>
<target state="new">Clone Activity</target>
<target state="translated">Clona l’activitat</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context>
<context context-type="linenumber">190</context>
@ -2992,7 +3000,7 @@
</trans-unit>
<trans-unit id="3885497195825665706" datatype="html">
<source>Next</source>
<target state="new">Next</target>
<target state="translated">Següent</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.html</context>
<context context-type="linenumber">406</context>
@ -3148,7 +3156,7 @@
</trans-unit>
<trans-unit id="2988589012964101797" datatype="html">
<source>Daily</source>
<target state="new">Daily</target>
<target state="translated">Diàriament</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts</context>
<context context-type="linenumber">247</context>
@ -3347,7 +3355,7 @@
<target state="new">Financial Planning</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">111</context>
</context-group>
</trans-unit>
<trans-unit id="5203279511751768967" datatype="html">
@ -3849,7 +3857,7 @@
</trans-unit>
<trans-unit id="2047393478951255414" datatype="html">
<source>Creation</source>
<target state="new">Creation</target>
<target state="translated">Creació</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">191</context>
@ -4664,7 +4672,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">124</context>
<context context-type="linenumber">126</context>
</context-group>
</trans-unit>
<trans-unit id="1111435290645444471" datatype="html">
@ -4847,6 +4855,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="8717427042493194723" datatype="html">
<source>Dividend Performance</source>
<target state="new">Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">307</context>
</context-group>
</trans-unit>
<trans-unit id="4164773401836100336" datatype="html">
<source>Choose or drop a file here</source>
<target state="translated">Trieu o deixeu anar un fitxer aquí</target>
@ -5248,7 +5264,7 @@
<target state="translated">A dalt</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">292</context>
<context context-type="linenumber">332</context>
</context-group>
</trans-unit>
<trans-unit id="3568940932272598597" datatype="html">
@ -5256,7 +5272,7 @@
<target state="translated">A baix</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">343</context>
<context context-type="linenumber">383</context>
</context-group>
</trans-unit>
<trans-unit id="5242468862715363747" datatype="html">
@ -5264,7 +5280,7 @@
<target state="translated">Evolució de la cartera</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">398</context>
<context context-type="linenumber">438</context>
</context-group>
</trans-unit>
<trans-unit id="6766448922039123937" datatype="html">
@ -5272,7 +5288,7 @@
<target state="translated">Cronologia de la inversió</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">425</context>
<context context-type="linenumber">465</context>
</context-group>
</trans-unit>
<trans-unit id="1440519383036502539" datatype="html">
@ -5280,7 +5296,7 @@
<target state="translated">Ratxa actual</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">446</context>
<context context-type="linenumber">486</context>
</context-group>
</trans-unit>
<trans-unit id="457461496511383061" datatype="html">
@ -5288,7 +5304,7 @@
<target state="translated">Ratxa més llarga</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">455</context>
<context context-type="linenumber">495</context>
</context-group>
</trans-unit>
<trans-unit id="6854252543786630145" datatype="html">
@ -5296,7 +5312,7 @@
<target state="translated">Cronologia de dividends</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">482</context>
<context context-type="linenumber">522</context>
</context-group>
</trans-unit>
<trans-unit id="5857197365507636437" datatype="html">
@ -5921,7 +5937,7 @@
<target state="new">Stock Tracking</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">114</context>
</context-group>
</trans-unit>
<trans-unit id="2192861316878557060" datatype="html">
@ -5945,7 +5961,7 @@
<target state="new">Web</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">122</context>
<context context-type="linenumber">123</context>
</context-group>
</trans-unit>
<trans-unit id="9169772418374159113" datatype="html">
@ -6413,15 +6429,15 @@
<target state="translated">Assignació</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">266</context>
<context context-type="linenumber">268</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">139</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -6441,7 +6457,7 @@
<target state="translated">Mostra-ho tot</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">242</context>
<context context-type="linenumber">243</context>
</context-group>
</trans-unit>
<trans-unit id="4086606389696938932" datatype="html">
@ -6758,14 +6774,14 @@
</trans-unit>
<trans-unit id="1468015720862673946" datatype="html">
<source>View Details</source>
<target state="new">View Details</target>
<target state="translated">Veure els detalls</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-users/admin-users.html</context>
<context context-type="linenumber">220</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">337</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="953022389548488004" datatype="html">
@ -6880,6 +6896,14 @@
<context context-type="linenumber">74</context>
</context-group>
</trans-unit>
<trans-unit id="1400496117963702686" datatype="html">
<source>Absolute Dividend Performance</source>
<target state="new">Absolute Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">288</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
<source>Africa</source>
<target state="translated">Àfrica</target>
@ -7241,7 +7265,7 @@
<target state="new">Wealth Management</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">115</context>
<context context-type="linenumber">116</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
@ -7445,7 +7469,7 @@
<target state="new">Tax Reporting</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">115</context>
</context-group>
</trans-unit>
<trans-unit id="288029731436334434" datatype="html">
@ -7749,7 +7773,7 @@
<target state="new">Investment Research</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">111</context>
<context context-type="linenumber">112</context>
</context-group>
</trans-unit>
<trans-unit id="1552707280301129490" datatype="html">
@ -7975,7 +7999,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">167</context>
<context context-type="linenumber">171</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html</context>
@ -8031,7 +8055,7 @@
<target state="new">Net Worth Tracking</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
</trans-unit>
<trans-unit id="4068738931505527681" datatype="html">
@ -8159,7 +8183,7 @@
<target state="new">Change</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">160</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>
@ -8195,11 +8219,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">185</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">186</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

102
apps/client/src/locales/messages.de.xlf

@ -166,7 +166,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">35</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -182,7 +182,7 @@
<target state="translated">Gesamt</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">61</context>
<context context-type="linenumber">63</context>
</context-group>
</trans-unit>
<trans-unit id="6555318547274416232" datatype="html">
@ -210,11 +210,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">198</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">231</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -226,7 +226,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -258,7 +258,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">350</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -306,7 +306,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">361</context>
<context context-type="linenumber">363</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -566,7 +566,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">63</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="9004532723522060201" datatype="html">
@ -1098,7 +1098,7 @@
<target state="translated">Bitte setze den Betrag deines Notfallfonds.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="4136685477767543249" datatype="html">
@ -1166,15 +1166,15 @@
<target state="translated">Allokation</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">266</context>
<context context-type="linenumber">268</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">139</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -1194,7 +1194,7 @@
<target state="translated">Alle anzeigen</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">242</context>
<context context-type="linenumber">243</context>
</context-group>
</trans-unit>
<trans-unit id="6048892649018070225" datatype="html">
@ -1638,7 +1638,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -1658,7 +1658,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">161</context>
<context context-type="linenumber">163</context>
</context-group>
</trans-unit>
<trans-unit id="962765493084218985" datatype="html">
@ -1674,7 +1674,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">94</context>
</context-group>
</trans-unit>
<trans-unit id="8636086114930438800" datatype="html">
@ -1690,7 +1690,7 @@
<target state="translated">Finanzplanung</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">111</context>
</context-group>
</trans-unit>
<trans-unit id="4979019387603946865" datatype="html">
@ -2082,7 +2082,7 @@
<target state="translated">Zeitstrahl der Investitionen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">425</context>
<context context-type="linenumber">465</context>
</context-group>
</trans-unit>
<trans-unit id="6293970137138896363" datatype="html">
@ -2090,7 +2090,7 @@
<target state="translated">Gewinner</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">292</context>
<context context-type="linenumber">332</context>
</context-group>
</trans-unit>
<trans-unit id="3568940932272598597" datatype="html">
@ -2098,7 +2098,7 @@
<target state="translated">Verlierer</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">343</context>
<context context-type="linenumber">383</context>
</context-group>
</trans-unit>
<trans-unit id="5857197365507636437" datatype="html">
@ -2242,7 +2242,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">141</context>
<context context-type="linenumber">143</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2250,7 +2250,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">87</context>
<context context-type="linenumber">88</context>
</context-group>
</trans-unit>
<trans-unit id="1599232533055023845" datatype="html">
@ -2282,7 +2282,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">307</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2338,7 +2338,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">124</context>
<context context-type="linenumber">126</context>
</context-group>
</trans-unit>
<trans-unit id="848497846891931418" datatype="html">
@ -3066,7 +3066,7 @@
<target state="translated">Portfolio Wertentwicklung</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">398</context>
<context context-type="linenumber">438</context>
</context-group>
</trans-unit>
<trans-unit id="8186013988289067040" datatype="html">
@ -3293,6 +3293,14 @@
<context context-type="linenumber">79</context>
</context-group>
</trans-unit>
<trans-unit id="1400496117963702686" datatype="html">
<source>Absolute Dividend Performance</source>
<target state="translated">Absolute Dividendenperformance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">288</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
<source>Africa</source>
<target state="translated">Afrika</target>
@ -3454,7 +3462,7 @@
<target state="translated">Zeitstrahl der Dividenden</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">482</context>
<context context-type="linenumber">522</context>
</context-group>
</trans-unit>
<trans-unit id="7763941937414903315" datatype="html">
@ -3637,6 +3645,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="8717427042493194723" datatype="html">
<source>Dividend Performance</source>
<target state="translated">Dividendenperformance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">307</context>
</context-group>
</trans-unit>
<trans-unit id="8036977202721714375" datatype="html">
<source>Yearly</source>
<target state="translated">Jährlich</target>
@ -4454,7 +4470,7 @@
<target state="translated">Aktueller Streak</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">446</context>
<context context-type="linenumber">486</context>
</context-group>
</trans-unit>
<trans-unit id="457461496511383061" datatype="html">
@ -4462,7 +4478,7 @@
<target state="translated">Längster Streak</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">455</context>
<context context-type="linenumber">495</context>
</context-group>
</trans-unit>
<trans-unit id="4845030128243887325" datatype="html">
@ -4506,7 +4522,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">337</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="5003799027167349722" datatype="html">
@ -4697,6 +4713,14 @@
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5918319622596548216" datatype="html">
<source>Financial Advisor</source>
<target state="translated">Finanzberatung</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
</context-group>
</trans-unit>
<trans-unit id="5918502349406094800" datatype="html">
<source>Scraper Configuration</source>
<target state="translated">Scraper Konfiguration</target>
@ -4902,7 +4926,7 @@
<target state="translated">Web</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">122</context>
<context context-type="linenumber">123</context>
</context-group>
</trans-unit>
<trans-unit id="9169772418374159113" datatype="html">
@ -5864,7 +5888,7 @@
<target state="translated">Aktien-Tracking</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">114</context>
</context-group>
</trans-unit>
<trans-unit id="2192861316878557060" datatype="html">
@ -7265,7 +7289,7 @@
<target state="translated">Vermögensverwaltung</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">115</context>
<context context-type="linenumber">116</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
@ -7469,7 +7493,7 @@
<target state="translated">Steuerreporting</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">115</context>
</context-group>
</trans-unit>
<trans-unit id="288029731436334434" datatype="html">
@ -7773,7 +7797,7 @@
<target state="translated">Investment Research</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">111</context>
<context context-type="linenumber">112</context>
</context-group>
</trans-unit>
<trans-unit id="1552707280301129490" datatype="html">
@ -7999,7 +8023,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">167</context>
<context context-type="linenumber">171</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html</context>
@ -8055,7 +8079,7 @@
<target state="translated">Vermögens-Tracking</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
</trans-unit>
<trans-unit id="4068738931505527681" datatype="html">
@ -8183,7 +8207,7 @@
<target state="translated">Änderung</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">160</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>
@ -8219,11 +8243,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">185</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">186</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

102
apps/client/src/locales/messages.es.xlf

@ -167,7 +167,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">35</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -183,7 +183,7 @@
<target state="translated">Total</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">61</context>
<context context-type="linenumber">63</context>
</context-group>
</trans-unit>
<trans-unit id="6555318547274416232" datatype="html">
@ -211,11 +211,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">198</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">231</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -227,7 +227,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -259,7 +259,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">350</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -307,7 +307,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">361</context>
<context context-type="linenumber">363</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -567,7 +567,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">63</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="9004532723522060201" datatype="html">
@ -1083,7 +1083,7 @@
<target state="translated">Por favor, ingresa la cantidad de tu fondo de emergencia.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="4136685477767543249" datatype="html">
@ -1151,15 +1151,15 @@
<target state="translated">Distribución</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">266</context>
<context context-type="linenumber">268</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">139</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -1179,7 +1179,7 @@
<target state="translated">Mostrar todos</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">242</context>
<context context-type="linenumber">243</context>
</context-group>
</trans-unit>
<trans-unit id="6048892649018070225" datatype="html">
@ -1623,7 +1623,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -1643,7 +1643,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">161</context>
<context context-type="linenumber">163</context>
</context-group>
</trans-unit>
<trans-unit id="962765493084218985" datatype="html">
@ -1659,7 +1659,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">94</context>
</context-group>
</trans-unit>
<trans-unit id="8636086114930438800" datatype="html">
@ -1675,7 +1675,7 @@
<target state="translated">Planificación financiera</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">111</context>
</context-group>
</trans-unit>
<trans-unit id="4979019387603946865" datatype="html">
@ -2067,7 +2067,7 @@
<target state="translated">Cronología de la inversión</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">425</context>
<context context-type="linenumber">465</context>
</context-group>
</trans-unit>
<trans-unit id="6293970137138896363" datatype="html">
@ -2075,7 +2075,7 @@
<target state="translated">Mejores</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">292</context>
<context context-type="linenumber">332</context>
</context-group>
</trans-unit>
<trans-unit id="3568940932272598597" datatype="html">
@ -2083,7 +2083,7 @@
<target state="translated">Peores</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">343</context>
<context context-type="linenumber">383</context>
</context-group>
</trans-unit>
<trans-unit id="5857197365507636437" datatype="html">
@ -2227,7 +2227,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">141</context>
<context context-type="linenumber">143</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2235,7 +2235,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">87</context>
<context context-type="linenumber">88</context>
</context-group>
</trans-unit>
<trans-unit id="1599232533055023845" datatype="html">
@ -2267,7 +2267,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">307</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2323,7 +2323,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">124</context>
<context context-type="linenumber">126</context>
</context-group>
</trans-unit>
<trans-unit id="848497846891931418" datatype="html">
@ -3051,7 +3051,7 @@
<target state="translated">Evolución de la cartera</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">398</context>
<context context-type="linenumber">438</context>
</context-group>
</trans-unit>
<trans-unit id="8186013988289067040" datatype="html">
@ -3278,6 +3278,14 @@
<context context-type="linenumber">79</context>
</context-group>
</trans-unit>
<trans-unit id="1400496117963702686" datatype="html">
<source>Absolute Dividend Performance</source>
<target state="new">Absolute Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">288</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
<source>Africa</source>
<target state="translated">África</target>
@ -3487,7 +3495,7 @@
<target state="translated">Calendario de dividendos</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">482</context>
<context context-type="linenumber">522</context>
</context-group>
</trans-unit>
<trans-unit id="7608037008789240367" datatype="html">
@ -3622,6 +3630,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="8717427042493194723" datatype="html">
<source>Dividend Performance</source>
<target state="new">Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">307</context>
</context-group>
</trans-unit>
<trans-unit id="8036977202721714375" datatype="html">
<source>Yearly</source>
<target state="translated">Anual</target>
@ -4431,7 +4447,7 @@
<target state="translated">Racha actual</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">446</context>
<context context-type="linenumber">486</context>
</context-group>
</trans-unit>
<trans-unit id="457461496511383061" datatype="html">
@ -4439,7 +4455,7 @@
<target state="translated">Racha más larga</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">455</context>
<context context-type="linenumber">495</context>
</context-group>
</trans-unit>
<trans-unit id="4845030128243887325" datatype="html">
@ -4483,7 +4499,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">337</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="5003799027167349722" datatype="html">
@ -4674,6 +4690,14 @@
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5918319622596548216" datatype="html">
<source>Financial Advisor</source>
<target state="new">Financial Advisor</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
</context-group>
</trans-unit>
<trans-unit id="5918502349406094800" datatype="html">
<source>Scraper Configuration</source>
<target state="translated">Configuración del scraper</target>
@ -4879,7 +4903,7 @@
<target state="translated">Web</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">122</context>
<context context-type="linenumber">123</context>
</context-group>
</trans-unit>
<trans-unit id="9169772418374159113" datatype="html">
@ -5841,7 +5865,7 @@
<target state="translated">Seguimiento de acciones</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">114</context>
</context-group>
</trans-unit>
<trans-unit id="2192861316878557060" datatype="html">
@ -7242,7 +7266,7 @@
<target state="translated">Gestión de patrimonios</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">115</context>
<context context-type="linenumber">116</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
@ -7446,7 +7470,7 @@
<target state="translated">Informes fiscales</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">115</context>
</context-group>
</trans-unit>
<trans-unit id="288029731436334434" datatype="html">
@ -7750,7 +7774,7 @@
<target state="translated">Investigación de inversiones</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">111</context>
<context context-type="linenumber">112</context>
</context-group>
</trans-unit>
<trans-unit id="1552707280301129490" datatype="html">
@ -7976,7 +8000,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">167</context>
<context context-type="linenumber">171</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html</context>
@ -8032,7 +8056,7 @@
<target state="translated">Seguimiento del patrimonio neto</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
</trans-unit>
<trans-unit id="4068738931505527681" datatype="html">
@ -8160,7 +8184,7 @@
<target state="translated">Cambio</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">160</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>
@ -8196,11 +8220,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">185</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">186</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

102
apps/client/src/locales/messages.fr.xlf

@ -118,7 +118,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">94</context>
</context-group>
</trans-unit>
<trans-unit id="8953033926734869941" datatype="html">
@ -174,7 +174,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">35</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -190,7 +190,7 @@
<target state="translated">Total</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">61</context>
<context context-type="linenumber">63</context>
</context-group>
</trans-unit>
<trans-unit id="4323470180912194028" datatype="html">
@ -226,7 +226,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -246,7 +246,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">161</context>
<context context-type="linenumber">163</context>
</context-group>
</trans-unit>
<trans-unit id="6555318547274416232" datatype="html">
@ -274,11 +274,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">198</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">231</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -290,7 +290,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -322,7 +322,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">350</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -370,7 +370,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">361</context>
<context context-type="linenumber">363</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -638,7 +638,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">63</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="641154803270226443" datatype="html">
@ -830,7 +830,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">307</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -1418,7 +1418,7 @@
<target state="translated">Veuillez entrer le montant de votre fonds d’urgence :</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="2067863610333602482" datatype="html">
@ -1450,7 +1450,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">141</context>
<context context-type="linenumber">143</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -1458,7 +1458,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">87</context>
<context context-type="linenumber">88</context>
</context-group>
</trans-unit>
<trans-unit id="5376727317218692773" datatype="html">
@ -2006,7 +2006,7 @@
<target state="translated">Planification Financière</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">111</context>
</context-group>
</trans-unit>
<trans-unit id="4798457301875181136" datatype="html">
@ -2386,7 +2386,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">124</context>
<context context-type="linenumber">126</context>
</context-group>
</trans-unit>
<trans-unit id="1111435290645444471" datatype="html">
@ -2794,7 +2794,7 @@
<target state="translated">Haut</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">292</context>
<context context-type="linenumber">332</context>
</context-group>
</trans-unit>
<trans-unit id="3568940932272598597" datatype="html">
@ -2802,7 +2802,7 @@
<target state="translated">Bas</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">343</context>
<context context-type="linenumber">383</context>
</context-group>
</trans-unit>
<trans-unit id="5242468862715363747" datatype="html">
@ -2810,7 +2810,7 @@
<target state="translated">Évolution du Portefeuille</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">398</context>
<context context-type="linenumber">438</context>
</context-group>
</trans-unit>
<trans-unit id="6766448922039123937" datatype="html">
@ -2818,7 +2818,7 @@
<target state="translated">Historique des Investissements</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">425</context>
<context context-type="linenumber">465</context>
</context-group>
</trans-unit>
<trans-unit id="6854252543786630145" datatype="html">
@ -2826,7 +2826,7 @@
<target state="translated">Historique des Dividendes</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">482</context>
<context context-type="linenumber">522</context>
</context-group>
</trans-unit>
<trans-unit id="5857197365507636437" datatype="html">
@ -3254,15 +3254,15 @@
<target state="translated">Part</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">266</context>
<context context-type="linenumber">268</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">139</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -3282,7 +3282,7 @@
<target state="translated">Montrer tout</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">242</context>
<context context-type="linenumber">243</context>
</context-group>
</trans-unit>
<trans-unit id="4086606389696938932" datatype="html">
@ -3485,6 +3485,14 @@
<context context-type="linenumber">74</context>
</context-group>
</trans-unit>
<trans-unit id="1400496117963702686" datatype="html">
<source>Absolute Dividend Performance</source>
<target state="new">Absolute Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">288</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
<source>Africa</source>
<target state="translated">Afrique</target>
@ -3621,6 +3629,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="8717427042493194723" datatype="html">
<source>Dividend Performance</source>
<target state="new">Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">307</context>
</context-group>
</trans-unit>
<trans-unit id="8036977202721714375" datatype="html">
<source>Yearly</source>
<target state="translated">Annuel</target>
@ -4430,7 +4446,7 @@
<target state="translated">Série en cours</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">446</context>
<context context-type="linenumber">486</context>
</context-group>
</trans-unit>
<trans-unit id="457461496511383061" datatype="html">
@ -4438,7 +4454,7 @@
<target state="translated">Série la plus longue</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">455</context>
<context context-type="linenumber">495</context>
</context-group>
</trans-unit>
<trans-unit id="4845030128243887325" datatype="html">
@ -4482,7 +4498,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">337</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="5003799027167349722" datatype="html">
@ -4673,6 +4689,14 @@
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5918319622596548216" datatype="html">
<source>Financial Advisor</source>
<target state="new">Financial Advisor</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
</context-group>
</trans-unit>
<trans-unit id="5918502349406094800" datatype="html">
<source>Scraper Configuration</source>
<target state="translated">Configuration du Scraper</target>
@ -4878,7 +4902,7 @@
<target state="translated">Web</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">122</context>
<context context-type="linenumber">123</context>
</context-group>
</trans-unit>
<trans-unit id="9169772418374159113" datatype="html">
@ -5840,7 +5864,7 @@
<target state="translated">Suivi des Actions</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">114</context>
</context-group>
</trans-unit>
<trans-unit id="2192861316878557060" datatype="html">
@ -7241,7 +7265,7 @@
<target state="translated">Gestion de Patrimoine</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">115</context>
<context context-type="linenumber">116</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
@ -7445,7 +7469,7 @@
<target state="translated">Déclaration Fiscale</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">115</context>
</context-group>
</trans-unit>
<trans-unit id="288029731436334434" datatype="html">
@ -7749,7 +7773,7 @@
<target state="translated">Recherche d’Investissement</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">111</context>
<context context-type="linenumber">112</context>
</context-group>
</trans-unit>
<trans-unit id="1552707280301129490" datatype="html">
@ -7975,7 +7999,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">167</context>
<context context-type="linenumber">171</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html</context>
@ -8031,7 +8055,7 @@
<target state="translated">Suivi du Patrimoine Net</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
</trans-unit>
<trans-unit id="4068738931505527681" datatype="html">
@ -8159,7 +8183,7 @@
<target state="translated">Variation</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">160</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>
@ -8195,11 +8219,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">185</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">186</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

102
apps/client/src/locales/messages.it.xlf

@ -167,7 +167,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">35</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -183,7 +183,7 @@
<target state="translated">Totale</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">61</context>
<context context-type="linenumber">63</context>
</context-group>
</trans-unit>
<trans-unit id="6555318547274416232" datatype="html">
@ -211,11 +211,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">198</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">231</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -227,7 +227,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -259,7 +259,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">350</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -307,7 +307,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">361</context>
<context context-type="linenumber">363</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -567,7 +567,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">63</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="9004532723522060201" datatype="html">
@ -1083,7 +1083,7 @@
<target state="translated">Inserisci l’importo del tuo fondo di emergenza:</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="4136685477767543249" datatype="html">
@ -1151,15 +1151,15 @@
<target state="translated">Allocazione</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">266</context>
<context context-type="linenumber">268</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">139</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -1179,7 +1179,7 @@
<target state="translated">Mostra tutti</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">242</context>
<context context-type="linenumber">243</context>
</context-group>
</trans-unit>
<trans-unit id="6048892649018070225" datatype="html">
@ -1623,7 +1623,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -1643,7 +1643,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">161</context>
<context context-type="linenumber">163</context>
</context-group>
</trans-unit>
<trans-unit id="962765493084218985" datatype="html">
@ -1659,7 +1659,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">94</context>
</context-group>
</trans-unit>
<trans-unit id="8636086114930438800" datatype="html">
@ -1675,7 +1675,7 @@
<target state="new">Financial Planning</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">111</context>
</context-group>
</trans-unit>
<trans-unit id="4979019387603946865" datatype="html">
@ -2067,7 +2067,7 @@
<target state="translated">Cronologia degli investimenti</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">425</context>
<context context-type="linenumber">465</context>
</context-group>
</trans-unit>
<trans-unit id="6293970137138896363" datatype="html">
@ -2075,7 +2075,7 @@
<target state="translated">In alto</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">292</context>
<context context-type="linenumber">332</context>
</context-group>
</trans-unit>
<trans-unit id="3568940932272598597" datatype="html">
@ -2083,7 +2083,7 @@
<target state="translated">In basso</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">343</context>
<context context-type="linenumber">383</context>
</context-group>
</trans-unit>
<trans-unit id="5857197365507636437" datatype="html">
@ -2227,7 +2227,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">141</context>
<context context-type="linenumber">143</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2235,7 +2235,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">87</context>
<context context-type="linenumber">88</context>
</context-group>
</trans-unit>
<trans-unit id="1599232533055023845" datatype="html">
@ -2267,7 +2267,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">307</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2323,7 +2323,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">124</context>
<context context-type="linenumber">126</context>
</context-group>
</trans-unit>
<trans-unit id="848497846891931418" datatype="html">
@ -3051,7 +3051,7 @@
<target state="translated">Evoluzione del portafoglio</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">398</context>
<context context-type="linenumber">438</context>
</context-group>
</trans-unit>
<trans-unit id="8186013988289067040" datatype="html">
@ -3278,6 +3278,14 @@
<context context-type="linenumber">79</context>
</context-group>
</trans-unit>
<trans-unit id="1400496117963702686" datatype="html">
<source>Absolute Dividend Performance</source>
<target state="new">Absolute Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">288</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
<source>Africa</source>
<target state="translated">Africa</target>
@ -3487,7 +3495,7 @@
<target state="translated">Cronologia dei dividendi</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">482</context>
<context context-type="linenumber">522</context>
</context-group>
</trans-unit>
<trans-unit id="7608037008789240367" datatype="html">
@ -3622,6 +3630,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="8717427042493194723" datatype="html">
<source>Dividend Performance</source>
<target state="new">Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">307</context>
</context-group>
</trans-unit>
<trans-unit id="8036977202721714375" datatype="html">
<source>Yearly</source>
<target state="translated">Annuale</target>
@ -4431,7 +4447,7 @@
<target state="translated">Serie attuale</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">446</context>
<context context-type="linenumber">486</context>
</context-group>
</trans-unit>
<trans-unit id="457461496511383061" datatype="html">
@ -4439,7 +4455,7 @@
<target state="translated">Serie più lunga</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">455</context>
<context context-type="linenumber">495</context>
</context-group>
</trans-unit>
<trans-unit id="4845030128243887325" datatype="html">
@ -4483,7 +4499,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">337</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="5003799027167349722" datatype="html">
@ -4674,6 +4690,14 @@
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5918319622596548216" datatype="html">
<source>Financial Advisor</source>
<target state="new">Financial Advisor</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
</context-group>
</trans-unit>
<trans-unit id="5918502349406094800" datatype="html">
<source>Scraper Configuration</source>
<target state="translated">Configurazione dello scraper</target>
@ -4879,7 +4903,7 @@
<target state="new">Web</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">122</context>
<context context-type="linenumber">123</context>
</context-group>
</trans-unit>
<trans-unit id="9169772418374159113" datatype="html">
@ -5841,7 +5865,7 @@
<target state="new">Stock Tracking</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">114</context>
</context-group>
</trans-unit>
<trans-unit id="2192861316878557060" datatype="html">
@ -7242,7 +7266,7 @@
<target state="translated">Gestione Patrimoniale</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">115</context>
<context context-type="linenumber">116</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
@ -7446,7 +7470,7 @@
<target state="new">Tax Reporting</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">115</context>
</context-group>
</trans-unit>
<trans-unit id="288029731436334434" datatype="html">
@ -7750,7 +7774,7 @@
<target state="new">Investment Research</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">111</context>
<context context-type="linenumber">112</context>
</context-group>
</trans-unit>
<trans-unit id="1552707280301129490" datatype="html">
@ -7976,7 +8000,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">167</context>
<context context-type="linenumber">171</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html</context>
@ -8032,7 +8056,7 @@
<target state="new">Net Worth Tracking</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
</trans-unit>
<trans-unit id="4068738931505527681" datatype="html">
@ -8160,7 +8184,7 @@
<target state="translated">Cambia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">160</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>
@ -8196,11 +8220,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">185</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">186</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

102
apps/client/src/locales/messages.ja.xlf

@ -328,7 +328,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">161</context>
<context context-type="linenumber">163</context>
</context-group>
</trans-unit>
<trans-unit id="962765493084218985" datatype="html">
@ -344,7 +344,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">94</context>
</context-group>
</trans-unit>
<trans-unit id="67448018899048896" datatype="html">
@ -424,7 +424,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">35</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -440,7 +440,7 @@
<target state="translated">合計</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">61</context>
<context context-type="linenumber">63</context>
</context-group>
</trans-unit>
<trans-unit id="4323470180912194028" datatype="html">
@ -476,7 +476,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -508,11 +508,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">198</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">231</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -524,7 +524,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -556,7 +556,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">350</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -604,7 +604,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">361</context>
<context context-type="linenumber">363</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -928,7 +928,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">63</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="641154803270226443" datatype="html">
@ -1191,6 +1191,14 @@
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5918319622596548216" datatype="html">
<source>Financial Advisor</source>
<target state="new">Financial Advisor</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
</context-group>
</trans-unit>
<trans-unit id="5918502349406094800" datatype="html">
<source>Scraper Configuration</source>
<target state="translated">スクレイパーの設定</target>
@ -1216,7 +1224,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">307</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2164,7 +2172,7 @@
<target state="translated">緊急用資金の金額を設定してください。</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="2067863610333602482" datatype="html">
@ -2196,7 +2204,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">141</context>
<context context-type="linenumber">143</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2204,7 +2212,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">87</context>
<context context-type="linenumber">88</context>
</context-group>
</trans-unit>
<trans-unit id="5376727317218692773" datatype="html">
@ -3028,7 +3036,7 @@
<target state="new">Financial Planning</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">111</context>
</context-group>
</trans-unit>
<trans-unit id="5203279511751768967" datatype="html">
@ -4308,7 +4316,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">124</context>
<context context-type="linenumber">126</context>
</context-group>
</trans-unit>
<trans-unit id="1111435290645444471" datatype="html">
@ -4491,6 +4499,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="8717427042493194723" datatype="html">
<source>Dividend Performance</source>
<target state="new">Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">307</context>
</context-group>
</trans-unit>
<trans-unit id="4164773401836100336" datatype="html">
<source>Choose or drop a file here</source>
<target state="translated">ここでファイルを選択またはドロップ</target>
@ -4824,7 +4840,7 @@
<target state="translated">トップ</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">292</context>
<context context-type="linenumber">332</context>
</context-group>
</trans-unit>
<trans-unit id="3568940932272598597" datatype="html">
@ -4832,7 +4848,7 @@
<target state="translated">ボトム</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">343</context>
<context context-type="linenumber">383</context>
</context-group>
</trans-unit>
<trans-unit id="5242468862715363747" datatype="html">
@ -4840,7 +4856,7 @@
<target state="translated">ポートフォリオ進化</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">398</context>
<context context-type="linenumber">438</context>
</context-group>
</trans-unit>
<trans-unit id="6766448922039123937" datatype="html">
@ -4848,7 +4864,7 @@
<target state="translated">投資タイムライン</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">425</context>
<context context-type="linenumber">465</context>
</context-group>
</trans-unit>
<trans-unit id="1440519383036502539" datatype="html">
@ -4856,7 +4872,7 @@
<target state="translated">現在のストリーク</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">446</context>
<context context-type="linenumber">486</context>
</context-group>
</trans-unit>
<trans-unit id="457461496511383061" datatype="html">
@ -4864,7 +4880,7 @@
<target state="translated">最長のストリーク</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">455</context>
<context context-type="linenumber">495</context>
</context-group>
</trans-unit>
<trans-unit id="6854252543786630145" datatype="html">
@ -4872,7 +4888,7 @@
<target state="translated">配当金タイムライン</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">482</context>
<context context-type="linenumber">522</context>
</context-group>
</trans-unit>
<trans-unit id="5857197365507636437" datatype="html">
@ -5485,7 +5501,7 @@
<target state="new">Stock Tracking</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">114</context>
</context-group>
</trans-unit>
<trans-unit id="2192861316878557060" datatype="html">
@ -5509,7 +5525,7 @@
<target state="new">Web</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">122</context>
<context context-type="linenumber">123</context>
</context-group>
</trans-unit>
<trans-unit id="9169772418374159113" datatype="html">
@ -5869,15 +5885,15 @@
<target state="translated">配分</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">266</context>
<context context-type="linenumber">268</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">139</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -5897,7 +5913,7 @@
<target state="translated">すべて表示</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">242</context>
<context context-type="linenumber">243</context>
</context-group>
</trans-unit>
<trans-unit id="4086606389696938932" datatype="html">
@ -6205,7 +6221,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">337</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="953022389548488004" datatype="html">
@ -6320,6 +6336,14 @@
<context context-type="linenumber">74</context>
</context-group>
</trans-unit>
<trans-unit id="1400496117963702686" datatype="html">
<source>Absolute Dividend Performance</source>
<target state="new">Absolute Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">288</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
<source>Africa</source>
<target state="translated">アフリカ</target>
@ -7194,7 +7218,7 @@
<target state="new">Wealth Management</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">115</context>
<context context-type="linenumber">116</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
@ -7526,7 +7550,7 @@
<target state="new">Tax Reporting</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">115</context>
</context-group>
</trans-unit>
<trans-unit id="8375528527939577247" datatype="html">
@ -7774,7 +7798,7 @@
<target state="new">Investment Research</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">111</context>
<context context-type="linenumber">112</context>
</context-group>
</trans-unit>
<trans-unit id="1552707280301129490" datatype="html">
@ -8000,7 +8024,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">167</context>
<context context-type="linenumber">171</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html</context>
@ -8056,7 +8080,7 @@
<target state="new">Net Worth Tracking</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
</trans-unit>
<trans-unit id="4068738931505527681" datatype="html">
@ -8184,7 +8208,7 @@
<target state="new">Change</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">160</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>
@ -8220,11 +8244,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">185</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">186</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

102
apps/client/src/locales/messages.ko.xlf

@ -328,7 +328,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">161</context>
<context context-type="linenumber">163</context>
</context-group>
</trans-unit>
<trans-unit id="962765493084218985" datatype="html">
@ -344,7 +344,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">94</context>
</context-group>
</trans-unit>
<trans-unit id="67448018899048896" datatype="html">
@ -424,7 +424,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">35</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -440,7 +440,7 @@
<target state="translated">합계</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">61</context>
<context context-type="linenumber">63</context>
</context-group>
</trans-unit>
<trans-unit id="4323470180912194028" datatype="html">
@ -476,7 +476,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -508,11 +508,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">198</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">231</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -524,7 +524,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -556,7 +556,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">350</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -604,7 +604,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">361</context>
<context context-type="linenumber">363</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -928,7 +928,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">63</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="641154803270226443" datatype="html">
@ -1191,6 +1191,14 @@
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5918319622596548216" datatype="html">
<source>Financial Advisor</source>
<target state="new">Financial Advisor</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
</context-group>
</trans-unit>
<trans-unit id="5918502349406094800" datatype="html">
<source>Scraper Configuration</source>
<target state="translated">스크래퍼 설정</target>
@ -1216,7 +1224,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">307</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2164,7 +2172,7 @@
<target state="translated">비상금 금액을 설정해 주세요.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="2067863610333602482" datatype="html">
@ -2196,7 +2204,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">141</context>
<context context-type="linenumber">143</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2204,7 +2212,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">87</context>
<context context-type="linenumber">88</context>
</context-group>
</trans-unit>
<trans-unit id="5376727317218692773" datatype="html">
@ -3028,7 +3036,7 @@
<target state="translated">재무 설계</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">111</context>
</context-group>
</trans-unit>
<trans-unit id="5203279511751768967" datatype="html">
@ -4300,7 +4308,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">124</context>
<context context-type="linenumber">126</context>
</context-group>
</trans-unit>
<trans-unit id="1111435290645444471" datatype="html">
@ -4483,6 +4491,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="8717427042493194723" datatype="html">
<source>Dividend Performance</source>
<target state="new">Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">307</context>
</context-group>
</trans-unit>
<trans-unit id="4164773401836100336" datatype="html">
<source>Choose or drop a file here</source>
<target state="translated">여기에 파일을 선택하거나 드롭하세요.</target>
@ -4816,7 +4832,7 @@
<target state="translated">상위</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">292</context>
<context context-type="linenumber">332</context>
</context-group>
</trans-unit>
<trans-unit id="3568940932272598597" datatype="html">
@ -4824,7 +4840,7 @@
<target state="translated">하위</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">343</context>
<context context-type="linenumber">383</context>
</context-group>
</trans-unit>
<trans-unit id="5242468862715363747" datatype="html">
@ -4832,7 +4848,7 @@
<target state="translated">포트폴리오 진화</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">398</context>
<context context-type="linenumber">438</context>
</context-group>
</trans-unit>
<trans-unit id="6766448922039123937" datatype="html">
@ -4840,7 +4856,7 @@
<target state="translated">투자 일정</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">425</context>
<context context-type="linenumber">465</context>
</context-group>
</trans-unit>
<trans-unit id="1440519383036502539" datatype="html">
@ -4848,7 +4864,7 @@
<target state="translated">현재 연속</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">446</context>
<context context-type="linenumber">486</context>
</context-group>
</trans-unit>
<trans-unit id="457461496511383061" datatype="html">
@ -4856,7 +4872,7 @@
<target state="translated">최장 연속</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">455</context>
<context context-type="linenumber">495</context>
</context-group>
</trans-unit>
<trans-unit id="6854252543786630145" datatype="html">
@ -4864,7 +4880,7 @@
<target state="translated">배당 일정</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">482</context>
<context context-type="linenumber">522</context>
</context-group>
</trans-unit>
<trans-unit id="5857197365507636437" datatype="html">
@ -5477,7 +5493,7 @@
<target state="translated">주식 추적</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">114</context>
</context-group>
</trans-unit>
<trans-unit id="2192861316878557060" datatype="html">
@ -5501,7 +5517,7 @@
<target state="translated">웹</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">122</context>
<context context-type="linenumber">123</context>
</context-group>
</trans-unit>
<trans-unit id="9169772418374159113" datatype="html">
@ -5861,15 +5877,15 @@
<target state="translated">자산 배분</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">266</context>
<context context-type="linenumber">268</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">139</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -5889,7 +5905,7 @@
<target state="translated">모두 표시</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">242</context>
<context context-type="linenumber">243</context>
</context-group>
</trans-unit>
<trans-unit id="4086606389696938932" datatype="html">
@ -6205,7 +6221,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">337</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="953022389548488004" datatype="html">
@ -6320,6 +6336,14 @@
<context context-type="linenumber">74</context>
</context-group>
</trans-unit>
<trans-unit id="1400496117963702686" datatype="html">
<source>Absolute Dividend Performance</source>
<target state="new">Absolute Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">288</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
<source>Africa</source>
<target state="translated">아프리카</target>
@ -7194,7 +7218,7 @@
<target state="translated">자산관리</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">115</context>
<context context-type="linenumber">116</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
@ -7526,7 +7550,7 @@
<target state="translated">세금 보고</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">115</context>
</context-group>
</trans-unit>
<trans-unit id="8375528527939577247" datatype="html">
@ -7774,7 +7798,7 @@
<target state="translated">투자 리서치</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">111</context>
<context context-type="linenumber">112</context>
</context-group>
</trans-unit>
<trans-unit id="1552707280301129490" datatype="html">
@ -8000,7 +8024,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">167</context>
<context context-type="linenumber">171</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html</context>
@ -8056,7 +8080,7 @@
<target state="translated">순자산 추적</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
</trans-unit>
<trans-unit id="4068738931505527681" datatype="html">
@ -8184,7 +8208,7 @@
<target state="translated">변동</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">160</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>
@ -8220,11 +8244,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">185</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">186</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

102
apps/client/src/locales/messages.nl.xlf

@ -166,7 +166,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">35</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -182,7 +182,7 @@
<target state="translated">Totaal</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">61</context>
<context context-type="linenumber">63</context>
</context-group>
</trans-unit>
<trans-unit id="6555318547274416232" datatype="html">
@ -210,11 +210,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">198</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">231</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -226,7 +226,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -258,7 +258,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">350</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -306,7 +306,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">361</context>
<context context-type="linenumber">363</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -566,7 +566,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">63</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="9004532723522060201" datatype="html">
@ -1082,7 +1082,7 @@
<target state="translated">Voer het bedrag van je noodfonds in:</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="4136685477767543249" datatype="html">
@ -1150,15 +1150,15 @@
<target state="translated">Allocatie</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">266</context>
<context context-type="linenumber">268</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">139</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -1178,7 +1178,7 @@
<target state="translated">Toon alle</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">242</context>
<context context-type="linenumber">243</context>
</context-group>
</trans-unit>
<trans-unit id="6048892649018070225" datatype="html">
@ -1622,7 +1622,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -1642,7 +1642,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">161</context>
<context context-type="linenumber">163</context>
</context-group>
</trans-unit>
<trans-unit id="962765493084218985" datatype="html">
@ -1658,7 +1658,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">94</context>
</context-group>
</trans-unit>
<trans-unit id="8636086114930438800" datatype="html">
@ -1674,7 +1674,7 @@
<target state="translated">Financiële planning</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">111</context>
</context-group>
</trans-unit>
<trans-unit id="4979019387603946865" datatype="html">
@ -2066,7 +2066,7 @@
<target state="translated">Tijdlijn investeringen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">425</context>
<context context-type="linenumber">465</context>
</context-group>
</trans-unit>
<trans-unit id="6293970137138896363" datatype="html">
@ -2074,7 +2074,7 @@
<target state="translated">Winnaars</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">292</context>
<context context-type="linenumber">332</context>
</context-group>
</trans-unit>
<trans-unit id="3568940932272598597" datatype="html">
@ -2082,7 +2082,7 @@
<target state="translated">Verliezers</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">343</context>
<context context-type="linenumber">383</context>
</context-group>
</trans-unit>
<trans-unit id="5857197365507636437" datatype="html">
@ -2226,7 +2226,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">141</context>
<context context-type="linenumber">143</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2234,7 +2234,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">87</context>
<context context-type="linenumber">88</context>
</context-group>
</trans-unit>
<trans-unit id="1599232533055023845" datatype="html">
@ -2266,7 +2266,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">307</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2322,7 +2322,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">124</context>
<context context-type="linenumber">126</context>
</context-group>
</trans-unit>
<trans-unit id="848497846891931418" datatype="html">
@ -3050,7 +3050,7 @@
<target state="translated">Waardeontwikkeling van portefeuille</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">398</context>
<context context-type="linenumber">438</context>
</context-group>
</trans-unit>
<trans-unit id="8186013988289067040" datatype="html">
@ -3277,6 +3277,14 @@
<context context-type="linenumber">79</context>
</context-group>
</trans-unit>
<trans-unit id="1400496117963702686" datatype="html">
<source>Absolute Dividend Performance</source>
<target state="new">Absolute Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">288</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
<source>Africa</source>
<target state="translated">Afrika</target>
@ -3486,7 +3494,7 @@
<target state="translated">Tijdlijn dividend</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">482</context>
<context context-type="linenumber">522</context>
</context-group>
</trans-unit>
<trans-unit id="7608037008789240367" datatype="html">
@ -3621,6 +3629,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="8717427042493194723" datatype="html">
<source>Dividend Performance</source>
<target state="new">Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">307</context>
</context-group>
</trans-unit>
<trans-unit id="8036977202721714375" datatype="html">
<source>Yearly</source>
<target state="translated">Jaarlijks</target>
@ -4430,7 +4446,7 @@
<target state="translated">Huidige reeks</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">446</context>
<context context-type="linenumber">486</context>
</context-group>
</trans-unit>
<trans-unit id="457461496511383061" datatype="html">
@ -4438,7 +4454,7 @@
<target state="translated">Langste reeks</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">455</context>
<context context-type="linenumber">495</context>
</context-group>
</trans-unit>
<trans-unit id="4845030128243887325" datatype="html">
@ -4482,7 +4498,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">337</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="5003799027167349722" datatype="html">
@ -4673,6 +4689,14 @@
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5918319622596548216" datatype="html">
<source>Financial Advisor</source>
<target state="new">Financial Advisor</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
</context-group>
</trans-unit>
<trans-unit id="5918502349406094800" datatype="html">
<source>Scraper Configuration</source>
<target state="translated">Scraper instellingen</target>
@ -4878,7 +4902,7 @@
<target state="translated">Web</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">122</context>
<context context-type="linenumber">123</context>
</context-group>
</trans-unit>
<trans-unit id="9169772418374159113" datatype="html">
@ -5840,7 +5864,7 @@
<target state="translated">Aandelen volgen</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">114</context>
</context-group>
</trans-unit>
<trans-unit id="2192861316878557060" datatype="html">
@ -7241,7 +7265,7 @@
<target state="translated">Vermogensbeheer</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">115</context>
<context context-type="linenumber">116</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
@ -7445,7 +7469,7 @@
<target state="translated">Belastingrapportage</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">115</context>
</context-group>
</trans-unit>
<trans-unit id="288029731436334434" datatype="html">
@ -7749,7 +7773,7 @@
<target state="translated">Beleggingsonderzoek</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">111</context>
<context context-type="linenumber">112</context>
</context-group>
</trans-unit>
<trans-unit id="1552707280301129490" datatype="html">
@ -7975,7 +7999,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">167</context>
<context context-type="linenumber">171</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html</context>
@ -8031,7 +8055,7 @@
<target state="translated">Netto waarde volgen</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
</trans-unit>
<trans-unit id="4068738931505527681" datatype="html">
@ -8159,7 +8183,7 @@
<target state="translated">Aanpassen</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">160</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>
@ -8195,11 +8219,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">185</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">186</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

102
apps/client/src/locales/messages.pl.xlf

@ -327,7 +327,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">161</context>
<context context-type="linenumber">163</context>
</context-group>
</trans-unit>
<trans-unit id="962765493084218985" datatype="html">
@ -343,7 +343,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">94</context>
</context-group>
</trans-unit>
<trans-unit id="9011425576088183078" datatype="html">
@ -415,7 +415,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">35</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -431,7 +431,7 @@
<target state="translated">Suma</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">61</context>
<context context-type="linenumber">63</context>
</context-group>
</trans-unit>
<trans-unit id="4323470180912194028" datatype="html">
@ -467,7 +467,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -499,11 +499,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">198</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">231</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -515,7 +515,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -547,7 +547,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">350</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -595,7 +595,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">361</context>
<context context-type="linenumber">363</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -919,7 +919,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">63</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="641154803270226443" datatype="html">
@ -1158,6 +1158,14 @@
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5918319622596548216" datatype="html">
<source>Financial Advisor</source>
<target state="new">Financial Advisor</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
</context-group>
</trans-unit>
<trans-unit id="5918502349406094800" datatype="html">
<source>Scraper Configuration</source>
<target state="translated">Konfiguracja Scrapera</target>
@ -1183,7 +1191,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">307</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2131,7 +2139,7 @@
<target state="translated">Wprowadź wysokość funduszu rezerwowego:</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="2067863610333602482" datatype="html">
@ -2163,7 +2171,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">141</context>
<context context-type="linenumber">143</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2171,7 +2179,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">87</context>
<context context-type="linenumber">88</context>
</context-group>
</trans-unit>
<trans-unit id="5376727317218692773" datatype="html">
@ -2995,7 +3003,7 @@
<target state="new">Financial Planning</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">111</context>
</context-group>
</trans-unit>
<trans-unit id="5203279511751768967" datatype="html">
@ -4267,7 +4275,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">124</context>
<context context-type="linenumber">126</context>
</context-group>
</trans-unit>
<trans-unit id="1111435290645444471" datatype="html">
@ -4450,6 +4458,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="8717427042493194723" datatype="html">
<source>Dividend Performance</source>
<target state="new">Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">307</context>
</context-group>
</trans-unit>
<trans-unit id="4164773401836100336" datatype="html">
<source>Choose or drop a file here</source>
<target state="translated">Wybierz lub przeciągnij plik tutaj</target>
@ -4783,7 +4799,7 @@
<target state="translated">Największe wzrosty</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">292</context>
<context context-type="linenumber">332</context>
</context-group>
</trans-unit>
<trans-unit id="3568940932272598597" datatype="html">
@ -4791,7 +4807,7 @@
<target state="translated">Największy spadek</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">343</context>
<context context-type="linenumber">383</context>
</context-group>
</trans-unit>
<trans-unit id="5242468862715363747" datatype="html">
@ -4799,7 +4815,7 @@
<target state="translated">Rozwój portfela</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">398</context>
<context context-type="linenumber">438</context>
</context-group>
</trans-unit>
<trans-unit id="6766448922039123937" datatype="html">
@ -4807,7 +4823,7 @@
<target state="translated">Oś czasu inwestycji</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">425</context>
<context context-type="linenumber">465</context>
</context-group>
</trans-unit>
<trans-unit id="1440519383036502539" datatype="html">
@ -4815,7 +4831,7 @@
<target state="translated">Obecna passa</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">446</context>
<context context-type="linenumber">486</context>
</context-group>
</trans-unit>
<trans-unit id="457461496511383061" datatype="html">
@ -4823,7 +4839,7 @@
<target state="translated">Najdłuższa passa</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">455</context>
<context context-type="linenumber">495</context>
</context-group>
</trans-unit>
<trans-unit id="6854252543786630145" datatype="html">
@ -4831,7 +4847,7 @@
<target state="translated">Oś czasu dywidend</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">482</context>
<context context-type="linenumber">522</context>
</context-group>
</trans-unit>
<trans-unit id="5857197365507636437" datatype="html">
@ -5432,7 +5448,7 @@
<target state="new">Stock Tracking</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">114</context>
</context-group>
</trans-unit>
<trans-unit id="2192861316878557060" datatype="html">
@ -5456,7 +5472,7 @@
<target state="new">Web</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">122</context>
<context context-type="linenumber">123</context>
</context-group>
</trans-unit>
<trans-unit id="9169772418374159113" datatype="html">
@ -5784,15 +5800,15 @@
<target state="translated">Podział</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">266</context>
<context context-type="linenumber">268</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">139</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -5812,7 +5828,7 @@
<target state="translated">Pokaż wszystko</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">242</context>
<context context-type="linenumber">243</context>
</context-group>
</trans-unit>
<trans-unit id="4086606389696938932" datatype="html">
@ -6128,7 +6144,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">337</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="953022389548488004" datatype="html">
@ -6243,6 +6259,14 @@
<context context-type="linenumber">74</context>
</context-group>
</trans-unit>
<trans-unit id="1400496117963702686" datatype="html">
<source>Absolute Dividend Performance</source>
<target state="new">Absolute Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">288</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
<source>Africa</source>
<target state="translated">Afryka</target>
@ -7241,7 +7265,7 @@
<target state="translated">Zarządzanie Majątkiem</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">115</context>
<context context-type="linenumber">116</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
@ -7445,7 +7469,7 @@
<target state="new">Tax Reporting</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">115</context>
</context-group>
</trans-unit>
<trans-unit id="288029731436334434" datatype="html">
@ -7749,7 +7773,7 @@
<target state="new">Investment Research</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">111</context>
<context context-type="linenumber">112</context>
</context-group>
</trans-unit>
<trans-unit id="1552707280301129490" datatype="html">
@ -7975,7 +7999,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">167</context>
<context context-type="linenumber">171</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html</context>
@ -8031,7 +8055,7 @@
<target state="new">Net Worth Tracking</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
</trans-unit>
<trans-unit id="4068738931505527681" datatype="html">
@ -8159,7 +8183,7 @@
<target state="translated">Zmiana</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">160</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>
@ -8195,11 +8219,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">185</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">186</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

102
apps/client/src/locales/messages.pt.xlf

@ -118,7 +118,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">94</context>
</context-group>
</trans-unit>
<trans-unit id="8953033926734869941" datatype="html">
@ -174,7 +174,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">35</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -190,7 +190,7 @@
<target state="translated">Total</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">61</context>
<context context-type="linenumber">63</context>
</context-group>
</trans-unit>
<trans-unit id="4323470180912194028" datatype="html">
@ -226,7 +226,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -246,7 +246,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">161</context>
<context context-type="linenumber">163</context>
</context-group>
</trans-unit>
<trans-unit id="6555318547274416232" datatype="html">
@ -274,11 +274,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">198</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">231</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -290,7 +290,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -322,7 +322,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">350</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -370,7 +370,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">361</context>
<context context-type="linenumber">363</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -638,7 +638,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">63</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="9004532723522060201" datatype="html">
@ -1262,7 +1262,7 @@
<target state="translated">Por favor, insira o valor do seu fundo de emergência:</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="2067863610333602482" datatype="html">
@ -1294,7 +1294,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">141</context>
<context context-type="linenumber">143</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -1302,7 +1302,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">87</context>
<context context-type="linenumber">88</context>
</context-group>
</trans-unit>
<trans-unit id="5298486223740169185" datatype="html">
@ -1410,15 +1410,15 @@
<target state="translated">Alocação</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">266</context>
<context context-type="linenumber">268</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">139</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -1438,7 +1438,7 @@
<target state="translated">Mostrar tudo</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">242</context>
<context context-type="linenumber">243</context>
</context-group>
</trans-unit>
<trans-unit id="6048892649018070225" datatype="html">
@ -1990,7 +1990,7 @@
<target state="new">Financial Planning</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">111</context>
</context-group>
</trans-unit>
<trans-unit id="4979019387603946865" datatype="html">
@ -2322,7 +2322,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">124</context>
<context context-type="linenumber">126</context>
</context-group>
</trans-unit>
<trans-unit id="1111435290645444471" datatype="html">
@ -2430,7 +2430,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">307</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2674,7 +2674,7 @@
<target state="translated">Topo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">292</context>
<context context-type="linenumber">332</context>
</context-group>
</trans-unit>
<trans-unit id="3568940932272598597" datatype="html">
@ -2682,7 +2682,7 @@
<target state="translated">Fundo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">343</context>
<context context-type="linenumber">383</context>
</context-group>
</trans-unit>
<trans-unit id="5242468862715363747" datatype="html">
@ -2690,7 +2690,7 @@
<target state="translated">Evolução do Portefólio</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">398</context>
<context context-type="linenumber">438</context>
</context-group>
</trans-unit>
<trans-unit id="6766448922039123937" datatype="html">
@ -2698,7 +2698,7 @@
<target state="translated">Cronograma de Investimento</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">425</context>
<context context-type="linenumber">465</context>
</context-group>
</trans-unit>
<trans-unit id="5857197365507636437" datatype="html">
@ -3289,6 +3289,14 @@
<context context-type="linenumber">74</context>
</context-group>
</trans-unit>
<trans-unit id="1400496117963702686" datatype="html">
<source>Absolute Dividend Performance</source>
<target state="new">Absolute Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">288</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
<source>Africa</source>
<target state="translated">África</target>
@ -3570,7 +3578,7 @@
<target state="translated">Cronograma de Dividendos</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">482</context>
<context context-type="linenumber">522</context>
</context-group>
</trans-unit>
<trans-unit id="7608037008789240367" datatype="html">
@ -3621,6 +3629,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="8717427042493194723" datatype="html">
<source>Dividend Performance</source>
<target state="new">Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">307</context>
</context-group>
</trans-unit>
<trans-unit id="8036977202721714375" datatype="html">
<source>Yearly</source>
<target state="translated">Anualmente</target>
@ -4430,7 +4446,7 @@
<target state="translated">Série Atual</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">446</context>
<context context-type="linenumber">486</context>
</context-group>
</trans-unit>
<trans-unit id="457461496511383061" datatype="html">
@ -4438,7 +4454,7 @@
<target state="translated">Série mais Longa</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">455</context>
<context context-type="linenumber">495</context>
</context-group>
</trans-unit>
<trans-unit id="4845030128243887325" datatype="html">
@ -4482,7 +4498,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">337</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="5003799027167349722" datatype="html">
@ -4673,6 +4689,14 @@
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5918319622596548216" datatype="html">
<source>Financial Advisor</source>
<target state="new">Financial Advisor</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
</context-group>
</trans-unit>
<trans-unit id="5918502349406094800" datatype="html">
<source>Scraper Configuration</source>
<target state="translated">Configuração do raspador</target>
@ -4878,7 +4902,7 @@
<target state="new">Web</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">122</context>
<context context-type="linenumber">123</context>
</context-group>
</trans-unit>
<trans-unit id="9169772418374159113" datatype="html">
@ -5840,7 +5864,7 @@
<target state="new">Stock Tracking</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">114</context>
</context-group>
</trans-unit>
<trans-unit id="2192861316878557060" datatype="html">
@ -7241,7 +7265,7 @@
<target state="translated">Gestão de patrimônio</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">115</context>
<context context-type="linenumber">116</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
@ -7445,7 +7469,7 @@
<target state="new">Tax Reporting</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">115</context>
</context-group>
</trans-unit>
<trans-unit id="288029731436334434" datatype="html">
@ -7749,7 +7773,7 @@
<target state="new">Investment Research</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">111</context>
<context context-type="linenumber">112</context>
</context-group>
</trans-unit>
<trans-unit id="1552707280301129490" datatype="html">
@ -7975,7 +7999,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">167</context>
<context context-type="linenumber">171</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html</context>
@ -8031,7 +8055,7 @@
<target state="new">Net Worth Tracking</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
</trans-unit>
<trans-unit id="4068738931505527681" datatype="html">
@ -8159,7 +8183,7 @@
<target state="translated">Mudar</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">160</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>
@ -8195,11 +8219,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">185</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">186</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

102
apps/client/src/locales/messages.tr.xlf

@ -299,7 +299,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">161</context>
<context context-type="linenumber">163</context>
</context-group>
</trans-unit>
<trans-unit id="962765493084218985" datatype="html">
@ -315,7 +315,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">94</context>
</context-group>
</trans-unit>
<trans-unit id="8953033926734869941" datatype="html">
@ -371,7 +371,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">35</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -387,7 +387,7 @@
<target state="translated">Toplam</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">61</context>
<context context-type="linenumber">63</context>
</context-group>
</trans-unit>
<trans-unit id="4323470180912194028" datatype="html">
@ -423,7 +423,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -455,11 +455,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">198</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">231</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -471,7 +471,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -503,7 +503,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">350</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -551,7 +551,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">361</context>
<context context-type="linenumber">363</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -863,7 +863,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">63</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="641154803270226443" datatype="html">
@ -1070,6 +1070,14 @@
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5918319622596548216" datatype="html">
<source>Financial Advisor</source>
<target state="new">Financial Advisor</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
</context-group>
</trans-unit>
<trans-unit id="5918502349406094800" datatype="html">
<source>Scraper Configuration</source>
<target state="translated">Veri Toplayıcı Yapılandırması</target>
@ -1095,7 +1103,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">307</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -1959,7 +1967,7 @@
<target state="translated">Lütfen acil durum yedeği meblağını giriniz:</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="2067863610333602482" datatype="html">
@ -1991,7 +1999,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">141</context>
<context context-type="linenumber">143</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -1999,7 +2007,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">87</context>
<context context-type="linenumber">88</context>
</context-group>
</trans-unit>
<trans-unit id="5012084291992448490" datatype="html">
@ -2491,7 +2499,7 @@
<target state="new">Financial Planning</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">111</context>
</context-group>
</trans-unit>
<trans-unit id="4979019387603946865" datatype="html">
@ -3523,7 +3531,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">124</context>
<context context-type="linenumber">126</context>
</context-group>
</trans-unit>
<trans-unit id="1111435290645444471" datatype="html">
@ -3682,6 +3690,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="8717427042493194723" datatype="html">
<source>Dividend Performance</source>
<target state="new">Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">307</context>
</context-group>
</trans-unit>
<trans-unit id="5747722179752261472" datatype="html">
<source>The following file formats are supported:</source>
<target state="translated">Aşağıdaki dosya formatları desteklenmektedir:</target>
@ -4023,7 +4039,7 @@
<target state="translated">Üst</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">292</context>
<context context-type="linenumber">332</context>
</context-group>
</trans-unit>
<trans-unit id="3568940932272598597" datatype="html">
@ -4031,7 +4047,7 @@
<target state="translated">Alt</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">343</context>
<context context-type="linenumber">383</context>
</context-group>
</trans-unit>
<trans-unit id="5242468862715363747" datatype="html">
@ -4039,7 +4055,7 @@
<target state="translated">Portföyün Gelişimi</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">398</context>
<context context-type="linenumber">438</context>
</context-group>
</trans-unit>
<trans-unit id="6766448922039123937" datatype="html">
@ -4047,7 +4063,7 @@
<target state="translated">Yatırım Zaman Çizelgesi</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">425</context>
<context context-type="linenumber">465</context>
</context-group>
</trans-unit>
<trans-unit id="1440519383036502539" datatype="html">
@ -4055,7 +4071,7 @@
<target state="translated">Güncel Seri</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">446</context>
<context context-type="linenumber">486</context>
</context-group>
</trans-unit>
<trans-unit id="457461496511383061" datatype="html">
@ -4063,7 +4079,7 @@
<target state="translated">En Uzun Seri</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">455</context>
<context context-type="linenumber">495</context>
</context-group>
</trans-unit>
<trans-unit id="6854252543786630145" datatype="html">
@ -4071,7 +4087,7 @@
<target state="translated">Temettü Zaman Çizelgesi</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">482</context>
<context context-type="linenumber">522</context>
</context-group>
</trans-unit>
<trans-unit id="5857197365507636437" datatype="html">
@ -4684,7 +4700,7 @@
<target state="new">Stock Tracking</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">114</context>
</context-group>
</trans-unit>
<trans-unit id="2192861316878557060" datatype="html">
@ -4708,7 +4724,7 @@
<target state="new">Web</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">122</context>
<context context-type="linenumber">123</context>
</context-group>
</trans-unit>
<trans-unit id="9169772418374159113" datatype="html">
@ -5320,15 +5336,15 @@
<target state="translated">Dağılım</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">266</context>
<context context-type="linenumber">268</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">139</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -5348,7 +5364,7 @@
<target state="translated">Tümünü göster</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">242</context>
<context context-type="linenumber">243</context>
</context-group>
</trans-unit>
<trans-unit id="4086606389696938932" datatype="html">
@ -5664,7 +5680,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">337</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="953022389548488004" datatype="html">
@ -5763,6 +5779,14 @@
<context context-type="linenumber">74</context>
</context-group>
</trans-unit>
<trans-unit id="1400496117963702686" datatype="html">
<source>Absolute Dividend Performance</source>
<target state="new">Absolute Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">288</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
<source>Africa</source>
<target state="translated">Afrika</target>
@ -7241,7 +7265,7 @@
<target state="translated">Zenginlik Yönetimi</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">115</context>
<context context-type="linenumber">116</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
@ -7445,7 +7469,7 @@
<target state="new">Tax Reporting</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">115</context>
</context-group>
</trans-unit>
<trans-unit id="288029731436334434" datatype="html">
@ -7749,7 +7773,7 @@
<target state="new">Investment Research</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">111</context>
<context context-type="linenumber">112</context>
</context-group>
</trans-unit>
<trans-unit id="1552707280301129490" datatype="html">
@ -7975,7 +7999,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">167</context>
<context context-type="linenumber">171</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html</context>
@ -8031,7 +8055,7 @@
<target state="new">Net Worth Tracking</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
</trans-unit>
<trans-unit id="4068738931505527681" datatype="html">
@ -8159,7 +8183,7 @@
<target state="translated">Değişim</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">160</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>
@ -8195,11 +8219,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">185</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">186</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

102
apps/client/src/locales/messages.uk.xlf

@ -367,7 +367,7 @@
<target state="translated">Податкова звітність</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">115</context>
</context-group>
</trans-unit>
<trans-unit id="135077277733987408" datatype="html">
@ -423,7 +423,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">161</context>
<context context-type="linenumber">163</context>
</context-group>
</trans-unit>
<trans-unit id="962765493084218985" datatype="html">
@ -439,7 +439,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">94</context>
</context-group>
</trans-unit>
<trans-unit id="67448018899048896" datatype="html">
@ -519,7 +519,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">35</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -535,7 +535,7 @@
<target state="translated">Загалом</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">61</context>
<context context-type="linenumber">63</context>
</context-group>
</trans-unit>
<trans-unit id="4323470180912194028" datatype="html">
@ -571,7 +571,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -603,11 +603,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">198</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">231</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -619,7 +619,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -651,7 +651,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">350</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -699,7 +699,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">361</context>
<context context-type="linenumber">363</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -1027,7 +1027,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">63</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="641154803270226443" datatype="html">
@ -1278,6 +1278,14 @@
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5918319622596548216" datatype="html">
<source>Financial Advisor</source>
<target state="new">Financial Advisor</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
</context-group>
</trans-unit>
<trans-unit id="5918502349406094800" datatype="html">
<source>Scraper Configuration</source>
<target state="translated">Конфігурація скребка</target>
@ -1347,7 +1355,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">307</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -1743,7 +1751,7 @@
<target state="translated">Відстеження чистого капіталу</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
</trans-unit>
<trans-unit id="4068738931505527681" datatype="html">
@ -2103,7 +2111,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">141</context>
<context context-type="linenumber">143</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2111,7 +2119,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">87</context>
<context context-type="linenumber">88</context>
</context-group>
</trans-unit>
<trans-unit id="1999364180941264642" datatype="html">
@ -2567,7 +2575,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">167</context>
<context context-type="linenumber">171</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html</context>
@ -2595,7 +2603,7 @@
<target state="translated">Будь ласка, встановіть суму вашого резервного фонду.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="6044768969177890700" datatype="html">
@ -2807,7 +2815,7 @@
<target state="translated">Інвестиційні дослідження</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">111</context>
<context context-type="linenumber">112</context>
</context-group>
</trans-unit>
<trans-unit id="1552707280301129490" datatype="html">
@ -3643,7 +3651,7 @@
<target state="translated">Фінансове планування</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">111</context>
</context-group>
</trans-unit>
<trans-unit id="5203279511751768967" datatype="html">
@ -4968,7 +4976,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">124</context>
<context context-type="linenumber">126</context>
</context-group>
</trans-unit>
<trans-unit id="1111435290645444471" datatype="html">
@ -5187,6 +5195,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="8717427042493194723" datatype="html">
<source>Dividend Performance</source>
<target state="new">Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">307</context>
</context-group>
</trans-unit>
<trans-unit id="4164773401836100336" datatype="html">
<source>Choose or drop a file here</source>
<target state="translated">Виберіть або перетягніть файл сюди</target>
@ -5604,7 +5620,7 @@
<target state="translated">Топ</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">292</context>
<context context-type="linenumber">332</context>
</context-group>
</trans-unit>
<trans-unit id="3568940932272598597" datatype="html">
@ -5612,7 +5628,7 @@
<target state="translated">Низ</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">343</context>
<context context-type="linenumber">383</context>
</context-group>
</trans-unit>
<trans-unit id="5242468862715363747" datatype="html">
@ -5620,7 +5636,7 @@
<target state="translated">Еволюція портфеля</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">398</context>
<context context-type="linenumber">438</context>
</context-group>
</trans-unit>
<trans-unit id="6766448922039123937" datatype="html">
@ -5628,7 +5644,7 @@
<target state="translated">Інвестиційний графік</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">425</context>
<context context-type="linenumber">465</context>
</context-group>
</trans-unit>
<trans-unit id="1440519383036502539" datatype="html">
@ -5636,7 +5652,7 @@
<target state="translated">Поточна серія</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">446</context>
<context context-type="linenumber">486</context>
</context-group>
</trans-unit>
<trans-unit id="457461496511383061" datatype="html">
@ -5644,7 +5660,7 @@
<target state="translated">Найдовша серія</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">455</context>
<context context-type="linenumber">495</context>
</context-group>
</trans-unit>
<trans-unit id="6854252543786630145" datatype="html">
@ -5652,7 +5668,7 @@
<target state="translated">Графік дивідендів</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">482</context>
<context context-type="linenumber">522</context>
</context-group>
</trans-unit>
<trans-unit id="5857197365507636437" datatype="html">
@ -6371,7 +6387,7 @@
<target state="translated">Управління багатством</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">115</context>
<context context-type="linenumber">116</context>
</context-group>
</trans-unit>
<trans-unit id="4649895231694574166" datatype="html">
@ -6755,7 +6771,7 @@
<target state="translated">Відстеження акцій</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">114</context>
</context-group>
</trans-unit>
<trans-unit id="2192861316878557060" datatype="html">
@ -6779,7 +6795,7 @@
<target state="translated">Веб</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">122</context>
<context context-type="linenumber">123</context>
</context-group>
</trans-unit>
<trans-unit id="9169772418374159113" datatype="html">
@ -7271,15 +7287,15 @@
<target state="translated">Розподіл</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">266</context>
<context context-type="linenumber">268</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">139</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -7299,7 +7315,7 @@
<target state="translated">Показати все</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">242</context>
<context context-type="linenumber">243</context>
</context-group>
</trans-unit>
<trans-unit id="4086606389696938932" datatype="html">
@ -7739,7 +7755,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">337</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="953022389548488004" datatype="html">
@ -7870,6 +7886,14 @@
<context context-type="linenumber">74</context>
</context-group>
</trans-unit>
<trans-unit id="1400496117963702686" datatype="html">
<source>Absolute Dividend Performance</source>
<target state="new">Absolute Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">288</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
<source>Africa</source>
<target state="translated">Африка</target>
@ -8159,7 +8183,7 @@
<target state="translated">Змінити</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">160</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>
@ -8195,11 +8219,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">185</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">186</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

99
apps/client/src/locales/messages.xlf

@ -305,7 +305,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">161</context>
<context context-type="linenumber">163</context>
</context-group>
</trans-unit>
<trans-unit id="962765493084218985" datatype="html">
@ -320,7 +320,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">94</context>
</context-group>
</trans-unit>
<trans-unit id="67448018899048896" datatype="html">
@ -397,7 +397,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">35</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -412,7 +412,7 @@
<source>Total</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">61</context>
<context context-type="linenumber">63</context>
</context-group>
</trans-unit>
<trans-unit id="4323470180912194028" datatype="html">
@ -446,7 +446,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -477,11 +477,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">198</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">231</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -493,7 +493,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -524,7 +524,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">350</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -571,7 +571,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">361</context>
<context context-type="linenumber">363</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -865,7 +865,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">63</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="641154803270226443" datatype="html">
@ -1102,6 +1102,13 @@
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5918319622596548216" datatype="html">
<source>Financial Advisor</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
</context-group>
</trans-unit>
<trans-unit id="5918502349406094800" datatype="html">
<source>Scraper Configuration</source>
<context-group purpose="location">
@ -1125,7 +1132,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">307</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -1978,7 +1985,7 @@
<source>Please set the amount of your emergency fund.</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="2067863610333602482" datatype="html">
@ -2007,7 +2014,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">141</context>
<context context-type="linenumber">143</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2015,7 +2022,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">87</context>
<context context-type="linenumber">88</context>
</context-group>
</trans-unit>
<trans-unit id="5376727317218692773" datatype="html">
@ -2765,7 +2772,7 @@
<source>Financial Planning</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">111</context>
</context-group>
</trans-unit>
<trans-unit id="5203279511751768967" datatype="html">
@ -3928,7 +3935,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">124</context>
<context context-type="linenumber">126</context>
</context-group>
</trans-unit>
<trans-unit id="1111435290645444471" datatype="html">
@ -4092,6 +4099,13 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="8717427042493194723" datatype="html">
<source>Dividend Performance</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">307</context>
</context-group>
</trans-unit>
<trans-unit id="4164773401836100336" datatype="html">
<source>Choose or drop a file here</source>
<context-group purpose="location">
@ -4390,49 +4404,49 @@
<source>Top</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">292</context>
<context context-type="linenumber">332</context>
</context-group>
</trans-unit>
<trans-unit id="3568940932272598597" datatype="html">
<source>Bottom</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">343</context>
<context context-type="linenumber">383</context>
</context-group>
</trans-unit>
<trans-unit id="5242468862715363747" datatype="html">
<source>Portfolio Evolution</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">398</context>
<context context-type="linenumber">438</context>
</context-group>
</trans-unit>
<trans-unit id="6766448922039123937" datatype="html">
<source>Investment Timeline</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">425</context>
<context context-type="linenumber">465</context>
</context-group>
</trans-unit>
<trans-unit id="1440519383036502539" datatype="html">
<source>Current Streak</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">446</context>
<context context-type="linenumber">486</context>
</context-group>
</trans-unit>
<trans-unit id="457461496511383061" datatype="html">
<source>Longest Streak</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">455</context>
<context context-type="linenumber">495</context>
</context-group>
</trans-unit>
<trans-unit id="6854252543786630145" datatype="html">
<source>Dividend Timeline</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">482</context>
<context context-type="linenumber">522</context>
</context-group>
</trans-unit>
<trans-unit id="5857197365507636437" datatype="html">
@ -4986,7 +5000,7 @@
<source>Stock Tracking</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">114</context>
</context-group>
</trans-unit>
<trans-unit id="2192861316878557060" datatype="html">
@ -5007,7 +5021,7 @@
<source>Web</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">122</context>
<context context-type="linenumber">123</context>
</context-group>
</trans-unit>
<trans-unit id="9169772418374159113" datatype="html">
@ -5330,15 +5344,15 @@
<source>Allocation</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">266</context>
<context context-type="linenumber">268</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">139</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -5357,7 +5371,7 @@
<source>Show all</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">242</context>
<context context-type="linenumber">243</context>
</context-group>
</trans-unit>
<trans-unit id="4086606389696938932" datatype="html">
@ -5640,7 +5654,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">337</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="953022389548488004" datatype="html">
@ -5743,6 +5757,13 @@
<context context-type="linenumber">74</context>
</context-group>
</trans-unit>
<trans-unit id="1400496117963702686" datatype="html">
<source>Absolute Dividend Performance</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">288</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
<source>Africa</source>
<context-group purpose="location">
@ -6525,7 +6546,7 @@
<source>Wealth Management</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">115</context>
<context context-type="linenumber">116</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
@ -6829,7 +6850,7 @@
<source>Tax Reporting</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">115</context>
</context-group>
</trans-unit>
<trans-unit id="8375528527939577247" datatype="html">
@ -7051,7 +7072,7 @@
<source>Investment Research</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">111</context>
<context context-type="linenumber">112</context>
</context-group>
</trans-unit>
<trans-unit id="1552707280301129490" datatype="html">
@ -7255,7 +7276,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">167</context>
<context context-type="linenumber">171</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html</context>
@ -7307,7 +7328,7 @@
<source>Net Worth Tracking</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
</trans-unit>
<trans-unit id="4068738931505527681" datatype="html">
@ -7419,7 +7440,7 @@
<source>Change</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">160</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>
@ -7452,11 +7473,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">185</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">186</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

102
apps/client/src/locales/messages.zh.xlf

@ -328,7 +328,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">161</context>
<context context-type="linenumber">163</context>
</context-group>
</trans-unit>
<trans-unit id="962765493084218985" datatype="html">
@ -344,7 +344,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">94</context>
</context-group>
</trans-unit>
<trans-unit id="67448018899048896" datatype="html">
@ -424,7 +424,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">35</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -440,7 +440,7 @@
<target state="translated">总计</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">61</context>
<context context-type="linenumber">63</context>
</context-group>
</trans-unit>
<trans-unit id="4323470180912194028" datatype="html">
@ -476,7 +476,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">71</context>
<context context-type="linenumber">73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -508,11 +508,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">198</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">231</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -524,7 +524,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -556,7 +556,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">350</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -604,7 +604,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">361</context>
<context context-type="linenumber">363</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -928,7 +928,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">63</context>
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="641154803270226443" datatype="html">
@ -1167,6 +1167,14 @@
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5918319622596548216" datatype="html">
<source>Financial Advisor</source>
<target state="new">Financial Advisor</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
</context-group>
</trans-unit>
<trans-unit id="5918502349406094800" datatype="html">
<source>Scraper Configuration</source>
<target state="translated">刮削配置</target>
@ -1192,7 +1200,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">307</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2140,7 +2148,7 @@
<target state="translated">请输入您的应急基金金额。</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="2067863610333602482" datatype="html">
@ -2172,7 +2180,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">141</context>
<context context-type="linenumber">143</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
@ -2180,7 +2188,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">87</context>
<context context-type="linenumber">88</context>
</context-group>
</trans-unit>
<trans-unit id="5376727317218692773" datatype="html">
@ -3004,7 +3012,7 @@
<target state="translated">财务规划</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">111</context>
</context-group>
</trans-unit>
<trans-unit id="5203279511751768967" datatype="html">
@ -4284,7 +4292,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">124</context>
<context context-type="linenumber">126</context>
</context-group>
</trans-unit>
<trans-unit id="1111435290645444471" datatype="html">
@ -4467,6 +4475,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="8717427042493194723" datatype="html">
<source>Dividend Performance</source>
<target state="new">Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">307</context>
</context-group>
</trans-unit>
<trans-unit id="4164773401836100336" datatype="html">
<source>Choose or drop a file here</source>
<target state="translated">在此处选择或放置文件</target>
@ -4800,7 +4816,7 @@
<target state="translated">顶部</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">292</context>
<context context-type="linenumber">332</context>
</context-group>
</trans-unit>
<trans-unit id="3568940932272598597" datatype="html">
@ -4808,7 +4824,7 @@
<target state="translated">底部</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">343</context>
<context context-type="linenumber">383</context>
</context-group>
</trans-unit>
<trans-unit id="5242468862715363747" datatype="html">
@ -4816,7 +4832,7 @@
<target state="translated">投资组合演变</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">398</context>
<context context-type="linenumber">438</context>
</context-group>
</trans-unit>
<trans-unit id="6766448922039123937" datatype="html">
@ -4824,7 +4840,7 @@
<target state="translated">投资时间表</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">425</context>
<context context-type="linenumber">465</context>
</context-group>
</trans-unit>
<trans-unit id="1440519383036502539" datatype="html">
@ -4832,7 +4848,7 @@
<target state="translated">当前连胜</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">446</context>
<context context-type="linenumber">486</context>
</context-group>
</trans-unit>
<trans-unit id="457461496511383061" datatype="html">
@ -4840,7 +4856,7 @@
<target state="translated">最长连续纪录</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">455</context>
<context context-type="linenumber">495</context>
</context-group>
</trans-unit>
<trans-unit id="6854252543786630145" datatype="html">
@ -4848,7 +4864,7 @@
<target state="translated">股息时间表</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">482</context>
<context context-type="linenumber">522</context>
</context-group>
</trans-unit>
<trans-unit id="5857197365507636437" datatype="html">
@ -5461,7 +5477,7 @@
<target state="translated">股票追踪</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">114</context>
</context-group>
</trans-unit>
<trans-unit id="2192861316878557060" datatype="html">
@ -5485,7 +5501,7 @@
<target state="translated">网页</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">122</context>
<context context-type="linenumber">123</context>
</context-group>
</trans-unit>
<trans-unit id="9169772418374159113" datatype="html">
@ -5845,15 +5861,15 @@
<target state="translated">分配</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">266</context>
<context context-type="linenumber">268</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">138</context>
<context context-type="linenumber">139</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/top-holdings/top-holdings.component.html</context>
@ -5873,7 +5889,7 @@
<target state="translated">显示所有</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">242</context>
<context context-type="linenumber">243</context>
</context-group>
</trans-unit>
<trans-unit id="4086606389696938932" datatype="html">
@ -6181,7 +6197,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/accounts-table/accounts-table.component.html</context>
<context context-type="linenumber">337</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="953022389548488004" datatype="html">
@ -6296,6 +6312,14 @@
<context context-type="linenumber">74</context>
</context-group>
</trans-unit>
<trans-unit id="1400496117963702686" datatype="html">
<source>Absolute Dividend Performance</source>
<target state="new">Absolute Dividend Performance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">288</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
<source>Africa</source>
<target state="translated">非洲</target>
@ -7242,7 +7266,7 @@
<target state="translated">财富管理</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">115</context>
<context context-type="linenumber">116</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
@ -7446,7 +7470,7 @@
<target state="translated">税务报告</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">115</context>
</context-group>
</trans-unit>
<trans-unit id="288029731436334434" datatype="html">
@ -7750,7 +7774,7 @@
<target state="translated">投资研究</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">111</context>
<context context-type="linenumber">112</context>
</context-group>
</trans-unit>
<trans-unit id="1552707280301129490" datatype="html">
@ -7976,7 +8000,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts</context>
<context context-type="linenumber">167</context>
<context context-type="linenumber">171</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html</context>
@ -8032,7 +8056,7 @@
<target state="translated">净资产追踪</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">112</context>
<context context-type="linenumber">113</context>
</context-group>
</trans-unit>
<trans-unit id="4068738931505527681" datatype="html">
@ -8160,7 +8184,7 @@
<target state="translated">涨跌</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">160</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>
@ -8196,11 +8220,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">185</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">186</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

2
libs/common/src/lib/interfaces/historical-data-item.interface.ts

@ -1,6 +1,8 @@
export interface HistoricalDataItem {
averagePrice?: number;
date: string;
dividendInBaseCurrency?: number;
dividendInPercentageWithCurrencyEffect?: number;
grossPerformancePercent?: number;
investmentValueWithCurrencyEffect?: number;
marketPrice?: number;

2
libs/common/src/lib/interfaces/portfolio-performance.interface.ts

@ -2,6 +2,8 @@ export interface PortfolioPerformance {
annualizedPerformancePercent?: number;
currentNetWorth?: number;
currentValueInBaseCurrency: number;
dividendInBaseCurrency: number;
dividendPercentageWithCurrencyEffect?: number;
netPerformance: number;
netPerformancePercentage: number;
netPerformancePercentageWithCurrencyEffect: number;

1
libs/common/src/lib/interfaces/portfolio-summary.interface.ts

@ -7,7 +7,6 @@ export interface PortfolioSummary extends PortfolioPerformance {
annualizedPerformancePercentWithCurrencyEffect: number;
cash: number;
dateOfFirstActivity?: Date;
dividendInBaseCurrency: number;
dividendYieldPercent: number;
dividendYieldPercentWithCurrencyEffect: number;
emergencyFund: {

1
libs/common/src/lib/interfaces/product.interface.ts

@ -17,6 +17,7 @@ export interface Product {
pricingPerYear?: string;
regions?: string[];
slogan?: string;
updatedAt?: string;
url?: string;
useAnonymously?: boolean;
}

1407
libs/common/src/lib/personal-finance-tools.ts

File diff suppressed because it is too large

1
libs/common/src/lib/types/product-category.type.ts

@ -4,6 +4,7 @@ export type ProductCategory =
| 'DIVIDEND_TRACKING'
| 'ETF_TRACKING'
| 'FAMILY_OFFICE'
| 'FINANCIAL_ADVISOR'
| 'FINANCIAL_PLANNING'
| 'INVESTMENT_RESEARCH'
| 'NET_WORTH_TRACKING'

16
libs/ui/src/lib/accounts-table/accounts-table.component.html

@ -50,13 +50,15 @@
<ng-container i18n>Name</ng-container>
</th>
<td *matCellDef="let element" class="px-1 text-nowrap" mat-cell>
<gf-entity-logo
class="d-inline d-sm-none mr-1"
[hasPlaceholder]="true"
[tooltip]="element.platform?.name"
[url]="element.platform?.url"
/>
<span>{{ element.name }}</span>
<div class="align-items-center d-flex">
<gf-entity-logo
class="d-sm-none mr-1"
[hasPlaceholder]="true"
[tooltip]="element.platform?.name"
[url]="element.platform?.url"
/>
<span>{{ element.name }}</span>
</div>
</td>
<td *matFooterCellDef class="px-1" i18n mat-footer-cell>Total</td>
</ng-container>

1
libs/ui/src/lib/i18n.ts

@ -107,6 +107,7 @@ const locales = {
DIVIDEND_TRACKING: $localize`Dividend Tracking`,
ETF_TRACKING: $localize`ETF Tracking`,
FAMILY_OFFICE: $localize`Family Office`,
FINANCIAL_ADVISOR: $localize`Financial Advisor`,
FINANCIAL_PLANNING: $localize`Financial Planning`,
INVESTMENT_RESEARCH: $localize`Investment Research`,
NET_WORTH_TRACKING: $localize`Net Worth Tracking`,

84
package-lock.json

@ -1,12 +1,12 @@
{
"name": "ghostfolio",
"version": "3.72.0",
"version": "3.74.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "ghostfolio",
"version": "3.72.0",
"version": "3.74.0",
"hasInstallScript": true,
"license": "AGPL-3.0",
"dependencies": {
@ -49,7 +49,7 @@
"@openrouter/ai-sdk-provider": "3.0.0",
"@prisma/adapter-pg": "7.10.0",
"@prisma/client": "7.10.0",
"@rekog/mcp-nest": "2.0.2",
"@rekog/mcp-nest": "2.0.7",
"@simplewebauthn/browser": "13.3.0",
"@simplewebauthn/server": "13.3.1",
"ai": "7.0.37",
@ -13614,14 +13614,13 @@
}
},
"node_modules/@rekog/mcp-nest": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@rekog/mcp-nest/-/mcp-nest-2.0.2.tgz",
"integrity": "sha512-kuye6wmRk5Gw4KZSCSXd83cWznRw4eFbvNUXsd8+1dYcS4uWKVVbRvxQIKNCyxc2UcljpsmLpnksr1NCRn3YAQ==",
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/@rekog/mcp-nest/-/mcp-nest-2.0.7.tgz",
"integrity": "sha512-8DWrSapEA9Z/YJL9dFmj7sSbemmeQmf0VkGkW6Sn1itwKFf0n9hzTiwWt8XBtZvV5JVDNCtvRZKYYKgNjDcYPg==",
"license": "MIT",
"dependencies": {
"multer": "^2.2.0",
"path-to-regexp": "^8.4.2",
"rxjs": "^7.8.2"
"multer": "^2.3.0",
"path-to-regexp": "^8.4.2"
},
"peerDependencies": {
"@modelcontextprotocol/core": "^2.0.0-beta.5",
@ -13630,9 +13629,10 @@
"@nestjs/common": ">=9.0.0",
"@nestjs/core": ">=9.0.0",
"@nestjs/microservices": ">=9.0.0",
"@nestjs/platform-fastify": "^11.1.5",
"@nestjs/platform-fastify": "^11.1.5 || ^12.0.0",
"express": ">=4.0.0",
"reflect-metadata": "^0.2.2",
"rxjs": "^7.1.0",
"zod": "^4.3.5"
},
"peerDependenciesMeta": {
@ -13641,13 +13641,65 @@
}
}
},
"node_modules/@rekog/mcp-nest/node_modules/rxjs": {
"version": "7.8.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
"integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
"license": "Apache-2.0",
"node_modules/@rekog/mcp-nest/node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/@rekog/mcp-nest/node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/@rekog/mcp-nest/node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"license": "MIT",
"dependencies": {
"tslib": "^2.1.0"
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/@rekog/mcp-nest/node_modules/multer": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/multer/-/multer-2.4.0.tgz",
"integrity": "sha512-7dqa0ZcFfzbefdTuIkzOSMvZWC0J7FLqBOjJUZvDCXShIURWKxAyTT1wHhnE5q19c7jOJf43IYYKjBmZVZmvhg==",
"license": "MIT",
"dependencies": {
"append-field": "^1.0.0",
"busboy": "^1.6.0",
"type-is": "^1.6.18"
},
"engines": {
"node": ">= 10.16.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
}
},
"node_modules/@rekog/mcp-nest/node_modules/type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"license": "MIT",
"dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/@rolldown/binding-android-arm64": {

4
package.json

@ -1,6 +1,6 @@
{
"name": "ghostfolio",
"version": "3.72.0",
"version": "3.74.0",
"homepage": "https://ghostfol.io",
"license": "AGPL-3.0",
"repository": "https://github.com/ghostfolio/ghostfolio",
@ -93,7 +93,7 @@
"@openrouter/ai-sdk-provider": "3.0.0",
"@prisma/adapter-pg": "7.10.0",
"@prisma/client": "7.10.0",
"@rekog/mcp-nest": "2.0.2",
"@rekog/mcp-nest": "2.0.7",
"@simplewebauthn/browser": "13.3.0",
"@simplewebauthn/server": "13.3.1",
"ai": "7.0.37",

Loading…
Cancel
Save