Browse Source

Merge branch 'main' into feature/upgrade-nestjs-version11

pull/4270/merge^2
HarukaKishida 1 month ago
parent
commit
c099aca5be
  1. 4
      .github/ISSUE_TEMPLATE/bug_report.md
  2. 64
      CHANGELOG.md
  3. 13
      DEVELOPMENT.md
  4. 2
      README.md
  5. 20
      apps/api/src/app/account/account.service.ts
  6. 49
      apps/api/src/app/admin/admin.service.ts
  7. 33
      apps/api/src/app/auth/web-auth.service.ts
  8. 34
      apps/api/src/app/endpoints/ai/ai.controller.ts
  9. 2
      apps/api/src/app/endpoints/ai/ai.module.ts
  10. 11
      apps/api/src/app/endpoints/ai/ai.service.ts
  11. 36
      apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts
  12. 43
      apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts
  13. 5
      apps/api/src/app/export/export.service.ts
  14. 10
      apps/api/src/app/import/create-account-with-balances.dto.ts
  15. 7
      apps/api/src/app/import/import-data.dto.ts
  16. 2
      apps/api/src/app/portfolio/calculator/mwr/portfolio-calculator.ts
  17. 25
      apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts
  18. 4
      apps/api/src/app/portfolio/calculator/portfolio-calculator.ts
  19. 2
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts
  20. 2
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts
  21. 2
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts
  22. 2
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts
  23. 2
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts
  24. 2
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts
  25. 2
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-item.spec.ts
  26. 2
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts
  27. 2
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts
  28. 2
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts
  29. 2
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts
  30. 2
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts
  31. 0
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.spec.ts
  32. 969
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts
  33. 959
      apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts
  34. 30
      apps/api/src/app/portfolio/portfolio.service.ts
  35. 684
      apps/api/src/assets/cryptocurrencies/cryptocurrencies.json
  36. 4
      apps/api/src/assets/sitemap.xml
  37. 2
      apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts
  38. 35
      apps/api/src/main.ts
  39. 2
      apps/api/src/middlewares/html-template.middleware.ts
  40. 5
      apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts
  41. 5
      apps/api/src/services/data-provider/coingecko/coingecko.service.ts
  42. 2
      apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts
  43. 5
      apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts
  44. 63
      apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts
  45. 68
      apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts
  46. 5
      apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts
  47. 10
      apps/api/src/services/data-provider/interfaces/data-provider.interface.ts
  48. 5
      apps/api/src/services/data-provider/manual/manual.service.ts
  49. 5
      apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts
  50. 5
      apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts
  51. 4
      apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts
  52. 2
      apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.processor.ts
  53. 34
      apps/client/localhost.cert
  54. 52
      apps/client/localhost.pem
  55. 4
      apps/client/src/app/components/admin-market-data/admin-market-data.service.ts
  56. 5
      apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts
  57. 44
      apps/client/src/app/components/admin-overview/admin-overview.component.ts
  58. 67
      apps/client/src/app/components/admin-overview/admin-overview.html
  59. 2
      apps/client/src/app/components/header/header.component.html
  60. 4
      apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
  61. 2
      apps/client/src/app/components/rule/rule.component.scss
  62. 3
      apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
  63. 4
      apps/client/src/app/pages/api/api-page.component.ts
  64. 5
      apps/client/src/app/pages/portfolio/activities/activities-page.html
  65. 36
      apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
  66. 72
      apps/client/src/app/pages/portfolio/analysis/analysis-page.html
  67. 2
      apps/client/src/app/pages/portfolio/analysis/analysis-page.module.ts
  68. 63
      apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
  69. 14
      apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.scss
  70. 32
      apps/client/src/app/pages/register/register-page.component.ts
  71. 2
      apps/client/src/app/pages/register/register-page.html
  72. 57
      apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts
  73. 125
      apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
  74. 4
      apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.module.ts
  75. 4
      apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.scss
  76. 17
      apps/client/src/app/services/admin.service.ts
  77. 29
      apps/client/src/app/services/data.service.ts
  78. 6
      apps/client/src/app/services/web-authn.service.ts
  79. 292
      apps/client/src/locales/messages.ca.xlf
  80. 292
      apps/client/src/locales/messages.de.xlf
  81. 292
      apps/client/src/locales/messages.es.xlf
  82. 292
      apps/client/src/locales/messages.fr.xlf
  83. 292
      apps/client/src/locales/messages.it.xlf
  84. 292
      apps/client/src/locales/messages.nl.xlf
  85. 292
      apps/client/src/locales/messages.pl.xlf
  86. 292
      apps/client/src/locales/messages.pt.xlf
  87. 292
      apps/client/src/locales/messages.tr.xlf
  88. 292
      apps/client/src/locales/messages.uk.xlf
  89. 277
      apps/client/src/locales/messages.xlf
  90. 292
      apps/client/src/locales/messages.zh.xlf
  91. 2
      apps/client/src/styles.scss
  92. 2
      libs/common/src/lib/config.ts
  93. 10
      libs/common/src/lib/helper.ts
  94. 4
      libs/common/src/lib/interfaces/account-balance.interface.ts
  95. 7
      libs/common/src/lib/interfaces/admin-data.interface.ts
  96. 6
      libs/common/src/lib/interfaces/export.interface.ts
  97. 4
      libs/common/src/lib/interfaces/index.ts
  98. 4
      libs/common/src/lib/interfaces/responses/data-provider-ghostfolio-asset-profile-response.interface.ts
  99. 57
      libs/common/src/lib/personal-finance-tools.ts
  100. 1
      libs/common/src/lib/types/ai-prompt-mode.type.ts

4
.github/ISSUE_TEMPLATE/bug_report.md

@ -26,7 +26,7 @@ Thank you for your understanding and cooperation!
2. 2.
3. 3.
**Expected behavior** **Expected Behavior**
<!-- A clear and concise description of what you expected to happen. --> <!-- A clear and concise description of what you expected to happen. -->
@ -48,6 +48,6 @@ Thank you for your understanding and cooperation!
- Browser - Browser
- OS - OS
**Additional context** **Additional Context**
<!-- Add any other context about the problem here. --> <!-- Add any other context about the problem here. -->

64
CHANGELOG.md

@ -5,6 +5,70 @@ 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/), 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). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
### Added
- Added support for filtering in the _Copy AI prompt to clipboard_ actions on the analysis page (experimental)
- Added the _Storybook_ path to the `sitemap.xml` file
### Changed
- Improved the symbol validation in the _Yahoo Finance_ service (get asset profiles)
- Refactored `lodash.uniq` with `Array.from(new Set(...))`
- Refreshed the cryptocurrencies list
### Fixed
- Fixed an issue in the activities import functionality related to the account balances
- Changed client-side dates to be sent in UTC format to ensure date consistency
- Benchmark endpoint
- Exchange rate endpoint
## 2.146.0 - 2025-03-15
### Changed
- Improved the usability of the user account registration
- Improved the usability of the _Copy AI prompt to clipboard_ actions on the analysis page (experimental)
- Formatted the name in the _Financial Modeling Prep_ service
- Removed the exchange rates from the overview of the admin control panel
- Improved the language localization for German (`de`)
- Upgraded `angular` from version `19.0.5` to `19.2.1`
- Upgraded `Nx` from version `20.3.2` to `20.5.0`
- Upgraded `prettier` from version `3.5.1` to `3.5.3`
- Upgraded `prisma` from version `6.4.1` to `6.5.0`
### Fixed
- Fixed an issue with serving _Storybook_ related to the `contentSecurityPolicy`
## 2.145.1 - 2025-03-10
### Added
- Extended the export functionality by the account balances
- Added a _Copy portfolio data to clipboard for AI prompt_ action to the analysis page (experimental)
### Changed
- Improved the style of the summary on the _X-ray_ page
- Improved the language localization for German (`de`)
- Upgraded `@simplewebauthn/browser` and `@simplewebauthn/server` from version `9.0` to `13.1`
### Fixed
- Fixed an issue to get dividends in the _Financial Modeling Prep_ service
- Fixed an issue to get historical market data in the _Financial Modeling Prep_ service
- Fixed an issue with serving _Storybook_
## 2.144.0 - 2025-03-06
### Fixed
- Fixed the missing import functionality on the non-empty activities page
- Fixed the functionality to delete an asset profile of a custom currency in the admin control panel
## 2.143.0 - 2025-03-02 ## 2.143.0 - 2025-03-02
### Added ### Added

13
DEVELOPMENT.md

@ -60,6 +60,10 @@ Remove permission in `UserService` using `without()`
Use `@if (user?.settings?.isExperimentalFeatures) {}` in HTML template Use `@if (user?.settings?.isExperimentalFeatures) {}` in HTML template
## Component Library (_Storybook_)
https://ghostfol.io/development/storybook
## Git ## Git
### Rebase ### Rebase
@ -101,3 +105,12 @@ https://www.prisma.io/docs/concepts/components/prisma-migrate/db-push
Run `npm run prisma migrate dev --name added_job_title` Run `npm run prisma migrate dev --name added_job_title`
https://www.prisma.io/docs/concepts/components/prisma-migrate#getting-started-with-prisma-migrate https://www.prisma.io/docs/concepts/components/prisma-migrate#getting-started-with-prisma-migrate
## SSL
Generate `localhost.cert` and `localhost.pem` files.
```
openssl req -x509 -newkey rsa:2048 -nodes -keyout apps/client/localhost.pem -out apps/client/localhost.cert -days 365 \
-subj "/C=CH/ST=State/L=City/O=Organization/OU=Unit/CN=localhost"
```

2
README.md

@ -47,7 +47,7 @@ Ghostfolio is for you if you are...
- ✅ Create, update and delete transactions - ✅ Create, update and delete transactions
- ✅ Multi account management - ✅ Multi account management
- ✅ Portfolio performance: Time-weighted rate of return (TWR) for `Today`, `WTD`, `MTD`, `YTD`, `1Y`, `5Y`, `Max` - ✅ Portfolio performance: Return on Average Investment (ROAI) for `Today`, `WTD`, `MTD`, `YTD`, `1Y`, `5Y`, `Max`
- ✅ Various charts - ✅ Various charts
- ✅ Static analysis to identify potential risks in your portfolio - ✅ Static analysis to identify potential risks in your portfolio
- ✅ Import and export transactions - ✅ Import and export transactions

20
apps/api/src/app/account/account.service.ts

@ -7,7 +7,13 @@ import { Filter } from '@ghostfolio/common/interfaces';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter'; import { EventEmitter2 } from '@nestjs/event-emitter';
import { Account, Order, Platform, Prisma } from '@prisma/client'; import {
Account,
AccountBalance,
Order,
Platform,
Prisma
} from '@prisma/client';
import { Big } from 'big.js'; import { Big } from 'big.js';
import { format } from 'date-fns'; import { format } from 'date-fns';
import { groupBy } from 'lodash'; import { groupBy } from 'lodash';
@ -56,13 +62,19 @@ export class AccountService {
orderBy?: Prisma.AccountOrderByWithRelationInput; orderBy?: Prisma.AccountOrderByWithRelationInput;
}): Promise< }): Promise<
(Account & { (Account & {
balances?: AccountBalance[];
Order?: Order[]; Order?: Order[];
Platform?: Platform; Platform?: Platform;
})[] })[]
> { > {
const { include = {}, skip, take, cursor, where, orderBy } = params; const { include = {}, skip, take, cursor, where, orderBy } = params;
include.balances = { orderBy: { date: 'desc' }, take: 1 }; const isBalancesIncluded = !!include.balances;
include.balances = {
orderBy: { date: 'desc' },
...(isBalancesIncluded ? {} : { take: 1 })
};
const accounts = await this.prismaService.account.findMany({ const accounts = await this.prismaService.account.findMany({
cursor, cursor,
@ -76,7 +88,9 @@ export class AccountService {
return accounts.map((account) => { return accounts.map((account) => {
account = { ...account, balance: account.balances[0]?.value ?? 0 }; account = { ...account, balance: account.balances[0]?.value ?? 0 };
delete account.balances; if (!isBalancesIncluded) {
delete account.balances;
}
return account; return account;
}); });

49
apps/api/src/app/admin/admin.service.ts

@ -10,7 +10,6 @@ import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import { PropertyService } from '@ghostfolio/api/services/property/property.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service';
import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service';
import { import {
DEFAULT_CURRENCY,
PROPERTY_CURRENCIES, PROPERTY_CURRENCIES,
PROPERTY_IS_READ_ONLY_MODE, PROPERTY_IS_READ_ONLY_MODE,
PROPERTY_IS_USER_SIGNUP_ENABLED PROPERTY_IS_USER_SIGNUP_ENABLED
@ -37,7 +36,6 @@ import { BadRequestException, Injectable, Logger } from '@nestjs/common';
import { import {
AssetClass, AssetClass,
AssetSubClass, AssetSubClass,
DataSource,
Prisma, Prisma,
PrismaClient, PrismaClient,
Property, Property,
@ -109,35 +107,29 @@ export class AdminService {
symbol symbol
}: AssetProfileIdentifier) { }: AssetProfileIdentifier) {
await this.marketDataService.deleteMany({ dataSource, symbol }); await this.marketDataService.deleteMany({ dataSource, symbol });
await this.symbolProfileService.delete({ dataSource, symbol });
}
public async get(): Promise<AdminData> { const currency = getCurrencyFromSymbol(symbol);
const exchangeRates = this.exchangeRateDataService const customCurrencies = (await this.propertyService.getByKey(
.getCurrencies() PROPERTY_CURRENCIES
.filter((currency) => { )) as string[];
return currency !== DEFAULT_CURRENCY;
})
.map((currency) => {
const label1 = DEFAULT_CURRENCY;
const label2 = currency;
return { if (customCurrencies.includes(currency)) {
label1, const updatedCustomCurrencies = customCurrencies.filter(
label2, (customCurrency) => {
dataSource: return customCurrency !== currency;
DataSource[ }
this.configurationService.get('DATA_SOURCE_EXCHANGE_RATES') );
],
symbol: `${label1}${label2}`,
value: this.exchangeRateDataService.toCurrency(
1,
DEFAULT_CURRENCY,
currency
)
};
});
await this.putSetting(
PROPERTY_CURRENCIES,
JSON.stringify(updatedCustomCurrencies)
);
} else {
await this.symbolProfileService.delete({ dataSource, symbol });
}
}
public async get(): Promise<AdminData> {
const [settings, transactionCount, userCount] = await Promise.all([ const [settings, transactionCount, userCount] = await Promise.all([
this.propertyService.get(), this.propertyService.get(),
this.prismaService.order.count(), this.prismaService.order.count(),
@ -145,7 +137,6 @@ export class AdminService {
]); ]);
return { return {
exchangeRates,
settings, settings,
transactionCount, transactionCount,
userCount, userCount,

33
apps/api/src/app/auth/web-auth.service.ts

@ -24,6 +24,7 @@ import {
verifyRegistrationResponse, verifyRegistrationResponse,
VerifyRegistrationResponseOpts VerifyRegistrationResponseOpts
} from '@simplewebauthn/server'; } from '@simplewebauthn/server';
import { isoBase64URL, isoUint8Array } from '@simplewebauthn/server/helpers';
import { import {
AssertionCredentialJSON, AssertionCredentialJSON,
@ -54,10 +55,9 @@ export class WebAuthService {
const opts: GenerateRegistrationOptionsOpts = { const opts: GenerateRegistrationOptionsOpts = {
rpName: 'Ghostfolio', rpName: 'Ghostfolio',
rpID: this.rpID, rpID: this.rpID,
userID: user.id, userID: isoUint8Array.fromUTF8String(user.id),
userName: '', userName: '',
timeout: 60000, timeout: 60000,
attestationType: 'indirect',
authenticatorSelection: { authenticatorSelection: {
authenticatorAttachment: 'platform', authenticatorAttachment: 'platform',
requireResidentKey: false, requireResidentKey: false,
@ -111,11 +111,17 @@ export class WebAuthService {
where: { userId: user.id } where: { userId: user.id }
}); });
if (registrationInfo && verified) { if (registrationInfo && verified) {
const { counter, credentialID, credentialPublicKey } = registrationInfo; const {
credential: {
counter,
id: credentialId,
publicKey: credentialPublicKey
}
} = registrationInfo;
let existingDevice = devices.find( let existingDevice = devices.find((device) => {
(device) => device.credentialId === credentialID return isoBase64URL.fromBuffer(device.credentialId) === credentialId;
); });
if (!existingDevice) { if (!existingDevice) {
/** /**
@ -123,7 +129,7 @@ export class WebAuthService {
*/ */
existingDevice = await this.deviceService.createAuthDevice({ existingDevice = await this.deviceService.createAuthDevice({
counter, counter,
credentialId: Buffer.from(credentialID), credentialId: Buffer.from(credentialId),
credentialPublicKey: Buffer.from(credentialPublicKey), credentialPublicKey: Buffer.from(credentialPublicKey),
User: { connect: { id: user.id } } User: { connect: { id: user.id } }
}); });
@ -148,9 +154,8 @@ export class WebAuthService {
const opts: GenerateAuthenticationOptionsOpts = { const opts: GenerateAuthenticationOptionsOpts = {
allowCredentials: [ allowCredentials: [
{ {
id: device.credentialId, id: isoBase64URL.fromBuffer(device.credentialId),
transports: ['internal'], transports: ['internal']
type: 'public-key'
} }
], ],
rpID: this.rpID, rpID: this.rpID,
@ -187,10 +192,10 @@ export class WebAuthService {
let verification: VerifiedAuthenticationResponse; let verification: VerifiedAuthenticationResponse;
try { try {
const opts: VerifyAuthenticationResponseOpts = { const opts: VerifyAuthenticationResponseOpts = {
authenticator: { credential: {
credentialID: device.credentialId, counter: device.counter,
credentialPublicKey: device.credentialPublicKey, id: isoBase64URL.fromBuffer(device.credentialId),
counter: device.counter publicKey: device.credentialPublicKey
}, },
expectedChallenge: `${user.authChallenge}`, expectedChallenge: `${user.authChallenge}`,
expectedOrigin: this.expectedOrigin, expectedOrigin: this.expectedOrigin,

34
apps/api/src/app/endpoints/ai/ai.controller.ts

@ -1,14 +1,22 @@
import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator';
import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard';
import { ApiService } from '@ghostfolio/api/services/api/api.service';
import { import {
DEFAULT_CURRENCY, DEFAULT_CURRENCY,
DEFAULT_LANGUAGE_CODE DEFAULT_LANGUAGE_CODE
} from '@ghostfolio/common/config'; } from '@ghostfolio/common/config';
import { AiPromptResponse } from '@ghostfolio/common/interfaces'; import { AiPromptResponse } from '@ghostfolio/common/interfaces';
import { permissions } from '@ghostfolio/common/permissions'; import { permissions } from '@ghostfolio/common/permissions';
import type { RequestWithUser } from '@ghostfolio/common/types'; import type { AiPromptMode, RequestWithUser } from '@ghostfolio/common/types';
import { Controller, Get, Inject, UseGuards } from '@nestjs/common'; import {
Controller,
Get,
Inject,
Param,
Query,
UseGuards
} from '@nestjs/common';
import { REQUEST } from '@nestjs/core'; import { REQUEST } from '@nestjs/core';
import { AuthGuard } from '@nestjs/passport'; import { AuthGuard } from '@nestjs/passport';
@ -18,14 +26,32 @@ import { AiService } from './ai.service';
export class AiController { export class AiController {
public constructor( public constructor(
private readonly aiService: AiService, private readonly aiService: AiService,
private readonly apiService: ApiService,
@Inject(REQUEST) private readonly request: RequestWithUser @Inject(REQUEST) private readonly request: RequestWithUser
) {} ) {}
@Get('prompt') @Get('prompt/:mode')
@HasPermission(permissions.readAiPrompt) @HasPermission(permissions.readAiPrompt)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard) @UseGuards(AuthGuard('jwt'), HasPermissionGuard)
public async getPrompt(): Promise<AiPromptResponse> { public async getPrompt(
@Param('mode') mode: AiPromptMode,
@Query('accounts') filterByAccounts?: string,
@Query('assetClasses') filterByAssetClasses?: string,
@Query('dataSource') filterByDataSource?: string,
@Query('symbol') filterBySymbol?: string,
@Query('tags') filterByTags?: string
): Promise<AiPromptResponse> {
const filters = this.apiService.buildFiltersFromQueryParams({
filterByAccounts,
filterByAssetClasses,
filterByDataSource,
filterBySymbol,
filterByTags
});
const prompt = await this.aiService.getPrompt({ const prompt = await this.aiService.getPrompt({
filters,
mode,
impersonationId: undefined, impersonationId: undefined,
languageCode: languageCode:
this.request.user.Settings.settings.language ?? DEFAULT_LANGUAGE_CODE, this.request.user.Settings.settings.language ?? DEFAULT_LANGUAGE_CODE,

2
apps/api/src/app/endpoints/ai/ai.module.ts

@ -7,6 +7,7 @@ import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.servic
import { RulesService } from '@ghostfolio/api/app/portfolio/rules.service'; import { RulesService } from '@ghostfolio/api/app/portfolio/rules.service';
import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module'; import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module';
import { UserModule } from '@ghostfolio/api/app/user/user.module'; import { UserModule } from '@ghostfolio/api/app/user/user.module';
import { ApiModule } from '@ghostfolio/api/services/api/api.module';
import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module';
import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module';
import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module';
@ -25,6 +26,7 @@ import { AiService } from './ai.service';
@Module({ @Module({
controllers: [AiController], controllers: [AiController],
imports: [ imports: [
ApiModule,
ConfigurationModule, ConfigurationModule,
DataProviderModule, DataProviderModule,
ExchangeRateDataModule, ExchangeRateDataModule,

11
apps/api/src/app/endpoints/ai/ai.service.ts

@ -1,4 +1,6 @@
import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service';
import { Filter } from '@ghostfolio/common/interfaces';
import type { AiPromptMode } from '@ghostfolio/common/types';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
@ -7,17 +9,22 @@ export class AiService {
public constructor(private readonly portfolioService: PortfolioService) {} public constructor(private readonly portfolioService: PortfolioService) {}
public async getPrompt({ public async getPrompt({
filters,
impersonationId, impersonationId,
languageCode, languageCode,
mode,
userCurrency, userCurrency,
userId userId
}: { }: {
filters?: Filter[];
impersonationId: string; impersonationId: string;
languageCode: string; languageCode: string;
mode: AiPromptMode;
userCurrency: string; userCurrency: string;
userId: string; userId: string;
}) { }) {
const { holdings } = await this.portfolioService.getDetails({ const { holdings } = await this.portfolioService.getDetails({
filters,
impersonationId, impersonationId,
userId userId
}); });
@ -43,6 +50,10 @@ export class AiService {
) )
]; ];
if (mode === 'portfolio') {
return holdingsTable.join('\n');
}
return [ return [
`You are a neutral financial assistant. Please analyze the following investment portfolio (base currency being ${userCurrency}) in simple words.`, `You are a neutral financial assistant. Please analyze the following investment portfolio (base currency being ${userCurrency}) in simple words.`,
...holdingsTable, ...holdingsTable,

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

@ -2,6 +2,7 @@ import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorat
import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard';
import { parseDate } from '@ghostfolio/common/helper'; import { parseDate } from '@ghostfolio/common/helper';
import { import {
DataProviderGhostfolioAssetProfileResponse,
DataProviderGhostfolioStatusResponse, DataProviderGhostfolioStatusResponse,
DividendsResponse, DividendsResponse,
HistoricalResponse, HistoricalResponse,
@ -37,6 +38,41 @@ export class GhostfolioController {
@Inject(REQUEST) private readonly request: RequestWithUser @Inject(REQUEST) private readonly request: RequestWithUser
) {} ) {}
@Get('asset-profile/:symbol')
@HasPermission(permissions.enableDataProviderGhostfolio)
@UseGuards(AuthGuard('api-key'), HasPermissionGuard)
public async getAssetProfile(
@Param('symbol') symbol: string
): Promise<DataProviderGhostfolioAssetProfileResponse> {
const maxDailyRequests = await this.ghostfolioService.getMaxDailyRequests();
if (
this.request.user.dataProviderGhostfolioDailyRequests > maxDailyRequests
) {
throw new HttpException(
getReasonPhrase(StatusCodes.TOO_MANY_REQUESTS),
StatusCodes.TOO_MANY_REQUESTS
);
}
try {
const assetProfile = await this.ghostfolioService.getAssetProfile({
symbol
});
await this.ghostfolioService.incrementDailyRequests({
userId: this.request.user.id
});
return assetProfile;
} catch {
throw new HttpException(
getReasonPhrase(StatusCodes.INTERNAL_SERVER_ERROR),
StatusCodes.INTERNAL_SERVER_ERROR
);
}
}
/** /**
* @deprecated * @deprecated
*/ */

43
apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts

@ -1,6 +1,7 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service';
import { import {
GetAssetProfileParams,
GetDividendsParams, GetDividendsParams,
GetHistoricalParams, GetHistoricalParams,
GetQuotesParams, GetQuotesParams,
@ -15,6 +16,7 @@ import {
} from '@ghostfolio/common/config'; } from '@ghostfolio/common/config';
import { PROPERTY_DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS } from '@ghostfolio/common/config'; import { PROPERTY_DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS } from '@ghostfolio/common/config';
import { import {
DataProviderGhostfolioAssetProfileResponse,
DataProviderInfo, DataProviderInfo,
DividendsResponse, DividendsResponse,
HistoricalResponse, HistoricalResponse,
@ -25,7 +27,7 @@ import {
import { UserWithSettings } from '@ghostfolio/common/types'; import { UserWithSettings } from '@ghostfolio/common/types';
import { Injectable, Logger } from '@nestjs/common'; import { Injectable, Logger } from '@nestjs/common';
import { DataSource } from '@prisma/client'; import { DataSource, SymbolProfile } from '@prisma/client';
import { Big } from 'big.js'; import { Big } from 'big.js';
@Injectable() @Injectable()
@ -37,6 +39,44 @@ export class GhostfolioService {
private readonly propertyService: PropertyService private readonly propertyService: PropertyService
) {} ) {}
public async getAssetProfile({
requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'),
symbol
}: GetAssetProfileParams) {
let result: DataProviderGhostfolioAssetProfileResponse = {};
try {
const promises: Promise<Partial<SymbolProfile>>[] = [];
for (const dataProviderService of this.getDataProviderServices()) {
promises.push(
dataProviderService
.getAssetProfile({
requestTimeout,
symbol
})
.then((assetProfile) => {
result = {
...result,
...assetProfile,
dataSource: DataSource.GHOSTFOLIO
};
return assetProfile;
})
);
}
await Promise.all(promises);
return result;
} catch (error) {
Logger.error(error, 'GhostfolioService');
throw error;
}
}
public async getDividends({ public async getDividends({
from, from,
granularity, granularity,
@ -277,6 +317,7 @@ export class GhostfolioService {
}); });
results.items = filteredItems; results.items = filteredItems;
return results; return results;
} catch (error) { } catch (error) {
Logger.error(error, 'GhostfolioService'); Logger.error(error, 'GhostfolioService');

5
apps/api/src/app/export/export.service.ts

@ -31,6 +31,7 @@ export class ExportService {
const accounts = ( const accounts = (
await this.accountService.accounts({ await this.accountService.accounts({
include: { include: {
balances: true,
Platform: true Platform: true
}, },
orderBy: { orderBy: {
@ -41,6 +42,7 @@ export class ExportService {
).map( ).map(
({ ({
balance, balance,
balances,
comment, comment,
currency, currency,
id, id,
@ -55,6 +57,9 @@ export class ExportService {
return { return {
balance, balance,
balances: balances.map(({ date, value }) => {
return { date: date.toISOString(), value };
}),
comment, comment,
currency, currency,
id, id,

10
apps/api/src/app/import/create-account-with-balances.dto.ts

@ -0,0 +1,10 @@
import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto';
import { AccountBalance } from '@ghostfolio/common/interfaces';
import { IsArray, IsOptional } from 'class-validator';
export class CreateAccountWithBalancesDto extends CreateAccountDto {
@IsArray()
@IsOptional()
balances?: AccountBalance;
}

7
apps/api/src/app/import/import-data.dto.ts

@ -1,15 +1,16 @@
import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto';
import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto'; import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto';
import { Type } from 'class-transformer'; import { Type } from 'class-transformer';
import { IsArray, IsOptional, ValidateNested } from 'class-validator'; import { IsArray, IsOptional, ValidateNested } from 'class-validator';
import { CreateAccountWithBalancesDto } from './create-account-with-balances.dto';
export class ImportDataDto { export class ImportDataDto {
@IsOptional() @IsOptional()
@IsArray() @IsArray()
@Type(() => CreateAccountDto) @Type(() => CreateAccountWithBalancesDto)
@ValidateNested({ each: true }) @ValidateNested({ each: true })
accounts: CreateAccountDto[]; accounts: CreateAccountWithBalancesDto[];
@IsArray() @IsArray()
@Type(() => CreateOrderDto) @Type(() => CreateOrderDto)

2
apps/api/src/app/portfolio/calculator/mwr/portfolio-calculator.ts

@ -5,7 +5,7 @@ import {
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { PortfolioSnapshot } from '@ghostfolio/common/models'; import { PortfolioSnapshot } from '@ghostfolio/common/models';
export class MWRPortfolioCalculator extends PortfolioCalculator { export class MwrPortfolioCalculator extends PortfolioCalculator {
protected calculateOverallPerformance(): PortfolioSnapshot { protected calculateOverallPerformance(): PortfolioSnapshot {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }

25
apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts

@ -8,12 +8,14 @@ import { Filter, HistoricalDataItem } from '@ghostfolio/common/interfaces';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { MWRPortfolioCalculator } from './mwr/portfolio-calculator'; import { MwrPortfolioCalculator } from './mwr/portfolio-calculator';
import { PortfolioCalculator } from './portfolio-calculator'; import { PortfolioCalculator } from './portfolio-calculator';
import { TWRPortfolioCalculator } from './twr/portfolio-calculator'; import { RoaiPortfolioCalculator } from './roai/portfolio-calculator';
import { TwrPortfolioCalculator } from './twr/portfolio-calculator';
export enum PerformanceCalculationType { export enum PerformanceCalculationType {
MWR = 'MWR', // Money-Weighted Rate of Return MWR = 'MWR', // Money-Weighted Rate of Return
ROAI = 'ROAI', // Return on Average Investment
TWR = 'TWR' // Time-Weighted Rate of Return TWR = 'TWR' // Time-Weighted Rate of Return
} }
@ -44,7 +46,7 @@ export class PortfolioCalculatorFactory {
}): PortfolioCalculator { }): PortfolioCalculator {
switch (calculationType) { switch (calculationType) {
case PerformanceCalculationType.MWR: case PerformanceCalculationType.MWR:
return new MWRPortfolioCalculator({ return new MwrPortfolioCalculator({
accountBalanceItems, accountBalanceItems,
activities, activities,
currency, currency,
@ -56,15 +58,28 @@ export class PortfolioCalculatorFactory {
portfolioSnapshotService: this.portfolioSnapshotService, portfolioSnapshotService: this.portfolioSnapshotService,
redisCacheService: this.redisCacheService redisCacheService: this.redisCacheService
}); });
case PerformanceCalculationType.TWR: case PerformanceCalculationType.ROAI:
return new TWRPortfolioCalculator({ return new RoaiPortfolioCalculator({
accountBalanceItems, accountBalanceItems,
activities, activities,
currency, currency,
filters,
userId,
configurationService: this.configurationService,
currentRateService: this.currentRateService, currentRateService: this.currentRateService,
exchangeRateDataService: this.exchangeRateDataService,
portfolioSnapshotService: this.portfolioSnapshotService,
redisCacheService: this.redisCacheService
});
case PerformanceCalculationType.TWR:
return new TwrPortfolioCalculator({
accountBalanceItems,
activities,
currency,
filters, filters,
userId, userId,
configurationService: this.configurationService, configurationService: this.configurationService,
currentRateService: this.currentRateService,
exchangeRateDataService: this.exchangeRateDataService, exchangeRateDataService: this.exchangeRateDataService,
portfolioSnapshotService: this.portfolioSnapshotService, portfolioSnapshotService: this.portfolioSnapshotService,
redisCacheService: this.redisCacheService redisCacheService: this.redisCacheService

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

@ -49,7 +49,7 @@ import {
min, min,
subDays subDays
} from 'date-fns'; } from 'date-fns';
import { isNumber, sortBy, sum, uniq, uniqBy } from 'lodash'; import { isNumber, sortBy, sum, uniqBy } from 'lodash';
export abstract class PortfolioCalculator { export abstract class PortfolioCalculator {
protected static readonly ENABLE_LOGGING = false; protected static readonly ENABLE_LOGGING = false;
@ -222,7 +222,7 @@ export abstract class PortfolioCalculator {
const exchangeRatesByCurrency = const exchangeRatesByCurrency =
await this.exchangeRateDataService.getExchangeRatesByCurrency({ await this.exchangeRateDataService.getExchangeRatesByCurrency({
currencies: uniq(Object.values(currencies)), currencies: Array.from(new Set(Object.values(currencies))),
endDate: endOfDay(this.endDate), endDate: endOfDay(this.endDate),
startDate: this.startDate, startDate: this.startDate,
targetCurrency: this.currency targetCurrency: this.currency

2
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts → apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts

@ -137,7 +137,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities, activities,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF', currency: 'CHF',
userId: userDummyData.id userId: userDummyData.id
}); });

2
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell.spec.ts → apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts

@ -122,7 +122,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities, activities,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF', currency: 'CHF',
userId: userDummyData.id userId: userDummyData.id
}); });

2
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy.spec.ts → apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts

@ -107,7 +107,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities, activities,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF', currency: 'CHF',
userId: userDummyData.id userId: userDummyData.id
}); });

2
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts → apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts

@ -136,7 +136,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities, activities,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF', currency: 'CHF',
userId: userDummyData.id userId: userDummyData.id
}); });

2
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-fee.spec.ts → apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts

@ -107,7 +107,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities, activities,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: 'USD', currency: 'USD',
userId: userDummyData.id userId: userDummyData.id
}); });

2
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-googl-buy.spec.ts → apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts

@ -120,7 +120,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities, activities,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF', currency: 'CHF',
userId: userDummyData.id userId: userDummyData.id
}); });

2
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-item.spec.ts → apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-item.spec.ts

@ -107,7 +107,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities, activities,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: 'USD', currency: 'USD',
userId: userDummyData.id userId: userDummyData.id
}); });

2
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-liability.spec.ts → apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts

@ -107,7 +107,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities, activities,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: 'USD', currency: 'USD',
userId: userDummyData.id userId: userDummyData.id
}); });

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

@ -135,7 +135,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities, activities,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: 'USD', currency: 'USD',
userId: userDummyData.id userId: userDummyData.id
}); });

2
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-no-orders.spec.ts → apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts

@ -84,7 +84,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities: [], activities: [],
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF', currency: 'CHF',
userId: userDummyData.id userId: userDummyData.id
}); });

2
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell-partially.spec.ts → apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts

@ -116,7 +116,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities, activities,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF', currency: 'CHF',
userId: userDummyData.id userId: userDummyData.id
}); });

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

@ -116,7 +116,7 @@ describe('PortfolioCalculator', () => {
const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ const portfolioCalculator = portfolioCalculatorFactory.createCalculator({
activities, activities,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: 'CHF', currency: 'CHF',
userId: userDummyData.id userId: userDummyData.id
}); });

0
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.spec.ts → apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.spec.ts

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

@ -0,0 +1,969 @@
import { PortfolioCalculator } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator';
import { PortfolioOrderItem } from '@ghostfolio/api/app/portfolio/interfaces/portfolio-order-item.interface';
import { getFactor } from '@ghostfolio/api/helper/portfolio.helper';
import { getIntervalFromDateRange } from '@ghostfolio/common/calculation-helper';
import { DATE_FORMAT } from '@ghostfolio/common/helper';
import {
AssetProfileIdentifier,
SymbolMetrics
} from '@ghostfolio/common/interfaces';
import { PortfolioSnapshot, TimelinePosition } from '@ghostfolio/common/models';
import { DateRange } from '@ghostfolio/common/types';
import { Logger } from '@nestjs/common';
import { Big } from 'big.js';
import { addMilliseconds, differenceInDays, format, isBefore } from 'date-fns';
import { cloneDeep, sortBy } from 'lodash';
export class RoaiPortfolioCalculator extends PortfolioCalculator {
private chartDates: string[];
protected calculateOverallPerformance(
positions: TimelinePosition[]
): PortfolioSnapshot {
let currentValueInBaseCurrency = new Big(0);
let grossPerformance = new Big(0);
let grossPerformanceWithCurrencyEffect = new Big(0);
let hasErrors = false;
let netPerformance = new Big(0);
let totalFeesWithCurrencyEffect = new Big(0);
const totalInterestWithCurrencyEffect = new Big(0);
let totalInvestment = new Big(0);
let totalInvestmentWithCurrencyEffect = new Big(0);
let totalTimeWeightedInvestment = new Big(0);
let totalTimeWeightedInvestmentWithCurrencyEffect = new Big(0);
for (const currentPosition of positions) {
if (currentPosition.feeInBaseCurrency) {
totalFeesWithCurrencyEffect = totalFeesWithCurrencyEffect.plus(
currentPosition.feeInBaseCurrency
);
}
if (currentPosition.valueInBaseCurrency) {
currentValueInBaseCurrency = currentValueInBaseCurrency.plus(
currentPosition.valueInBaseCurrency
);
} else {
hasErrors = true;
}
if (currentPosition.investment) {
totalInvestment = totalInvestment.plus(currentPosition.investment);
totalInvestmentWithCurrencyEffect =
totalInvestmentWithCurrencyEffect.plus(
currentPosition.investmentWithCurrencyEffect
);
} else {
hasErrors = true;
}
if (currentPosition.grossPerformance) {
grossPerformance = grossPerformance.plus(
currentPosition.grossPerformance
);
grossPerformanceWithCurrencyEffect =
grossPerformanceWithCurrencyEffect.plus(
currentPosition.grossPerformanceWithCurrencyEffect
);
netPerformance = netPerformance.plus(currentPosition.netPerformance);
} else if (!currentPosition.quantity.eq(0)) {
hasErrors = true;
}
if (currentPosition.timeWeightedInvestment) {
totalTimeWeightedInvestment = totalTimeWeightedInvestment.plus(
currentPosition.timeWeightedInvestment
);
totalTimeWeightedInvestmentWithCurrencyEffect =
totalTimeWeightedInvestmentWithCurrencyEffect.plus(
currentPosition.timeWeightedInvestmentWithCurrencyEffect
);
} else if (!currentPosition.quantity.eq(0)) {
Logger.warn(
`Missing historical market data for ${currentPosition.symbol} (${currentPosition.dataSource})`,
'PortfolioCalculator'
);
hasErrors = true;
}
}
return {
currentValueInBaseCurrency,
hasErrors,
positions,
totalFeesWithCurrencyEffect,
totalInterestWithCurrencyEffect,
totalInvestment,
totalInvestmentWithCurrencyEffect,
activitiesCount: this.activities.filter(({ type }) => {
return ['BUY', 'SELL'].includes(type);
}).length,
createdAt: new Date(),
errors: [],
historicalData: [],
totalLiabilitiesWithCurrencyEffect: new Big(0),
totalValuablesWithCurrencyEffect: new Big(0)
};
}
protected getSymbolMetrics({
chartDateMap,
dataSource,
end,
exchangeRates,
marketSymbolMap,
start,
symbol
}: {
chartDateMap?: { [date: string]: boolean };
end: Date;
exchangeRates: { [dateString: string]: number };
marketSymbolMap: {
[date: string]: { [symbol: string]: Big };
};
start: Date;
} & AssetProfileIdentifier): SymbolMetrics {
const currentExchangeRate = exchangeRates[format(new Date(), DATE_FORMAT)];
const currentValues: { [date: string]: Big } = {};
const currentValuesWithCurrencyEffect: { [date: string]: Big } = {};
let fees = new Big(0);
let feesAtStartDate = new Big(0);
let feesAtStartDateWithCurrencyEffect = new Big(0);
let feesWithCurrencyEffect = new Big(0);
let grossPerformance = new Big(0);
let grossPerformanceWithCurrencyEffect = new Big(0);
let grossPerformanceAtStartDate = new Big(0);
let grossPerformanceAtStartDateWithCurrencyEffect = new Big(0);
let grossPerformanceFromSells = new Big(0);
let grossPerformanceFromSellsWithCurrencyEffect = new Big(0);
let initialValue: Big;
let initialValueWithCurrencyEffect: Big;
let investmentAtStartDate: Big;
let investmentAtStartDateWithCurrencyEffect: Big;
const investmentValuesAccumulated: { [date: string]: Big } = {};
const investmentValuesAccumulatedWithCurrencyEffect: {
[date: string]: Big;
} = {};
const investmentValuesWithCurrencyEffect: { [date: string]: Big } = {};
let lastAveragePrice = new Big(0);
let lastAveragePriceWithCurrencyEffect = new Big(0);
const netPerformanceValues: { [date: string]: Big } = {};
const netPerformanceValuesWithCurrencyEffect: { [date: string]: Big } = {};
const timeWeightedInvestmentValues: { [date: string]: Big } = {};
const timeWeightedInvestmentValuesWithCurrencyEffect: {
[date: string]: Big;
} = {};
const totalAccountBalanceInBaseCurrency = new Big(0);
let totalDividend = new Big(0);
let totalDividendInBaseCurrency = new Big(0);
let totalInterest = new Big(0);
let totalInterestInBaseCurrency = new Big(0);
let totalInvestment = new Big(0);
let totalInvestmentFromBuyTransactions = new Big(0);
let totalInvestmentFromBuyTransactionsWithCurrencyEffect = new Big(0);
let totalInvestmentWithCurrencyEffect = new Big(0);
let totalLiabilities = new Big(0);
let totalLiabilitiesInBaseCurrency = new Big(0);
let totalQuantityFromBuyTransactions = new Big(0);
let totalUnits = new Big(0);
let totalValuables = new Big(0);
let totalValuablesInBaseCurrency = new Big(0);
let valueAtStartDate: Big;
let valueAtStartDateWithCurrencyEffect: Big;
// Clone orders to keep the original values in this.orders
let orders: PortfolioOrderItem[] = cloneDeep(
this.activities.filter(({ SymbolProfile }) => {
return SymbolProfile.symbol === symbol;
})
);
if (orders.length <= 0) {
return {
currentValues: {},
currentValuesWithCurrencyEffect: {},
feesWithCurrencyEffect: new Big(0),
grossPerformance: new Big(0),
grossPerformancePercentage: new Big(0),
grossPerformancePercentageWithCurrencyEffect: new Big(0),
grossPerformanceWithCurrencyEffect: new Big(0),
hasErrors: false,
initialValue: new Big(0),
initialValueWithCurrencyEffect: new Big(0),
investmentValuesAccumulated: {},
investmentValuesAccumulatedWithCurrencyEffect: {},
investmentValuesWithCurrencyEffect: {},
netPerformance: new Big(0),
netPerformancePercentage: new Big(0),
netPerformancePercentageWithCurrencyEffectMap: {},
netPerformanceValues: {},
netPerformanceValuesWithCurrencyEffect: {},
netPerformanceWithCurrencyEffectMap: {},
timeWeightedInvestment: new Big(0),
timeWeightedInvestmentValues: {},
timeWeightedInvestmentValuesWithCurrencyEffect: {},
timeWeightedInvestmentWithCurrencyEffect: new Big(0),
totalAccountBalanceInBaseCurrency: new Big(0),
totalDividend: new Big(0),
totalDividendInBaseCurrency: new Big(0),
totalInterest: new Big(0),
totalInterestInBaseCurrency: new Big(0),
totalInvestment: new Big(0),
totalInvestmentWithCurrencyEffect: new Big(0),
totalLiabilities: new Big(0),
totalLiabilitiesInBaseCurrency: new Big(0),
totalValuables: new Big(0),
totalValuablesInBaseCurrency: new Big(0)
};
}
const dateOfFirstTransaction = new Date(orders[0].date);
const endDateString = format(end, DATE_FORMAT);
const startDateString = format(start, DATE_FORMAT);
const unitPriceAtStartDate = marketSymbolMap[startDateString]?.[symbol];
const unitPriceAtEndDate = marketSymbolMap[endDateString]?.[symbol];
if (
!unitPriceAtEndDate ||
(!unitPriceAtStartDate && isBefore(dateOfFirstTransaction, start))
) {
return {
currentValues: {},
currentValuesWithCurrencyEffect: {},
feesWithCurrencyEffect: new Big(0),
grossPerformance: new Big(0),
grossPerformancePercentage: new Big(0),
grossPerformancePercentageWithCurrencyEffect: new Big(0),
grossPerformanceWithCurrencyEffect: new Big(0),
hasErrors: true,
initialValue: new Big(0),
initialValueWithCurrencyEffect: new Big(0),
investmentValuesAccumulated: {},
investmentValuesAccumulatedWithCurrencyEffect: {},
investmentValuesWithCurrencyEffect: {},
netPerformance: new Big(0),
netPerformancePercentage: new Big(0),
netPerformancePercentageWithCurrencyEffectMap: {},
netPerformanceWithCurrencyEffectMap: {},
netPerformanceValues: {},
netPerformanceValuesWithCurrencyEffect: {},
timeWeightedInvestment: new Big(0),
timeWeightedInvestmentValues: {},
timeWeightedInvestmentValuesWithCurrencyEffect: {},
timeWeightedInvestmentWithCurrencyEffect: new Big(0),
totalAccountBalanceInBaseCurrency: new Big(0),
totalDividend: new Big(0),
totalDividendInBaseCurrency: new Big(0),
totalInterest: new Big(0),
totalInterestInBaseCurrency: new Big(0),
totalInvestment: new Big(0),
totalInvestmentWithCurrencyEffect: new Big(0),
totalLiabilities: new Big(0),
totalLiabilitiesInBaseCurrency: new Big(0),
totalValuables: new Big(0),
totalValuablesInBaseCurrency: new Big(0)
};
}
// Add a synthetic order at the start and the end date
orders.push({
date: startDateString,
fee: new Big(0),
feeInBaseCurrency: new Big(0),
itemType: 'start',
quantity: new Big(0),
SymbolProfile: {
dataSource,
symbol
},
type: 'BUY',
unitPrice: unitPriceAtStartDate
});
orders.push({
date: endDateString,
fee: new Big(0),
feeInBaseCurrency: new Big(0),
itemType: 'end',
SymbolProfile: {
dataSource,
symbol
},
quantity: new Big(0),
type: 'BUY',
unitPrice: unitPriceAtEndDate
});
let lastUnitPrice: Big;
const ordersByDate: { [date: string]: PortfolioOrderItem[] } = {};
for (const order of orders) {
ordersByDate[order.date] = ordersByDate[order.date] ?? [];
ordersByDate[order.date].push(order);
}
if (!this.chartDates) {
this.chartDates = Object.keys(chartDateMap).sort();
}
for (const dateString of this.chartDates) {
if (dateString < startDateString) {
continue;
} else if (dateString > endDateString) {
break;
}
if (ordersByDate[dateString]?.length > 0) {
for (const order of ordersByDate[dateString]) {
order.unitPriceFromMarketData =
marketSymbolMap[dateString]?.[symbol] ?? lastUnitPrice;
}
} else {
orders.push({
date: dateString,
fee: new Big(0),
feeInBaseCurrency: new Big(0),
quantity: new Big(0),
SymbolProfile: {
dataSource,
symbol
},
type: 'BUY',
unitPrice: marketSymbolMap[dateString]?.[symbol] ?? lastUnitPrice,
unitPriceFromMarketData:
marketSymbolMap[dateString]?.[symbol] ?? lastUnitPrice
});
}
const lastOrder = orders.at(-1);
lastUnitPrice = lastOrder.unitPriceFromMarketData ?? lastOrder.unitPrice;
}
// Sort orders so that the start and end placeholder order are at the correct
// position
orders = sortBy(orders, ({ date, itemType }) => {
let sortIndex = new Date(date);
if (itemType === 'end') {
sortIndex = addMilliseconds(sortIndex, 1);
} else if (itemType === 'start') {
sortIndex = addMilliseconds(sortIndex, -1);
}
return sortIndex.getTime();
});
const indexOfStartOrder = orders.findIndex(({ itemType }) => {
return itemType === 'start';
});
const indexOfEndOrder = orders.findIndex(({ itemType }) => {
return itemType === 'end';
});
let totalInvestmentDays = 0;
let sumOfTimeWeightedInvestments = new Big(0);
let sumOfTimeWeightedInvestmentsWithCurrencyEffect = new Big(0);
for (let i = 0; i < orders.length; i += 1) {
const order = orders[i];
if (PortfolioCalculator.ENABLE_LOGGING) {
console.log();
console.log();
console.log(
i + 1,
order.date,
order.type,
order.itemType ? `(${order.itemType})` : ''
);
}
const exchangeRateAtOrderDate = exchangeRates[order.date];
if (order.type === 'DIVIDEND') {
const dividend = order.quantity.mul(order.unitPrice);
totalDividend = totalDividend.plus(dividend);
totalDividendInBaseCurrency = totalDividendInBaseCurrency.plus(
dividend.mul(exchangeRateAtOrderDate ?? 1)
);
} else if (order.type === 'INTEREST') {
const interest = order.quantity.mul(order.unitPrice);
totalInterest = totalInterest.plus(interest);
totalInterestInBaseCurrency = totalInterestInBaseCurrency.plus(
interest.mul(exchangeRateAtOrderDate ?? 1)
);
} else if (order.type === 'ITEM') {
const valuables = order.quantity.mul(order.unitPrice);
totalValuables = totalValuables.plus(valuables);
totalValuablesInBaseCurrency = totalValuablesInBaseCurrency.plus(
valuables.mul(exchangeRateAtOrderDate ?? 1)
);
} else if (order.type === 'LIABILITY') {
const liabilities = order.quantity.mul(order.unitPrice);
totalLiabilities = totalLiabilities.plus(liabilities);
totalLiabilitiesInBaseCurrency = totalLiabilitiesInBaseCurrency.plus(
liabilities.mul(exchangeRateAtOrderDate ?? 1)
);
}
if (order.itemType === 'start') {
// Take the unit price of the order as the market price if there are no
// orders of this symbol before the start date
order.unitPrice =
indexOfStartOrder === 0
? orders[i + 1]?.unitPrice
: unitPriceAtStartDate;
}
if (order.fee) {
order.feeInBaseCurrency = order.fee.mul(currentExchangeRate ?? 1);
order.feeInBaseCurrencyWithCurrencyEffect = order.fee.mul(
exchangeRateAtOrderDate ?? 1
);
}
const unitPrice = ['BUY', 'SELL'].includes(order.type)
? order.unitPrice
: order.unitPriceFromMarketData;
if (unitPrice) {
order.unitPriceInBaseCurrency = unitPrice.mul(currentExchangeRate ?? 1);
order.unitPriceInBaseCurrencyWithCurrencyEffect = unitPrice.mul(
exchangeRateAtOrderDate ?? 1
);
}
const valueOfInvestmentBeforeTransaction = totalUnits.mul(
order.unitPriceInBaseCurrency
);
const valueOfInvestmentBeforeTransactionWithCurrencyEffect =
totalUnits.mul(order.unitPriceInBaseCurrencyWithCurrencyEffect);
if (!investmentAtStartDate && i >= indexOfStartOrder) {
investmentAtStartDate = totalInvestment ?? new Big(0);
investmentAtStartDateWithCurrencyEffect =
totalInvestmentWithCurrencyEffect ?? new Big(0);
valueAtStartDate = valueOfInvestmentBeforeTransaction;
valueAtStartDateWithCurrencyEffect =
valueOfInvestmentBeforeTransactionWithCurrencyEffect;
}
let transactionInvestment = new Big(0);
let transactionInvestmentWithCurrencyEffect = new Big(0);
if (order.type === 'BUY') {
transactionInvestment = order.quantity
.mul(order.unitPriceInBaseCurrency)
.mul(getFactor(order.type));
transactionInvestmentWithCurrencyEffect = order.quantity
.mul(order.unitPriceInBaseCurrencyWithCurrencyEffect)
.mul(getFactor(order.type));
totalQuantityFromBuyTransactions =
totalQuantityFromBuyTransactions.plus(order.quantity);
totalInvestmentFromBuyTransactions =
totalInvestmentFromBuyTransactions.plus(transactionInvestment);
totalInvestmentFromBuyTransactionsWithCurrencyEffect =
totalInvestmentFromBuyTransactionsWithCurrencyEffect.plus(
transactionInvestmentWithCurrencyEffect
);
} else if (order.type === 'SELL') {
if (totalUnits.gt(0)) {
transactionInvestment = totalInvestment
.div(totalUnits)
.mul(order.quantity)
.mul(getFactor(order.type));
transactionInvestmentWithCurrencyEffect =
totalInvestmentWithCurrencyEffect
.div(totalUnits)
.mul(order.quantity)
.mul(getFactor(order.type));
}
}
if (PortfolioCalculator.ENABLE_LOGGING) {
console.log('order.quantity', order.quantity.toNumber());
console.log('transactionInvestment', transactionInvestment.toNumber());
console.log(
'transactionInvestmentWithCurrencyEffect',
transactionInvestmentWithCurrencyEffect.toNumber()
);
}
const totalInvestmentBeforeTransaction = totalInvestment;
const totalInvestmentBeforeTransactionWithCurrencyEffect =
totalInvestmentWithCurrencyEffect;
totalInvestment = totalInvestment.plus(transactionInvestment);
totalInvestmentWithCurrencyEffect =
totalInvestmentWithCurrencyEffect.plus(
transactionInvestmentWithCurrencyEffect
);
if (i >= indexOfStartOrder && !initialValue) {
if (
i === indexOfStartOrder &&
!valueOfInvestmentBeforeTransaction.eq(0)
) {
initialValue = valueOfInvestmentBeforeTransaction;
initialValueWithCurrencyEffect =
valueOfInvestmentBeforeTransactionWithCurrencyEffect;
} else if (transactionInvestment.gt(0)) {
initialValue = transactionInvestment;
initialValueWithCurrencyEffect =
transactionInvestmentWithCurrencyEffect;
}
}
fees = fees.plus(order.feeInBaseCurrency ?? 0);
feesWithCurrencyEffect = feesWithCurrencyEffect.plus(
order.feeInBaseCurrencyWithCurrencyEffect ?? 0
);
totalUnits = totalUnits.plus(order.quantity.mul(getFactor(order.type)));
const valueOfInvestment = totalUnits.mul(order.unitPriceInBaseCurrency);
const valueOfInvestmentWithCurrencyEffect = totalUnits.mul(
order.unitPriceInBaseCurrencyWithCurrencyEffect
);
const grossPerformanceFromSell =
order.type === 'SELL'
? order.unitPriceInBaseCurrency
.minus(lastAveragePrice)
.mul(order.quantity)
: new Big(0);
const grossPerformanceFromSellWithCurrencyEffect =
order.type === 'SELL'
? order.unitPriceInBaseCurrencyWithCurrencyEffect
.minus(lastAveragePriceWithCurrencyEffect)
.mul(order.quantity)
: new Big(0);
grossPerformanceFromSells = grossPerformanceFromSells.plus(
grossPerformanceFromSell
);
grossPerformanceFromSellsWithCurrencyEffect =
grossPerformanceFromSellsWithCurrencyEffect.plus(
grossPerformanceFromSellWithCurrencyEffect
);
lastAveragePrice = totalQuantityFromBuyTransactions.eq(0)
? new Big(0)
: totalInvestmentFromBuyTransactions.div(
totalQuantityFromBuyTransactions
);
lastAveragePriceWithCurrencyEffect = totalQuantityFromBuyTransactions.eq(
0
)
? new Big(0)
: totalInvestmentFromBuyTransactionsWithCurrencyEffect.div(
totalQuantityFromBuyTransactions
);
if (PortfolioCalculator.ENABLE_LOGGING) {
console.log(
'grossPerformanceFromSells',
grossPerformanceFromSells.toNumber()
);
console.log(
'grossPerformanceFromSellWithCurrencyEffect',
grossPerformanceFromSellWithCurrencyEffect.toNumber()
);
}
const newGrossPerformance = valueOfInvestment
.minus(totalInvestment)
.plus(grossPerformanceFromSells);
const newGrossPerformanceWithCurrencyEffect =
valueOfInvestmentWithCurrencyEffect
.minus(totalInvestmentWithCurrencyEffect)
.plus(grossPerformanceFromSellsWithCurrencyEffect);
grossPerformance = newGrossPerformance;
grossPerformanceWithCurrencyEffect =
newGrossPerformanceWithCurrencyEffect;
if (order.itemType === 'start') {
feesAtStartDate = fees;
feesAtStartDateWithCurrencyEffect = feesWithCurrencyEffect;
grossPerformanceAtStartDate = grossPerformance;
grossPerformanceAtStartDateWithCurrencyEffect =
grossPerformanceWithCurrencyEffect;
}
if (i > indexOfStartOrder) {
// Only consider periods with an investment for the calculation of
// the time weighted investment
if (
valueOfInvestmentBeforeTransaction.gt(0) &&
['BUY', 'SELL'].includes(order.type)
) {
// Calculate the number of days since the previous order
const orderDate = new Date(order.date);
const previousOrderDate = new Date(orders[i - 1].date);
let daysSinceLastOrder = differenceInDays(
orderDate,
previousOrderDate
);
if (daysSinceLastOrder <= 0) {
// The time between two activities on the same day is unknown
// -> Set it to the smallest floating point number greater than 0
daysSinceLastOrder = Number.EPSILON;
}
// Sum up the total investment days since the start date to calculate
// the time weighted investment
totalInvestmentDays += daysSinceLastOrder;
sumOfTimeWeightedInvestments = sumOfTimeWeightedInvestments.add(
valueAtStartDate
.minus(investmentAtStartDate)
.plus(totalInvestmentBeforeTransaction)
.mul(daysSinceLastOrder)
);
sumOfTimeWeightedInvestmentsWithCurrencyEffect =
sumOfTimeWeightedInvestmentsWithCurrencyEffect.add(
valueAtStartDateWithCurrencyEffect
.minus(investmentAtStartDateWithCurrencyEffect)
.plus(totalInvestmentBeforeTransactionWithCurrencyEffect)
.mul(daysSinceLastOrder)
);
}
currentValues[order.date] = valueOfInvestment;
currentValuesWithCurrencyEffect[order.date] =
valueOfInvestmentWithCurrencyEffect;
netPerformanceValues[order.date] = grossPerformance
.minus(grossPerformanceAtStartDate)
.minus(fees.minus(feesAtStartDate));
netPerformanceValuesWithCurrencyEffect[order.date] =
grossPerformanceWithCurrencyEffect
.minus(grossPerformanceAtStartDateWithCurrencyEffect)
.minus(
feesWithCurrencyEffect.minus(feesAtStartDateWithCurrencyEffect)
);
investmentValuesAccumulated[order.date] = totalInvestment;
investmentValuesAccumulatedWithCurrencyEffect[order.date] =
totalInvestmentWithCurrencyEffect;
investmentValuesWithCurrencyEffect[order.date] = (
investmentValuesWithCurrencyEffect[order.date] ?? new Big(0)
).add(transactionInvestmentWithCurrencyEffect);
timeWeightedInvestmentValues[order.date] =
totalInvestmentDays > 0
? sumOfTimeWeightedInvestments.div(totalInvestmentDays)
: new Big(0);
timeWeightedInvestmentValuesWithCurrencyEffect[order.date] =
totalInvestmentDays > 0
? sumOfTimeWeightedInvestmentsWithCurrencyEffect.div(
totalInvestmentDays
)
: new Big(0);
}
if (PortfolioCalculator.ENABLE_LOGGING) {
console.log('totalInvestment', totalInvestment.toNumber());
console.log(
'totalInvestmentWithCurrencyEffect',
totalInvestmentWithCurrencyEffect.toNumber()
);
console.log(
'totalGrossPerformance',
grossPerformance.minus(grossPerformanceAtStartDate).toNumber()
);
console.log(
'totalGrossPerformanceWithCurrencyEffect',
grossPerformanceWithCurrencyEffect
.minus(grossPerformanceAtStartDateWithCurrencyEffect)
.toNumber()
);
}
if (i === indexOfEndOrder) {
break;
}
}
const totalGrossPerformance = grossPerformance.minus(
grossPerformanceAtStartDate
);
const totalGrossPerformanceWithCurrencyEffect =
grossPerformanceWithCurrencyEffect.minus(
grossPerformanceAtStartDateWithCurrencyEffect
);
const totalNetPerformance = grossPerformance
.minus(grossPerformanceAtStartDate)
.minus(fees.minus(feesAtStartDate));
const timeWeightedAverageInvestmentBetweenStartAndEndDate =
totalInvestmentDays > 0
? sumOfTimeWeightedInvestments.div(totalInvestmentDays)
: new Big(0);
const timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect =
totalInvestmentDays > 0
? sumOfTimeWeightedInvestmentsWithCurrencyEffect.div(
totalInvestmentDays
)
: new Big(0);
const grossPerformancePercentage =
timeWeightedAverageInvestmentBetweenStartAndEndDate.gt(0)
? totalGrossPerformance.div(
timeWeightedAverageInvestmentBetweenStartAndEndDate
)
: new Big(0);
const grossPerformancePercentageWithCurrencyEffect =
timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect.gt(
0
)
? totalGrossPerformanceWithCurrencyEffect.div(
timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect
)
: new Big(0);
const feesPerUnit = totalUnits.gt(0)
? fees.minus(feesAtStartDate).div(totalUnits)
: new Big(0);
const feesPerUnitWithCurrencyEffect = totalUnits.gt(0)
? feesWithCurrencyEffect
.minus(feesAtStartDateWithCurrencyEffect)
.div(totalUnits)
: new Big(0);
const netPerformancePercentage =
timeWeightedAverageInvestmentBetweenStartAndEndDate.gt(0)
? totalNetPerformance.div(
timeWeightedAverageInvestmentBetweenStartAndEndDate
)
: new Big(0);
const netPerformancePercentageWithCurrencyEffectMap: {
[key: DateRange]: Big;
} = {};
const netPerformanceWithCurrencyEffectMap: {
[key: DateRange]: Big;
} = {};
for (const dateRange of [
'1d',
'1y',
'5y',
'max',
'mtd',
'wtd',
'ytd'
// TODO:
// ...eachYearOfInterval({ end, start })
// .filter((date) => {
// return !isThisYear(date);
// })
// .map((date) => {
// return format(date, 'yyyy');
// })
] as DateRange[]) {
const dateInterval = getIntervalFromDateRange(dateRange);
const endDate = dateInterval.endDate;
let startDate = dateInterval.startDate;
if (isBefore(startDate, start)) {
startDate = start;
}
const rangeEndDateString = format(endDate, DATE_FORMAT);
const rangeStartDateString = format(startDate, DATE_FORMAT);
const currentValuesAtDateRangeStartWithCurrencyEffect =
currentValuesWithCurrencyEffect[rangeStartDateString] ?? new Big(0);
const investmentValuesAccumulatedAtStartDateWithCurrencyEffect =
investmentValuesAccumulatedWithCurrencyEffect[rangeStartDateString] ??
new Big(0);
const grossPerformanceAtDateRangeStartWithCurrencyEffect =
currentValuesAtDateRangeStartWithCurrencyEffect.minus(
investmentValuesAccumulatedAtStartDateWithCurrencyEffect
);
let average = new Big(0);
let dayCount = 0;
for (let i = this.chartDates.length - 1; i >= 0; i -= 1) {
const date = this.chartDates[i];
if (date > rangeEndDateString) {
continue;
} else if (date < rangeStartDateString) {
break;
}
if (
investmentValuesAccumulatedWithCurrencyEffect[date] instanceof Big &&
investmentValuesAccumulatedWithCurrencyEffect[date].gt(0)
) {
average = average.add(
investmentValuesAccumulatedWithCurrencyEffect[date].add(
grossPerformanceAtDateRangeStartWithCurrencyEffect
)
);
dayCount++;
}
}
if (dayCount > 0) {
average = average.div(dayCount);
}
netPerformanceWithCurrencyEffectMap[dateRange] =
netPerformanceValuesWithCurrencyEffect[rangeEndDateString]?.minus(
// If the date range is 'max', take 0 as a start value. Otherwise,
// the value of the end of the day of the start date is taken which
// differs from the buying price.
dateRange === 'max'
? new Big(0)
: (netPerformanceValuesWithCurrencyEffect[rangeStartDateString] ??
new Big(0))
) ?? new Big(0);
netPerformancePercentageWithCurrencyEffectMap[dateRange] = average.gt(0)
? netPerformanceWithCurrencyEffectMap[dateRange].div(average)
: new Big(0);
}
if (PortfolioCalculator.ENABLE_LOGGING) {
console.log(
`
${symbol}
Unit price: ${orders[indexOfStartOrder].unitPrice.toFixed(
2
)} -> ${unitPriceAtEndDate.toFixed(2)}
Total investment: ${totalInvestment.toFixed(2)}
Total investment with currency effect: ${totalInvestmentWithCurrencyEffect.toFixed(
2
)}
Time weighted investment: ${timeWeightedAverageInvestmentBetweenStartAndEndDate.toFixed(
2
)}
Time weighted investment with currency effect: ${timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect.toFixed(
2
)}
Total dividend: ${totalDividend.toFixed(2)}
Gross performance: ${totalGrossPerformance.toFixed(
2
)} / ${grossPerformancePercentage.mul(100).toFixed(2)}%
Gross performance with currency effect: ${totalGrossPerformanceWithCurrencyEffect.toFixed(
2
)} / ${grossPerformancePercentageWithCurrencyEffect
.mul(100)
.toFixed(2)}%
Fees per unit: ${feesPerUnit.toFixed(2)}
Fees per unit with currency effect: ${feesPerUnitWithCurrencyEffect.toFixed(
2
)}
Net performance: ${totalNetPerformance.toFixed(
2
)} / ${netPerformancePercentage.mul(100).toFixed(2)}%
Net performance with currency effect: ${netPerformancePercentageWithCurrencyEffectMap[
'max'
].toFixed(2)}%`
);
}
return {
currentValues,
currentValuesWithCurrencyEffect,
feesWithCurrencyEffect,
grossPerformancePercentage,
grossPerformancePercentageWithCurrencyEffect,
initialValue,
initialValueWithCurrencyEffect,
investmentValuesAccumulated,
investmentValuesAccumulatedWithCurrencyEffect,
investmentValuesWithCurrencyEffect,
netPerformancePercentage,
netPerformancePercentageWithCurrencyEffectMap,
netPerformanceValues,
netPerformanceValuesWithCurrencyEffect,
netPerformanceWithCurrencyEffectMap,
timeWeightedInvestmentValues,
timeWeightedInvestmentValuesWithCurrencyEffect,
totalAccountBalanceInBaseCurrency,
totalDividend,
totalDividendInBaseCurrency,
totalInterest,
totalInterestInBaseCurrency,
totalInvestment,
totalInvestmentWithCurrencyEffect,
totalLiabilities,
totalLiabilitiesInBaseCurrency,
totalValuables,
totalValuablesInBaseCurrency,
grossPerformance: totalGrossPerformance,
grossPerformanceWithCurrencyEffect:
totalGrossPerformanceWithCurrencyEffect,
hasErrors: totalUnits.gt(0) && (!initialValue || !unitPriceAtEndDate),
netPerformance: totalNetPerformance,
timeWeightedInvestment:
timeWeightedAverageInvestmentBetweenStartAndEndDate,
timeWeightedInvestmentWithCurrencyEffect:
timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect
};
}
}

959
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts

@ -1,969 +1,24 @@
import { PortfolioCalculator } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator'; import { PortfolioCalculator } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator';
import { PortfolioOrderItem } from '@ghostfolio/api/app/portfolio/interfaces/portfolio-order-item.interface';
import { getFactor } from '@ghostfolio/api/helper/portfolio.helper';
import { getIntervalFromDateRange } from '@ghostfolio/common/calculation-helper';
import { DATE_FORMAT } from '@ghostfolio/common/helper';
import { import {
AssetProfileIdentifier, AssetProfileIdentifier,
SymbolMetrics SymbolMetrics
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { PortfolioSnapshot, TimelinePosition } from '@ghostfolio/common/models'; import { PortfolioSnapshot } from '@ghostfolio/common/models';
import { DateRange } from '@ghostfolio/common/types';
import { Logger } from '@nestjs/common'; export class TwrPortfolioCalculator extends PortfolioCalculator {
import { Big } from 'big.js'; protected calculateOverallPerformance(): PortfolioSnapshot {
import { addMilliseconds, differenceInDays, format, isBefore } from 'date-fns'; throw new Error('Method not implemented.');
import { cloneDeep, sortBy } from 'lodash';
export class TWRPortfolioCalculator extends PortfolioCalculator {
private chartDates: string[];
protected calculateOverallPerformance(
positions: TimelinePosition[]
): PortfolioSnapshot {
let currentValueInBaseCurrency = new Big(0);
let grossPerformance = new Big(0);
let grossPerformanceWithCurrencyEffect = new Big(0);
let hasErrors = false;
let netPerformance = new Big(0);
let totalFeesWithCurrencyEffect = new Big(0);
const totalInterestWithCurrencyEffect = new Big(0);
let totalInvestment = new Big(0);
let totalInvestmentWithCurrencyEffect = new Big(0);
let totalTimeWeightedInvestment = new Big(0);
let totalTimeWeightedInvestmentWithCurrencyEffect = new Big(0);
for (const currentPosition of positions) {
if (currentPosition.feeInBaseCurrency) {
totalFeesWithCurrencyEffect = totalFeesWithCurrencyEffect.plus(
currentPosition.feeInBaseCurrency
);
}
if (currentPosition.valueInBaseCurrency) {
currentValueInBaseCurrency = currentValueInBaseCurrency.plus(
currentPosition.valueInBaseCurrency
);
} else {
hasErrors = true;
}
if (currentPosition.investment) {
totalInvestment = totalInvestment.plus(currentPosition.investment);
totalInvestmentWithCurrencyEffect =
totalInvestmentWithCurrencyEffect.plus(
currentPosition.investmentWithCurrencyEffect
);
} else {
hasErrors = true;
}
if (currentPosition.grossPerformance) {
grossPerformance = grossPerformance.plus(
currentPosition.grossPerformance
);
grossPerformanceWithCurrencyEffect =
grossPerformanceWithCurrencyEffect.plus(
currentPosition.grossPerformanceWithCurrencyEffect
);
netPerformance = netPerformance.plus(currentPosition.netPerformance);
} else if (!currentPosition.quantity.eq(0)) {
hasErrors = true;
}
if (currentPosition.timeWeightedInvestment) {
totalTimeWeightedInvestment = totalTimeWeightedInvestment.plus(
currentPosition.timeWeightedInvestment
);
totalTimeWeightedInvestmentWithCurrencyEffect =
totalTimeWeightedInvestmentWithCurrencyEffect.plus(
currentPosition.timeWeightedInvestmentWithCurrencyEffect
);
} else if (!currentPosition.quantity.eq(0)) {
Logger.warn(
`Missing historical market data for ${currentPosition.symbol} (${currentPosition.dataSource})`,
'PortfolioCalculator'
);
hasErrors = true;
}
}
return {
currentValueInBaseCurrency,
hasErrors,
positions,
totalFeesWithCurrencyEffect,
totalInterestWithCurrencyEffect,
totalInvestment,
totalInvestmentWithCurrencyEffect,
activitiesCount: this.activities.filter(({ type }) => {
return ['BUY', 'SELL'].includes(type);
}).length,
createdAt: new Date(),
errors: [],
historicalData: [],
totalLiabilitiesWithCurrencyEffect: new Big(0),
totalValuablesWithCurrencyEffect: new Big(0)
};
} }
protected getSymbolMetrics({ protected getSymbolMetrics({}: {
chartDateMap,
dataSource,
end,
exchangeRates,
marketSymbolMap,
start,
symbol
}: {
chartDateMap?: { [date: string]: boolean };
end: Date; end: Date;
exchangeRates: { [dateString: string]: number }; exchangeRates: { [dateString: string]: number };
marketSymbolMap: { marketSymbolMap: {
[date: string]: { [symbol: string]: Big }; [date: string]: { [symbol: string]: Big };
}; };
start: Date; start: Date;
step?: number;
} & AssetProfileIdentifier): SymbolMetrics { } & AssetProfileIdentifier): SymbolMetrics {
const currentExchangeRate = exchangeRates[format(new Date(), DATE_FORMAT)]; throw new Error('Method not implemented.');
const currentValues: { [date: string]: Big } = {};
const currentValuesWithCurrencyEffect: { [date: string]: Big } = {};
let fees = new Big(0);
let feesAtStartDate = new Big(0);
let feesAtStartDateWithCurrencyEffect = new Big(0);
let feesWithCurrencyEffect = new Big(0);
let grossPerformance = new Big(0);
let grossPerformanceWithCurrencyEffect = new Big(0);
let grossPerformanceAtStartDate = new Big(0);
let grossPerformanceAtStartDateWithCurrencyEffect = new Big(0);
let grossPerformanceFromSells = new Big(0);
let grossPerformanceFromSellsWithCurrencyEffect = new Big(0);
let initialValue: Big;
let initialValueWithCurrencyEffect: Big;
let investmentAtStartDate: Big;
let investmentAtStartDateWithCurrencyEffect: Big;
const investmentValuesAccumulated: { [date: string]: Big } = {};
const investmentValuesAccumulatedWithCurrencyEffect: {
[date: string]: Big;
} = {};
const investmentValuesWithCurrencyEffect: { [date: string]: Big } = {};
let lastAveragePrice = new Big(0);
let lastAveragePriceWithCurrencyEffect = new Big(0);
const netPerformanceValues: { [date: string]: Big } = {};
const netPerformanceValuesWithCurrencyEffect: { [date: string]: Big } = {};
const timeWeightedInvestmentValues: { [date: string]: Big } = {};
const timeWeightedInvestmentValuesWithCurrencyEffect: {
[date: string]: Big;
} = {};
const totalAccountBalanceInBaseCurrency = new Big(0);
let totalDividend = new Big(0);
let totalDividendInBaseCurrency = new Big(0);
let totalInterest = new Big(0);
let totalInterestInBaseCurrency = new Big(0);
let totalInvestment = new Big(0);
let totalInvestmentFromBuyTransactions = new Big(0);
let totalInvestmentFromBuyTransactionsWithCurrencyEffect = new Big(0);
let totalInvestmentWithCurrencyEffect = new Big(0);
let totalLiabilities = new Big(0);
let totalLiabilitiesInBaseCurrency = new Big(0);
let totalQuantityFromBuyTransactions = new Big(0);
let totalUnits = new Big(0);
let totalValuables = new Big(0);
let totalValuablesInBaseCurrency = new Big(0);
let valueAtStartDate: Big;
let valueAtStartDateWithCurrencyEffect: Big;
// Clone orders to keep the original values in this.orders
let orders: PortfolioOrderItem[] = cloneDeep(
this.activities.filter(({ SymbolProfile }) => {
return SymbolProfile.symbol === symbol;
})
);
if (orders.length <= 0) {
return {
currentValues: {},
currentValuesWithCurrencyEffect: {},
feesWithCurrencyEffect: new Big(0),
grossPerformance: new Big(0),
grossPerformancePercentage: new Big(0),
grossPerformancePercentageWithCurrencyEffect: new Big(0),
grossPerformanceWithCurrencyEffect: new Big(0),
hasErrors: false,
initialValue: new Big(0),
initialValueWithCurrencyEffect: new Big(0),
investmentValuesAccumulated: {},
investmentValuesAccumulatedWithCurrencyEffect: {},
investmentValuesWithCurrencyEffect: {},
netPerformance: new Big(0),
netPerformancePercentage: new Big(0),
netPerformancePercentageWithCurrencyEffectMap: {},
netPerformanceValues: {},
netPerformanceValuesWithCurrencyEffect: {},
netPerformanceWithCurrencyEffectMap: {},
timeWeightedInvestment: new Big(0),
timeWeightedInvestmentValues: {},
timeWeightedInvestmentValuesWithCurrencyEffect: {},
timeWeightedInvestmentWithCurrencyEffect: new Big(0),
totalAccountBalanceInBaseCurrency: new Big(0),
totalDividend: new Big(0),
totalDividendInBaseCurrency: new Big(0),
totalInterest: new Big(0),
totalInterestInBaseCurrency: new Big(0),
totalInvestment: new Big(0),
totalInvestmentWithCurrencyEffect: new Big(0),
totalLiabilities: new Big(0),
totalLiabilitiesInBaseCurrency: new Big(0),
totalValuables: new Big(0),
totalValuablesInBaseCurrency: new Big(0)
};
}
const dateOfFirstTransaction = new Date(orders[0].date);
const endDateString = format(end, DATE_FORMAT);
const startDateString = format(start, DATE_FORMAT);
const unitPriceAtStartDate = marketSymbolMap[startDateString]?.[symbol];
const unitPriceAtEndDate = marketSymbolMap[endDateString]?.[symbol];
if (
!unitPriceAtEndDate ||
(!unitPriceAtStartDate && isBefore(dateOfFirstTransaction, start))
) {
return {
currentValues: {},
currentValuesWithCurrencyEffect: {},
feesWithCurrencyEffect: new Big(0),
grossPerformance: new Big(0),
grossPerformancePercentage: new Big(0),
grossPerformancePercentageWithCurrencyEffect: new Big(0),
grossPerformanceWithCurrencyEffect: new Big(0),
hasErrors: true,
initialValue: new Big(0),
initialValueWithCurrencyEffect: new Big(0),
investmentValuesAccumulated: {},
investmentValuesAccumulatedWithCurrencyEffect: {},
investmentValuesWithCurrencyEffect: {},
netPerformance: new Big(0),
netPerformancePercentage: new Big(0),
netPerformancePercentageWithCurrencyEffectMap: {},
netPerformanceWithCurrencyEffectMap: {},
netPerformanceValues: {},
netPerformanceValuesWithCurrencyEffect: {},
timeWeightedInvestment: new Big(0),
timeWeightedInvestmentValues: {},
timeWeightedInvestmentValuesWithCurrencyEffect: {},
timeWeightedInvestmentWithCurrencyEffect: new Big(0),
totalAccountBalanceInBaseCurrency: new Big(0),
totalDividend: new Big(0),
totalDividendInBaseCurrency: new Big(0),
totalInterest: new Big(0),
totalInterestInBaseCurrency: new Big(0),
totalInvestment: new Big(0),
totalInvestmentWithCurrencyEffect: new Big(0),
totalLiabilities: new Big(0),
totalLiabilitiesInBaseCurrency: new Big(0),
totalValuables: new Big(0),
totalValuablesInBaseCurrency: new Big(0)
};
}
// Add a synthetic order at the start and the end date
orders.push({
date: startDateString,
fee: new Big(0),
feeInBaseCurrency: new Big(0),
itemType: 'start',
quantity: new Big(0),
SymbolProfile: {
dataSource,
symbol
},
type: 'BUY',
unitPrice: unitPriceAtStartDate
});
orders.push({
date: endDateString,
fee: new Big(0),
feeInBaseCurrency: new Big(0),
itemType: 'end',
SymbolProfile: {
dataSource,
symbol
},
quantity: new Big(0),
type: 'BUY',
unitPrice: unitPriceAtEndDate
});
let lastUnitPrice: Big;
const ordersByDate: { [date: string]: PortfolioOrderItem[] } = {};
for (const order of orders) {
ordersByDate[order.date] = ordersByDate[order.date] ?? [];
ordersByDate[order.date].push(order);
}
if (!this.chartDates) {
this.chartDates = Object.keys(chartDateMap).sort();
}
for (const dateString of this.chartDates) {
if (dateString < startDateString) {
continue;
} else if (dateString > endDateString) {
break;
}
if (ordersByDate[dateString]?.length > 0) {
for (const order of ordersByDate[dateString]) {
order.unitPriceFromMarketData =
marketSymbolMap[dateString]?.[symbol] ?? lastUnitPrice;
}
} else {
orders.push({
date: dateString,
fee: new Big(0),
feeInBaseCurrency: new Big(0),
quantity: new Big(0),
SymbolProfile: {
dataSource,
symbol
},
type: 'BUY',
unitPrice: marketSymbolMap[dateString]?.[symbol] ?? lastUnitPrice,
unitPriceFromMarketData:
marketSymbolMap[dateString]?.[symbol] ?? lastUnitPrice
});
}
const lastOrder = orders.at(-1);
lastUnitPrice = lastOrder.unitPriceFromMarketData ?? lastOrder.unitPrice;
}
// Sort orders so that the start and end placeholder order are at the correct
// position
orders = sortBy(orders, ({ date, itemType }) => {
let sortIndex = new Date(date);
if (itemType === 'end') {
sortIndex = addMilliseconds(sortIndex, 1);
} else if (itemType === 'start') {
sortIndex = addMilliseconds(sortIndex, -1);
}
return sortIndex.getTime();
});
const indexOfStartOrder = orders.findIndex(({ itemType }) => {
return itemType === 'start';
});
const indexOfEndOrder = orders.findIndex(({ itemType }) => {
return itemType === 'end';
});
let totalInvestmentDays = 0;
let sumOfTimeWeightedInvestments = new Big(0);
let sumOfTimeWeightedInvestmentsWithCurrencyEffect = new Big(0);
for (let i = 0; i < orders.length; i += 1) {
const order = orders[i];
if (PortfolioCalculator.ENABLE_LOGGING) {
console.log();
console.log();
console.log(
i + 1,
order.date,
order.type,
order.itemType ? `(${order.itemType})` : ''
);
}
const exchangeRateAtOrderDate = exchangeRates[order.date];
if (order.type === 'DIVIDEND') {
const dividend = order.quantity.mul(order.unitPrice);
totalDividend = totalDividend.plus(dividend);
totalDividendInBaseCurrency = totalDividendInBaseCurrency.plus(
dividend.mul(exchangeRateAtOrderDate ?? 1)
);
} else if (order.type === 'INTEREST') {
const interest = order.quantity.mul(order.unitPrice);
totalInterest = totalInterest.plus(interest);
totalInterestInBaseCurrency = totalInterestInBaseCurrency.plus(
interest.mul(exchangeRateAtOrderDate ?? 1)
);
} else if (order.type === 'ITEM') {
const valuables = order.quantity.mul(order.unitPrice);
totalValuables = totalValuables.plus(valuables);
totalValuablesInBaseCurrency = totalValuablesInBaseCurrency.plus(
valuables.mul(exchangeRateAtOrderDate ?? 1)
);
} else if (order.type === 'LIABILITY') {
const liabilities = order.quantity.mul(order.unitPrice);
totalLiabilities = totalLiabilities.plus(liabilities);
totalLiabilitiesInBaseCurrency = totalLiabilitiesInBaseCurrency.plus(
liabilities.mul(exchangeRateAtOrderDate ?? 1)
);
}
if (order.itemType === 'start') {
// Take the unit price of the order as the market price if there are no
// orders of this symbol before the start date
order.unitPrice =
indexOfStartOrder === 0
? orders[i + 1]?.unitPrice
: unitPriceAtStartDate;
}
if (order.fee) {
order.feeInBaseCurrency = order.fee.mul(currentExchangeRate ?? 1);
order.feeInBaseCurrencyWithCurrencyEffect = order.fee.mul(
exchangeRateAtOrderDate ?? 1
);
}
const unitPrice = ['BUY', 'SELL'].includes(order.type)
? order.unitPrice
: order.unitPriceFromMarketData;
if (unitPrice) {
order.unitPriceInBaseCurrency = unitPrice.mul(currentExchangeRate ?? 1);
order.unitPriceInBaseCurrencyWithCurrencyEffect = unitPrice.mul(
exchangeRateAtOrderDate ?? 1
);
}
const valueOfInvestmentBeforeTransaction = totalUnits.mul(
order.unitPriceInBaseCurrency
);
const valueOfInvestmentBeforeTransactionWithCurrencyEffect =
totalUnits.mul(order.unitPriceInBaseCurrencyWithCurrencyEffect);
if (!investmentAtStartDate && i >= indexOfStartOrder) {
investmentAtStartDate = totalInvestment ?? new Big(0);
investmentAtStartDateWithCurrencyEffect =
totalInvestmentWithCurrencyEffect ?? new Big(0);
valueAtStartDate = valueOfInvestmentBeforeTransaction;
valueAtStartDateWithCurrencyEffect =
valueOfInvestmentBeforeTransactionWithCurrencyEffect;
}
let transactionInvestment = new Big(0);
let transactionInvestmentWithCurrencyEffect = new Big(0);
if (order.type === 'BUY') {
transactionInvestment = order.quantity
.mul(order.unitPriceInBaseCurrency)
.mul(getFactor(order.type));
transactionInvestmentWithCurrencyEffect = order.quantity
.mul(order.unitPriceInBaseCurrencyWithCurrencyEffect)
.mul(getFactor(order.type));
totalQuantityFromBuyTransactions =
totalQuantityFromBuyTransactions.plus(order.quantity);
totalInvestmentFromBuyTransactions =
totalInvestmentFromBuyTransactions.plus(transactionInvestment);
totalInvestmentFromBuyTransactionsWithCurrencyEffect =
totalInvestmentFromBuyTransactionsWithCurrencyEffect.plus(
transactionInvestmentWithCurrencyEffect
);
} else if (order.type === 'SELL') {
if (totalUnits.gt(0)) {
transactionInvestment = totalInvestment
.div(totalUnits)
.mul(order.quantity)
.mul(getFactor(order.type));
transactionInvestmentWithCurrencyEffect =
totalInvestmentWithCurrencyEffect
.div(totalUnits)
.mul(order.quantity)
.mul(getFactor(order.type));
}
}
if (PortfolioCalculator.ENABLE_LOGGING) {
console.log('order.quantity', order.quantity.toNumber());
console.log('transactionInvestment', transactionInvestment.toNumber());
console.log(
'transactionInvestmentWithCurrencyEffect',
transactionInvestmentWithCurrencyEffect.toNumber()
);
}
const totalInvestmentBeforeTransaction = totalInvestment;
const totalInvestmentBeforeTransactionWithCurrencyEffect =
totalInvestmentWithCurrencyEffect;
totalInvestment = totalInvestment.plus(transactionInvestment);
totalInvestmentWithCurrencyEffect =
totalInvestmentWithCurrencyEffect.plus(
transactionInvestmentWithCurrencyEffect
);
if (i >= indexOfStartOrder && !initialValue) {
if (
i === indexOfStartOrder &&
!valueOfInvestmentBeforeTransaction.eq(0)
) {
initialValue = valueOfInvestmentBeforeTransaction;
initialValueWithCurrencyEffect =
valueOfInvestmentBeforeTransactionWithCurrencyEffect;
} else if (transactionInvestment.gt(0)) {
initialValue = transactionInvestment;
initialValueWithCurrencyEffect =
transactionInvestmentWithCurrencyEffect;
}
}
fees = fees.plus(order.feeInBaseCurrency ?? 0);
feesWithCurrencyEffect = feesWithCurrencyEffect.plus(
order.feeInBaseCurrencyWithCurrencyEffect ?? 0
);
totalUnits = totalUnits.plus(order.quantity.mul(getFactor(order.type)));
const valueOfInvestment = totalUnits.mul(order.unitPriceInBaseCurrency);
const valueOfInvestmentWithCurrencyEffect = totalUnits.mul(
order.unitPriceInBaseCurrencyWithCurrencyEffect
);
const grossPerformanceFromSell =
order.type === 'SELL'
? order.unitPriceInBaseCurrency
.minus(lastAveragePrice)
.mul(order.quantity)
: new Big(0);
const grossPerformanceFromSellWithCurrencyEffect =
order.type === 'SELL'
? order.unitPriceInBaseCurrencyWithCurrencyEffect
.minus(lastAveragePriceWithCurrencyEffect)
.mul(order.quantity)
: new Big(0);
grossPerformanceFromSells = grossPerformanceFromSells.plus(
grossPerformanceFromSell
);
grossPerformanceFromSellsWithCurrencyEffect =
grossPerformanceFromSellsWithCurrencyEffect.plus(
grossPerformanceFromSellWithCurrencyEffect
);
lastAveragePrice = totalQuantityFromBuyTransactions.eq(0)
? new Big(0)
: totalInvestmentFromBuyTransactions.div(
totalQuantityFromBuyTransactions
);
lastAveragePriceWithCurrencyEffect = totalQuantityFromBuyTransactions.eq(
0
)
? new Big(0)
: totalInvestmentFromBuyTransactionsWithCurrencyEffect.div(
totalQuantityFromBuyTransactions
);
if (PortfolioCalculator.ENABLE_LOGGING) {
console.log(
'grossPerformanceFromSells',
grossPerformanceFromSells.toNumber()
);
console.log(
'grossPerformanceFromSellWithCurrencyEffect',
grossPerformanceFromSellWithCurrencyEffect.toNumber()
);
}
const newGrossPerformance = valueOfInvestment
.minus(totalInvestment)
.plus(grossPerformanceFromSells);
const newGrossPerformanceWithCurrencyEffect =
valueOfInvestmentWithCurrencyEffect
.minus(totalInvestmentWithCurrencyEffect)
.plus(grossPerformanceFromSellsWithCurrencyEffect);
grossPerformance = newGrossPerformance;
grossPerformanceWithCurrencyEffect =
newGrossPerformanceWithCurrencyEffect;
if (order.itemType === 'start') {
feesAtStartDate = fees;
feesAtStartDateWithCurrencyEffect = feesWithCurrencyEffect;
grossPerformanceAtStartDate = grossPerformance;
grossPerformanceAtStartDateWithCurrencyEffect =
grossPerformanceWithCurrencyEffect;
}
if (i > indexOfStartOrder) {
// Only consider periods with an investment for the calculation of
// the time weighted investment
if (
valueOfInvestmentBeforeTransaction.gt(0) &&
['BUY', 'SELL'].includes(order.type)
) {
// Calculate the number of days since the previous order
const orderDate = new Date(order.date);
const previousOrderDate = new Date(orders[i - 1].date);
let daysSinceLastOrder = differenceInDays(
orderDate,
previousOrderDate
);
if (daysSinceLastOrder <= 0) {
// The time between two activities on the same day is unknown
// -> Set it to the smallest floating point number greater than 0
daysSinceLastOrder = Number.EPSILON;
}
// Sum up the total investment days since the start date to calculate
// the time weighted investment
totalInvestmentDays += daysSinceLastOrder;
sumOfTimeWeightedInvestments = sumOfTimeWeightedInvestments.add(
valueAtStartDate
.minus(investmentAtStartDate)
.plus(totalInvestmentBeforeTransaction)
.mul(daysSinceLastOrder)
);
sumOfTimeWeightedInvestmentsWithCurrencyEffect =
sumOfTimeWeightedInvestmentsWithCurrencyEffect.add(
valueAtStartDateWithCurrencyEffect
.minus(investmentAtStartDateWithCurrencyEffect)
.plus(totalInvestmentBeforeTransactionWithCurrencyEffect)
.mul(daysSinceLastOrder)
);
}
currentValues[order.date] = valueOfInvestment;
currentValuesWithCurrencyEffect[order.date] =
valueOfInvestmentWithCurrencyEffect;
netPerformanceValues[order.date] = grossPerformance
.minus(grossPerformanceAtStartDate)
.minus(fees.minus(feesAtStartDate));
netPerformanceValuesWithCurrencyEffect[order.date] =
grossPerformanceWithCurrencyEffect
.minus(grossPerformanceAtStartDateWithCurrencyEffect)
.minus(
feesWithCurrencyEffect.minus(feesAtStartDateWithCurrencyEffect)
);
investmentValuesAccumulated[order.date] = totalInvestment;
investmentValuesAccumulatedWithCurrencyEffect[order.date] =
totalInvestmentWithCurrencyEffect;
investmentValuesWithCurrencyEffect[order.date] = (
investmentValuesWithCurrencyEffect[order.date] ?? new Big(0)
).add(transactionInvestmentWithCurrencyEffect);
timeWeightedInvestmentValues[order.date] =
totalInvestmentDays > 0
? sumOfTimeWeightedInvestments.div(totalInvestmentDays)
: new Big(0);
timeWeightedInvestmentValuesWithCurrencyEffect[order.date] =
totalInvestmentDays > 0
? sumOfTimeWeightedInvestmentsWithCurrencyEffect.div(
totalInvestmentDays
)
: new Big(0);
}
if (PortfolioCalculator.ENABLE_LOGGING) {
console.log('totalInvestment', totalInvestment.toNumber());
console.log(
'totalInvestmentWithCurrencyEffect',
totalInvestmentWithCurrencyEffect.toNumber()
);
console.log(
'totalGrossPerformance',
grossPerformance.minus(grossPerformanceAtStartDate).toNumber()
);
console.log(
'totalGrossPerformanceWithCurrencyEffect',
grossPerformanceWithCurrencyEffect
.minus(grossPerformanceAtStartDateWithCurrencyEffect)
.toNumber()
);
}
if (i === indexOfEndOrder) {
break;
}
}
const totalGrossPerformance = grossPerformance.minus(
grossPerformanceAtStartDate
);
const totalGrossPerformanceWithCurrencyEffect =
grossPerformanceWithCurrencyEffect.minus(
grossPerformanceAtStartDateWithCurrencyEffect
);
const totalNetPerformance = grossPerformance
.minus(grossPerformanceAtStartDate)
.minus(fees.minus(feesAtStartDate));
const timeWeightedAverageInvestmentBetweenStartAndEndDate =
totalInvestmentDays > 0
? sumOfTimeWeightedInvestments.div(totalInvestmentDays)
: new Big(0);
const timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect =
totalInvestmentDays > 0
? sumOfTimeWeightedInvestmentsWithCurrencyEffect.div(
totalInvestmentDays
)
: new Big(0);
const grossPerformancePercentage =
timeWeightedAverageInvestmentBetweenStartAndEndDate.gt(0)
? totalGrossPerformance.div(
timeWeightedAverageInvestmentBetweenStartAndEndDate
)
: new Big(0);
const grossPerformancePercentageWithCurrencyEffect =
timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect.gt(
0
)
? totalGrossPerformanceWithCurrencyEffect.div(
timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect
)
: new Big(0);
const feesPerUnit = totalUnits.gt(0)
? fees.minus(feesAtStartDate).div(totalUnits)
: new Big(0);
const feesPerUnitWithCurrencyEffect = totalUnits.gt(0)
? feesWithCurrencyEffect
.minus(feesAtStartDateWithCurrencyEffect)
.div(totalUnits)
: new Big(0);
const netPerformancePercentage =
timeWeightedAverageInvestmentBetweenStartAndEndDate.gt(0)
? totalNetPerformance.div(
timeWeightedAverageInvestmentBetweenStartAndEndDate
)
: new Big(0);
const netPerformancePercentageWithCurrencyEffectMap: {
[key: DateRange]: Big;
} = {};
const netPerformanceWithCurrencyEffectMap: {
[key: DateRange]: Big;
} = {};
for (const dateRange of [
'1d',
'1y',
'5y',
'max',
'mtd',
'wtd',
'ytd'
// TODO:
// ...eachYearOfInterval({ end, start })
// .filter((date) => {
// return !isThisYear(date);
// })
// .map((date) => {
// return format(date, 'yyyy');
// })
] as DateRange[]) {
const dateInterval = getIntervalFromDateRange(dateRange);
const endDate = dateInterval.endDate;
let startDate = dateInterval.startDate;
if (isBefore(startDate, start)) {
startDate = start;
}
const rangeEndDateString = format(endDate, DATE_FORMAT);
const rangeStartDateString = format(startDate, DATE_FORMAT);
const currentValuesAtDateRangeStartWithCurrencyEffect =
currentValuesWithCurrencyEffect[rangeStartDateString] ?? new Big(0);
const investmentValuesAccumulatedAtStartDateWithCurrencyEffect =
investmentValuesAccumulatedWithCurrencyEffect[rangeStartDateString] ??
new Big(0);
const grossPerformanceAtDateRangeStartWithCurrencyEffect =
currentValuesAtDateRangeStartWithCurrencyEffect.minus(
investmentValuesAccumulatedAtStartDateWithCurrencyEffect
);
let average = new Big(0);
let dayCount = 0;
for (let i = this.chartDates.length - 1; i >= 0; i -= 1) {
const date = this.chartDates[i];
if (date > rangeEndDateString) {
continue;
} else if (date < rangeStartDateString) {
break;
}
if (
investmentValuesAccumulatedWithCurrencyEffect[date] instanceof Big &&
investmentValuesAccumulatedWithCurrencyEffect[date].gt(0)
) {
average = average.add(
investmentValuesAccumulatedWithCurrencyEffect[date].add(
grossPerformanceAtDateRangeStartWithCurrencyEffect
)
);
dayCount++;
}
}
if (dayCount > 0) {
average = average.div(dayCount);
}
netPerformanceWithCurrencyEffectMap[dateRange] =
netPerformanceValuesWithCurrencyEffect[rangeEndDateString]?.minus(
// If the date range is 'max', take 0 as a start value. Otherwise,
// the value of the end of the day of the start date is taken which
// differs from the buying price.
dateRange === 'max'
? new Big(0)
: (netPerformanceValuesWithCurrencyEffect[rangeStartDateString] ??
new Big(0))
) ?? new Big(0);
netPerformancePercentageWithCurrencyEffectMap[dateRange] = average.gt(0)
? netPerformanceWithCurrencyEffectMap[dateRange].div(average)
: new Big(0);
}
if (PortfolioCalculator.ENABLE_LOGGING) {
console.log(
`
${symbol}
Unit price: ${orders[indexOfStartOrder].unitPrice.toFixed(
2
)} -> ${unitPriceAtEndDate.toFixed(2)}
Total investment: ${totalInvestment.toFixed(2)}
Total investment with currency effect: ${totalInvestmentWithCurrencyEffect.toFixed(
2
)}
Time weighted investment: ${timeWeightedAverageInvestmentBetweenStartAndEndDate.toFixed(
2
)}
Time weighted investment with currency effect: ${timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect.toFixed(
2
)}
Total dividend: ${totalDividend.toFixed(2)}
Gross performance: ${totalGrossPerformance.toFixed(
2
)} / ${grossPerformancePercentage.mul(100).toFixed(2)}%
Gross performance with currency effect: ${totalGrossPerformanceWithCurrencyEffect.toFixed(
2
)} / ${grossPerformancePercentageWithCurrencyEffect
.mul(100)
.toFixed(2)}%
Fees per unit: ${feesPerUnit.toFixed(2)}
Fees per unit with currency effect: ${feesPerUnitWithCurrencyEffect.toFixed(
2
)}
Net performance: ${totalNetPerformance.toFixed(
2
)} / ${netPerformancePercentage.mul(100).toFixed(2)}%
Net performance with currency effect: ${netPerformancePercentageWithCurrencyEffectMap[
'max'
].toFixed(2)}%`
);
}
return {
currentValues,
currentValuesWithCurrencyEffect,
feesWithCurrencyEffect,
grossPerformancePercentage,
grossPerformancePercentageWithCurrencyEffect,
initialValue,
initialValueWithCurrencyEffect,
investmentValuesAccumulated,
investmentValuesAccumulatedWithCurrencyEffect,
investmentValuesWithCurrencyEffect,
netPerformancePercentage,
netPerformancePercentageWithCurrencyEffectMap,
netPerformanceValues,
netPerformanceValuesWithCurrencyEffect,
netPerformanceWithCurrencyEffectMap,
timeWeightedInvestmentValues,
timeWeightedInvestmentValuesWithCurrencyEffect,
totalAccountBalanceInBaseCurrency,
totalDividend,
totalDividendInBaseCurrency,
totalInterest,
totalInterestInBaseCurrency,
totalInvestment,
totalInvestmentWithCurrencyEffect,
totalLiabilities,
totalLiabilitiesInBaseCurrency,
totalValuables,
totalValuablesInBaseCurrency,
grossPerformance: totalGrossPerformance,
grossPerformanceWithCurrencyEffect:
totalGrossPerformanceWithCurrencyEffect,
hasErrors: totalUnits.gt(0) && (!initialValue || !unitPriceAtEndDate),
netPerformance: totalNetPerformance,
timeWeightedInvestment:
timeWeightedAverageInvestmentBetweenStartAndEndDate,
timeWeightedInvestmentWithCurrencyEffect:
timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect
};
} }
} }

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

@ -82,7 +82,7 @@ import {
parseISO, parseISO,
set set
} from 'date-fns'; } from 'date-fns';
import { isEmpty, uniq } from 'lodash'; import { isEmpty } from 'lodash';
import { PortfolioCalculator } from './calculator/portfolio-calculator'; import { PortfolioCalculator } from './calculator/portfolio-calculator';
import { import {
@ -295,7 +295,7 @@ export class PortfolioService {
activities, activities,
filters, filters,
userId, userId,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: this.request.user.Settings.settings.baseCurrency currency: this.request.user.Settings.settings.baseCurrency
}); });
@ -372,7 +372,7 @@ export class PortfolioService {
activities, activities,
filters, filters,
userId, userId,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: userCurrency currency: userCurrency
}); });
@ -680,7 +680,7 @@ export class PortfolioService {
const portfolioCalculator = this.calculatorFactory.createCalculator({ const portfolioCalculator = this.calculatorFactory.createCalculator({
activities, activities,
userId, userId,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: userCurrency currency: userCurrency
}); });
@ -950,7 +950,7 @@ export class PortfolioService {
activities, activities,
filters, filters,
userId, userId,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: this.request.user.Settings.settings.baseCurrency currency: this.request.user.Settings.settings.baseCurrency
}); });
@ -1116,7 +1116,7 @@ export class PortfolioService {
activities, activities,
filters, filters,
userId, userId,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: userCurrency currency: userCurrency
}); });
@ -2032,14 +2032,16 @@ export class PortfolioService {
where: { id: filters[0].id } where: { id: filters[0].id }
}); });
} else { } else {
const accountIds = uniq( const accountIds = Array.from(
activities new Set(
.filter(({ accountId }) => { activities
return accountId; .filter(({ accountId }) => {
}) return accountId;
.map(({ accountId }) => { })
return accountId; .map(({ accountId }) => {
}) return accountId;
})
)
); );
currentAccounts = await this.accountService.accounts({ currentAccounts = await this.accountService.accounts({

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

File diff suppressed because it is too large

4
apps/api/src/assets/sitemap.xml

@ -92,6 +92,10 @@
<loc>https://ghostfol.io/de/ueber-uns/oss-friends</loc> <loc>https://ghostfol.io/de/ueber-uns/oss-friends</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url> </url>
<url>
<loc>https://ghostfol.io/development/storybook</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url> <url>
<loc>https://ghostfol.io/en</loc> <loc>https://ghostfol.io/en</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>

2
apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts

@ -26,7 +26,7 @@ export class TransformDataSourceInRequestInterceptor<T>
const request = http.getRequest(); const request = http.getRequest();
if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) {
if (request.body.activities) { if (request.body?.activities) {
request.body.activities = request.body.activities.map((activity) => { request.body.activities = request.body.activities.map((activity) => {
if (DataSource[activity.dataSource]) { if (DataSource[activity.dataSource]) {
return activity; return activity;

35
apps/api/src/main.ts

@ -1,3 +1,5 @@
import { STORYBOOK_PATH } from '@ghostfolio/common/config';
import { import {
Logger, Logger,
LogLevel, LogLevel,
@ -7,6 +9,7 @@ import {
import { ConfigService } from '@nestjs/config'; import { ConfigService } from '@nestjs/config';
import { NestFactory } from '@nestjs/core'; import { NestFactory } from '@nestjs/core';
import type { NestExpressApplication } from '@nestjs/platform-express'; import type { NestExpressApplication } from '@nestjs/platform-express';
import { NextFunction, Request, Response } from 'express';
import helmet from 'helmet'; import helmet from 'helmet';
import { AppModule } from './app/app.module'; import { AppModule } from './app/app.module';
@ -50,20 +53,24 @@ async function bootstrap() {
app.useBodyParser('json', { limit: '10mb' }); app.useBodyParser('json', { limit: '10mb' });
if (configService.get<string>('ENABLE_FEATURE_SUBSCRIPTION') === 'true') { if (configService.get<string>('ENABLE_FEATURE_SUBSCRIPTION') === 'true') {
app.use( app.use((req: Request, res: Response, next: NextFunction) => {
helmet({ if (req.path.startsWith(STORYBOOK_PATH)) {
contentSecurityPolicy: { next();
directives: { } else {
connectSrc: ["'self'", 'https://js.stripe.com'], // Allow connections to Stripe helmet({
frameSrc: ["'self'", 'https://js.stripe.com'], // Allow loading frames from Stripe contentSecurityPolicy: {
scriptSrc: ["'self'", "'unsafe-inline'", 'https://js.stripe.com'], // Allow inline scripts and scripts from Stripe directives: {
scriptSrcAttr: ["'self'", "'unsafe-inline'"], // Allow inline event handlers connectSrc: ["'self'", 'https://js.stripe.com'], // Allow connections to Stripe
styleSrc: ["'self'", "'unsafe-inline'"] // Allow inline styles frameSrc: ["'self'", 'https://js.stripe.com'], // Allow loading frames from Stripe
} scriptSrc: ["'self'", "'unsafe-inline'", 'https://js.stripe.com'], // Allow inline scripts and scripts from Stripe
}, scriptSrcAttr: ["'self'", "'unsafe-inline'"], // Allow inline event handlers
crossOriginOpenerPolicy: false // Disable Cross-Origin-Opener-Policy header (for Internet Identity) styleSrc: ["'self'", "'unsafe-inline'"] // Allow inline styles
}) }
); },
crossOriginOpenerPolicy: false // Disable Cross-Origin-Opener-Policy header (for Internet Identity)
})(req, res, next);
}
});
} }
app.use(HtmlTemplateMiddleware); app.use(HtmlTemplateMiddleware);

2
apps/api/src/middlewares/html-template.middleware.ts

@ -3,6 +3,7 @@ import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service';
import { import {
DEFAULT_LANGUAGE_CODE, DEFAULT_LANGUAGE_CODE,
DEFAULT_ROOT_URL, DEFAULT_ROOT_URL,
STORYBOOK_PATH,
SUPPORTED_LANGUAGE_CODES SUPPORTED_LANGUAGE_CODES
} from '@ghostfolio/common/config'; } from '@ghostfolio/common/config';
import { DATE_FORMAT, interpolate } from '@ghostfolio/common/helper'; import { DATE_FORMAT, interpolate } from '@ghostfolio/common/helper';
@ -129,6 +130,7 @@ export const HtmlTemplateMiddleware = async (
if ( if (
path.startsWith('/api/') || path.startsWith('/api/') ||
path.startsWith(STORYBOOK_PATH) ||
isFileRequest(path) || isFileRequest(path) ||
!environment.production !environment.production
) { ) {

5
apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts

@ -1,6 +1,7 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { import {
DataProviderInterface, DataProviderInterface,
GetAssetProfileParams,
GetDividendsParams, GetDividendsParams,
GetHistoricalParams, GetHistoricalParams,
GetQuotesParams, GetQuotesParams,
@ -41,9 +42,7 @@ export class AlphaVantageService implements DataProviderInterface {
public async getAssetProfile({ public async getAssetProfile({
symbol symbol
}: { }: GetAssetProfileParams): Promise<Partial<SymbolProfile>> {
symbol: string;
}): Promise<Partial<SymbolProfile>> {
return { return {
symbol, symbol,
dataSource: this.getName() dataSource: this.getName()

5
apps/api/src/services/data-provider/coingecko/coingecko.service.ts

@ -1,6 +1,7 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { import {
DataProviderInterface, DataProviderInterface,
GetAssetProfileParams,
GetDividendsParams, GetDividendsParams,
GetHistoricalParams, GetHistoricalParams,
GetQuotesParams, GetQuotesParams,
@ -56,9 +57,7 @@ export class CoinGeckoService implements DataProviderInterface {
public async getAssetProfile({ public async getAssetProfile({
symbol symbol
}: { }: GetAssetProfileParams): Promise<Partial<SymbolProfile>> {
symbol: string;
}): Promise<Partial<SymbolProfile>> {
const response: Partial<SymbolProfile> = { const response: Partial<SymbolProfile> = {
symbol, symbol,
assetClass: AssetClass.LIQUIDITY, assetClass: AssetClass.LIQUIDITY,

2
apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts

@ -170,6 +170,8 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface {
symbol = quotes[0].symbol; symbol = quotes[0].symbol;
} }
} catch {} } catch {}
} else if (symbol?.includes('-')) {
throw new Error(`${symbol} is not valid`);
} else { } else {
symbol = this.convertToYahooFinanceSymbol(symbol); symbol = this.convertToYahooFinanceSymbol(symbol);
} }

5
apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts

@ -1,6 +1,7 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { import {
DataProviderInterface, DataProviderInterface,
GetAssetProfileParams,
GetDividendsParams, GetDividendsParams,
GetHistoricalParams, GetHistoricalParams,
GetQuotesParams, GetQuotesParams,
@ -51,9 +52,7 @@ export class EodHistoricalDataService implements DataProviderInterface {
public async getAssetProfile({ public async getAssetProfile({
symbol symbol
}: { }: GetAssetProfileParams): Promise<Partial<SymbolProfile>> {
symbol: string;
}): Promise<Partial<SymbolProfile>> {
const [searchResult] = await this.getSearchResult(symbol); const [searchResult] = await this.getSearchResult(symbol);
return { return {

63
apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts

@ -2,6 +2,7 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/con
import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service'; import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service';
import { import {
DataProviderInterface, DataProviderInterface,
GetAssetProfileParams,
GetDividendsParams, GetDividendsParams,
GetHistoricalParams, GetHistoricalParams,
GetQuotesParams, GetQuotesParams,
@ -11,6 +12,7 @@ import {
IDataProviderHistoricalResponse, IDataProviderHistoricalResponse,
IDataProviderResponse IDataProviderResponse
} from '@ghostfolio/api/services/interfaces/interfaces'; } from '@ghostfolio/api/services/interfaces/interfaces';
import { REPLACE_NAME_PARTS } from '@ghostfolio/common/config';
import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper'; import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper';
import { import {
DataProviderInfo, DataProviderInfo,
@ -56,10 +58,9 @@ export class FinancialModelingPrepService implements DataProviderInterface {
} }
public async getAssetProfile({ public async getAssetProfile({
requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'),
symbol symbol
}: { }: GetAssetProfileParams): Promise<Partial<SymbolProfile>> {
symbol: string;
}): Promise<Partial<SymbolProfile>> {
const response: Partial<SymbolProfile> = { const response: Partial<SymbolProfile> = {
symbol, symbol,
dataSource: this.getName() dataSource: this.getName()
@ -70,9 +71,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
const [quote] = await fetch( const [quote] = await fetch(
`${this.URL}/quote/${symbol}?apikey=${this.apiKey}`, `${this.URL}/quote/${symbol}?apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout( signal: AbortSignal.timeout(requestTimeout)
this.configurationService.get('REQUEST_TIMEOUT')
)
} }
).then((res) => res.json()); ).then((res) => res.json());
@ -84,9 +83,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
const [assetProfile] = await fetch( const [assetProfile] = await fetch(
`${this.URL}/profile/${symbol}?apikey=${this.apiKey}`, `${this.URL}/profile/${symbol}?apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout( signal: AbortSignal.timeout(requestTimeout)
this.configurationService.get('REQUEST_TIMEOUT')
)
} }
).then((res) => res.json()); ).then((res) => res.json());
@ -100,9 +97,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
const etfCountryWeightings = await fetch( const etfCountryWeightings = await fetch(
`${this.URL}/etf-country-weightings/${symbol}?apikey=${this.apiKey}`, `${this.URL}/etf-country-weightings/${symbol}?apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout( signal: AbortSignal.timeout(requestTimeout)
this.configurationService.get('REQUEST_TIMEOUT')
)
} }
).then((res) => res.json()); ).then((res) => res.json());
@ -127,9 +122,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
const [etfInformation] = await fetch( const [etfInformation] = await fetch(
`${this.getUrl({ version: 4 })}/etf-info?symbol=${symbol}&apikey=${this.apiKey}`, `${this.getUrl({ version: 4 })}/etf-info?symbol=${symbol}&apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout( signal: AbortSignal.timeout(requestTimeout)
this.configurationService.get('REQUEST_TIMEOUT')
)
} }
).then((res) => res.json()); ).then((res) => res.json());
@ -140,9 +133,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
const [portfolioDate] = await fetch( const [portfolioDate] = await fetch(
`${this.getUrl({ version: 4 })}/etf-holdings/portfolio-date?symbol=${symbol}&apikey=${this.apiKey}`, `${this.getUrl({ version: 4 })}/etf-holdings/portfolio-date?symbol=${symbol}&apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout( signal: AbortSignal.timeout(requestTimeout)
this.configurationService.get('REQUEST_TIMEOUT')
)
} }
).then((res) => res.json()); ).then((res) => res.json());
@ -150,9 +141,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
const etfHoldings = await fetch( const etfHoldings = await fetch(
`${this.getUrl({ version: 4 })}/etf-holdings?date=${portfolioDate.date}&symbol=${symbol}&apikey=${this.apiKey}`, `${this.getUrl({ version: 4 })}/etf-holdings?date=${portfolioDate.date}&symbol=${symbol}&apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout( signal: AbortSignal.timeout(requestTimeout)
this.configurationService.get('REQUEST_TIMEOUT')
)
} }
).then((res) => res.json()); ).then((res) => res.json());
@ -170,9 +159,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
const etfSectorWeightings = await fetch( const etfSectorWeightings = await fetch(
`${this.URL}/etf-sector-weightings/${symbol}?apikey=${this.apiKey}`, `${this.URL}/etf-sector-weightings/${symbol}?apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout( signal: AbortSignal.timeout(requestTimeout)
this.configurationService.get('REQUEST_TIMEOUT')
)
} }
).then((res) => res.json()); ).then((res) => res.json());
@ -200,7 +187,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
response.isin = assetProfile.isin; response.isin = assetProfile.isin;
} }
response.name = assetProfile.companyName; response.name = this.formatName({ name: assetProfile.companyName });
if (assetProfile.website) { if (assetProfile.website) {
response.url = assetProfile.website; response.url = assetProfile.website;
@ -211,7 +198,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
if (error?.name === 'AbortError') { if (error?.name === 'AbortError') {
message = `RequestError: The operation to get the asset profile for ${symbol} was aborted because the request to the data provider took more than ${( message = `RequestError: The operation to get the asset profile for ${symbol} was aborted because the request to the data provider took more than ${(
this.configurationService.get('REQUEST_TIMEOUT') / 1000 requestTimeout / 1000
).toFixed(3)} seconds`; ).toFixed(3)} seconds`;
} }
@ -244,7 +231,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
[date: string]: IDataProviderHistoricalResponse; [date: string]: IDataProviderHistoricalResponse;
} = {}; } = {};
const { historical } = await fetch( const { historical = [] } = await fetch(
`${this.URL}/historical-price-full/stock_dividend/${symbol}?apikey=${this.apiKey}`, `${this.URL}/historical-price-full/stock_dividend/${symbol}?apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout(requestTimeout) signal: AbortSignal.timeout(requestTimeout)
@ -305,7 +292,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
? addYears(currentFrom, MAX_YEARS_PER_REQUEST) ? addYears(currentFrom, MAX_YEARS_PER_REQUEST)
: to; : to;
const { historical } = await fetch( const { historical = [] } = await fetch(
`${this.URL}/historical-price-full/${symbol}?apikey=${this.apiKey}&from=${format(currentFrom, DATE_FORMAT)}&to=${format(currentTo, DATE_FORMAT)}`, `${this.URL}/historical-price-full/${symbol}?apikey=${this.apiKey}&from=${format(currentFrom, DATE_FORMAT)}&to=${format(currentTo, DATE_FORMAT)}`,
{ {
signal: AbortSignal.timeout(requestTimeout) signal: AbortSignal.timeout(requestTimeout)
@ -376,7 +363,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
if (error?.name === 'AbortError') { if (error?.name === 'AbortError') {
message = `RequestError: The operation to get the quotes was aborted because the request to the data provider took more than ${( message = `RequestError: The operation to get the quotes was aborted because the request to the data provider took more than ${(
this.configurationService.get('REQUEST_TIMEOUT') / 1000 requestTimeout / 1000
).toFixed(3)} seconds`; ).toFixed(3)} seconds`;
} }
@ -412,7 +399,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
assetSubClass: undefined, // TODO assetSubClass: undefined, // TODO
dataProviderInfo: this.getDataProviderInfo(), dataProviderInfo: this.getDataProviderInfo(),
dataSource: this.getName(), dataSource: this.getName(),
name: companyName name: this.formatName({ name: companyName })
}; };
}); });
} else { } else {
@ -428,12 +415,12 @@ export class FinancialModelingPrepService implements DataProviderInterface {
items = result.map(({ currency, name, symbol }) => { items = result.map(({ currency, name, symbol }) => {
return { return {
currency, currency,
name,
symbol, symbol,
assetClass: undefined, // TODO assetClass: undefined, // TODO
assetSubClass: undefined, // TODO assetSubClass: undefined, // TODO
dataProviderInfo: this.getDataProviderInfo(), dataProviderInfo: this.getDataProviderInfo(),
dataSource: this.getName() dataSource: this.getName(),
name: this.formatName({ name })
}; };
}); });
} }
@ -452,6 +439,18 @@ export class FinancialModelingPrepService implements DataProviderInterface {
return { items }; return { items };
} }
private formatName({ name }: { name: string }) {
if (name) {
for (const part of REPLACE_NAME_PARTS) {
name = name.replace(part, '');
}
name = name.trim();
}
return name;
}
private getUrl({ version }: { version: number }) { private getUrl({ version }: { version: number }) {
return `https://financialmodelingprep.com/api/v${version}`; return `https://financialmodelingprep.com/api/v${version}`;
} }

68
apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts

@ -2,6 +2,7 @@ import { environment } from '@ghostfolio/api/environments/environment';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { import {
DataProviderInterface, DataProviderInterface,
GetAssetProfileParams,
GetDividendsParams, GetDividendsParams,
GetHistoricalParams, GetHistoricalParams,
GetQuotesParams, GetQuotesParams,
@ -18,6 +19,7 @@ import {
} from '@ghostfolio/common/config'; } from '@ghostfolio/common/config';
import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { DATE_FORMAT } from '@ghostfolio/common/helper';
import { import {
DataProviderGhostfolioAssetProfileResponse,
DataProviderInfo, DataProviderInfo,
DividendsResponse, DividendsResponse,
HistoricalResponse, HistoricalResponse,
@ -46,21 +48,46 @@ export class GhostfolioService implements DataProviderInterface {
} }
public async getAssetProfile({ public async getAssetProfile({
requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'),
symbol symbol
}: { }: GetAssetProfileParams): Promise<Partial<SymbolProfile>> {
symbol: string; let response: DataProviderGhostfolioAssetProfileResponse = {};
}): Promise<Partial<SymbolProfile>> {
const { items } = await this.search({ query: symbol });
const searchResult = items?.[0];
return { try {
symbol, const assetProfile = (await fetch(
assetClass: searchResult?.assetClass, `${this.URL}/v1/data-providers/ghostfolio/asset-profile/${symbol}`,
assetSubClass: searchResult?.assetSubClass, {
currency: searchResult?.currency, headers: await this.getRequestHeaders(),
dataSource: this.getName(), signal: AbortSignal.timeout(requestTimeout)
name: searchResult?.name }
}; ).then((res) =>
res.json()
)) as DataProviderGhostfolioAssetProfileResponse;
response = assetProfile;
} catch (error) {
let message = error;
if (error.name === 'AbortError') {
message = `RequestError: The operation to get the quotes was aborted because the request to the data provider took more than ${(
requestTimeout / 1000
).toFixed(3)} seconds`;
} else if (error.response?.statusCode === StatusCodes.TOO_MANY_REQUESTS) {
message = 'RequestError: The daily request limit has been exceeded';
} else if (error.response?.statusCode === StatusCodes.UNAUTHORIZED) {
if (!error.request?.options?.headers?.authorization?.includes('-')) {
message =
'RequestError: The provided API key is invalid. Please update it in the Settings section of the Admin Control panel.';
} else {
message =
'RequestError: The provided API key has expired. Please request a new one and update it in the Settings section of the Admin Control panel.';
}
}
Logger.error(message, 'GhostfolioService');
}
return response;
} }
public getDataProviderInfo(): DataProviderInfo { public getDataProviderInfo(): DataProviderInfo {
@ -203,7 +230,7 @@ export class GhostfolioService implements DataProviderInterface {
if (error.name === 'AbortError') { if (error.name === 'AbortError') {
message = `RequestError: The operation to get the quotes was aborted because the request to the data provider took more than ${( message = `RequestError: The operation to get the quotes was aborted because the request to the data provider took more than ${(
this.configurationService.get('REQUEST_TIMEOUT') / 1000 requestTimeout / 1000
).toFixed(3)} seconds`; ).toFixed(3)} seconds`;
} else if (error.response?.statusCode === StatusCodes.TOO_MANY_REQUESTS) { } else if (error.response?.statusCode === StatusCodes.TOO_MANY_REQUESTS) {
message = 'RequestError: The daily request limit has been exceeded'; message = 'RequestError: The daily request limit has been exceeded';
@ -224,10 +251,13 @@ export class GhostfolioService implements DataProviderInterface {
} }
public getTestSymbol() { public getTestSymbol() {
return 'AAPL.US'; return 'AAPL';
} }
public async search({ query }: GetSearchParams): Promise<LookupResponse> { public async search({
requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'),
query
}: GetSearchParams): Promise<LookupResponse> {
let searchResult: LookupResponse = { items: [] }; let searchResult: LookupResponse = { items: [] };
try { try {
@ -235,9 +265,7 @@ export class GhostfolioService implements DataProviderInterface {
`${this.URL}/v2/data-providers/ghostfolio/lookup?query=${query}`, `${this.URL}/v2/data-providers/ghostfolio/lookup?query=${query}`,
{ {
headers: await this.getRequestHeaders(), headers: await this.getRequestHeaders(),
signal: AbortSignal.timeout( signal: AbortSignal.timeout(requestTimeout)
this.configurationService.get('REQUEST_TIMEOUT')
)
} }
).then((res) => res.json())) as LookupResponse; ).then((res) => res.json())) as LookupResponse;
} catch (error) { } catch (error) {
@ -245,7 +273,7 @@ export class GhostfolioService implements DataProviderInterface {
if (error.name === 'AbortError') { if (error.name === 'AbortError') {
message = `RequestError: The operation to search for ${query} was aborted because the request to the data provider took more than ${( message = `RequestError: The operation to search for ${query} was aborted because the request to the data provider took more than ${(
this.configurationService.get('REQUEST_TIMEOUT') / 1000 requestTimeout / 1000
).toFixed(3)} seconds`; ).toFixed(3)} seconds`;
} else if (error.response?.statusCode === StatusCodes.TOO_MANY_REQUESTS) { } else if (error.response?.statusCode === StatusCodes.TOO_MANY_REQUESTS) {
message = 'RequestError: The daily request limit has been exceeded'; message = 'RequestError: The daily request limit has been exceeded';

5
apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts

@ -1,6 +1,7 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { import {
DataProviderInterface, DataProviderInterface,
GetAssetProfileParams,
GetDividendsParams, GetDividendsParams,
GetHistoricalParams, GetHistoricalParams,
GetQuotesParams, GetQuotesParams,
@ -37,9 +38,7 @@ export class GoogleSheetsService implements DataProviderInterface {
public async getAssetProfile({ public async getAssetProfile({
symbol symbol
}: { }: GetAssetProfileParams): Promise<Partial<SymbolProfile>> {
symbol: string;
}): Promise<Partial<SymbolProfile>> {
return { return {
symbol, symbol,
dataSource: this.getName() dataSource: this.getName()

10
apps/api/src/services/data-provider/interfaces/data-provider.interface.ts

@ -15,9 +15,7 @@ export interface DataProviderInterface {
getAssetProfile({ getAssetProfile({
symbol symbol
}: { }: GetAssetProfileParams): Promise<Partial<SymbolProfile>>;
symbol: string;
}): Promise<Partial<SymbolProfile>>;
getDataProviderInfo(): DataProviderInfo; getDataProviderInfo(): DataProviderInfo;
@ -55,6 +53,11 @@ export interface DataProviderInterface {
search({ includeIndices, query }: GetSearchParams): Promise<LookupResponse>; search({ includeIndices, query }: GetSearchParams): Promise<LookupResponse>;
} }
export interface GetAssetProfileParams {
requestTimeout?: number;
symbol: string;
}
export interface GetDividendsParams { export interface GetDividendsParams {
from: Date; from: Date;
granularity?: Granularity; granularity?: Granularity;
@ -79,5 +82,6 @@ export interface GetQuotesParams {
export interface GetSearchParams { export interface GetSearchParams {
includeIndices?: boolean; includeIndices?: boolean;
query: string; query: string;
requestTimeout?: number;
userId?: string; userId?: string;
} }

5
apps/api/src/services/data-provider/manual/manual.service.ts

@ -1,6 +1,7 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { import {
DataProviderInterface, DataProviderInterface,
GetAssetProfileParams,
GetDividendsParams, GetDividendsParams,
GetHistoricalParams, GetHistoricalParams,
GetQuotesParams, GetQuotesParams,
@ -43,9 +44,7 @@ export class ManualService implements DataProviderInterface {
public async getAssetProfile({ public async getAssetProfile({
symbol symbol
}: { }: GetAssetProfileParams): Promise<Partial<SymbolProfile>> {
symbol: string;
}): Promise<Partial<SymbolProfile>> {
const assetProfile: Partial<SymbolProfile> = { const assetProfile: Partial<SymbolProfile> = {
symbol, symbol,
dataSource: this.getName() dataSource: this.getName()

5
apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts

@ -1,6 +1,7 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { import {
DataProviderInterface, DataProviderInterface,
GetAssetProfileParams,
GetDividendsParams, GetDividendsParams,
GetHistoricalParams, GetHistoricalParams,
GetQuotesParams, GetQuotesParams,
@ -33,9 +34,7 @@ export class RapidApiService implements DataProviderInterface {
public async getAssetProfile({ public async getAssetProfile({
symbol symbol
}: { }: GetAssetProfileParams): Promise<Partial<SymbolProfile>> {
symbol: string;
}): Promise<Partial<SymbolProfile>> {
return { return {
symbol, symbol,
dataSource: this.getName() dataSource: this.getName()

5
apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts

@ -2,6 +2,7 @@ import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/c
import { YahooFinanceDataEnhancerService } from '@ghostfolio/api/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service'; import { YahooFinanceDataEnhancerService } from '@ghostfolio/api/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service';
import { import {
DataProviderInterface, DataProviderInterface,
GetAssetProfileParams,
GetDividendsParams, GetDividendsParams,
GetHistoricalParams, GetHistoricalParams,
GetQuotesParams, GetQuotesParams,
@ -43,9 +44,7 @@ export class YahooFinanceService implements DataProviderInterface {
public async getAssetProfile({ public async getAssetProfile({
symbol symbol
}: { }: GetAssetProfileParams): Promise<Partial<SymbolProfile>> {
symbol: string;
}): Promise<Partial<SymbolProfile>> {
return this.yahooFinanceDataEnhancerService.getAssetProfile(symbol); return this.yahooFinanceDataEnhancerService.getAssetProfile(symbol);
} }

4
apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts

@ -23,7 +23,7 @@ import {
isToday, isToday,
subDays subDays
} from 'date-fns'; } from 'date-fns';
import { isNumber, uniq } from 'lodash'; import { isNumber } from 'lodash';
import ms from 'ms'; import ms from 'ms';
@Injectable() @Injectable()
@ -515,7 +515,7 @@ export class ExchangeRateDataService {
} }
} }
return uniq(currencies).filter(Boolean).sort(); return Array.from(new Set(currencies)).filter(Boolean).sort();
} }
private prepareCurrencyPairs(aCurrencies: string[]) { private prepareCurrencyPairs(aCurrencies: string[]) {

2
apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.processor.ts

@ -68,7 +68,7 @@ export class PortfolioSnapshotProcessor {
const portfolioCalculator = this.calculatorFactory.createCalculator({ const portfolioCalculator = this.calculatorFactory.createCalculator({
accountBalanceItems, accountBalanceItems,
activities, activities,
calculationType: PerformanceCalculationType.TWR, calculationType: PerformanceCalculationType.ROAI,
currency: job.data.userCurrency, currency: job.data.userCurrency,
filters: job.data.filters, filters: job.data.filters,
userId: job.data.userId userId: job.data.userId

34
apps/client/localhost.cert

@ -1,18 +1,20 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIC5TCCAc2gAwIBAgIJAJAMHOFnJ6oyMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV MIIDSDCCAjACCQCQ2ForVhz+uDANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJD
BAMMCWxvY2FsaG9zdDAeFw0yNDAyMjcxNTQ2MzFaFw0yNDAzMjgxNTQ2MzFaMBQx SDEOMAwGA1UECAwFU3RhdGUxDTALBgNVBAcMBENpdHkxFTATBgNVBAoMDE9yZ2Fu
EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC aXphdGlvbjENMAsGA1UECwwEVW5pdDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI1
ggEBAJ0hRjViikEKVIyukXR4CfuYVvFEFzB6AwAQ9Jrz2MseqpLacLTXFFAS54mp MDMwOTE2MzQxM1oXDTI2MDMwOTE2MzQxM1owZjELMAkGA1UEBhMCQ0gxDjAMBgNV
iDuqPBzs9ta40mlSrqSBuAWKikpW5kTNnmqUnDZ6iSJezbYWx9YyULGqqb1q3C4/ BAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5MRUwEwYDVQQKDAxPcmdhbml6YXRpb24x
5pH9m6NHJ+2uaUNKlDxYNKbntqs3drQEdxH9yv672Z53nvogTcf9jz6zjutEQGSV DTALBgNVBAsMBFVuaXQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcN
HgVkCTTQmzf3+3st+VJ5D8JeYFR+tpZ6yleqgXFaTMtPZRfKLvTkQ+KeyCJLnsUJ AQEBBQADggEPADCCAQoCggEBAMkJRKPgV8NDcoIakPc7sZVXQ9VK2PGb8+lF/1Lv
BQvdCKI0PGsG6d6ygXFmSePolD9KW3VTKKDPCsndID89vAnRWDj9UhzvycxmKpcF NcIZpD40+p4DzuEw0bjRn17IDClyLMaLbZNtIyTPSkFaffL+rJ0JvnKdG50s+HId
GrUPH5+Pis1PM1R7OnAvnFygnyECAwEAAaM6MDgwFAYDVR0RBA0wC4IJbG9jYWxo YNuCwKkgHg4hTXFzOPpT3HMG3UxyEwFOm25GMFiikfT96ukMAAkanMqYKZQOClRU
b3N0MAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0B Cw4LP3g0Oks58obbRy4Wltp88K8LJrR+j81+AjElTIGXHhChXzV/NjJ14TMNy5hZ
AQsFAAOCAQEAOdzrY3RTAPnBVAd3/GKIEkielYyOgKPnvd+RcOB+je8cXZY+vaxX lwV4xUSwvNqOvWGMIR7J77fINF130ghTSnvzCS52dCeom2I4Lvncz3m37lDttCOs
uEFP0526G00+kRZ2Tx9t0SmjoSpwg3lHUPMko0dIxgRlqISDAohdrEptHpcVujsD Wm/i651ro7pwFEs/lJmrnFHPtph2ayPcHBmrQCgLc5xMUMcCAwEAATANBgkqhkiG
ak88LLnAurr60JNjWX2wbEoJ18KLtqGSnATdmCgKwDPIN5a7+ssp44BGyzH6VYCg 9w0BAQsFAAOCAQEAhRA1/+Gl2VH34yN/FvrE5cY0W4ghSCuTdK9pGeo8AcN+TScU
wV3VjJl0pp4C5M0Jfu0p1FrQjzIVhgqR7JFYmvqIogWrGwYAQK/3XRXq8t48J5X3 7O+hVsEwZDrYKuDvG8Ab//A+uv5gbfGbYPJVIdJ3Q8HKijNZmbwAgANJU/c0WwOx
IsfWiLAA2ZdCoWAnZ6PAGBOoGivtkJm967pHjd/28qYY6mQo4sN2ksEOjx6/YslF XBQ9mCzWRcJxQeUUgh4DT4lZCOfR5pIvAJpKScTcF/yp5gOgrgJH1GHFEYYPoXWO
2mOJdLV/DzqoggUsTpPEG0dRhzQLTGHKDQ== ezPPMwCNbfamUPlZZnHu74fUrFrDPI9c/YSu8Ex/LegZXJAEzA+8I0g64rjGtzJp
fkRDyQcBuT5SVa+USBlALQmdIuT/fN6R729DcGzvV8JqdoG9sLra4hrRCn3+A3c9
izZguW1BQNQ2N7II6QCDnWkdUFSQCiQunX/xsg==
-----END CERTIFICATE----- -----END CERTIFICATE-----

52
apps/client/localhost.pem

@ -1,28 +1,28 @@
-----BEGIN PRIVATE KEY----- -----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCdIUY1YopBClSM MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDJCUSj4FfDQ3KC
rpF0eAn7mFbxRBcwegMAEPSa89jLHqqS2nC01xRQEueJqYg7qjwc7PbWuNJpUq6k GpD3O7GVV0PVStjxm/PpRf9S7zXCGaQ+NPqeA87hMNG40Z9eyAwpcizGi22TbSMk
gbgFiopKVuZEzZ5qlJw2eokiXs22FsfWMlCxqqm9atwuP+aR/ZujRyftrmlDSpQ8 z0pBWn3y/qydCb5ynRudLPhyHWDbgsCpIB4OIU1xczj6U9xzBt1MchMBTptuRjBY
WDSm57arN3a0BHcR/cr+u9med576IE3H/Y8+s47rREBklR4FZAk00Js39/t7LflS opH0/erpDAAJGpzKmCmUDgpUVAsOCz94NDpLOfKG20cuFpbafPCvCya0fo/NfgIx
eQ/CXmBUfraWespXqoFxWkzLT2UXyi705EPinsgiS57FCQUL3QiiNDxrBunesoFx JUyBlx4QoV81fzYydeEzDcuYWZcFeMVEsLzajr1hjCEeye+3yDRdd9IIU0p78wku
Zknj6JQ/Slt1UyigzwrJ3SA/PbwJ0Vg4/VIc78nMZiqXBRq1Dx+fj4rNTzNUezpw dnQnqJtiOC753M95t+5Q7bQjrFpv4uuda6O6cBRLP5SZq5xRz7aYdmsj3BwZq0Ao
L5xcoJ8hAgMBAAECggEAPU5YOEgELTA8oM8TjV+wdWuQsH2ilpVkSkhTR4nQkh+a C3OcTFDHAgMBAAECggEBALJQqDN7QB0QbDb+fWrt5bwDJUXBF+BmZdiZn7jeOJ6r
6cU0qDoqgLt/fySYNL9MyPRjso9V+SX7YdAC3paZMjwJh9q57lehQ1g33SMkG+Fz w8TxlQIneo6/kKYQOP4HDtKMVS7eaRkFCtERlFmXfHPWdSDtjaF3vRCS3OPLLyhF
gs0K0ucFZxQkaB8idN+ANAp1N7UO+ORGRe0cTeqmSNNRCxea5XgiFZVxaPS/IFOR N8JLnJ0H6PsiKn3PeJAGnK+71yOnp7IOS7+yoyfdOUnwvO9WTZBdmzOZqIvX595R
vVdXS1DulgwHh4H0ljKmkj7jc9zPBSc9ccW5Ml2q4a26Atu4IC/Mlp/DF4GNELbD g7R5yjSYjzFMmaCpyab6kiD7b4bHzDIrB0XuouT2W/fS/i1srwc3eDk78ZyioyiB
ebi9ZOZG33ip2bdhj3WX7NW9GJaaViKtVUpcpR6u+6BfvTXQ6xrqdoxXk9fnPzzf g6GDuOwqDfPmkUqKo2oXSoSR8yCwSSdlClc7aOowoNxbsksTDjXf1k02n0lG5MHU
sSoLPTt8yO4RavP1zQU22PhgIcWudhCiy/2Nv+uLqQKBgQDMPh1/xwdFl8yES8dy ldCX02WdA0JFW8Os0Ig+YBq7wSkB5oNVt7gEek/MB0ECgYEA+ATkyfX9/5X2kUMY
f0xJyCDWPiB+xzGwcOAC90FrNZaqG0WWs3VHE4cilaWjCflvdR6aAEDEY68sZJhl MatUqKOvLUtyIfHeYUy/Dm+9JlZlrxD0dRAKWhnhRR16v5cwN2RVtEvMDsV1AGHN
h+ChT/g61QLMOI+VIDQ1kJXKYgfS/B+BE1PZ0EkuymKFOvbNO8agHodB8CqnZaQh e/fh315aAq+I6/eY6syXfkeHHs5UIRPrOlIcp1Ogfg99xpOT0/TZy9bB7lKvtYes
bLuZaDnZ0JLK4im3KPt70+aKYwKBgQDE8s6xl0SLu+yJLo3VklCRD67Z8/jlvx2t GmKO8n7md1TptdxilSNORI60KvECgYEAz4FX6vH76HgV/seY+vePrj5nFCZnDru7
h3DF6NG8pB3QmvKdJWFKuLAWLGflJwbUW9Pt3hXkc0649KQrtiIYC0ZMh9KMaVCk 16w5LYoHaX0hABJ0qZCqZozdPf9mqM5Ldc8PUbvVsFqXyaHwBAKUsH44a3aLxcXU
WmjS/n2eIUQZ7ZUlwFesi4p4iGynVBavIY8TJ6Y+K3TvsJgXP3IZ96r689PQJo8E JMsQanU5I87SWP/S8Xu2Yxc10L66Oc5VdAeraZvb+wJqTkYKhDYOJVMjyuI/vkAw
KbSeyYzFqwKBgGQTS4EAlJ+U8bEhMGj51veQCAbyChoUoFRD+n95h6RwbZKMKlzd fqMPI6wShzcCgYEAndYnb6uf4Eakap9jR0C8mLHKaq3nzVhqaEt6DwrnOf2jqnzE
MenRt7VKfg6VJJNoX8Y1uYaBEaQ+5i1Zlsdz1718AhLu4+u+C9bzMXIo9ox63TTx xbbWj66GoQB4vHLP2YB91kaibwgURJD5PxpqYUdfSvRA08J3S322L0P/5ofyHDbb
s3RWioVSxVNiwOtvDrQGQWAdvcioFPQLwyA34aDIgiTHDImimxbhjWThAoGAWOqW 7PqSh539thvPtE74tdvNux5Jvoxai9Dyorv0Mri1nF2qefTtu/GC/rg+SlECgYB2
Tq9QjxWk0Lpn5ohMP3GpK1VuhasnJvUDARb/uf8ORuPtrOz3Y9jGBvy9W0OnXbCn FaYhhomTVls1/QIat6zlPI/OULhPExineFOljaoAJvwTnW0UXcYKy9jPgjs6jwM0
mbiugZldbTtl8yYjdl+AuYSIlkPl2I3IzZl/9Shnqp0MvSJ9crT9KzXMeC8Knr6z TJvsKFdHn5ZHYUdEEO/qrDmRNgn+h0Ddm02BN6pHrVfY2+SAFaXKKBgw7YjugnPw
7Z30/BR6ksxTngtS5E5grzPt6Qe/gc2ich3kpEkCgYBfBHUhVIKVrDW/8a7U2679 rrimRdLeuhYi6wrrCBPuu6xftXcO3lp6hnKEG1UD6wKBgEh/C7HQ6cjb7Rr15eRq
Wj4i9us/M3iPMxcTv7/ZAg08TEvNBQYtvVQLu0NfDKXx8iGKJJ6evIYgNXVm2sPq 2VOgeuz7o2v/OC+jO6yFGRrs2VKoBuJpw/6jx806Cbi2jLEwim21iNYW/2McOWP3
VzSgwGCALi1X0443amZU+mnX+/9RnBqyM+PJU8570mM83jqKlY/BEsi0aqxTioFG YUvni7qHXfll8d4sSAuCTA4K/N0MJ/3XbGBPDm/83J2o7uz2GFkQRruruaERvDMF
an3xbjjN+Rq9iKLzmPxIMg== x26H2i3DOUFzdgbkoNB0ifHd
-----END PRIVATE KEY----- -----END PRIVATE KEY-----

4
apps/client/src/app/components/admin-market-data/admin-market-data.service.ts

@ -4,7 +4,8 @@ import { AdminService } from '@ghostfolio/client/services/admin.service';
import { ghostfolioScraperApiSymbolPrefix } from '@ghostfolio/common/config'; import { ghostfolioScraperApiSymbolPrefix } from '@ghostfolio/common/config';
import { import {
getCurrencyFromSymbol, getCurrencyFromSymbol,
isDerivedCurrency isDerivedCurrency,
isRootCurrency
} from '@ghostfolio/common/helper'; } from '@ghostfolio/common/helper';
import { import {
AssetProfileIdentifier, AssetProfileIdentifier,
@ -77,6 +78,7 @@ export class AdminMarketDataService {
activitiesCount === 0 && activitiesCount === 0 &&
!isBenchmark && !isBenchmark &&
!isDerivedCurrency(getCurrencyFromSymbol(symbol)) && !isDerivedCurrency(getCurrencyFromSymbol(symbol)) &&
!isRootCurrency(getCurrencyFromSymbol(symbol)) &&
!symbol.startsWith(ghostfolioScraperApiSymbolPrefix) !symbol.startsWith(ghostfolioScraperApiSymbolPrefix)
); );
} }

5
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts

@ -20,7 +20,6 @@ import {
} from '@angular/forms'; } from '@angular/forms';
import { MatDialogRef } from '@angular/material/dialog'; import { MatDialogRef } from '@angular/material/dialog';
import { isISO4217CurrencyCode } from 'class-validator'; import { isISO4217CurrencyCode } from 'class-validator';
import { uniq } from 'lodash';
import { Subject, takeUntil } from 'rxjs'; import { Subject, takeUntil } from 'rxjs';
import { CreateAssetProfileDialogMode } from './interfaces/interfaces'; import { CreateAssetProfileDialogMode } from './interfaces/interfaces';
@ -87,7 +86,9 @@ export class CreateAssetProfileDialog implements OnInit, OnDestroy {
this.createAssetProfileForm.get('addCurrency').value as string this.createAssetProfileForm.get('addCurrency').value as string
).toUpperCase(); ).toUpperCase();
const currencies = uniq([...this.customCurrencies, currency]).sort(); const currencies = Array.from(
new Set([...this.customCurrencies, currency])
).sort();
this.dataService this.dataService
.putAdminSetting(PROPERTY_CURRENCIES, { .putAdminSetting(PROPERTY_CURRENCIES, {

44
apps/client/src/app/components/admin-overview/admin-overview.component.ts

@ -6,7 +6,6 @@ import { DataService } from '@ghostfolio/client/services/data.service';
import { UserService } from '@ghostfolio/client/services/user/user.service'; import { UserService } from '@ghostfolio/client/services/user/user.service';
import { import {
PROPERTY_COUPONS, PROPERTY_COUPONS,
PROPERTY_CURRENCIES,
PROPERTY_IS_DATA_GATHERING_ENABLED, PROPERTY_IS_DATA_GATHERING_ENABLED,
PROPERTY_IS_READ_ONLY_MODE, PROPERTY_IS_READ_ONLY_MODE,
PROPERTY_IS_USER_SIGNUP_ENABLED, PROPERTY_IS_USER_SIGNUP_ENABLED,
@ -41,8 +40,6 @@ import { takeUntil } from 'rxjs/operators';
export class AdminOverviewComponent implements OnDestroy, OnInit { export class AdminOverviewComponent implements OnDestroy, OnInit {
public couponDuration: StringValue = '14 days'; public couponDuration: StringValue = '14 days';
public coupons: Coupon[]; public coupons: Coupon[];
public customCurrencies: string[];
public exchangeRates: { label1: string; label2: string; value: number }[];
public hasPermissionForSubscription: boolean; public hasPermissionForSubscription: boolean;
public hasPermissionForSystemMessage: boolean; public hasPermissionForSystemMessage: boolean;
public hasPermissionToToggleReadOnlyMode: boolean; public hasPermissionToToggleReadOnlyMode: boolean;
@ -138,19 +135,6 @@ export class AdminOverviewComponent implements OnDestroy, OnInit {
}); });
} }
public onDeleteCurrency(aCurrency: string) {
this.notificationService.confirm({
confirmFn: () => {
const currencies = this.customCurrencies.filter((currency) => {
return currency !== aCurrency;
});
this.putAdminSetting({ key: PROPERTY_CURRENCIES, value: currencies });
},
confirmType: ConfirmationDialogType.Warn,
title: $localize`Do you really want to delete this currency?`
});
}
public onDeleteSystemMessage() { public onDeleteSystemMessage() {
this.notificationService.confirm({ this.notificationService.confirm({
confirmFn: () => { confirmFn: () => {
@ -231,25 +215,17 @@ export class AdminOverviewComponent implements OnDestroy, OnInit {
this.adminService this.adminService
.fetchAdminData() .fetchAdminData()
.pipe(takeUntil(this.unsubscribeSubject)) .pipe(takeUntil(this.unsubscribeSubject))
.subscribe( .subscribe(({ settings, transactionCount, userCount, version }) => {
({ exchangeRates, settings, transactionCount, userCount, version }) => { this.coupons = (settings[PROPERTY_COUPONS] as Coupon[]) ?? [];
this.coupons = (settings[PROPERTY_COUPONS] as Coupon[]) ?? []; this.isDataGatheringEnabled =
this.customCurrencies = settings[PROPERTY_CURRENCIES] as string[]; settings[PROPERTY_IS_DATA_GATHERING_ENABLED] === false ? false : true;
this.exchangeRates = exchangeRates; this.systemMessage = settings[PROPERTY_SYSTEM_MESSAGE] as SystemMessage;
this.isDataGatheringEnabled = this.transactionCount = transactionCount;
settings[PROPERTY_IS_DATA_GATHERING_ENABLED] === false this.userCount = userCount;
? false this.version = version;
: true;
this.systemMessage = settings[
PROPERTY_SYSTEM_MESSAGE
] as SystemMessage;
this.transactionCount = transactionCount;
this.userCount = userCount;
this.version = version;
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
} });
);
} }
private generateCouponCode(aLength: number) { private generateCouponCode(aLength: number) {

67
apps/client/src/app/components/admin-overview/admin-overview.html

@ -30,73 +30,6 @@
} }
</div> </div>
</div> </div>
<div class="align-items-start d-flex my-3">
<div class="w-50" i18n>Exchange Rates</div>
<div class="w-50">
<table>
@for (exchangeRate of exchangeRates; track exchangeRate) {
<tr>
<td>
<gf-value [locale]="user?.settings?.locale" [value]="1" />
</td>
<td class="pl-1">{{ exchangeRate.label1 }}</td>
<td class="px-1">=</td>
<td align="right">
<gf-value
class="d-inline-block"
[locale]="user?.settings?.locale"
[precision]="4"
[value]="exchangeRate.value"
/>
</td>
<td class="pl-1">{{ exchangeRate.label2 }}</td>
<td>
<button
class="mx-1 no-min-width px-2"
mat-button
[matMenuTriggerFor]="exchangeRateActionsMenu"
(click)="$event.stopPropagation()"
>
<ion-icon name="ellipsis-horizontal" />
</button>
<mat-menu
#exchangeRateActionsMenu="matMenu"
class="h-100 mx-1 no-min-width px-2"
xPosition="before"
>
<a
mat-menu-item
[queryParams]="{
assetProfileDialog: true,
dataSource: exchangeRate.dataSource,
symbol: exchangeRate.symbol
}"
[routerLink]="['/admin', 'market-data']"
>
<span class="align-items-center d-flex">
<ion-icon class="mr-2" name="create-outline" />
<span i18n>Edit</span>
</span>
</a>
@if (customCurrencies.includes(exchangeRate.label2)) {
<hr class="m-0" />
<button
mat-menu-item
(click)="onDeleteCurrency(exchangeRate.label2)"
>
<span class="align-items-center d-flex">
<ion-icon class="mr-2" name="trash-outline" />
<span i18n>Delete</span>
</span>
</button>
}
</mat-menu>
</td>
</tr>
}
</table>
</div>
</div>
<div class="d-flex my-3"> <div class="d-flex my-3">
<div class="w-50" i18n>User Signup</div> <div class="w-50" i18n>User Signup</div>
<div class="w-50"> <div class="w-50">

2
apps/client/src/app/components/header/header.component.html

@ -134,7 +134,7 @@
</button> </button>
<mat-menu <mat-menu
#assistantMenu="matMenu" #assistantMenu="matMenu"
class="assistant" class="no-max-width"
xPosition="before" xPosition="before"
[overlapTrigger]="true" [overlapTrigger]="true"
(closed)="assistantElement?.setIsOpen(false)" (closed)="assistantElement?.setIsOpen(false)"

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

@ -117,8 +117,8 @@
<ng-container i18n>Net Performance</ng-container> <ng-container i18n>Net Performance</ng-container>
<abbr <abbr
class="initialism ml-2 text-muted" class="initialism ml-2 text-muted"
title="Time-Weighted Rate of Return" title="Return on Average Investment"
>(TWR)</abbr >(ROAI)</abbr
> >
</div> </div>
<div class="flex-column flex-wrap justify-content-end"> <div class="flex-column flex-wrap justify-content-end">

2
apps/client/src/app/components/rule/rule.component.scss

@ -2,7 +2,7 @@
display: block; display: block;
.icon-container { .icon-container {
background-color: rgba(var(--dark-primary-text), 0.05); background-color: rgba(var(--palette-foreground-base), 0.02);
border-radius: 0.25rem; border-radius: 0.25rem;
height: 2rem; height: 2rem;

3
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts

@ -24,7 +24,6 @@ import { FormBuilder, Validators } from '@angular/forms';
import { MatSlideToggleChange } from '@angular/material/slide-toggle'; import { MatSlideToggleChange } from '@angular/material/slide-toggle';
import { MatSnackBar } from '@angular/material/snack-bar'; import { MatSnackBar } from '@angular/material/snack-bar';
import { format, parseISO } from 'date-fns'; import { format, parseISO } from 'date-fns';
import { uniq } from 'lodash';
import ms from 'ms'; import ms from 'ms';
import { EMPTY, Subject, throwError } from 'rxjs'; import { EMPTY, Subject, throwError } from 'rxjs';
import { catchError, takeUntil } from 'rxjs/operators'; import { catchError, takeUntil } from 'rxjs/operators';
@ -108,7 +107,7 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit {
); );
this.locales.push(this.user.settings.locale); this.locales.push(this.user.settings.locale);
this.locales = uniq(this.locales.sort()); this.locales = Array.from(new Set(this.locales)).sort();
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
} }

4
apps/client/src/app/pages/api/api-page.component.ts

@ -40,8 +40,8 @@ export class GfApiPageComponent implements OnInit {
this.apiKey = prompt($localize`Please enter your Ghostfolio API key:`); this.apiKey = prompt($localize`Please enter your Ghostfolio API key:`);
this.dividends$ = this.fetchDividends({ symbol: 'KO' }); this.dividends$ = this.fetchDividends({ symbol: 'KO' });
this.historicalData$ = this.fetchHistoricalData({ symbol: 'AAPL.US' }); this.historicalData$ = this.fetchHistoricalData({ symbol: 'AAPL' });
this.quotes$ = this.fetchQuotes({ symbols: ['AAPL.US', 'VOO.US'] }); this.quotes$ = this.fetchQuotes({ symbols: ['AAPL', 'VOO.US'] });
this.status$ = this.fetchStatus(); this.status$ = this.fetchStatus();
this.symbols$ = this.fetchSymbols({ query: 'apple' }); this.symbols$ = this.fetchSymbols({ query: 'apple' });
} }

5
apps/client/src/app/pages/portfolio/activities/activities-page.html

@ -6,9 +6,8 @@
[baseCurrency]="user?.settings?.baseCurrency" [baseCurrency]="user?.settings?.baseCurrency"
[dataSource]="dataSource" [dataSource]="dataSource"
[deviceType]="deviceType" [deviceType]="deviceType"
[hasPermissionToCreateActivity]=" [hasActivities]="user?.activitiesCount > 0"
hasPermissionToCreateActivity && user?.activitiesCount === 0 [hasPermissionToCreateActivity]="hasPermissionToCreateActivity"
"
[hasPermissionToDeleteActivity]="hasPermissionToDeleteActivity" [hasPermissionToDeleteActivity]="hasPermissionToDeleteActivity"
[hasPermissionToExportActivities]="!hasImpersonationId" [hasPermissionToExportActivities]="!hasImpersonationId"
[locale]="user?.settings?.locale" [locale]="user?.settings?.locale"

36
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts

@ -12,11 +12,18 @@ import {
User User
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { GroupBy } from '@ghostfolio/common/types'; import type { AiPromptMode, GroupBy } from '@ghostfolio/common/types';
import { translate } from '@ghostfolio/ui/i18n'; import { translate } from '@ghostfolio/ui/i18n';
import { Clipboard } from '@angular/cdk/clipboard'; import { Clipboard } from '@angular/cdk/clipboard';
import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import {
ChangeDetectorRef,
Component,
OnDestroy,
OnInit,
ViewChild
} from '@angular/core';
import { MatMenuTrigger } from '@angular/material/menu';
import { MatSnackBar } from '@angular/material/snack-bar'; import { MatSnackBar } from '@angular/material/snack-bar';
import { SymbolProfile } from '@prisma/client'; import { SymbolProfile } from '@prisma/client';
import { isNumber, sortBy } from 'lodash'; import { isNumber, sortBy } from 'lodash';
@ -32,6 +39,8 @@ import { takeUntil } from 'rxjs/operators';
standalone: false standalone: false
}) })
export class AnalysisPageComponent implements OnDestroy, OnInit { export class AnalysisPageComponent implements OnDestroy, OnInit {
@ViewChild(MatMenuTrigger) actionsMenuButton!: MatMenuTrigger;
public benchmark: Partial<SymbolProfile>; public benchmark: Partial<SymbolProfile>;
public benchmarkDataItems: HistoricalDataItem[] = []; public benchmarkDataItems: HistoricalDataItem[] = [];
public benchmarks: Partial<SymbolProfile>[]; public benchmarks: Partial<SymbolProfile>[];
@ -46,10 +55,12 @@ export class AnalysisPageComponent implements OnDestroy, OnInit {
public investments: InvestmentItem[]; public investments: InvestmentItem[];
public investmentTimelineDataLabel = $localize`Investment`; public investmentTimelineDataLabel = $localize`Investment`;
public investmentsByGroup: InvestmentItem[]; public investmentsByGroup: InvestmentItem[];
public isLoadingAnalysisPrompt: boolean;
public isLoadingBenchmarkComparator: boolean; public isLoadingBenchmarkComparator: boolean;
public isLoadingDividendTimelineChart: boolean; public isLoadingDividendTimelineChart: boolean;
public isLoadingInvestmentChart: boolean; public isLoadingInvestmentChart: boolean;
public isLoadingInvestmentTimelineChart: boolean; public isLoadingInvestmentTimelineChart: boolean;
public isLoadingPortfolioPrompt: boolean;
public mode: GroupBy = 'month'; public mode: GroupBy = 'month';
public modeOptions: ToggleOption[] = [ public modeOptions: ToggleOption[] = [
{ label: $localize`Monthly`, value: 'month' }, { label: $localize`Monthly`, value: 'month' },
@ -142,9 +153,18 @@ export class AnalysisPageComponent implements OnDestroy, OnInit {
this.fetchDividendsAndInvestments(); this.fetchDividendsAndInvestments();
} }
public onCopyPromptToClipboard() { public onCopyPromptToClipboard(mode: AiPromptMode) {
if (mode === 'analysis') {
this.isLoadingAnalysisPrompt = true;
} else if (mode === 'portfolio') {
this.isLoadingPortfolioPrompt = true;
}
this.dataService this.dataService
.fetchPrompt() .fetchPrompt({
mode,
filters: this.userService.getFilters()
})
.pipe(takeUntil(this.unsubscribeSubject)) .pipe(takeUntil(this.unsubscribeSubject))
.subscribe(({ prompt }) => { .subscribe(({ prompt }) => {
this.clipboard.copy(prompt); this.clipboard.copy(prompt);
@ -163,6 +183,14 @@ export class AnalysisPageComponent implements OnDestroy, OnInit {
.subscribe(() => { .subscribe(() => {
window.open('https://duck.ai', '_blank'); window.open('https://duck.ai', '_blank');
}); });
this.actionsMenuButton.closeMenu();
if (mode === 'analysis') {
this.isLoadingAnalysisPrompt = false;
} else if (mode === 'portfolio') {
this.isLoadingPortfolioPrompt = false;
}
}); });
} }

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

@ -5,6 +5,7 @@
<div class="col-lg"> <div class="col-lg">
<div class="d-flex justify-content-end"> <div class="d-flex justify-content-end">
<button <button
#actionsMenuButton
class="mx-1 no-min-width px-2" class="mx-1 no-min-width px-2"
mat-stroked-button mat-stroked-button
[matMenuTriggerFor]="actionsMenu" [matMenuTriggerFor]="actionsMenu"
@ -12,21 +13,62 @@
> >
<ion-icon name="ellipsis-vertical" /> <ion-icon name="ellipsis-vertical" />
</button> </button>
<mat-menu #actionsMenu="matMenu" xPosition="before"> <mat-menu
<button #actionsMenu="matMenu"
mat-menu-item class="no-max-width"
[disabled]="!hasPermissionToReadAiPrompt" xPosition="before"
(click)="onCopyPromptToClipboard()" >
> <div (click)="$event.stopPropagation()">
<span class="align-items-center d-flex"> <button
@if (user?.subscription?.type === 'Basic') { mat-menu-item
<gf-premium-indicator class="mr-2" /> [disabled]="!hasPermissionToReadAiPrompt"
} @else { (click)="onCopyPromptToClipboard('portfolio')"
<ion-icon class="mr-2" name="copy-outline" /> >
} <span class="align-items-center d-flex">
<ng-container i18n>Copy AI prompt to clipboard</ng-container> @if (user?.subscription?.type === 'Basic') {
</span> <gf-premium-indicator class="mr-2" />
</button> } @else {
@if (isLoadingPortfolioPrompt) {
<mat-spinner
class="mr-2"
color="accent"
[diameter]="16"
/>
} @else {
<ion-icon class="mr-2" name="copy-outline" />
}
}
<ng-container i18n
>Copy portfolio data to clipboard for AI
prompt</ng-container
>
</span>
</button>
<button
mat-menu-item
[disabled]="!hasPermissionToReadAiPrompt"
(click)="onCopyPromptToClipboard('analysis')"
>
<span class="align-items-center d-flex">
@if (user?.subscription?.type === 'Basic') {
<gf-premium-indicator class="mr-2" />
} @else {
@if (isLoadingAnalysisPrompt) {
<mat-spinner
class="mr-2"
color="accent"
[diameter]="16"
/>
} @else {
<ion-icon class="mr-2" name="copy-outline" />
}
}
<ng-container i18n
>Copy AI prompt to clipboard for analysis</ng-container
>
</span>
</button>
</div>
</mat-menu> </mat-menu>
</div> </div>
</div> </div>

2
apps/client/src/app/pages/portfolio/analysis/analysis-page.module.ts

@ -10,6 +10,7 @@ import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { MatButtonModule } from '@angular/material/button'; import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card'; import { MatCardModule } from '@angular/material/card';
import { MatMenuModule } from '@angular/material/menu'; import { MatMenuModule } from '@angular/material/menu';
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
import { AnalysisPageRoutingModule } from './analysis-page-routing.module'; import { AnalysisPageRoutingModule } from './analysis-page-routing.module';
@ -29,6 +30,7 @@ import { AnalysisPageComponent } from './analysis-page.component';
MatButtonModule, MatButtonModule,
MatCardModule, MatCardModule,
MatMenuModule, MatMenuModule,
MatProgressSpinnerModule,
NgxSkeletonLoaderModule NgxSkeletonLoaderModule
], ],
schemas: [CUSTOM_ELEMENTS_SCHEMA] schemas: [CUSTOM_ELEMENTS_SCHEMA]

63
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html

@ -7,23 +7,58 @@
risks in your portfolio. Adjust the rules below and set custom risks in your portfolio. Adjust the rules below and set custom
thresholds to align with your personal investment strategy. thresholds to align with your personal investment strategy.
</p> </p>
<p class="mb-4"> <div class="d-flex pb-3">
@if (isLoading) { @if (isLoading) {
<ngx-skeleton-loader <div class="d-flex">
animation="pulse" <ngx-skeleton-loader
class="w-100" animation="pulse"
[theme]="{ class="mr-2"
height: '1rem', [theme]="{
width: '100%' height: '2rem',
}" width: '2rem'
/> }"
/>
<ngx-skeleton-loader
animation="pulse"
class="mt-2 mb-1"
[theme]="{
height: '1rem',
width: '15rem'
}"
/>
</div>
} @else { } @else {
{{ statistics?.rulesFulfilledCount }} <div
<ng-container i18n>out of</ng-container> class="align-items-center d-flex icon-container mr-2 px-2"
{{ statistics?.rulesActiveCount }} [ngClass]="{
<ng-container i18n>rules align with your portfolio.</ng-container> okay:
statistics?.rulesFulfilledCount ===
statistics?.rulesActiveCount,
warn:
statistics?.rulesFulfilledCount !== statistics?.rulesActiveCount
}"
>
@if (
statistics?.rulesActiveCount === 0 ||
statistics?.rulesFulfilledCount === 0
) {
<ion-icon class="text-muted" name="remove-circle-outline" />
} @else if (
statistics?.rulesFulfilledCount === statistics?.rulesActiveCount
) {
<ion-icon name="checkmark-circle-outline" />
} @else {
<ion-icon name="warning-outline" />
}
</div>
<div class="d-flex align-items-center">
<ng-container>{{ statistics?.rulesFulfilledCount }} </ng-container>
<ng-container i18n>out of</ng-container>
{{ statistics?.rulesActiveCount }}
<ng-container i18n>rules align with your portfolio.</ng-container>
</div>
} }
</p> </div>
<div <div
class="mb-4" class="mb-4"
[ngClass]="{ [ngClass]="{

14
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.scss

@ -1,3 +1,17 @@
:host { :host {
display: block; display: block;
.icon-container {
background-color: rgba(var(--palette-foreground-base), 0.02);
border-radius: 0.25rem;
height: 2rem;
&.okay {
color: var(--success);
}
&.warn {
color: var(--danger);
}
}
} }

32
apps/client/src/app/pages/register/register-page.component.ts

@ -7,7 +7,6 @@ import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { Component, OnDestroy, OnInit } from '@angular/core'; import { Component, OnDestroy, OnInit } from '@angular/core';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { Role } from '@prisma/client';
import { DeviceDetectorService } from 'ngx-device-detector'; import { DeviceDetectorService } from 'ngx-device-detector';
import { Subject } from 'rxjs'; import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
@ -59,43 +58,28 @@ export class RegisterPageComponent implements OnDestroy, OnInit {
); );
} }
public async createAccount() {
this.dataService
.postUser()
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe(({ accessToken, authToken, role }) => {
this.openShowAccessTokenDialog(accessToken, authToken, role);
});
}
public async onLoginWithInternetIdentity() { public async onLoginWithInternetIdentity() {
try { try {
const { authToken } = await this.internetIdentityService.login(); const { authToken } = await this.internetIdentityService.login();
this.tokenStorageService.saveToken(authToken); this.tokenStorageService.saveToken(authToken);
this.router.navigate(['/']);
await this.router.navigate(['/']);
} catch {} } catch {}
} }
public openShowAccessTokenDialog( public openShowAccessTokenDialog() {
accessToken: string,
authToken: string,
role: Role
) {
const dialogRef = this.dialog.open(ShowAccessTokenDialog, { const dialogRef = this.dialog.open(ShowAccessTokenDialog, {
data: {
accessToken,
authToken,
role
},
disableClose: true, disableClose: true,
width: '30rem' height: this.deviceType === 'mobile' ? '98vh' : undefined,
width: this.deviceType === 'mobile' ? '100vw' : '30rem'
}); });
dialogRef dialogRef
.afterClosed() .afterClosed()
.pipe(takeUntil(this.unsubscribeSubject)) .pipe(takeUntil(this.unsubscribeSubject))
.subscribe((data) => { .subscribe((authToken) => {
if (data?.authToken) { if (authToken) {
this.tokenStorageService.saveToken(authToken, true); this.tokenStorageService.saveToken(authToken, true);
this.router.navigate(['/']); this.router.navigate(['/']);

2
apps/client/src/app/pages/register/register-page.html

@ -22,7 +22,7 @@
class="d-inline-block" class="d-inline-block"
color="primary" color="primary"
mat-flat-button mat-flat-button
(click)="createAccount()" (click)="openShowAccessTokenDialog()"
> >
<ng-container i18n>Create Account</ng-container> <ng-container i18n>Create Account</ng-container>
</button> </button>

57
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts

@ -1,19 +1,58 @@
import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; import { DataService } from '@ghostfolio/client/services/data.service';
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
import {
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
ViewChild
} from '@angular/core';
import { MatStepper } from '@angular/material/stepper';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
@Component({ @Component({
selector: 'gf-show-access-token-dialog',
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'gf-show-access-token-dialog',
standalone: false,
styleUrls: ['./show-access-token-dialog.scss'], styleUrls: ['./show-access-token-dialog.scss'],
templateUrl: 'show-access-token-dialog.html', templateUrl: 'show-access-token-dialog.html'
standalone: false
}) })
export class ShowAccessTokenDialog { export class ShowAccessTokenDialog {
public isAgreeButtonDisabled = true; @ViewChild(MatStepper) stepper!: MatStepper;
public accessToken: string;
public authToken: string;
public isCreateAccountButtonDisabled = true;
public isDisclaimerChecked = false;
public role: string;
private unsubscribeSubject = new Subject<void>();
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService
) {}
public constructor(@Inject(MAT_DIALOG_DATA) public data: any) {} public createAccount() {
this.dataService
.postUser()
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe(({ accessToken, authToken, role }) => {
this.accessToken = accessToken;
this.authToken = authToken;
this.role = role;
this.stepper.next();
this.changeDetectorRef.markForCheck();
});
}
public enableCreateAccountButton() {
this.isCreateAccountButtonDisabled = false;
}
public enableAgreeButton() { public onChangeDislaimerChecked() {
this.isAgreeButtonDisabled = false; this.isDisclaimerChecked = !this.isDisclaimerChecked;
} }
} }

125
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html

@ -1,48 +1,93 @@
<h1 mat-dialog-title> <h1 mat-dialog-title>
<span i18n>Create Account</span> <span i18n>Create Account</span>
@if (data.role === 'ADMIN') { @if (role === 'ADMIN') {
<span class="badge badge-light ml-2">{{ data.role }}</span> <span class="badge badge-light ml-2">{{ role }}</span>
} }
</h1> </h1>
<div class="py-3" mat-dialog-content> <div class="px-0" mat-dialog-content>
<div> <mat-stepper #stepper animationDuration="0ms" linear>
<mat-form-field appearance="outline" class="w-100"> <mat-step editable="false" [completed]="isDisclaimerChecked">
<mat-label i18n>Security Token</mat-label> <ng-template i18n matStepLabel>Terms and Conditions</ng-template>
<textarea <div class="pt-2">
cdkTextareaAutosize <ng-container i18n
matInput >Please keep your security token safe. If you lose it, you will not be
readonly able to recover your account.</ng-container
type="text"
[(value)]="data.accessToken"
></textarea>
<div class="float-right mt-3">
<button
color="secondary"
mat-flat-button
[cdkCopyToClipboard]="data.accessToken"
(click)="enableAgreeButton()"
> >
<ion-icon class="mr-1" name="copy-outline" /><span i18n </div>
>Copy to clipboard</span <mat-checkbox
class="pt-2"
color="primary"
(change)="onChangeDislaimerChecked()"
>
<ng-container i18n
>I understand that if I lose my security token, I cannot recover my
account.</ng-container
>
</mat-checkbox>
<div class="mt-3" mat-dialog-actions>
<div class="flex-grow-1">
<button i18n mat-button [mat-dialog-close]="undefined">Cancel</button>
</div>
<div>
<button
color="primary"
mat-flat-button
[disabled]="!isDisclaimerChecked"
(click)="createAccount()"
> >
</button> <ng-container i18n>Continue</ng-container>
</button>
</div>
</div> </div>
</mat-form-field> </mat-step>
</div> <mat-step editable="false">
<p i18n> <ng-template i18n matStepLabel>Security Token</ng-template>
I agree to have stored my <i>Security Token</i> from above in a secure <div class="pt-2">
place. If I lose it, I cannot get my account back. <ng-container i18n
</p> >Here is your security token. It is only visible once, please store
</div> and keep it in a safe place.</ng-container
<div class="justify-content-end" mat-dialog-actions> >
<button i18n mat-flat-button [mat-dialog-close]="undefined">Cancel</button> </div>
<button <mat-form-field appearance="outline" class="pt-3 w-100 without-hint">
color="primary" <mat-label i18n>Security Token</mat-label>
mat-flat-button <textarea
[disabled]="isAgreeButtonDisabled" cdkTextareaAutosize
[mat-dialog-close]="data" matInput
> readonly
<span i18n>Agree and continue</span> type="text"
<ion-icon class="ml-1" name="arrow-forward-outline" /> [(value)]="accessToken"
</button> ></textarea>
<div class="float-right mt-1">
<button
color="secondary"
mat-flat-button
[cdkCopyToClipboard]="accessToken"
(click)="enableCreateAccountButton()"
>
<ion-icon class="mr-1" name="copy-outline" />
<span i18n>Copy to clipboard</span>
</button>
</div>
</mat-form-field>
<div align="end" class="mt-1" mat-dialog-actions>
<div>
<button
color="primary"
mat-flat-button
matStepperNext
[disabled]="isCreateAccountButtonDisabled"
[mat-dialog-close]="authToken"
>
<span i18n>Create Account</span>
<ion-icon class="ml-1" name="arrow-forward-outline" />
</button>
</div>
</div>
</mat-step>
<ng-template matStepperIcon="done">
<ion-icon name="checkmark-outline"></ion-icon>
</ng-template>
</mat-stepper>
<div></div>
</div> </div>

4
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.module.ts

@ -4,9 +4,11 @@ import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button'; import { MatButtonModule } from '@angular/material/button';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatDialogModule } from '@angular/material/dialog'; import { MatDialogModule } from '@angular/material/dialog';
import { MatFormFieldModule } from '@angular/material/form-field'; import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input'; import { MatInputModule } from '@angular/material/input';
import { MatStepperModule } from '@angular/material/stepper';
import { ShowAccessTokenDialog } from './show-access-token-dialog.component'; import { ShowAccessTokenDialog } from './show-access-token-dialog.component';
@ -17,9 +19,11 @@ import { ShowAccessTokenDialog } from './show-access-token-dialog.component';
CommonModule, CommonModule,
FormsModule, FormsModule,
MatButtonModule, MatButtonModule,
MatCheckboxModule,
MatDialogModule, MatDialogModule,
MatFormFieldModule, MatFormFieldModule,
MatInputModule, MatInputModule,
MatStepperModule,
ReactiveFormsModule, ReactiveFormsModule,
TextFieldModule TextFieldModule
], ],

4
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.scss

@ -1,2 +1,6 @@
:host { :host {
.mat-mdc-dialog-actions {
padding-left: 0 !important;
padding-right: 0 !important;
}
} }

17
apps/client/src/app/services/admin.service.ts

@ -8,7 +8,6 @@ import {
PROPERTY_API_KEY_GHOSTFOLIO PROPERTY_API_KEY_GHOSTFOLIO
} from '@ghostfolio/common/config'; } from '@ghostfolio/common/config';
import { DEFAULT_PAGE_SIZE } from '@ghostfolio/common/config'; import { DEFAULT_PAGE_SIZE } from '@ghostfolio/common/config';
import { DATE_FORMAT } from '@ghostfolio/common/helper';
import { import {
AssetProfileIdentifier, AssetProfileIdentifier,
AdminData, AdminData,
@ -25,7 +24,6 @@ import { Injectable } from '@angular/core';
import { SortDirection } from '@angular/material/sort'; import { SortDirection } from '@angular/material/sort';
import { DataSource, MarketData, Platform } from '@prisma/client'; import { DataSource, MarketData, Platform } from '@prisma/client';
import { JobStatus } from 'bull'; import { JobStatus } from 'bull';
import { format } from 'date-fns';
import { switchMap } from 'rxjs'; import { switchMap } from 'rxjs';
import { environment } from '../../environments/environment'; import { environment } from '../../environments/environment';
@ -186,19 +184,8 @@ export class AdminService {
); );
} }
public gatherSymbol({ public gatherSymbol({ dataSource, symbol }: AssetProfileIdentifier) {
dataSource, const url = `/api/v1/admin/gather/${dataSource}/${symbol}`;
date,
symbol
}: AssetProfileIdentifier & {
date?: Date;
}) {
let url = `/api/v1/admin/gather/${dataSource}/${symbol}`;
if (date) {
url = `${url}/${format(date, DATE_FORMAT)}`;
}
return this.http.post<MarketData | void>(url, {}); return this.http.post<MarketData | void>(url, {});
} }

29
apps/client/src/app/services/data.service.ts

@ -46,12 +46,18 @@ import {
User User
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { filterGlobalPermissions } from '@ghostfolio/common/permissions'; import { filterGlobalPermissions } from '@ghostfolio/common/permissions';
import { AccountWithValue, DateRange, GroupBy } from '@ghostfolio/common/types'; import type {
AccountWithValue,
AiPromptMode,
DateRange,
GroupBy
} from '@ghostfolio/common/types';
import { translate } from '@ghostfolio/ui/i18n'; import { translate } from '@ghostfolio/ui/i18n';
import { HttpClient, HttpParams } from '@angular/common/http'; import { HttpClient, HttpParams } from '@angular/common/http';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { SortDirection } from '@angular/material/sort'; import { SortDirection } from '@angular/material/sort';
import { utc } from '@date-fns/utc';
import { import {
AccountBalance, AccountBalance,
DataSource, DataSource,
@ -276,7 +282,7 @@ export class DataService {
symbol: string; symbol: string;
}) { }) {
return this.http.get<IDataProviderHistoricalResponse>( return this.http.get<IDataProviderHistoricalResponse>(
`/api/v1/exchange-rate/${symbol}/${format(date, DATE_FORMAT)}` `/api/v1/exchange-rate/${symbol}/${format(date, DATE_FORMAT, { in: utc })}`
); );
} }
@ -358,10 +364,7 @@ export class DataService {
} }
return this.http.get<BenchmarkMarketDataDetails>( return this.http.get<BenchmarkMarketDataDetails>(
`/api/v1/benchmarks/${dataSource}/${symbol}/${format( `/api/v1/benchmarks/${dataSource}/${symbol}/${format(startDate, DATE_FORMAT, { in: utc })}`,
startDate,
DATE_FORMAT
)}`,
{ params } { params }
); );
} }
@ -650,8 +653,18 @@ export class DataService {
return this.http.get<PortfolioReportResponse>('/api/v1/portfolio/report'); return this.http.get<PortfolioReportResponse>('/api/v1/portfolio/report');
} }
public fetchPrompt() { public fetchPrompt({
return this.http.get<AiPromptResponse>('/api/v1/ai/prompt'); filters,
mode
}: {
filters?: Filter[];
mode: AiPromptMode;
}) {
const params = this.buildFiltersAsQueryParams({ filters });
return this.http.get<AiPromptResponse>(`/api/v1/ai/prompt/${mode}`, {
params
});
} }
public fetchPublicPortfolio(aAccessId: string) { public fetchPublicPortfolio(aAccessId: string) {

6
apps/client/src/app/services/web-authn.service.ts

@ -45,7 +45,7 @@ export class WebAuthnService {
return of(null); return of(null);
}), }),
switchMap((attOps) => { switchMap((attOps) => {
return startRegistration(attOps); return startRegistration({ optionsJSON: attOps });
}), }),
switchMap((credential) => { switchMap((credential) => {
return this.http.post<AuthDeviceDto>( return this.http.post<AuthDeviceDto>(
@ -89,8 +89,8 @@ export class WebAuthnService {
{ deviceId } { deviceId }
) )
.pipe( .pipe(
switchMap((requestOptionsJSON) => { switchMap((optionsJSON) => {
return startAuthentication(requestOptionsJSON); return startAuthentication({ optionsJSON });
}), }),
switchMap((credential) => { switchMap((credential) => {
return this.http.post<{ authToken: string }>( return this.http.post<{ authToken: string }>(

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

@ -52,6 +52,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">2</context> <context context-type="linenumber">2</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="41d338980f469b334618a07e799b4aa40fcf4834" datatype="html"> <trans-unit id="41d338980f469b334618a07e799b4aa40fcf4834" datatype="html">
<source>Personal Finance</source> <source>Personal Finance</source>
@ -1181,10 +1185,6 @@
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">231</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">92</context>
@ -1215,11 +1215,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">129</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">196</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
@ -1487,7 +1483,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context> <context context-type="linenumber">29</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
@ -1723,7 +1719,7 @@
<target state="translated">Realment vol eliminar el perfil d’aquest actiu?</target> <target state="translated">Realment vol eliminar el perfil d’aquest actiu?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">36</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3514960995395821133" datatype="html"> <trans-unit id="3514960995395821133" datatype="html">
@ -1731,7 +1727,7 @@
<target state="translated">Realment vol eliminar aquests perfils?</target> <target state="translated">Realment vol eliminar aquests perfils?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">68</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8127349194179456616" datatype="html"> <trans-unit id="8127349194179456616" datatype="html">
@ -1739,7 +1735,7 @@
<target state="translated">Oooh! No s’han pogut eliminar els perfils</target> <target state="translated">Oooh! No s’han pogut eliminar els perfils</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7183719827884539616" datatype="html"> <trans-unit id="7183719827884539616" datatype="html">
@ -1963,15 +1959,7 @@
<target state="translated">Està segur qeu vol eliminar aquest cupó?</target> <target state="translated">Està segur qeu vol eliminar aquest cupó?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">137</context> <context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="1110981355132746478" datatype="html">
<source>Do you really want to delete this currency?</source>
<target state="translated">Està segur que vol eliminar aquesta divisa?</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">150</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="297546430113071258" datatype="html"> <trans-unit id="297546430113071258" datatype="html">
@ -1979,7 +1967,7 @@
<target state="translated">Està segur que vol eliminar aquest missatge del sistema?</target> <target state="translated">Està segur que vol eliminar aquest missatge del sistema?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">163</context> <context context-type="linenumber">147</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6470890277760887814" datatype="html"> <trans-unit id="6470890277760887814" datatype="html">
@ -1987,7 +1975,7 @@
<target state="translated">Està segur que vol depurar el cache?</target> <target state="translated">Està segur que vol depurar el cache?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">187</context> <context context-type="linenumber">171</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2712770700065625080" datatype="html"> <trans-unit id="2712770700065625080" datatype="html">
@ -1995,7 +1983,7 @@
<target state="translated">Si us plau, afegeixi el seu missatge del sistema:</target> <target state="translated">Si us plau, afegeixi el seu missatge del sistema:</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">191</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html"> <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">
@ -2030,14 +2018,6 @@
<context context-type="linenumber">28</context> <context context-type="linenumber">28</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="37ff0697aa81b2777250c483d2ce1ebdaa5ab042" datatype="html">
<source>Exchange Rates</source>
<target state="translated">Tipus de Canvi</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html"> <trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html">
<source>Add Currency</source> <source>Add Currency</source>
<target state="translated">Afegir Divisa</target> <target state="translated">Afegir Divisa</target>
@ -2051,7 +2031,7 @@
<target state="translated">Registrar Usuari</target> <target state="translated">Registrar Usuari</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">101</context> <context context-type="linenumber">34</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html"> <trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html">
@ -2059,7 +2039,7 @@
<target state="translated">Mode Només Lecutra</target> <target state="translated">Mode Només Lecutra</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">48</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4f986b5ab20fe31ca54d7345a73b6b2402ddd350" datatype="html"> <trans-unit id="4f986b5ab20fe31ca54d7345a73b6b2402ddd350" datatype="html">
@ -2067,7 +2047,7 @@
<target state="translated">Recollida de Dades</target> <target state="translated">Recollida de Dades</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">60</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="860e5f056b59410ec8db65cb53955505c6931752" datatype="html"> <trans-unit id="860e5f056b59410ec8db65cb53955505c6931752" datatype="html">
@ -2075,7 +2055,7 @@
<target state="translated">Missatge del Sistema</target> <target state="translated">Missatge del Sistema</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">139</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html"> <trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html">
@ -2083,7 +2063,7 @@
<target state="translated">Estableix el Missatge</target> <target state="translated">Estableix el Missatge</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">161</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html"> <trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html">
@ -2091,7 +2071,7 @@
<target state="translated">Coupons</target> <target state="translated">Coupons</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html"> <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">
@ -2099,7 +2079,7 @@
<target state="translated">Afegir</target> <target state="translated">Afegir</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">229</context> <context context-type="linenumber">162</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context>
@ -2111,7 +2091,7 @@
<target state="translated">Ordre</target> <target state="translated">Ordre</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">237</context> <context context-type="linenumber">170</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html"> <trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html">
@ -2119,7 +2099,7 @@
<target state="translated">Depurar el Cache</target> <target state="translated">Depurar el Cache</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e587f3aaad8881a0b7732fb3e86df8a4c91f25d2" datatype="html"> <trans-unit id="e587f3aaad8881a0b7732fb3e86df8a4c91f25d2" datatype="html">
@ -2603,7 +2583,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">178</context> <context context-type="linenumber">213</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html"> <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">
@ -2671,7 +2651,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">98</context> <context context-type="linenumber">101</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6844699413925472826" datatype="html"> <trans-unit id="6844699413925472826" datatype="html">
@ -2683,7 +2663,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">99</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html"> <trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html">
@ -2815,7 +2795,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context> <context context-type="linenumber">44</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">52</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html"> <trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html">
@ -2975,7 +2959,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">34</context> <context context-type="linenumber">69</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="311828ec96f91f6f530219b07d5531a8aa507d64" datatype="html"> <trans-unit id="311828ec96f91f6f530219b07d5531a8aa507d64" datatype="html">
@ -5055,7 +5039,7 @@
<target state="new">Dividend</target> <target state="new">Dividend</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -5067,11 +5051,11 @@
<target state="new">Investment</target> <target state="new">Investment</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">61</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context>
@ -5083,7 +5067,7 @@
<target state="new">Monthly</target> <target state="new">Monthly</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">66</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8036977202721714375" datatype="html"> <trans-unit id="8036977202721714375" datatype="html">
@ -5091,7 +5075,7 @@
<target state="new">Yearly</target> <target state="new">Yearly</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">56</context> <context context-type="linenumber">67</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -5107,7 +5091,7 @@
<target state="new">Absolute Asset Performance</target> <target state="new">Absolute Asset Performance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">60</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html"> <trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html">
@ -5115,7 +5099,7 @@
<target state="new"> Asset Performance </target> <target state="new"> Asset Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html"> <trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html">
@ -5123,7 +5107,7 @@
<target state="new">Absolute Currency Performance</target> <target state="new">Absolute Currency Performance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">145</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html"> <trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html">
@ -5131,7 +5115,7 @@
<target state="new"> Currency Performance </target> <target state="new"> Currency Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">169</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html"> <trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html">
@ -5139,7 +5123,7 @@
<target state="new"> Absolute Net Performance </target> <target state="new"> Absolute Net Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">150</context> <context context-type="linenumber">192</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html"> <trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html">
@ -5147,7 +5131,7 @@
<target state="new"> Net Performance </target> <target state="new"> Net Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">211</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6ae1c94f6bad274424f97e9bc8766242c1577447" datatype="html"> <trans-unit id="6ae1c94f6bad274424f97e9bc8766242c1577447" datatype="html">
@ -5155,7 +5139,7 @@
<target state="new">Top</target> <target state="new">Top</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">239</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html"> <trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html">
@ -5163,7 +5147,7 @@
<target state="new">Bottom</target> <target state="new">Bottom</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">246</context> <context context-type="linenumber">288</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html"> <trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html">
@ -5171,7 +5155,7 @@
<target state="new">Portfolio Evolution</target> <target state="new">Portfolio Evolution</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">341</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html"> <trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html">
@ -5179,7 +5163,7 @@
<target state="new">Investment Timeline</target> <target state="new">Investment Timeline</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">326</context> <context context-type="linenumber">368</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1c275927e7e22395d21a86e4ab459e428bcac27e" datatype="html"> <trans-unit id="1c275927e7e22395d21a86e4ab459e428bcac27e" datatype="html">
@ -5187,7 +5171,7 @@
<target state="new">Current Streak</target> <target state="new">Current Streak</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">347</context> <context context-type="linenumber">389</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html"> <trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html">
@ -5195,7 +5179,7 @@
<target state="new">Longest Streak</target> <target state="new">Longest Streak</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">356</context> <context context-type="linenumber">398</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html"> <trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html">
@ -5203,7 +5187,7 @@
<target state="new">Dividend Timeline</target> <target state="new">Dividend Timeline</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">383</context> <context context-type="linenumber">425</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html"> <trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html">
@ -5243,7 +5227,7 @@
<target state="new">Currency Cluster Risks</target> <target state="new">Currency Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">58</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html"> <trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html">
@ -5251,7 +5235,7 @@
<target state="new">Account Cluster Risks</target> <target state="new">Account Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">106</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5080775557941296581" datatype="html"> <trans-unit id="5080775557941296581" datatype="html">
@ -5507,23 +5491,7 @@
<target state="new">Copy to clipboard</target> <target state="new">Copy to clipboard</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">26</context> <context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="9397711dc06a5d217fb57befe8ae2fec4b8ed039" datatype="html">
<source> I agree to have stored my <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> from above in a secure place. If I lose it, I cannot get my account back. </source>
<target state="new"> I agree to have stored my <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> from above in a secure place. If I lose it, I cannot get my account back. </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="6a9a8caf09dab1871f119d73dfb79db2eda37a35" datatype="html">
<source>Agree and continue</source>
<target state="new">Agree and continue</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1914201149277662818" datatype="html"> <trans-unit id="1914201149277662818" datatype="html">
@ -5595,7 +5563,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">90</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3437679369074503203" datatype="html"> <trans-unit id="3437679369074503203" datatype="html">
@ -6023,7 +5991,7 @@
<target state="new">Do you really want to delete these activities?</target> <target state="new">Do you really want to delete these activities?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">218</context> <context context-type="linenumber">219</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="670983159637074283" datatype="html"> <trans-unit id="670983159637074283" datatype="html">
@ -6031,7 +5999,7 @@
<target state="new">Do you really want to delete this activity?</target> <target state="new">Do you really want to delete this activity?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">229</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4149127798893455354" datatype="html"> <trans-unit id="4149127798893455354" datatype="html">
@ -6391,7 +6359,7 @@
<target state="new">Japan</target> <target state="new">Japan</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4152514811781104574" datatype="html"> <trans-unit id="4152514811781104574" datatype="html">
@ -6683,7 +6651,7 @@
<target state="new">Extreme Fear</target> <target state="new">Extreme Fear</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">96</context> <context context-type="linenumber">99</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2634398159221205491" datatype="html"> <trans-unit id="2634398159221205491" datatype="html">
@ -6691,7 +6659,7 @@
<target state="new">Extreme Greed</target> <target state="new">Extreme Greed</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">100</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3511545370905854666" datatype="html"> <trans-unit id="3511545370905854666" datatype="html">
@ -6699,7 +6667,7 @@
<target state="new">Neutral</target> <target state="new">Neutral</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3c33a66194384cf8c14e25170416767efa56fd98" datatype="html"> <trans-unit id="3c33a66194384cf8c14e25170416767efa56fd98" datatype="html">
@ -6867,7 +6835,7 @@
<target state="new">Australia</target> <target state="new">Australia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context> <context context-type="linenumber">74</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="21641575311466062" datatype="html"> <trans-unit id="21641575311466062" datatype="html">
@ -6875,7 +6843,7 @@
<target state="new">Austria</target> <target state="new">Austria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6787546539374733271" datatype="html"> <trans-unit id="6787546539374733271" datatype="html">
@ -6883,7 +6851,7 @@
<target state="new">Belgium</target> <target state="new">Belgium</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">75</context> <context context-type="linenumber">76</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8273479446468988017" datatype="html"> <trans-unit id="8273479446468988017" datatype="html">
@ -6891,7 +6859,7 @@
<target state="new">Bulgaria</target> <target state="new">Bulgaria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">76</context> <context context-type="linenumber">78</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3486679398271885916" datatype="html"> <trans-unit id="3486679398271885916" datatype="html">
@ -6899,7 +6867,7 @@
<target state="new">Canada</target> <target state="new">Canada</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context> <context context-type="linenumber">79</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="724957661944599897" datatype="html"> <trans-unit id="724957661944599897" datatype="html">
@ -6907,7 +6875,7 @@
<target state="new">Czech Republic</target> <target state="new">Czech Republic</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">78</context> <context context-type="linenumber">80</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8812557643580169825" datatype="html"> <trans-unit id="8812557643580169825" datatype="html">
@ -6915,7 +6883,7 @@
<target state="new">Finland</target> <target state="new">Finland</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">79</context> <context context-type="linenumber">81</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="956678847762152494" datatype="html"> <trans-unit id="956678847762152494" datatype="html">
@ -6923,7 +6891,7 @@
<target state="new">France</target> <target state="new">France</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">80</context> <context context-type="linenumber">82</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6014862663057951430" datatype="html"> <trans-unit id="6014862663057951430" datatype="html">
@ -6931,7 +6899,7 @@
<target state="new">Germany</target> <target state="new">Germany</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">83</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="212820117866187249" datatype="html"> <trans-unit id="212820117866187249" datatype="html">
@ -6939,7 +6907,7 @@
<target state="new">India</target> <target state="new">India</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">84</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2427223107800831324" datatype="html"> <trans-unit id="2427223107800831324" datatype="html">
@ -6947,7 +6915,7 @@
<target state="new">Italy</target> <target state="new">Italy</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">83</context> <context context-type="linenumber">85</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3783587393795767345" datatype="html"> <trans-unit id="3783587393795767345" datatype="html">
@ -6955,7 +6923,7 @@
<target state="new">Netherlands</target> <target state="new">Netherlands</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">87</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3591085113786124083" datatype="html"> <trans-unit id="3591085113786124083" datatype="html">
@ -6963,7 +6931,7 @@
<target state="new">New Zealand</target> <target state="new">New Zealand</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2356316679035829946" datatype="html"> <trans-unit id="2356316679035829946" datatype="html">
@ -6971,7 +6939,7 @@
<target state="new">Poland</target> <target state="new">Poland</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="545992063382313902" datatype="html"> <trans-unit id="545992063382313902" datatype="html">
@ -6979,7 +6947,7 @@
<target state="new">Romania</target> <target state="new">Romania</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">88</context> <context context-type="linenumber">90</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8039968326438721789" datatype="html"> <trans-unit id="8039968326438721789" datatype="html">
@ -6987,7 +6955,7 @@
<target state="new">South Africa</target> <target state="new">South Africa</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">92</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2040543873210054611" datatype="html"> <trans-unit id="2040543873210054611" datatype="html">
@ -6995,7 +6963,7 @@
<target state="new">Thailand</target> <target state="new">Thailand</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6133495983093212227" datatype="html"> <trans-unit id="6133495983093212227" datatype="html">
@ -7003,7 +6971,7 @@
<target state="new">United States</target> <target state="new">United States</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">93</context> <context context-type="linenumber">96</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1519954996184640001" datatype="html"> <trans-unit id="1519954996184640001" datatype="html">
@ -7035,7 +7003,7 @@
<target state="new">Inactive</target> <target state="new">Inactive</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -7347,7 +7315,7 @@
<target state="new">Ukraine</target> <target state="new">Ukraine</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">95</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html"> <trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html">
@ -7437,7 +7405,7 @@
<target state="new">Economic Market Cluster Risks</target> <target state="new">Economic Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">130</context> <context context-type="linenumber">165</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html"> <trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html">
@ -7565,7 +7533,7 @@
<target state="new">out of</target> <target state="new">out of</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html"> <trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html">
@ -7573,7 +7541,7 @@
<target state="new">rules align with your portfolio.</target> <target state="new">rules align with your portfolio.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">24</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3768927257183755959" datatype="html"> <trans-unit id="3768927257183755959" datatype="html">
@ -7589,7 +7557,7 @@
<target state="new">Asset Class Cluster Risks</target> <target state="new">Asset Class Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7156797854368699223" datatype="html"> <trans-unit id="7156797854368699223" datatype="html">
@ -7621,15 +7589,7 @@
<target state="new">AI prompt has been copied to the clipboard</target> <target state="new">AI prompt has been copied to the clipboard</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">153</context> <context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="4eecb3acb016e7d86740405b21599cdad8e0dd9f" datatype="html">
<source>Copy AI prompt to clipboard</source>
<target state="new">Copy AI prompt to clipboard</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">27</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7653,7 +7613,7 @@
<target state="new">Regional Market Cluster Risks</target> <target state="new">Regional Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">189</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8540986733881734625" datatype="html"> <trans-unit id="8540986733881734625" datatype="html">
@ -7725,7 +7685,7 @@
<target state="new">Open Duck.ai</target> <target state="new">Open Duck.ai</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7764,6 +7724,86 @@
<context context-type="linenumber">378</context> <context context-type="linenumber">378</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="afd6e2886f0bb7db3b54bef42bced4e7c67cc40c" datatype="html">
<source>Copy portfolio data to clipboard for AI prompt</source>
<target state="new">Copy portfolio data to clipboard for AI prompt</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="187b68f90f45d63f0d3b1e830ac92f98d2447313" datatype="html">
<source>Copy AI prompt to clipboard for analysis</source>
<target state="new">Copy AI prompt to clipboard for analysis</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5004849258025239958" datatype="html">
<source>Armenia</source>
<target state="new">Armenia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context>
</context-group>
</trans-unit>
<trans-unit id="7899437916897426237" datatype="html">
<source>British Virgin Islands</source>
<target state="new">British Virgin Islands</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context>
</context-group>
</trans-unit>
<trans-unit id="4830118002486243553" datatype="html">
<source>Singapore</source>
<target state="new">Singapore</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context>
</context-group>
</trans-unit>
<trans-unit id="e9048704780ed5bb3fc1af4f94d4fc5fdeb72cab" datatype="html">
<source>Terms and Conditions</source>
<target state="new">Terms and Conditions</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4051385e7211aebdb652666927a0564de3e74fd0" datatype="html">
<source>Please keep your security token safe. If you lose it, you will not be able to recover your account.</source>
<target state="new">Please keep your security token safe. If you lose it, you will not be able to recover your account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="0c165378eae03c8bd376d2819d94b108d9929c64" datatype="html">
<source>I understand that if I lose my security token, I cannot recover my account.</source>
<target state="new">I understand that if I lose my security token, I cannot recover my account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">
<source>Continue</source>
<target state="new">Continue</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="43a04e6b986ac8b5184330fdcc4235867d48bcf7" datatype="html">
<source>Here is your security token. It is only visible once, please store and keep it in a safe place.</source>
<target state="new">Here is your security token. It is only visible once, please store and keep it in a safe place.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">47</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

@ -16,6 +16,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">2</context> <context context-type="linenumber">2</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="0275b6f6c30c7b70cff02cb06c355ebd10724f86" datatype="html"> <trans-unit id="0275b6f6c30c7b70cff02cb06c355ebd10724f86" datatype="html">
<source>The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term.</source> <source>The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term.</source>
@ -260,10 +264,6 @@
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">231</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">92</context>
@ -294,11 +294,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">129</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">196</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
@ -530,7 +526,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context> <context context-type="linenumber">29</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
@ -622,15 +618,7 @@
<target state="translated">Möchtest du diesen Gutscheincode wirklich löschen?</target> <target state="translated">Möchtest du diesen Gutscheincode wirklich löschen?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">137</context> <context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="1110981355132746478" datatype="html">
<source>Do you really want to delete this currency?</source>
<target state="translated">Möchtest du diese Währung wirklich löschen?</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">150</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6470890277760887814" datatype="html"> <trans-unit id="6470890277760887814" datatype="html">
@ -638,7 +626,7 @@
<target state="translated">Möchtest du den Cache wirklich leeren?</target> <target state="translated">Möchtest du den Cache wirklich leeren?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">187</context> <context context-type="linenumber">171</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2712770700065625080" datatype="html"> <trans-unit id="2712770700065625080" datatype="html">
@ -646,7 +634,7 @@
<target state="translated">Bitte gebe deine Systemmeldung ein:</target> <target state="translated">Bitte gebe deine Systemmeldung ein:</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">191</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ec03f5c28b327fc7ecfc4b20a0a7cf14a75843ff" datatype="html"> <trans-unit id="ec03f5c28b327fc7ecfc4b20a0a7cf14a75843ff" datatype="html">
@ -693,14 +681,6 @@
<context context-type="linenumber">45</context> <context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="37ff0697aa81b2777250c483d2ce1ebdaa5ab042" datatype="html">
<source>Exchange Rates</source>
<target state="translated">Wechselkurse</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html"> <trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html">
<source>Add Currency</source> <source>Add Currency</source>
<target state="translated">Währung hinzufügen</target> <target state="translated">Währung hinzufügen</target>
@ -714,7 +694,7 @@
<target state="translated">Systemmeldung</target> <target state="translated">Systemmeldung</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">139</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html"> <trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html">
@ -722,7 +702,7 @@
<target state="translated">Systemmeldung setzen</target> <target state="translated">Systemmeldung setzen</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">161</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html"> <trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html">
@ -730,7 +710,7 @@
<target state="translated">Lese-Modus</target> <target state="translated">Lese-Modus</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">48</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html"> <trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html">
@ -738,7 +718,7 @@
<target state="translated">Gutscheincodes</target> <target state="translated">Gutscheincodes</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html"> <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">
@ -746,7 +726,7 @@
<target state="translated">Hinzufügen</target> <target state="translated">Hinzufügen</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">229</context> <context context-type="linenumber">162</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context>
@ -758,7 +738,7 @@
<target state="translated">Verwaltung</target> <target state="translated">Verwaltung</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">237</context> <context context-type="linenumber">170</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html"> <trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html">
@ -766,7 +746,7 @@
<target state="translated">Cache leeren</target> <target state="translated">Cache leeren</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2817099043823177227" datatype="html"> <trans-unit id="2817099043823177227" datatype="html">
@ -1082,7 +1062,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context> <context context-type="linenumber">44</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">52</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html"> <trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html">
@ -1242,7 +1226,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">34</context> <context context-type="linenumber">69</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8cce9d03787606e0052d19c2ae7e7fa5ff785e94" datatype="html"> <trans-unit id="8cce9d03787606e0052d19c2ae7e7fa5ff785e94" datatype="html">
@ -2134,7 +2118,7 @@
<target state="translated">Zeitstrahl der Investitionen</target> <target state="translated">Zeitstrahl der Investitionen</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">326</context> <context context-type="linenumber">368</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6ae1c94f6bad274424f97e9bc8766242c1577447" datatype="html"> <trans-unit id="6ae1c94f6bad274424f97e9bc8766242c1577447" datatype="html">
@ -2142,7 +2126,7 @@
<target state="translated">Gewinner</target> <target state="translated">Gewinner</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">239</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html"> <trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html">
@ -2150,7 +2134,7 @@
<target state="translated">Verlierer</target> <target state="translated">Verlierer</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">246</context> <context context-type="linenumber">288</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html"> <trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html">
@ -2454,23 +2438,7 @@
<target state="translated">In die Zwischenablage kopieren</target> <target state="translated">In die Zwischenablage kopieren</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">26</context> <context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="9397711dc06a5d217fb57befe8ae2fec4b8ed039" datatype="html">
<source> I agree to have stored my <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> from above in a secure place. If I lose it, I cannot get my account back. </source>
<target state="translated"> Ich stimme zu, meinen <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> an einem sicheren Ort hinterlegt zu haben. Sollte ich diesen verlieren, kann ich mein Konto nicht wiederherstellen. </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="6a9a8caf09dab1871f119d73dfb79db2eda37a35" datatype="html">
<source>Agree and continue</source>
<target state="translated">Zustimmen und fortfahren</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2446117790692479672" datatype="html"> <trans-unit id="2446117790692479672" datatype="html">
@ -2566,7 +2534,7 @@
<target state="translated">Möchtest du diese Aktivität wirklich löschen?</target> <target state="translated">Möchtest du diese Aktivität wirklich löschen?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">229</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="170f7de02b14690fb9c1999a16926c0044bfd5c1" datatype="html"> <trans-unit id="170f7de02b14690fb9c1999a16926c0044bfd5c1" datatype="html">
@ -2794,7 +2762,7 @@
<target state="translated">Monatlich</target> <target state="translated">Monatlich</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">66</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5213771062241898526" datatype="html"> <trans-unit id="5213771062241898526" datatype="html">
@ -2850,7 +2818,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">98</context> <context context-type="linenumber">101</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6844699413925472826" datatype="html"> <trans-unit id="6844699413925472826" datatype="html">
@ -2862,7 +2830,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">99</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4550487415324294802" datatype="html"> <trans-unit id="4550487415324294802" datatype="html">
@ -2986,7 +2954,7 @@
<target state="translated">Portfolio Wertentwicklung</target> <target state="translated">Portfolio Wertentwicklung</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">341</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8192718423057883427" datatype="html"> <trans-unit id="8192718423057883427" datatype="html">
@ -3306,7 +3274,7 @@
<target state="translated">Zeitstrahl der Dividenden</target> <target state="translated">Zeitstrahl der Dividenden</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">383</context> <context context-type="linenumber">425</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7765499580020598783" datatype="html"> <trans-unit id="7765499580020598783" datatype="html">
@ -3314,7 +3282,7 @@
<target state="translated">Dividenden</target> <target state="translated">Dividenden</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -3334,7 +3302,7 @@
<target state="translated">Benutzer Registrierung</target> <target state="translated">Benutzer Registrierung</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">101</context> <context context-type="linenumber">34</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8763985977445247551" datatype="html"> <trans-unit id="8763985977445247551" datatype="html">
@ -3422,7 +3390,7 @@
<target state="translated">Jährlich</target> <target state="translated">Jährlich</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">56</context> <context context-type="linenumber">67</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -3758,7 +3726,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">178</context> <context context-type="linenumber">213</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="a6f322a22d0ae0b95dd9c70d43ba2c92de7ed49b" datatype="html"> <trans-unit id="a6f322a22d0ae0b95dd9c70d43ba2c92de7ed49b" datatype="html">
@ -3942,7 +3910,7 @@
<target state="translated">Möchtest du diese Aktivitäten wirklich löschen?</target> <target state="translated">Möchtest du diese Aktivitäten wirklich löschen?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">218</context> <context context-type="linenumber">219</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="166ccc92e1aa598f9056a260be209a0bab64d37a" datatype="html"> <trans-unit id="166ccc92e1aa598f9056a260be209a0bab64d37a" datatype="html">
@ -4170,7 +4138,7 @@
<target state="translated">Aktueller Streak</target> <target state="translated">Aktueller Streak</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">347</context> <context context-type="linenumber">389</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html"> <trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html">
@ -4178,7 +4146,7 @@
<target state="translated">Längster Streak</target> <target state="translated">Längster Streak</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">356</context> <context context-type="linenumber">398</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4845030128243887325" datatype="html"> <trans-unit id="4845030128243887325" datatype="html">
@ -4658,7 +4626,7 @@
<target state="translated">Japan</target> <target state="translated">Japan</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6fafe6662f57e08bca1f26bc2d2c9631a106ba29" datatype="html"> <trans-unit id="6fafe6662f57e08bca1f26bc2d2c9631a106ba29" datatype="html">
@ -5759,7 +5727,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">90</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3437679369074503203" datatype="html"> <trans-unit id="3437679369074503203" datatype="html">
@ -5903,7 +5871,7 @@
<target state="translated">Währungsklumpenrisiken</target> <target state="translated">Währungsklumpenrisiken</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">58</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html"> <trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html">
@ -5911,7 +5879,7 @@
<target state="translated">Kontoklumpenrisiken</target> <target state="translated">Kontoklumpenrisiken</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">106</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4b00337456de4a757f7abc8224d8b391f5d0634a" datatype="html"> <trans-unit id="4b00337456de4a757f7abc8224d8b391f5d0634a" datatype="html">
@ -6031,7 +5999,7 @@
<target state="translated">Möchtest du dieses Anlageprofil wirklich löschen?</target> <target state="translated">Möchtest du dieses Anlageprofil wirklich löschen?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">36</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7e892ba15f2c6c17e83510e273b3e10fc32ea016" datatype="html"> <trans-unit id="7e892ba15f2c6c17e83510e273b3e10fc32ea016" datatype="html">
@ -6111,7 +6079,7 @@
<target state="translated">Extreme Angst</target> <target state="translated">Extreme Angst</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">96</context> <context context-type="linenumber">99</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2634398159221205491" datatype="html"> <trans-unit id="2634398159221205491" datatype="html">
@ -6119,7 +6087,7 @@
<target state="translated">Extreme Gier</target> <target state="translated">Extreme Gier</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">100</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3511545370905854666" datatype="html"> <trans-unit id="3511545370905854666" datatype="html">
@ -6127,7 +6095,7 @@
<target state="translated">Neutral</target> <target state="translated">Neutral</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7183719827884539616" datatype="html"> <trans-unit id="7183719827884539616" datatype="html">
@ -6143,7 +6111,7 @@
<target state="translated">Möchtest du diese Systemmeldung wirklich löschen?</target> <target state="translated">Möchtest du diese Systemmeldung wirklich löschen?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">163</context> <context context-type="linenumber">147</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d762c43328624b5dd81f3c6a3023203ae9a7553f" datatype="html"> <trans-unit id="d762c43328624b5dd81f3c6a3023203ae9a7553f" datatype="html">
@ -6299,11 +6267,11 @@
<target state="translated">Einlage</target> <target state="translated">Einlage</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">61</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context>
@ -6315,7 +6283,7 @@
<target state="translated"> Absolute Anlage Performance </target> <target state="translated"> Absolute Anlage Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">60</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html"> <trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html">
@ -6323,7 +6291,7 @@
<target state="translated"> Anlage Performance </target> <target state="translated"> Anlage Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html"> <trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html">
@ -6331,7 +6299,7 @@
<target state="translated"> Absolute Währungsperformance </target> <target state="translated"> Absolute Währungsperformance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">145</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html"> <trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html">
@ -6339,7 +6307,7 @@
<target state="translated"> Währungsperformance </target> <target state="translated"> Währungsperformance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">169</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html"> <trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html">
@ -6347,7 +6315,7 @@
<target state="translated"> Absolute Netto Performance </target> <target state="translated"> Absolute Netto Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">150</context> <context context-type="linenumber">192</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html"> <trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html">
@ -6355,7 +6323,7 @@
<target state="translated"> Netto Performance </target> <target state="translated"> Netto Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">211</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3105754554141014845" datatype="html"> <trans-unit id="3105754554141014845" datatype="html">
@ -6463,7 +6431,7 @@
<target state="translated">Daten einholen</target> <target state="translated">Daten einholen</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">60</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6439365426343089851" datatype="html"> <trans-unit id="6439365426343089851" datatype="html">
@ -6715,7 +6683,7 @@
<target state="translated">Möchtest du diese Profile wirklich löschen?</target> <target state="translated">Möchtest du diese Profile wirklich löschen?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">68</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8127349194179456616" datatype="html"> <trans-unit id="8127349194179456616" datatype="html">
@ -6723,7 +6691,7 @@
<target state="translated">Ups! Die Profile konnten nicht gelöscht werden.</target> <target state="translated">Ups! Die Profile konnten nicht gelöscht werden.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html"> <trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html">
@ -6867,7 +6835,7 @@
<target state="translated">Australien</target> <target state="translated">Australien</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context> <context context-type="linenumber">74</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="21641575311466062" datatype="html"> <trans-unit id="21641575311466062" datatype="html">
@ -6875,7 +6843,7 @@
<target state="translated">Österreich</target> <target state="translated">Österreich</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6787546539374733271" datatype="html"> <trans-unit id="6787546539374733271" datatype="html">
@ -6883,7 +6851,7 @@
<target state="translated">Belgien</target> <target state="translated">Belgien</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">75</context> <context context-type="linenumber">76</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8273479446468988017" datatype="html"> <trans-unit id="8273479446468988017" datatype="html">
@ -6891,7 +6859,7 @@
<target state="translated">Bulgarien</target> <target state="translated">Bulgarien</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">76</context> <context context-type="linenumber">78</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3486679398271885916" datatype="html"> <trans-unit id="3486679398271885916" datatype="html">
@ -6899,7 +6867,7 @@
<target state="translated">Kanada</target> <target state="translated">Kanada</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context> <context context-type="linenumber">79</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="724957661944599897" datatype="html"> <trans-unit id="724957661944599897" datatype="html">
@ -6907,7 +6875,7 @@
<target state="translated">Tschechien</target> <target state="translated">Tschechien</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">78</context> <context context-type="linenumber">80</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8812557643580169825" datatype="html"> <trans-unit id="8812557643580169825" datatype="html">
@ -6915,7 +6883,7 @@
<target state="translated">Finnland</target> <target state="translated">Finnland</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">79</context> <context context-type="linenumber">81</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="956678847762152494" datatype="html"> <trans-unit id="956678847762152494" datatype="html">
@ -6923,7 +6891,7 @@
<target state="translated">Frankreich</target> <target state="translated">Frankreich</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">80</context> <context context-type="linenumber">82</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6014862663057951430" datatype="html"> <trans-unit id="6014862663057951430" datatype="html">
@ -6931,7 +6899,7 @@
<target state="translated">Deutschland</target> <target state="translated">Deutschland</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">83</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="212820117866187249" datatype="html"> <trans-unit id="212820117866187249" datatype="html">
@ -6939,7 +6907,7 @@
<target state="translated">Indien</target> <target state="translated">Indien</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">84</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2427223107800831324" datatype="html"> <trans-unit id="2427223107800831324" datatype="html">
@ -6947,7 +6915,7 @@
<target state="translated">Italien</target> <target state="translated">Italien</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">83</context> <context context-type="linenumber">85</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3783587393795767345" datatype="html"> <trans-unit id="3783587393795767345" datatype="html">
@ -6955,7 +6923,7 @@
<target state="translated">Niederlande</target> <target state="translated">Niederlande</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">87</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3591085113786124083" datatype="html"> <trans-unit id="3591085113786124083" datatype="html">
@ -6963,7 +6931,7 @@
<target state="translated">Neuseeland</target> <target state="translated">Neuseeland</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2356316679035829946" datatype="html"> <trans-unit id="2356316679035829946" datatype="html">
@ -6971,7 +6939,7 @@
<target state="translated">Polen</target> <target state="translated">Polen</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="545992063382313902" datatype="html"> <trans-unit id="545992063382313902" datatype="html">
@ -6979,7 +6947,7 @@
<target state="translated">Rumänien</target> <target state="translated">Rumänien</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">88</context> <context context-type="linenumber">90</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8039968326438721789" datatype="html"> <trans-unit id="8039968326438721789" datatype="html">
@ -6987,7 +6955,7 @@
<target state="translated">Südafrika</target> <target state="translated">Südafrika</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">92</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2040543873210054611" datatype="html"> <trans-unit id="2040543873210054611" datatype="html">
@ -6995,7 +6963,7 @@
<target state="translated">Thailand</target> <target state="translated">Thailand</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6133495983093212227" datatype="html"> <trans-unit id="6133495983093212227" datatype="html">
@ -7003,7 +6971,7 @@
<target state="translated">USA</target> <target state="translated">USA</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">93</context> <context context-type="linenumber">96</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1519954996184640001" datatype="html"> <trans-unit id="1519954996184640001" datatype="html">
@ -7035,7 +7003,7 @@
<target state="translated">Inaktiv</target> <target state="translated">Inaktiv</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -7347,7 +7315,7 @@
<target state="translated">Ukraine</target> <target state="translated">Ukraine</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">95</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html"> <trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html">
@ -7437,7 +7405,7 @@
<target state="translated">Wirtschaftsraumklumpenrisiken</target> <target state="translated">Wirtschaftsraumklumpenrisiken</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">130</context> <context context-type="linenumber">165</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html"> <trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html">
@ -7565,7 +7533,7 @@
<target state="translated">von</target> <target state="translated">von</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html"> <trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html">
@ -7573,7 +7541,7 @@
<target state="translated">Regeln werden von Ihrem Portfolio erfüllt.</target> <target state="translated">Regeln werden von Ihrem Portfolio erfüllt.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">24</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3768927257183755959" datatype="html"> <trans-unit id="3768927257183755959" datatype="html">
@ -7589,7 +7557,7 @@
<target state="translated">Anlageklasseklumpenrisiken</target> <target state="translated">Anlageklasseklumpenrisiken</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7156797854368699223" datatype="html"> <trans-unit id="7156797854368699223" datatype="html">
@ -7621,15 +7589,7 @@
<target state="translated">KI-Anweisung wurde in die Zwischenablage kopiert</target> <target state="translated">KI-Anweisung wurde in die Zwischenablage kopiert</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">153</context> <context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="4eecb3acb016e7d86740405b21599cdad8e0dd9f" datatype="html">
<source>Copy AI prompt to clipboard</source>
<target state="translated">Kopiere KI-Anweisung die Zwischenablage</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">27</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7653,7 +7613,7 @@
<target state="translated">Regionale Marktklumpenrisiken</target> <target state="translated">Regionale Marktklumpenrisiken</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">189</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8540986733881734625" datatype="html"> <trans-unit id="8540986733881734625" datatype="html">
@ -7725,7 +7685,7 @@
<target state="translated">Öffne Duck.ai</target> <target state="translated">Öffne Duck.ai</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7764,6 +7724,86 @@
<context context-type="linenumber">378</context> <context context-type="linenumber">378</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="afd6e2886f0bb7db3b54bef42bced4e7c67cc40c" datatype="html">
<source>Copy portfolio data to clipboard for AI prompt</source>
<target state="translated">Kopiere Portfolio-Daten in die Zwischenablage für KI-Anweisung</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="187b68f90f45d63f0d3b1e830ac92f98d2447313" datatype="html">
<source>Copy AI prompt to clipboard for analysis</source>
<target state="translated">Kopiere KI-Anweisung in die Zwischenablage für Analyse</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5004849258025239958" datatype="html">
<source>Armenia</source>
<target state="translated">Armenien</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context>
</context-group>
</trans-unit>
<trans-unit id="7899437916897426237" datatype="html">
<source>British Virgin Islands</source>
<target state="translated">Britische Jungferninseln</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context>
</context-group>
</trans-unit>
<trans-unit id="4830118002486243553" datatype="html">
<source>Singapore</source>
<target state="translated">Singapur</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context>
</context-group>
</trans-unit>
<trans-unit id="e9048704780ed5bb3fc1af4f94d4fc5fdeb72cab" datatype="html">
<source>Terms and Conditions</source>
<target state="translated">Nutzungsbedingungen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4051385e7211aebdb652666927a0564de3e74fd0" datatype="html">
<source>Please keep your security token safe. If you lose it, you will not be able to recover your account.</source>
<target state="translated">Bitte bewahre dein Sicherheits-Token sicher auf. Wenn du es verlierst, kannst du dein Benutzerkonto nicht wiederherstellen.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="0c165378eae03c8bd376d2819d94b108d9929c64" datatype="html">
<source>I understand that if I lose my security token, I cannot recover my account.</source>
<target state="translated">Ich nehme zur Kenntnis, dass ich mein Benutzerkonto nicht wiederherstellen kann, wenn ich mein Sicherheits-Token verliere.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">
<source>Continue</source>
<target state="translated">Weiter</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="43a04e6b986ac8b5184330fdcc4235867d48bcf7" datatype="html">
<source>Here is your security token. It is only visible once, please store and keep it in a safe place.</source>
<target state="translated">Hier ist dein Sicherheits-Token. Es ist nur ein einziges Mal sichtbar. Bitte bewahre es sicher auf.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">47</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

@ -17,6 +17,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">2</context> <context context-type="linenumber">2</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="0275b6f6c30c7b70cff02cb06c355ebd10724f86" datatype="html"> <trans-unit id="0275b6f6c30c7b70cff02cb06c355ebd10724f86" datatype="html">
<source>The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term.</source> <source>The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term.</source>
@ -261,10 +265,6 @@
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">231</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">92</context>
@ -295,11 +295,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">129</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">196</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
@ -531,7 +527,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context> <context context-type="linenumber">29</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
@ -623,15 +619,7 @@
<target state="translated">¿Estás seguro de eliminar este cupón?</target> <target state="translated">¿Estás seguro de eliminar este cupón?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">137</context> <context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="1110981355132746478" datatype="html">
<source>Do you really want to delete this currency?</source>
<target state="translated">¿Estás seguro de eliminar esta divisa?</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">150</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6470890277760887814" datatype="html"> <trans-unit id="6470890277760887814" datatype="html">
@ -639,7 +627,7 @@
<target state="translated">¿Estás seguro de limpiar la caché?</target> <target state="translated">¿Estás seguro de limpiar la caché?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">187</context> <context context-type="linenumber">171</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2712770700065625080" datatype="html"> <trans-unit id="2712770700065625080" datatype="html">
@ -647,7 +635,7 @@
<target state="translated">Por favor, establece tu mensaje del sistema:</target> <target state="translated">Por favor, establece tu mensaje del sistema:</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">191</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ec03f5c28b327fc7ecfc4b20a0a7cf14a75843ff" datatype="html"> <trans-unit id="ec03f5c28b327fc7ecfc4b20a0a7cf14a75843ff" datatype="html">
@ -694,14 +682,6 @@
<context context-type="linenumber">45</context> <context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="37ff0697aa81b2777250c483d2ce1ebdaa5ab042" datatype="html">
<source>Exchange Rates</source>
<target state="translated">Tipos de cambio</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html"> <trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html">
<source>Add Currency</source> <source>Add Currency</source>
<target state="translated">Añadir divisa</target> <target state="translated">Añadir divisa</target>
@ -715,7 +695,7 @@
<target state="translated">Mensaje del sistema</target> <target state="translated">Mensaje del sistema</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">139</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html"> <trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html">
@ -723,7 +703,7 @@
<target state="translated">Establecer mensaje</target> <target state="translated">Establecer mensaje</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">161</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html"> <trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html">
@ -731,7 +711,7 @@
<target state="translated">Modo de solo lectura</target> <target state="translated">Modo de solo lectura</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">48</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html"> <trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html">
@ -739,7 +719,7 @@
<target state="translated">Cupones</target> <target state="translated">Cupones</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html"> <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">
@ -747,7 +727,7 @@
<target state="translated">Añadir</target> <target state="translated">Añadir</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">229</context> <context context-type="linenumber">162</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context>
@ -759,7 +739,7 @@
<target state="translated">Tareas domésticas</target> <target state="translated">Tareas domésticas</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">237</context> <context context-type="linenumber">170</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html"> <trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html">
@ -767,7 +747,7 @@
<target state="translated">Limpiar caché</target> <target state="translated">Limpiar caché</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2817099043823177227" datatype="html"> <trans-unit id="2817099043823177227" datatype="html">
@ -1083,7 +1063,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context> <context context-type="linenumber">44</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">52</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html"> <trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html">
@ -1243,7 +1227,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">34</context> <context context-type="linenumber">69</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8cce9d03787606e0052d19c2ae7e7fa5ff785e94" datatype="html"> <trans-unit id="8cce9d03787606e0052d19c2ae7e7fa5ff785e94" datatype="html">
@ -2135,7 +2119,7 @@
<target state="translated">Cronología de la inversión</target> <target state="translated">Cronología de la inversión</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">326</context> <context context-type="linenumber">368</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6ae1c94f6bad274424f97e9bc8766242c1577447" datatype="html"> <trans-unit id="6ae1c94f6bad274424f97e9bc8766242c1577447" datatype="html">
@ -2143,7 +2127,7 @@
<target state="translated">Lo mejor</target> <target state="translated">Lo mejor</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">239</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html"> <trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html">
@ -2151,7 +2135,7 @@
<target state="translated">Lo peor</target> <target state="translated">Lo peor</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">246</context> <context context-type="linenumber">288</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html"> <trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html">
@ -2455,23 +2439,7 @@
<target state="translated">Copiar al portapapeles</target> <target state="translated">Copiar al portapapeles</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">26</context> <context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="9397711dc06a5d217fb57befe8ae2fec4b8ed039" datatype="html">
<source> I agree to have stored my <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> from above in a secure place. If I lose it, I cannot get my account back. </source>
<target state="translated">Confirmo haber guardado mi <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Token de seguridad<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> mostrado arriba en un lugar seguro. Si lo pierdo, no podré recuperar mi cuenta.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="6a9a8caf09dab1871f119d73dfb79db2eda37a35" datatype="html">
<source>Agree and continue</source>
<target state="translated">Aceptar y continuar</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2446117790692479672" datatype="html"> <trans-unit id="2446117790692479672" datatype="html">
@ -2567,7 +2535,7 @@
<target state="translated">¿Estás seguro de eliminar esta operación?</target> <target state="translated">¿Estás seguro de eliminar esta operación?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">229</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="170f7de02b14690fb9c1999a16926c0044bfd5c1" datatype="html"> <trans-unit id="170f7de02b14690fb9c1999a16926c0044bfd5c1" datatype="html">
@ -2823,7 +2791,7 @@
<target state="translated">Mensual</target> <target state="translated">Mensual</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">66</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8511b16abcf065252b350d64e337ba2447db3ffb" datatype="html"> <trans-unit id="8511b16abcf065252b350d64e337ba2447db3ffb" datatype="html">
@ -2851,7 +2819,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">98</context> <context context-type="linenumber">101</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6844699413925472826" datatype="html"> <trans-unit id="6844699413925472826" datatype="html">
@ -2863,7 +2831,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">99</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4550487415324294802" datatype="html"> <trans-unit id="4550487415324294802" datatype="html">
@ -2987,7 +2955,7 @@
<target state="translated">Evolución cartera</target> <target state="translated">Evolución cartera</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">341</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8192718423057883427" datatype="html"> <trans-unit id="8192718423057883427" datatype="html">
@ -3307,7 +3275,7 @@
<target state="translated">Dividendo</target> <target state="translated">Dividendo</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -3319,7 +3287,7 @@
<target state="translated">Calendario de dividendos</target> <target state="translated">Calendario de dividendos</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">383</context> <context context-type="linenumber">425</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7608037008789240367" datatype="html"> <trans-unit id="7608037008789240367" datatype="html">
@ -3335,7 +3303,7 @@
<target state="translated">Registro de usuario</target> <target state="translated">Registro de usuario</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">101</context> <context context-type="linenumber">34</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8763985977445247551" datatype="html"> <trans-unit id="8763985977445247551" datatype="html">
@ -3423,7 +3391,7 @@
<target state="translated">Anual</target> <target state="translated">Anual</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">56</context> <context context-type="linenumber">67</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -3759,7 +3727,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">178</context> <context context-type="linenumber">213</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="a6f322a22d0ae0b95dd9c70d43ba2c92de7ed49b" datatype="html"> <trans-unit id="a6f322a22d0ae0b95dd9c70d43ba2c92de7ed49b" datatype="html">
@ -3943,7 +3911,7 @@
<target state="new">Do you really want to delete these activities?</target> <target state="new">Do you really want to delete these activities?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">218</context> <context context-type="linenumber">219</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="166ccc92e1aa598f9056a260be209a0bab64d37a" datatype="html"> <trans-unit id="166ccc92e1aa598f9056a260be209a0bab64d37a" datatype="html">
@ -4171,7 +4139,7 @@
<target state="new">Current Streak</target> <target state="new">Current Streak</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">347</context> <context context-type="linenumber">389</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html"> <trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html">
@ -4179,7 +4147,7 @@
<target state="new">Longest Streak</target> <target state="new">Longest Streak</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">356</context> <context context-type="linenumber">398</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4845030128243887325" datatype="html"> <trans-unit id="4845030128243887325" datatype="html">
@ -4659,7 +4627,7 @@
<target state="new">Japan</target> <target state="new">Japan</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6fafe6662f57e08bca1f26bc2d2c9631a106ba29" datatype="html"> <trans-unit id="6fafe6662f57e08bca1f26bc2d2c9631a106ba29" datatype="html">
@ -5760,7 +5728,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">90</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3437679369074503203" datatype="html"> <trans-unit id="3437679369074503203" datatype="html">
@ -5904,7 +5872,7 @@
<target state="new">Currency Cluster Risks</target> <target state="new">Currency Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">58</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html"> <trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html">
@ -5912,7 +5880,7 @@
<target state="new">Account Cluster Risks</target> <target state="new">Account Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">106</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4b00337456de4a757f7abc8224d8b391f5d0634a" datatype="html"> <trans-unit id="4b00337456de4a757f7abc8224d8b391f5d0634a" datatype="html">
@ -6032,7 +6000,7 @@
<target state="new">Do you really want to delete this asset profile?</target> <target state="new">Do you really want to delete this asset profile?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">36</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7e892ba15f2c6c17e83510e273b3e10fc32ea016" datatype="html"> <trans-unit id="7e892ba15f2c6c17e83510e273b3e10fc32ea016" datatype="html">
@ -6112,7 +6080,7 @@
<target state="new">Extreme Fear</target> <target state="new">Extreme Fear</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">96</context> <context context-type="linenumber">99</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2634398159221205491" datatype="html"> <trans-unit id="2634398159221205491" datatype="html">
@ -6120,7 +6088,7 @@
<target state="new">Extreme Greed</target> <target state="new">Extreme Greed</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">100</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3511545370905854666" datatype="html"> <trans-unit id="3511545370905854666" datatype="html">
@ -6128,7 +6096,7 @@
<target state="new">Neutral</target> <target state="new">Neutral</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7183719827884539616" datatype="html"> <trans-unit id="7183719827884539616" datatype="html">
@ -6144,7 +6112,7 @@
<target state="new">Do you really want to delete this system message?</target> <target state="new">Do you really want to delete this system message?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">163</context> <context context-type="linenumber">147</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d762c43328624b5dd81f3c6a3023203ae9a7553f" datatype="html"> <trans-unit id="d762c43328624b5dd81f3c6a3023203ae9a7553f" datatype="html">
@ -6300,11 +6268,11 @@
<target state="translated">Inversión</target> <target state="translated">Inversión</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">61</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context>
@ -6316,7 +6284,7 @@
<target state="new">Absolute Asset Performance</target> <target state="new">Absolute Asset Performance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">60</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html"> <trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html">
@ -6324,7 +6292,7 @@
<target state="new"> Asset Performance </target> <target state="new"> Asset Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html"> <trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html">
@ -6332,7 +6300,7 @@
<target state="new">Absolute Currency Performance</target> <target state="new">Absolute Currency Performance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">145</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html"> <trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html">
@ -6340,7 +6308,7 @@
<target state="new"> Currency Performance </target> <target state="new"> Currency Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">169</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html"> <trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html">
@ -6348,7 +6316,7 @@
<target state="new"> Absolute Net Performance </target> <target state="new"> Absolute Net Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">150</context> <context context-type="linenumber">192</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html"> <trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html">
@ -6356,7 +6324,7 @@
<target state="new"> Net Performance </target> <target state="new"> Net Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">211</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3105754554141014845" datatype="html"> <trans-unit id="3105754554141014845" datatype="html">
@ -6464,7 +6432,7 @@
<target state="new">Data Gathering</target> <target state="new">Data Gathering</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">60</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6439365426343089851" datatype="html"> <trans-unit id="6439365426343089851" datatype="html">
@ -6716,7 +6684,7 @@
<target state="translated">Estas seguro de borrar estos perfiles?</target> <target state="translated">Estas seguro de borrar estos perfiles?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">68</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8127349194179456616" datatype="html"> <trans-unit id="8127349194179456616" datatype="html">
@ -6724,7 +6692,7 @@
<target state="new">Oops! Could not delete profiles.</target> <target state="new">Oops! Could not delete profiles.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html"> <trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html">
@ -6868,7 +6836,7 @@
<target state="new">Australia</target> <target state="new">Australia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context> <context context-type="linenumber">74</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="21641575311466062" datatype="html"> <trans-unit id="21641575311466062" datatype="html">
@ -6876,7 +6844,7 @@
<target state="new">Austria</target> <target state="new">Austria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6787546539374733271" datatype="html"> <trans-unit id="6787546539374733271" datatype="html">
@ -6884,7 +6852,7 @@
<target state="new">Belgium</target> <target state="new">Belgium</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">75</context> <context context-type="linenumber">76</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8273479446468988017" datatype="html"> <trans-unit id="8273479446468988017" datatype="html">
@ -6892,7 +6860,7 @@
<target state="new">Bulgaria</target> <target state="new">Bulgaria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">76</context> <context context-type="linenumber">78</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3486679398271885916" datatype="html"> <trans-unit id="3486679398271885916" datatype="html">
@ -6900,7 +6868,7 @@
<target state="new">Canada</target> <target state="new">Canada</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context> <context context-type="linenumber">79</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="724957661944599897" datatype="html"> <trans-unit id="724957661944599897" datatype="html">
@ -6908,7 +6876,7 @@
<target state="new">Czech Republic</target> <target state="new">Czech Republic</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">78</context> <context context-type="linenumber">80</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8812557643580169825" datatype="html"> <trans-unit id="8812557643580169825" datatype="html">
@ -6916,7 +6884,7 @@
<target state="new">Finland</target> <target state="new">Finland</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">79</context> <context context-type="linenumber">81</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="956678847762152494" datatype="html"> <trans-unit id="956678847762152494" datatype="html">
@ -6924,7 +6892,7 @@
<target state="new">France</target> <target state="new">France</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">80</context> <context context-type="linenumber">82</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6014862663057951430" datatype="html"> <trans-unit id="6014862663057951430" datatype="html">
@ -6932,7 +6900,7 @@
<target state="new">Germany</target> <target state="new">Germany</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">83</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="212820117866187249" datatype="html"> <trans-unit id="212820117866187249" datatype="html">
@ -6940,7 +6908,7 @@
<target state="new">India</target> <target state="new">India</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">84</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2427223107800831324" datatype="html"> <trans-unit id="2427223107800831324" datatype="html">
@ -6948,7 +6916,7 @@
<target state="new">Italy</target> <target state="new">Italy</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">83</context> <context context-type="linenumber">85</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3783587393795767345" datatype="html"> <trans-unit id="3783587393795767345" datatype="html">
@ -6956,7 +6924,7 @@
<target state="new">Netherlands</target> <target state="new">Netherlands</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">87</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3591085113786124083" datatype="html"> <trans-unit id="3591085113786124083" datatype="html">
@ -6964,7 +6932,7 @@
<target state="new">New Zealand</target> <target state="new">New Zealand</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2356316679035829946" datatype="html"> <trans-unit id="2356316679035829946" datatype="html">
@ -6972,7 +6940,7 @@
<target state="new">Poland</target> <target state="new">Poland</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="545992063382313902" datatype="html"> <trans-unit id="545992063382313902" datatype="html">
@ -6980,7 +6948,7 @@
<target state="new">Romania</target> <target state="new">Romania</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">88</context> <context context-type="linenumber">90</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8039968326438721789" datatype="html"> <trans-unit id="8039968326438721789" datatype="html">
@ -6988,7 +6956,7 @@
<target state="new">South Africa</target> <target state="new">South Africa</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">92</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2040543873210054611" datatype="html"> <trans-unit id="2040543873210054611" datatype="html">
@ -6996,7 +6964,7 @@
<target state="new">Thailand</target> <target state="new">Thailand</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6133495983093212227" datatype="html"> <trans-unit id="6133495983093212227" datatype="html">
@ -7004,7 +6972,7 @@
<target state="new">United States</target> <target state="new">United States</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">93</context> <context context-type="linenumber">96</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1519954996184640001" datatype="html"> <trans-unit id="1519954996184640001" datatype="html">
@ -7036,7 +7004,7 @@
<target state="new">Inactive</target> <target state="new">Inactive</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -7348,7 +7316,7 @@
<target state="new">Ukraine</target> <target state="new">Ukraine</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">95</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html"> <trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html">
@ -7438,7 +7406,7 @@
<target state="new">Economic Market Cluster Risks</target> <target state="new">Economic Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">130</context> <context context-type="linenumber">165</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html"> <trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html">
@ -7566,7 +7534,7 @@
<target state="new">out of</target> <target state="new">out of</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html"> <trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html">
@ -7574,7 +7542,7 @@
<target state="new">rules align with your portfolio.</target> <target state="new">rules align with your portfolio.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">24</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3768927257183755959" datatype="html"> <trans-unit id="3768927257183755959" datatype="html">
@ -7590,7 +7558,7 @@
<target state="new">Asset Class Cluster Risks</target> <target state="new">Asset Class Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7156797854368699223" datatype="html"> <trans-unit id="7156797854368699223" datatype="html">
@ -7622,15 +7590,7 @@
<target state="new">AI prompt has been copied to the clipboard</target> <target state="new">AI prompt has been copied to the clipboard</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">153</context> <context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="4eecb3acb016e7d86740405b21599cdad8e0dd9f" datatype="html">
<source>Copy AI prompt to clipboard</source>
<target state="new">Copy AI prompt to clipboard</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">27</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7654,7 +7614,7 @@
<target state="new">Regional Market Cluster Risks</target> <target state="new">Regional Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">189</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8540986733881734625" datatype="html"> <trans-unit id="8540986733881734625" datatype="html">
@ -7726,7 +7686,7 @@
<target state="new">Open Duck.ai</target> <target state="new">Open Duck.ai</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7765,6 +7725,86 @@
<context context-type="linenumber">378</context> <context context-type="linenumber">378</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="afd6e2886f0bb7db3b54bef42bced4e7c67cc40c" datatype="html">
<source>Copy portfolio data to clipboard for AI prompt</source>
<target state="new">Copy portfolio data to clipboard for AI prompt</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="187b68f90f45d63f0d3b1e830ac92f98d2447313" datatype="html">
<source>Copy AI prompt to clipboard for analysis</source>
<target state="new">Copy AI prompt to clipboard for analysis</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5004849258025239958" datatype="html">
<source>Armenia</source>
<target state="new">Armenia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context>
</context-group>
</trans-unit>
<trans-unit id="7899437916897426237" datatype="html">
<source>British Virgin Islands</source>
<target state="new">British Virgin Islands</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context>
</context-group>
</trans-unit>
<trans-unit id="4830118002486243553" datatype="html">
<source>Singapore</source>
<target state="new">Singapore</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context>
</context-group>
</trans-unit>
<trans-unit id="e9048704780ed5bb3fc1af4f94d4fc5fdeb72cab" datatype="html">
<source>Terms and Conditions</source>
<target state="new">Terms and Conditions</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4051385e7211aebdb652666927a0564de3e74fd0" datatype="html">
<source>Please keep your security token safe. If you lose it, you will not be able to recover your account.</source>
<target state="new">Please keep your security token safe. If you lose it, you will not be able to recover your account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="0c165378eae03c8bd376d2819d94b108d9929c64" datatype="html">
<source>I understand that if I lose my security token, I cannot recover my account.</source>
<target state="new">I understand that if I lose my security token, I cannot recover my account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">
<source>Continue</source>
<target state="new">Continue</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="43a04e6b986ac8b5184330fdcc4235867d48bcf7" datatype="html">
<source>Here is your security token. It is only visible once, please store and keep it in a safe place.</source>
<target state="new">Here is your security token. It is only visible once, please store and keep it in a safe place.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">47</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

@ -320,10 +320,6 @@
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">231</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">92</context>
@ -354,11 +350,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">129</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">196</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
@ -590,7 +582,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context> <context context-type="linenumber">29</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
@ -882,15 +874,7 @@
<target state="translated">Voulez-vous vraiment supprimer ce code promotionnel ?</target> <target state="translated">Voulez-vous vraiment supprimer ce code promotionnel ?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">137</context> <context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="1110981355132746478" datatype="html">
<source>Do you really want to delete this currency?</source>
<target state="translated">Voulez-vous vraiment supprimer cette devise ?</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">150</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6470890277760887814" datatype="html"> <trans-unit id="6470890277760887814" datatype="html">
@ -898,7 +882,7 @@
<target state="translated">Voulez-vous vraiment vider le cache ?</target> <target state="translated">Voulez-vous vraiment vider le cache ?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">187</context> <context context-type="linenumber">171</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2712770700065625080" datatype="html"> <trans-unit id="2712770700065625080" datatype="html">
@ -906,7 +890,7 @@
<target state="translated">Veuillez définir votre message système :</target> <target state="translated">Veuillez définir votre message système :</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">191</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ec03f5c28b327fc7ecfc4b20a0a7cf14a75843ff" datatype="html"> <trans-unit id="ec03f5c28b327fc7ecfc4b20a0a7cf14a75843ff" datatype="html">
@ -933,14 +917,6 @@
<context context-type="linenumber">28</context> <context context-type="linenumber">28</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="37ff0697aa81b2777250c483d2ce1ebdaa5ab042" datatype="html">
<source>Exchange Rates</source>
<target state="translated">Taux de Conversion</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html"> <trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html">
<source>Add Currency</source> <source>Add Currency</source>
<target state="translated">Ajouter Devise</target> <target state="translated">Ajouter Devise</target>
@ -970,7 +946,7 @@
<target state="translated">Inscription de Nouveaux Utilisateurs</target> <target state="translated">Inscription de Nouveaux Utilisateurs</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">101</context> <context context-type="linenumber">34</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html"> <trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html">
@ -978,7 +954,7 @@
<target state="translated">Mode Lecture Seule</target> <target state="translated">Mode Lecture Seule</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">48</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="860e5f056b59410ec8db65cb53955505c6931752" datatype="html"> <trans-unit id="860e5f056b59410ec8db65cb53955505c6931752" datatype="html">
@ -986,7 +962,7 @@
<target state="translated">Message Système</target> <target state="translated">Message Système</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">139</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html"> <trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html">
@ -994,7 +970,7 @@
<target state="translated">Définir Message</target> <target state="translated">Définir Message</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">161</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html"> <trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html">
@ -1002,7 +978,7 @@
<target state="translated">Codes promotionnels</target> <target state="translated">Codes promotionnels</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html"> <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">
@ -1010,7 +986,7 @@
<target state="translated">Ajouter</target> <target state="translated">Ajouter</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">229</context> <context context-type="linenumber">162</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context>
@ -1022,7 +998,7 @@
<target state="translated">Maintenance</target> <target state="translated">Maintenance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">237</context> <context context-type="linenumber">170</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html"> <trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html">
@ -1030,7 +1006,7 @@
<target state="translated">Vider le Cache</target> <target state="translated">Vider le Cache</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2817099043823177227" datatype="html"> <trans-unit id="2817099043823177227" datatype="html">
@ -1378,7 +1354,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">98</context> <context context-type="linenumber">101</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6844699413925472826" datatype="html"> <trans-unit id="6844699413925472826" datatype="html">
@ -1390,7 +1366,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">99</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html"> <trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html">
@ -1438,7 +1414,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context> <context context-type="linenumber">44</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">52</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html"> <trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html">
@ -1586,7 +1566,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">34</context> <context context-type="linenumber">69</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8cce9d03787606e0052d19c2ae7e7fa5ff785e94" datatype="html"> <trans-unit id="8cce9d03787606e0052d19c2ae7e7fa5ff785e94" datatype="html">
@ -2738,7 +2718,7 @@
<target state="translated">Dividende</target> <target state="translated">Dividende</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -2758,7 +2738,7 @@
<target state="translated">Mensuel</target> <target state="translated">Mensuel</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">66</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -2774,7 +2754,7 @@
<target state="translated">Haut</target> <target state="translated">Haut</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">239</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html"> <trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html">
@ -2782,7 +2762,7 @@
<target state="translated">Bas</target> <target state="translated">Bas</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">246</context> <context context-type="linenumber">288</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html"> <trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html">
@ -2790,7 +2770,7 @@
<target state="translated">Évolution du Portefeuille</target> <target state="translated">Évolution du Portefeuille</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">341</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html"> <trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html">
@ -2798,7 +2778,7 @@
<target state="translated">Historique des Investissements</target> <target state="translated">Historique des Investissements</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">326</context> <context context-type="linenumber">368</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html"> <trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html">
@ -2806,7 +2786,7 @@
<target state="translated">Historique des Dividendes</target> <target state="translated">Historique des Dividendes</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">383</context> <context context-type="linenumber">425</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html"> <trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html">
@ -2928,6 +2908,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">2</context> <context context-type="linenumber">2</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="e1c4e91c3cf021ce1810d037887e0d7d4d1cface" datatype="html"> <trans-unit id="e1c4e91c3cf021ce1810d037887e0d7d4d1cface" datatype="html">
<source>Continue with Internet Identity</source> <source>Continue with Internet Identity</source>
@ -2950,23 +2934,7 @@
<target state="translated">Copier vers le presse-papier</target> <target state="translated">Copier vers le presse-papier</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">26</context> <context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="9397711dc06a5d217fb57befe8ae2fec4b8ed039" datatype="html">
<source> I agree to have stored my <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> from above in a secure place. If I lose it, I cannot get my account back. </source>
<target state="translated"> Je certifie avoir sauvé mon <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Jeton de Sécurité<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> ci-dessus dans un endroit sûr. Si je le perds, je ne pourrai pas récupérer mon compte. </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="6a9a8caf09dab1871f119d73dfb79db2eda37a35" datatype="html">
<source>Agree and continue</source>
<target state="translated">Accepter et continuer</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2446117790692479672" datatype="html"> <trans-unit id="2446117790692479672" datatype="html">
@ -3086,7 +3054,7 @@
<target state="translated">Voulez-vous vraiment supprimer cette activité ?</target> <target state="translated">Voulez-vous vraiment supprimer cette activité ?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">229</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="170f7de02b14690fb9c1999a16926c0044bfd5c1" datatype="html"> <trans-unit id="170f7de02b14690fb9c1999a16926c0044bfd5c1" datatype="html">
@ -3422,7 +3390,7 @@
<target state="translated">Annuel</target> <target state="translated">Annuel</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">56</context> <context context-type="linenumber">67</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -3758,7 +3726,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">178</context> <context context-type="linenumber">213</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="a6f322a22d0ae0b95dd9c70d43ba2c92de7ed49b" datatype="html"> <trans-unit id="a6f322a22d0ae0b95dd9c70d43ba2c92de7ed49b" datatype="html">
@ -3942,7 +3910,7 @@
<target state="translated">Voulez-vous vraiment supprimer toutes vos activités ?</target> <target state="translated">Voulez-vous vraiment supprimer toutes vos activités ?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">218</context> <context context-type="linenumber">219</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="166ccc92e1aa598f9056a260be209a0bab64d37a" datatype="html"> <trans-unit id="166ccc92e1aa598f9056a260be209a0bab64d37a" datatype="html">
@ -4170,7 +4138,7 @@
<target state="translated">Série en cours</target> <target state="translated">Série en cours</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">347</context> <context context-type="linenumber">389</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html"> <trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html">
@ -4178,7 +4146,7 @@
<target state="translated">Série la plus longue</target> <target state="translated">Série la plus longue</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">356</context> <context context-type="linenumber">398</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4845030128243887325" datatype="html"> <trans-unit id="4845030128243887325" datatype="html">
@ -4658,7 +4626,7 @@
<target state="translated">Japon</target> <target state="translated">Japon</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6fafe6662f57e08bca1f26bc2d2c9631a106ba29" datatype="html"> <trans-unit id="6fafe6662f57e08bca1f26bc2d2c9631a106ba29" datatype="html">
@ -5759,7 +5727,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">90</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3437679369074503203" datatype="html"> <trans-unit id="3437679369074503203" datatype="html">
@ -5903,7 +5871,7 @@
<target state="translated">Risques de change</target> <target state="translated">Risques de change</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">58</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html"> <trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html">
@ -5911,7 +5879,7 @@
<target state="translated">Risques liés aux regroupements de comptes</target> <target state="translated">Risques liés aux regroupements de comptes</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">106</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4b00337456de4a757f7abc8224d8b391f5d0634a" datatype="html"> <trans-unit id="4b00337456de4a757f7abc8224d8b391f5d0634a" datatype="html">
@ -6031,7 +5999,7 @@
<target state="translated">Confirmez la suppressoion de ce profil d&apos;actif?</target> <target state="translated">Confirmez la suppressoion de ce profil d&apos;actif?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">36</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7e892ba15f2c6c17e83510e273b3e10fc32ea016" datatype="html"> <trans-unit id="7e892ba15f2c6c17e83510e273b3e10fc32ea016" datatype="html">
@ -6111,7 +6079,7 @@
<target state="translated">Extreme Peur</target> <target state="translated">Extreme Peur</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">96</context> <context context-type="linenumber">99</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2634398159221205491" datatype="html"> <trans-unit id="2634398159221205491" datatype="html">
@ -6119,7 +6087,7 @@
<target state="translated">Extreme Cupidité</target> <target state="translated">Extreme Cupidité</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">100</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3511545370905854666" datatype="html"> <trans-unit id="3511545370905854666" datatype="html">
@ -6127,7 +6095,7 @@
<target state="translated">Neutre</target> <target state="translated">Neutre</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7183719827884539616" datatype="html"> <trans-unit id="7183719827884539616" datatype="html">
@ -6143,7 +6111,7 @@
<target state="translated">Confirmer la suppresion de ce message système?</target> <target state="translated">Confirmer la suppresion de ce message système?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">163</context> <context context-type="linenumber">147</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d762c43328624b5dd81f3c6a3023203ae9a7553f" datatype="html"> <trans-unit id="d762c43328624b5dd81f3c6a3023203ae9a7553f" datatype="html">
@ -6299,11 +6267,11 @@
<target state="translated">Investissement</target> <target state="translated">Investissement</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">61</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context>
@ -6315,7 +6283,7 @@
<target state="translated">Performance des Actifs en valeur absolue</target> <target state="translated">Performance des Actifs en valeur absolue</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">60</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html"> <trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html">
@ -6323,7 +6291,7 @@
<target state="translated"> Performance des Actifs </target> <target state="translated"> Performance des Actifs </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html"> <trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html">
@ -6331,7 +6299,7 @@
<target state="translated">Performance des devises en valeur absolue</target> <target state="translated">Performance des devises en valeur absolue</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">145</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html"> <trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html">
@ -6339,7 +6307,7 @@
<target state="translated"> Performance des devises </target> <target state="translated"> Performance des devises </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">169</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html"> <trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html">
@ -6347,7 +6315,7 @@
<target state="translated"> Performance nette absolue </target> <target state="translated"> Performance nette absolue </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">150</context> <context context-type="linenumber">192</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html"> <trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html">
@ -6355,7 +6323,7 @@
<target state="translated"> Performance nette </target> <target state="translated"> Performance nette </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">211</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3105754554141014845" datatype="html"> <trans-unit id="3105754554141014845" datatype="html">
@ -6463,7 +6431,7 @@
<target state="translated">Collecter les données</target> <target state="translated">Collecter les données</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">60</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6439365426343089851" datatype="html"> <trans-unit id="6439365426343089851" datatype="html">
@ -6715,7 +6683,7 @@
<target state="translated">Confirmer la suppression de ces Profils?</target> <target state="translated">Confirmer la suppression de ces Profils?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">68</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8127349194179456616" datatype="html"> <trans-unit id="8127349194179456616" datatype="html">
@ -6723,7 +6691,7 @@
<target state="translated">Oops! Echec de la suppression de Profils.</target> <target state="translated">Oops! Echec de la suppression de Profils.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html"> <trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html">
@ -6867,7 +6835,7 @@
<target state="translated">Australie</target> <target state="translated">Australie</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context> <context context-type="linenumber">74</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="21641575311466062" datatype="html"> <trans-unit id="21641575311466062" datatype="html">
@ -6875,7 +6843,7 @@
<target state="translated">Autriche</target> <target state="translated">Autriche</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6787546539374733271" datatype="html"> <trans-unit id="6787546539374733271" datatype="html">
@ -6883,7 +6851,7 @@
<target state="translated">Belgique</target> <target state="translated">Belgique</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">75</context> <context context-type="linenumber">76</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8273479446468988017" datatype="html"> <trans-unit id="8273479446468988017" datatype="html">
@ -6891,7 +6859,7 @@
<target state="translated">Bulgarie</target> <target state="translated">Bulgarie</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">76</context> <context context-type="linenumber">78</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3486679398271885916" datatype="html"> <trans-unit id="3486679398271885916" datatype="html">
@ -6899,7 +6867,7 @@
<target state="translated">Canada</target> <target state="translated">Canada</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context> <context context-type="linenumber">79</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="724957661944599897" datatype="html"> <trans-unit id="724957661944599897" datatype="html">
@ -6907,7 +6875,7 @@
<target state="translated">République Tchèque</target> <target state="translated">République Tchèque</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">78</context> <context context-type="linenumber">80</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8812557643580169825" datatype="html"> <trans-unit id="8812557643580169825" datatype="html">
@ -6915,7 +6883,7 @@
<target state="translated">Finlande</target> <target state="translated">Finlande</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">79</context> <context context-type="linenumber">81</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="956678847762152494" datatype="html"> <trans-unit id="956678847762152494" datatype="html">
@ -6923,7 +6891,7 @@
<target state="translated">France</target> <target state="translated">France</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">80</context> <context context-type="linenumber">82</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6014862663057951430" datatype="html"> <trans-unit id="6014862663057951430" datatype="html">
@ -6931,7 +6899,7 @@
<target state="translated">Allemagne</target> <target state="translated">Allemagne</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">83</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="212820117866187249" datatype="html"> <trans-unit id="212820117866187249" datatype="html">
@ -6939,7 +6907,7 @@
<target state="translated">Inde</target> <target state="translated">Inde</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">84</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2427223107800831324" datatype="html"> <trans-unit id="2427223107800831324" datatype="html">
@ -6947,7 +6915,7 @@
<target state="translated">Italie</target> <target state="translated">Italie</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">83</context> <context context-type="linenumber">85</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3783587393795767345" datatype="html"> <trans-unit id="3783587393795767345" datatype="html">
@ -6955,7 +6923,7 @@
<target state="translated">Pays-Bas</target> <target state="translated">Pays-Bas</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">87</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3591085113786124083" datatype="html"> <trans-unit id="3591085113786124083" datatype="html">
@ -6963,7 +6931,7 @@
<target state="translated">Nouvelle-Zélande</target> <target state="translated">Nouvelle-Zélande</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2356316679035829946" datatype="html"> <trans-unit id="2356316679035829946" datatype="html">
@ -6971,7 +6939,7 @@
<target state="translated">Pologne</target> <target state="translated">Pologne</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="545992063382313902" datatype="html"> <trans-unit id="545992063382313902" datatype="html">
@ -6979,7 +6947,7 @@
<target state="translated">Roumanie</target> <target state="translated">Roumanie</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">88</context> <context context-type="linenumber">90</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8039968326438721789" datatype="html"> <trans-unit id="8039968326438721789" datatype="html">
@ -6987,7 +6955,7 @@
<target state="translated">Afrique du Sud</target> <target state="translated">Afrique du Sud</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">92</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2040543873210054611" datatype="html"> <trans-unit id="2040543873210054611" datatype="html">
@ -6995,7 +6963,7 @@
<target state="translated">Thaïlande</target> <target state="translated">Thaïlande</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6133495983093212227" datatype="html"> <trans-unit id="6133495983093212227" datatype="html">
@ -7003,7 +6971,7 @@
<target state="translated">Etats-Unis</target> <target state="translated">Etats-Unis</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">93</context> <context context-type="linenumber">96</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1519954996184640001" datatype="html"> <trans-unit id="1519954996184640001" datatype="html">
@ -7035,7 +7003,7 @@
<target state="translated">Inactif</target> <target state="translated">Inactif</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -7347,7 +7315,7 @@
<target state="new">Ukraine</target> <target state="new">Ukraine</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">95</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html"> <trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html">
@ -7437,7 +7405,7 @@
<target state="new">Economic Market Cluster Risks</target> <target state="new">Economic Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">130</context> <context context-type="linenumber">165</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html"> <trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html">
@ -7565,7 +7533,7 @@
<target state="new">out of</target> <target state="new">out of</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html"> <trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html">
@ -7573,7 +7541,7 @@
<target state="new">rules align with your portfolio.</target> <target state="new">rules align with your portfolio.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">24</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3768927257183755959" datatype="html"> <trans-unit id="3768927257183755959" datatype="html">
@ -7589,7 +7557,7 @@
<target state="new">Asset Class Cluster Risks</target> <target state="new">Asset Class Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7156797854368699223" datatype="html"> <trans-unit id="7156797854368699223" datatype="html">
@ -7621,15 +7589,7 @@
<target state="new">AI prompt has been copied to the clipboard</target> <target state="new">AI prompt has been copied to the clipboard</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">153</context> <context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="4eecb3acb016e7d86740405b21599cdad8e0dd9f" datatype="html">
<source>Copy AI prompt to clipboard</source>
<target state="new">Copy AI prompt to clipboard</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">27</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7653,7 +7613,7 @@
<target state="new">Regional Market Cluster Risks</target> <target state="new">Regional Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">189</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8540986733881734625" datatype="html"> <trans-unit id="8540986733881734625" datatype="html">
@ -7725,7 +7685,7 @@
<target state="new">Open Duck.ai</target> <target state="new">Open Duck.ai</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7764,6 +7724,86 @@
<context context-type="linenumber">378</context> <context context-type="linenumber">378</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="afd6e2886f0bb7db3b54bef42bced4e7c67cc40c" datatype="html">
<source>Copy portfolio data to clipboard for AI prompt</source>
<target state="new">Copy portfolio data to clipboard for AI prompt</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="187b68f90f45d63f0d3b1e830ac92f98d2447313" datatype="html">
<source>Copy AI prompt to clipboard for analysis</source>
<target state="new">Copy AI prompt to clipboard for analysis</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5004849258025239958" datatype="html">
<source>Armenia</source>
<target state="new">Armenia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context>
</context-group>
</trans-unit>
<trans-unit id="7899437916897426237" datatype="html">
<source>British Virgin Islands</source>
<target state="new">British Virgin Islands</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context>
</context-group>
</trans-unit>
<trans-unit id="4830118002486243553" datatype="html">
<source>Singapore</source>
<target state="new">Singapore</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context>
</context-group>
</trans-unit>
<trans-unit id="e9048704780ed5bb3fc1af4f94d4fc5fdeb72cab" datatype="html">
<source>Terms and Conditions</source>
<target state="new">Terms and Conditions</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4051385e7211aebdb652666927a0564de3e74fd0" datatype="html">
<source>Please keep your security token safe. If you lose it, you will not be able to recover your account.</source>
<target state="new">Please keep your security token safe. If you lose it, you will not be able to recover your account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="0c165378eae03c8bd376d2819d94b108d9929c64" datatype="html">
<source>I understand that if I lose my security token, I cannot recover my account.</source>
<target state="new">I understand that if I lose my security token, I cannot recover my account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">
<source>Continue</source>
<target state="new">Continue</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="43a04e6b986ac8b5184330fdcc4235867d48bcf7" datatype="html">
<source>Here is your security token. It is only visible once, please store and keep it in a safe place.</source>
<target state="new">Here is your security token. It is only visible once, please store and keep it in a safe place.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">47</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

@ -17,6 +17,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">2</context> <context context-type="linenumber">2</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="0275b6f6c30c7b70cff02cb06c355ebd10724f86" datatype="html"> <trans-unit id="0275b6f6c30c7b70cff02cb06c355ebd10724f86" datatype="html">
<source>The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term.</source> <source>The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term.</source>
@ -261,10 +265,6 @@
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">231</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">92</context>
@ -295,11 +295,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">129</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">196</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
@ -531,7 +527,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context> <context context-type="linenumber">29</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
@ -623,15 +619,7 @@
<target state="translated">Vuoi davvero eliminare questo buono?</target> <target state="translated">Vuoi davvero eliminare questo buono?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">137</context> <context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="1110981355132746478" datatype="html">
<source>Do you really want to delete this currency?</source>
<target state="translated">Vuoi davvero eliminare questa valuta?</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">150</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6470890277760887814" datatype="html"> <trans-unit id="6470890277760887814" datatype="html">
@ -639,7 +627,7 @@
<target state="translated">Vuoi davvero svuotare la cache?</target> <target state="translated">Vuoi davvero svuotare la cache?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">187</context> <context context-type="linenumber">171</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2712770700065625080" datatype="html"> <trans-unit id="2712770700065625080" datatype="html">
@ -647,7 +635,7 @@
<target state="translated">Imposta il messaggio di sistema:</target> <target state="translated">Imposta il messaggio di sistema:</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">191</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ec03f5c28b327fc7ecfc4b20a0a7cf14a75843ff" datatype="html"> <trans-unit id="ec03f5c28b327fc7ecfc4b20a0a7cf14a75843ff" datatype="html">
@ -694,14 +682,6 @@
<context context-type="linenumber">45</context> <context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="37ff0697aa81b2777250c483d2ce1ebdaa5ab042" datatype="html">
<source>Exchange Rates</source>
<target state="translated">Tassi di cambio</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html"> <trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html">
<source>Add Currency</source> <source>Add Currency</source>
<target state="translated">Aggiungi valuta</target> <target state="translated">Aggiungi valuta</target>
@ -715,7 +695,7 @@
<target state="translated">Messaggio di sistema</target> <target state="translated">Messaggio di sistema</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">139</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html"> <trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html">
@ -723,7 +703,7 @@
<target state="translated">Imposta messaggio</target> <target state="translated">Imposta messaggio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">161</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html"> <trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html">
@ -731,7 +711,7 @@
<target state="translated">Modalità di sola lettura</target> <target state="translated">Modalità di sola lettura</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">48</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html"> <trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html">
@ -739,7 +719,7 @@
<target state="translated">Buoni sconto</target> <target state="translated">Buoni sconto</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html"> <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">
@ -747,7 +727,7 @@
<target state="translated">Aggiungi</target> <target state="translated">Aggiungi</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">229</context> <context context-type="linenumber">162</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context>
@ -759,7 +739,7 @@
<target state="translated">Bilancio domestico</target> <target state="translated">Bilancio domestico</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">237</context> <context context-type="linenumber">170</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html"> <trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html">
@ -767,7 +747,7 @@
<target state="translated">Svuota la cache</target> <target state="translated">Svuota la cache</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2817099043823177227" datatype="html"> <trans-unit id="2817099043823177227" datatype="html">
@ -1083,7 +1063,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context> <context context-type="linenumber">44</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">52</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html"> <trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html">
@ -1243,7 +1227,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">34</context> <context context-type="linenumber">69</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8cce9d03787606e0052d19c2ae7e7fa5ff785e94" datatype="html"> <trans-unit id="8cce9d03787606e0052d19c2ae7e7fa5ff785e94" datatype="html">
@ -2135,7 +2119,7 @@
<target state="translated">Cronologia degli investimenti</target> <target state="translated">Cronologia degli investimenti</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">326</context> <context context-type="linenumber">368</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6ae1c94f6bad274424f97e9bc8766242c1577447" datatype="html"> <trans-unit id="6ae1c94f6bad274424f97e9bc8766242c1577447" datatype="html">
@ -2143,7 +2127,7 @@
<target state="translated">In alto</target> <target state="translated">In alto</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">239</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html"> <trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html">
@ -2151,7 +2135,7 @@
<target state="translated">In basso</target> <target state="translated">In basso</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">246</context> <context context-type="linenumber">288</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html"> <trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html">
@ -2455,23 +2439,7 @@
<target state="translated">Copia negli appunti</target> <target state="translated">Copia negli appunti</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">26</context> <context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="9397711dc06a5d217fb57befe8ae2fec4b8ed039" datatype="html">
<source> I agree to have stored my <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> from above in a secure place. If I lose it, I cannot get my account back. </source>
<target state="translated">Accetto di aver memorizzato il mio <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Token di sicurezza<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> sopra citato in un luogo sicuro. Se lo perdo, non posso recuperare il mio account. </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="6a9a8caf09dab1871f119d73dfb79db2eda37a35" datatype="html">
<source>Agree and continue</source>
<target state="translated">Accetta e continua</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2446117790692479672" datatype="html"> <trans-unit id="2446117790692479672" datatype="html">
@ -2567,7 +2535,7 @@
<target state="translated">Vuoi davvero eliminare questa attività?</target> <target state="translated">Vuoi davvero eliminare questa attività?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">229</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="170f7de02b14690fb9c1999a16926c0044bfd5c1" datatype="html"> <trans-unit id="170f7de02b14690fb9c1999a16926c0044bfd5c1" datatype="html">
@ -2823,7 +2791,7 @@
<target state="translated">Mensile</target> <target state="translated">Mensile</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">66</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8511b16abcf065252b350d64e337ba2447db3ffb" datatype="html"> <trans-unit id="8511b16abcf065252b350d64e337ba2447db3ffb" datatype="html">
@ -2851,7 +2819,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">98</context> <context context-type="linenumber">101</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6844699413925472826" datatype="html"> <trans-unit id="6844699413925472826" datatype="html">
@ -2863,7 +2831,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">99</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4550487415324294802" datatype="html"> <trans-unit id="4550487415324294802" datatype="html">
@ -2987,7 +2955,7 @@
<target state="translated">Evoluzione del portafoglio</target> <target state="translated">Evoluzione del portafoglio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">341</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8192718423057883427" datatype="html"> <trans-unit id="8192718423057883427" datatype="html">
@ -3307,7 +3275,7 @@
<target state="translated">Dividendi</target> <target state="translated">Dividendi</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -3319,7 +3287,7 @@
<target state="translated">Cronologia dei dividendi</target> <target state="translated">Cronologia dei dividendi</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">383</context> <context context-type="linenumber">425</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7608037008789240367" datatype="html"> <trans-unit id="7608037008789240367" datatype="html">
@ -3335,7 +3303,7 @@
<target state="translated">Registrazione utente</target> <target state="translated">Registrazione utente</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">101</context> <context context-type="linenumber">34</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8763985977445247551" datatype="html"> <trans-unit id="8763985977445247551" datatype="html">
@ -3423,7 +3391,7 @@
<target state="translated">Annuale</target> <target state="translated">Annuale</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">56</context> <context context-type="linenumber">67</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -3759,7 +3727,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">178</context> <context context-type="linenumber">213</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="a6f322a22d0ae0b95dd9c70d43ba2c92de7ed49b" datatype="html"> <trans-unit id="a6f322a22d0ae0b95dd9c70d43ba2c92de7ed49b" datatype="html">
@ -3943,7 +3911,7 @@
<target state="translated">Vuoi davvero eliminare tutte le tue attività?</target> <target state="translated">Vuoi davvero eliminare tutte le tue attività?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">218</context> <context context-type="linenumber">219</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="166ccc92e1aa598f9056a260be209a0bab64d37a" datatype="html"> <trans-unit id="166ccc92e1aa598f9056a260be209a0bab64d37a" datatype="html">
@ -4171,7 +4139,7 @@
<target state="translated">Serie attuale</target> <target state="translated">Serie attuale</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">347</context> <context context-type="linenumber">389</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html"> <trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html">
@ -4179,7 +4147,7 @@
<target state="translated">Serie più lunga</target> <target state="translated">Serie più lunga</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">356</context> <context context-type="linenumber">398</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4845030128243887325" datatype="html"> <trans-unit id="4845030128243887325" datatype="html">
@ -4659,7 +4627,7 @@
<target state="translated">Giappone</target> <target state="translated">Giappone</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6fafe6662f57e08bca1f26bc2d2c9631a106ba29" datatype="html"> <trans-unit id="6fafe6662f57e08bca1f26bc2d2c9631a106ba29" datatype="html">
@ -5760,7 +5728,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">90</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3437679369074503203" datatype="html"> <trans-unit id="3437679369074503203" datatype="html">
@ -5904,7 +5872,7 @@
<target state="translated">Rischio di Concentrazione Valutario</target> <target state="translated">Rischio di Concentrazione Valutario</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">58</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html"> <trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html">
@ -5912,7 +5880,7 @@
<target state="translated">Rischi di Concentrazione dei Conti</target> <target state="translated">Rischi di Concentrazione dei Conti</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">106</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4b00337456de4a757f7abc8224d8b391f5d0634a" datatype="html"> <trans-unit id="4b00337456de4a757f7abc8224d8b391f5d0634a" datatype="html">
@ -6032,7 +6000,7 @@
<target state="translated">Vuoi veramente eliminare il profilo di questo asset?</target> <target state="translated">Vuoi veramente eliminare il profilo di questo asset?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">36</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7e892ba15f2c6c17e83510e273b3e10fc32ea016" datatype="html"> <trans-unit id="7e892ba15f2c6c17e83510e273b3e10fc32ea016" datatype="html">
@ -6112,7 +6080,7 @@
<target state="translated">Paura estrema</target> <target state="translated">Paura estrema</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">96</context> <context context-type="linenumber">99</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2634398159221205491" datatype="html"> <trans-unit id="2634398159221205491" datatype="html">
@ -6120,7 +6088,7 @@
<target state="translated">Avidità estrema</target> <target state="translated">Avidità estrema</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">100</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3511545370905854666" datatype="html"> <trans-unit id="3511545370905854666" datatype="html">
@ -6128,7 +6096,7 @@
<target state="translated">Neutrale</target> <target state="translated">Neutrale</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7183719827884539616" datatype="html"> <trans-unit id="7183719827884539616" datatype="html">
@ -6144,7 +6112,7 @@
<target state="translated">Confermi di voler cancellare questo messaggio di sistema?</target> <target state="translated">Confermi di voler cancellare questo messaggio di sistema?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">163</context> <context context-type="linenumber">147</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d762c43328624b5dd81f3c6a3023203ae9a7553f" datatype="html"> <trans-unit id="d762c43328624b5dd81f3c6a3023203ae9a7553f" datatype="html">
@ -6300,11 +6268,11 @@
<target state="translated">Investimento</target> <target state="translated">Investimento</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">61</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context>
@ -6316,7 +6284,7 @@
<target state="translated">Rendimento assoluto dell&apos;Asset</target> <target state="translated">Rendimento assoluto dell&apos;Asset</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">60</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html"> <trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html">
@ -6324,7 +6292,7 @@
<target state="translated"> Rendimento dell&apos;Asset </target> <target state="translated"> Rendimento dell&apos;Asset </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html"> <trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html">
@ -6332,7 +6300,7 @@
<target state="translated">Rendimento assoluto della Valuta</target> <target state="translated">Rendimento assoluto della Valuta</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">145</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html"> <trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html">
@ -6340,7 +6308,7 @@
<target state="translated"> Rendimento della Valuta </target> <target state="translated"> Rendimento della Valuta </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">169</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html"> <trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html">
@ -6348,7 +6316,7 @@
<target state="translated"> Rendimento assoluto della Valuta </target> <target state="translated"> Rendimento assoluto della Valuta </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">150</context> <context context-type="linenumber">192</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html"> <trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html">
@ -6356,7 +6324,7 @@
<target state="translated"> Rendimento Netto </target> <target state="translated"> Rendimento Netto </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">211</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3105754554141014845" datatype="html"> <trans-unit id="3105754554141014845" datatype="html">
@ -6464,7 +6432,7 @@
<target state="translated">Raccolta Dati</target> <target state="translated">Raccolta Dati</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">60</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6439365426343089851" datatype="html"> <trans-unit id="6439365426343089851" datatype="html">
@ -6716,7 +6684,7 @@
<target state="translated">Confermi di voler eliminare questi profili?</target> <target state="translated">Confermi di voler eliminare questi profili?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">68</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8127349194179456616" datatype="html"> <trans-unit id="8127349194179456616" datatype="html">
@ -6724,7 +6692,7 @@
<target state="translated">Ops! Impossibile eliminare i profili.</target> <target state="translated">Ops! Impossibile eliminare i profili.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html"> <trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html">
@ -6868,7 +6836,7 @@
<target state="translated">Australia</target> <target state="translated">Australia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context> <context context-type="linenumber">74</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="21641575311466062" datatype="html"> <trans-unit id="21641575311466062" datatype="html">
@ -6876,7 +6844,7 @@
<target state="translated">Austria</target> <target state="translated">Austria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6787546539374733271" datatype="html"> <trans-unit id="6787546539374733271" datatype="html">
@ -6884,7 +6852,7 @@
<target state="translated">Belgio</target> <target state="translated">Belgio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">75</context> <context context-type="linenumber">76</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8273479446468988017" datatype="html"> <trans-unit id="8273479446468988017" datatype="html">
@ -6892,7 +6860,7 @@
<target state="translated">Bulgaria</target> <target state="translated">Bulgaria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">76</context> <context context-type="linenumber">78</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3486679398271885916" datatype="html"> <trans-unit id="3486679398271885916" datatype="html">
@ -6900,7 +6868,7 @@
<target state="translated">Canada</target> <target state="translated">Canada</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context> <context context-type="linenumber">79</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="724957661944599897" datatype="html"> <trans-unit id="724957661944599897" datatype="html">
@ -6908,7 +6876,7 @@
<target state="translated">Repubblica Ceca</target> <target state="translated">Repubblica Ceca</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">78</context> <context context-type="linenumber">80</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8812557643580169825" datatype="html"> <trans-unit id="8812557643580169825" datatype="html">
@ -6916,7 +6884,7 @@
<target state="translated">Finlandia</target> <target state="translated">Finlandia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">79</context> <context context-type="linenumber">81</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="956678847762152494" datatype="html"> <trans-unit id="956678847762152494" datatype="html">
@ -6924,7 +6892,7 @@
<target state="translated">Francia</target> <target state="translated">Francia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">80</context> <context context-type="linenumber">82</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6014862663057951430" datatype="html"> <trans-unit id="6014862663057951430" datatype="html">
@ -6932,7 +6900,7 @@
<target state="translated">Germania</target> <target state="translated">Germania</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">83</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="212820117866187249" datatype="html"> <trans-unit id="212820117866187249" datatype="html">
@ -6940,7 +6908,7 @@
<target state="translated">India</target> <target state="translated">India</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">84</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2427223107800831324" datatype="html"> <trans-unit id="2427223107800831324" datatype="html">
@ -6948,7 +6916,7 @@
<target state="translated">Italia</target> <target state="translated">Italia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">83</context> <context context-type="linenumber">85</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3783587393795767345" datatype="html"> <trans-unit id="3783587393795767345" datatype="html">
@ -6956,7 +6924,7 @@
<target state="translated">Olanda</target> <target state="translated">Olanda</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">87</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3591085113786124083" datatype="html"> <trans-unit id="3591085113786124083" datatype="html">
@ -6964,7 +6932,7 @@
<target state="translated">Nuova Zelanda</target> <target state="translated">Nuova Zelanda</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2356316679035829946" datatype="html"> <trans-unit id="2356316679035829946" datatype="html">
@ -6972,7 +6940,7 @@
<target state="translated">Polonia</target> <target state="translated">Polonia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="545992063382313902" datatype="html"> <trans-unit id="545992063382313902" datatype="html">
@ -6980,7 +6948,7 @@
<target state="translated">Romania</target> <target state="translated">Romania</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">88</context> <context context-type="linenumber">90</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8039968326438721789" datatype="html"> <trans-unit id="8039968326438721789" datatype="html">
@ -6988,7 +6956,7 @@
<target state="translated">Sud Africa</target> <target state="translated">Sud Africa</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">92</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2040543873210054611" datatype="html"> <trans-unit id="2040543873210054611" datatype="html">
@ -6996,7 +6964,7 @@
<target state="translated">Tailandia</target> <target state="translated">Tailandia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6133495983093212227" datatype="html"> <trans-unit id="6133495983093212227" datatype="html">
@ -7004,7 +6972,7 @@
<target state="translated">Stati Uniti</target> <target state="translated">Stati Uniti</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">93</context> <context context-type="linenumber">96</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1519954996184640001" datatype="html"> <trans-unit id="1519954996184640001" datatype="html">
@ -7036,7 +7004,7 @@
<target state="translated">Inattivo</target> <target state="translated">Inattivo</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -7348,7 +7316,7 @@
<target state="translated">Ucraina</target> <target state="translated">Ucraina</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">95</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html"> <trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html">
@ -7438,7 +7406,7 @@
<target state="new">Economic Market Cluster Risks</target> <target state="new">Economic Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">130</context> <context context-type="linenumber">165</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html"> <trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html">
@ -7566,7 +7534,7 @@
<target state="new">out of</target> <target state="new">out of</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html"> <trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html">
@ -7574,7 +7542,7 @@
<target state="new">rules align with your portfolio.</target> <target state="new">rules align with your portfolio.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">24</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3768927257183755959" datatype="html"> <trans-unit id="3768927257183755959" datatype="html">
@ -7590,7 +7558,7 @@
<target state="new">Asset Class Cluster Risks</target> <target state="new">Asset Class Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7156797854368699223" datatype="html"> <trans-unit id="7156797854368699223" datatype="html">
@ -7622,15 +7590,7 @@
<target state="new">AI prompt has been copied to the clipboard</target> <target state="new">AI prompt has been copied to the clipboard</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">153</context> <context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="4eecb3acb016e7d86740405b21599cdad8e0dd9f" datatype="html">
<source>Copy AI prompt to clipboard</source>
<target state="new">Copy AI prompt to clipboard</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">27</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7654,7 +7614,7 @@
<target state="new">Regional Market Cluster Risks</target> <target state="new">Regional Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">189</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8540986733881734625" datatype="html"> <trans-unit id="8540986733881734625" datatype="html">
@ -7726,7 +7686,7 @@
<target state="new">Open Duck.ai</target> <target state="new">Open Duck.ai</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7765,6 +7725,86 @@
<context context-type="linenumber">378</context> <context context-type="linenumber">378</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="afd6e2886f0bb7db3b54bef42bced4e7c67cc40c" datatype="html">
<source>Copy portfolio data to clipboard for AI prompt</source>
<target state="new">Copy portfolio data to clipboard for AI prompt</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="187b68f90f45d63f0d3b1e830ac92f98d2447313" datatype="html">
<source>Copy AI prompt to clipboard for analysis</source>
<target state="new">Copy AI prompt to clipboard for analysis</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5004849258025239958" datatype="html">
<source>Armenia</source>
<target state="new">Armenia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context>
</context-group>
</trans-unit>
<trans-unit id="7899437916897426237" datatype="html">
<source>British Virgin Islands</source>
<target state="new">British Virgin Islands</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context>
</context-group>
</trans-unit>
<trans-unit id="4830118002486243553" datatype="html">
<source>Singapore</source>
<target state="new">Singapore</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context>
</context-group>
</trans-unit>
<trans-unit id="e9048704780ed5bb3fc1af4f94d4fc5fdeb72cab" datatype="html">
<source>Terms and Conditions</source>
<target state="new">Terms and Conditions</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4051385e7211aebdb652666927a0564de3e74fd0" datatype="html">
<source>Please keep your security token safe. If you lose it, you will not be able to recover your account.</source>
<target state="new">Please keep your security token safe. If you lose it, you will not be able to recover your account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="0c165378eae03c8bd376d2819d94b108d9929c64" datatype="html">
<source>I understand that if I lose my security token, I cannot recover my account.</source>
<target state="new">I understand that if I lose my security token, I cannot recover my account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">
<source>Continue</source>
<target state="new">Continue</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="43a04e6b986ac8b5184330fdcc4235867d48bcf7" datatype="html">
<source>Here is your security token. It is only visible once, please store and keep it in a safe place.</source>
<target state="new">Here is your security token. It is only visible once, please store and keep it in a safe place.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">47</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

@ -16,6 +16,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">2</context> <context context-type="linenumber">2</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="0275b6f6c30c7b70cff02cb06c355ebd10724f86" datatype="html"> <trans-unit id="0275b6f6c30c7b70cff02cb06c355ebd10724f86" datatype="html">
<source>The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term.</source> <source>The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term.</source>
@ -260,10 +264,6 @@
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">231</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">92</context>
@ -294,11 +294,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">129</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">196</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
@ -530,7 +526,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context> <context context-type="linenumber">29</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
@ -622,15 +618,7 @@
<target state="translated">Wil je deze coupon echt verwijderen?</target> <target state="translated">Wil je deze coupon echt verwijderen?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">137</context> <context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="1110981355132746478" datatype="html">
<source>Do you really want to delete this currency?</source>
<target state="translated">Wil je deze valuta echt verwijderen?</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">150</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6470890277760887814" datatype="html"> <trans-unit id="6470890277760887814" datatype="html">
@ -638,7 +626,7 @@
<target state="translated">Wil je echt de cache legen?</target> <target state="translated">Wil je echt de cache legen?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">187</context> <context context-type="linenumber">171</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2712770700065625080" datatype="html"> <trans-unit id="2712770700065625080" datatype="html">
@ -646,7 +634,7 @@
<target state="translated">Stel je systeemboodschap in:</target> <target state="translated">Stel je systeemboodschap in:</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">191</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ec03f5c28b327fc7ecfc4b20a0a7cf14a75843ff" datatype="html"> <trans-unit id="ec03f5c28b327fc7ecfc4b20a0a7cf14a75843ff" datatype="html">
@ -693,14 +681,6 @@
<context context-type="linenumber">45</context> <context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="37ff0697aa81b2777250c483d2ce1ebdaa5ab042" datatype="html">
<source>Exchange Rates</source>
<target state="translated">Wisselkoersen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html"> <trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html">
<source>Add Currency</source> <source>Add Currency</source>
<target state="translated">Valuta toevoegen</target> <target state="translated">Valuta toevoegen</target>
@ -714,7 +694,7 @@
<target state="translated">Systeembericht</target> <target state="translated">Systeembericht</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">139</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html"> <trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html">
@ -722,7 +702,7 @@
<target state="translated">Bericht instellen</target> <target state="translated">Bericht instellen</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">161</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html"> <trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html">
@ -730,7 +710,7 @@
<target state="translated">Alleen lezen</target> <target state="translated">Alleen lezen</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">48</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html"> <trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html">
@ -738,7 +718,7 @@
<target state="translated">Coupons</target> <target state="translated">Coupons</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html"> <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">
@ -746,7 +726,7 @@
<target state="translated">Toevoegen</target> <target state="translated">Toevoegen</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">229</context> <context context-type="linenumber">162</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context>
@ -758,7 +738,7 @@
<target state="translated">Huishouding</target> <target state="translated">Huishouding</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">237</context> <context context-type="linenumber">170</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html"> <trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html">
@ -766,7 +746,7 @@
<target state="translated">Cache legen</target> <target state="translated">Cache legen</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2817099043823177227" datatype="html"> <trans-unit id="2817099043823177227" datatype="html">
@ -1082,7 +1062,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context> <context context-type="linenumber">44</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">52</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html"> <trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html">
@ -1242,7 +1226,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">34</context> <context context-type="linenumber">69</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8cce9d03787606e0052d19c2ae7e7fa5ff785e94" datatype="html"> <trans-unit id="8cce9d03787606e0052d19c2ae7e7fa5ff785e94" datatype="html">
@ -2134,7 +2118,7 @@
<target state="translated">Tijdlijn investeringen</target> <target state="translated">Tijdlijn investeringen</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">326</context> <context context-type="linenumber">368</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6ae1c94f6bad274424f97e9bc8766242c1577447" datatype="html"> <trans-unit id="6ae1c94f6bad274424f97e9bc8766242c1577447" datatype="html">
@ -2142,7 +2126,7 @@
<target state="translated">Winnaars</target> <target state="translated">Winnaars</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">239</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html"> <trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html">
@ -2150,7 +2134,7 @@
<target state="translated">Verliezers</target> <target state="translated">Verliezers</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">246</context> <context context-type="linenumber">288</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html"> <trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html">
@ -2454,23 +2438,7 @@
<target state="translated">Kopieer naar klembord</target> <target state="translated">Kopieer naar klembord</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">26</context> <context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="9397711dc06a5d217fb57befe8ae2fec4b8ed039" datatype="html">
<source> I agree to have stored my <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> from above in a secure place. If I lose it, I cannot get my account back. </source>
<target state="translated">Ik ga ermee akkoord dat ik mijn <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> van hierboven op een veilige plaats heb opgeslagen. Als ik het verlies, kan ik mijn account niet terug krijgen. </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="6a9a8caf09dab1871f119d73dfb79db2eda37a35" datatype="html">
<source>Agree and continue</source>
<target state="translated">Akkoord en doorgaan</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2446117790692479672" datatype="html"> <trans-unit id="2446117790692479672" datatype="html">
@ -2566,7 +2534,7 @@
<target state="translated">Wil je deze activiteit echt verwijderen?</target> <target state="translated">Wil je deze activiteit echt verwijderen?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">229</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="170f7de02b14690fb9c1999a16926c0044bfd5c1" datatype="html"> <trans-unit id="170f7de02b14690fb9c1999a16926c0044bfd5c1" datatype="html">
@ -2822,7 +2790,7 @@
<target state="translated">Maandelijks</target> <target state="translated">Maandelijks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">66</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8511b16abcf065252b350d64e337ba2447db3ffb" datatype="html"> <trans-unit id="8511b16abcf065252b350d64e337ba2447db3ffb" datatype="html">
@ -2850,7 +2818,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">98</context> <context context-type="linenumber">101</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6844699413925472826" datatype="html"> <trans-unit id="6844699413925472826" datatype="html">
@ -2862,7 +2830,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">99</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4550487415324294802" datatype="html"> <trans-unit id="4550487415324294802" datatype="html">
@ -2986,7 +2954,7 @@
<target state="translated">Waardeontwikkeling van portefeuille</target> <target state="translated">Waardeontwikkeling van portefeuille</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">341</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8192718423057883427" datatype="html"> <trans-unit id="8192718423057883427" datatype="html">
@ -3306,7 +3274,7 @@
<target state="translated">Dividend</target> <target state="translated">Dividend</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -3318,7 +3286,7 @@
<target state="translated">Tijdlijn dividend</target> <target state="translated">Tijdlijn dividend</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">383</context> <context context-type="linenumber">425</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7608037008789240367" datatype="html"> <trans-unit id="7608037008789240367" datatype="html">
@ -3334,7 +3302,7 @@
<target state="translated">Account aanmaken</target> <target state="translated">Account aanmaken</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">101</context> <context context-type="linenumber">34</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8763985977445247551" datatype="html"> <trans-unit id="8763985977445247551" datatype="html">
@ -3422,7 +3390,7 @@
<target state="translated">Jaarlijks</target> <target state="translated">Jaarlijks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">56</context> <context context-type="linenumber">67</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -3758,7 +3726,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">178</context> <context context-type="linenumber">213</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="a6f322a22d0ae0b95dd9c70d43ba2c92de7ed49b" datatype="html"> <trans-unit id="a6f322a22d0ae0b95dd9c70d43ba2c92de7ed49b" datatype="html">
@ -3942,7 +3910,7 @@
<target state="new">Wil je echt al je activiteiten verwijderen?</target> <target state="new">Wil je echt al je activiteiten verwijderen?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">218</context> <context context-type="linenumber">219</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="166ccc92e1aa598f9056a260be209a0bab64d37a" datatype="html"> <trans-unit id="166ccc92e1aa598f9056a260be209a0bab64d37a" datatype="html">
@ -4170,7 +4138,7 @@
<target state="translated">Huidige reeks</target> <target state="translated">Huidige reeks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">347</context> <context context-type="linenumber">389</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html"> <trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html">
@ -4178,7 +4146,7 @@
<target state="translated">Langste reeks</target> <target state="translated">Langste reeks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">356</context> <context context-type="linenumber">398</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4845030128243887325" datatype="html"> <trans-unit id="4845030128243887325" datatype="html">
@ -4658,7 +4626,7 @@
<target state="translated">Japan</target> <target state="translated">Japan</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6fafe6662f57e08bca1f26bc2d2c9631a106ba29" datatype="html"> <trans-unit id="6fafe6662f57e08bca1f26bc2d2c9631a106ba29" datatype="html">
@ -5759,7 +5727,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">90</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3437679369074503203" datatype="html"> <trans-unit id="3437679369074503203" datatype="html">
@ -5903,7 +5871,7 @@
<target state="new">Currency Cluster Risks</target> <target state="new">Currency Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">58</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html"> <trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html">
@ -5911,7 +5879,7 @@
<target state="new">Account Cluster Risks</target> <target state="new">Account Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">106</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4b00337456de4a757f7abc8224d8b391f5d0634a" datatype="html"> <trans-unit id="4b00337456de4a757f7abc8224d8b391f5d0634a" datatype="html">
@ -6031,7 +5999,7 @@
<target state="new">Do you really want to delete this asset profile?</target> <target state="new">Do you really want to delete this asset profile?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">36</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7e892ba15f2c6c17e83510e273b3e10fc32ea016" datatype="html"> <trans-unit id="7e892ba15f2c6c17e83510e273b3e10fc32ea016" datatype="html">
@ -6111,7 +6079,7 @@
<target state="new">Extreme Fear</target> <target state="new">Extreme Fear</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">96</context> <context context-type="linenumber">99</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2634398159221205491" datatype="html"> <trans-unit id="2634398159221205491" datatype="html">
@ -6119,7 +6087,7 @@
<target state="new">Extreme Greed</target> <target state="new">Extreme Greed</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">100</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3511545370905854666" datatype="html"> <trans-unit id="3511545370905854666" datatype="html">
@ -6127,7 +6095,7 @@
<target state="new">Neutral</target> <target state="new">Neutral</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7183719827884539616" datatype="html"> <trans-unit id="7183719827884539616" datatype="html">
@ -6143,7 +6111,7 @@
<target state="new">Do you really want to delete this system message?</target> <target state="new">Do you really want to delete this system message?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">163</context> <context context-type="linenumber">147</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d762c43328624b5dd81f3c6a3023203ae9a7553f" datatype="html"> <trans-unit id="d762c43328624b5dd81f3c6a3023203ae9a7553f" datatype="html">
@ -6299,11 +6267,11 @@
<target state="new">Investment</target> <target state="new">Investment</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">61</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context>
@ -6315,7 +6283,7 @@
<target state="new">Absolute Asset Performance</target> <target state="new">Absolute Asset Performance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">60</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html"> <trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html">
@ -6323,7 +6291,7 @@
<target state="new"> Asset Performance </target> <target state="new"> Asset Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html"> <trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html">
@ -6331,7 +6299,7 @@
<target state="new">Absolute Currency Performance</target> <target state="new">Absolute Currency Performance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">145</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html"> <trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html">
@ -6339,7 +6307,7 @@
<target state="new"> Currency Performance </target> <target state="new"> Currency Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">169</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html"> <trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html">
@ -6347,7 +6315,7 @@
<target state="new"> Absolute Net Performance </target> <target state="new"> Absolute Net Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">150</context> <context context-type="linenumber">192</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html"> <trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html">
@ -6355,7 +6323,7 @@
<target state="new"> Net Performance </target> <target state="new"> Net Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">211</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3105754554141014845" datatype="html"> <trans-unit id="3105754554141014845" datatype="html">
@ -6463,7 +6431,7 @@
<target state="new">Data Gathering</target> <target state="new">Data Gathering</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">60</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6439365426343089851" datatype="html"> <trans-unit id="6439365426343089851" datatype="html">
@ -6715,7 +6683,7 @@
<target state="new">Do you really want to delete these profiles?</target> <target state="new">Do you really want to delete these profiles?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">68</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8127349194179456616" datatype="html"> <trans-unit id="8127349194179456616" datatype="html">
@ -6723,7 +6691,7 @@
<target state="new">Oops! Could not delete profiles.</target> <target state="new">Oops! Could not delete profiles.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html"> <trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html">
@ -6867,7 +6835,7 @@
<target state="new">Australia</target> <target state="new">Australia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context> <context context-type="linenumber">74</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="21641575311466062" datatype="html"> <trans-unit id="21641575311466062" datatype="html">
@ -6875,7 +6843,7 @@
<target state="new">Austria</target> <target state="new">Austria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6787546539374733271" datatype="html"> <trans-unit id="6787546539374733271" datatype="html">
@ -6883,7 +6851,7 @@
<target state="new">Belgium</target> <target state="new">Belgium</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">75</context> <context context-type="linenumber">76</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8273479446468988017" datatype="html"> <trans-unit id="8273479446468988017" datatype="html">
@ -6891,7 +6859,7 @@
<target state="new">Bulgaria</target> <target state="new">Bulgaria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">76</context> <context context-type="linenumber">78</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3486679398271885916" datatype="html"> <trans-unit id="3486679398271885916" datatype="html">
@ -6899,7 +6867,7 @@
<target state="new">Canada</target> <target state="new">Canada</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context> <context context-type="linenumber">79</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="724957661944599897" datatype="html"> <trans-unit id="724957661944599897" datatype="html">
@ -6907,7 +6875,7 @@
<target state="new">Czech Republic</target> <target state="new">Czech Republic</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">78</context> <context context-type="linenumber">80</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8812557643580169825" datatype="html"> <trans-unit id="8812557643580169825" datatype="html">
@ -6915,7 +6883,7 @@
<target state="new">Finland</target> <target state="new">Finland</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">79</context> <context context-type="linenumber">81</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="956678847762152494" datatype="html"> <trans-unit id="956678847762152494" datatype="html">
@ -6923,7 +6891,7 @@
<target state="new">France</target> <target state="new">France</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">80</context> <context context-type="linenumber">82</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6014862663057951430" datatype="html"> <trans-unit id="6014862663057951430" datatype="html">
@ -6931,7 +6899,7 @@
<target state="new">Germany</target> <target state="new">Germany</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">83</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="212820117866187249" datatype="html"> <trans-unit id="212820117866187249" datatype="html">
@ -6939,7 +6907,7 @@
<target state="new">India</target> <target state="new">India</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">84</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2427223107800831324" datatype="html"> <trans-unit id="2427223107800831324" datatype="html">
@ -6947,7 +6915,7 @@
<target state="new">Italy</target> <target state="new">Italy</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">83</context> <context context-type="linenumber">85</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3783587393795767345" datatype="html"> <trans-unit id="3783587393795767345" datatype="html">
@ -6955,7 +6923,7 @@
<target state="new">Netherlands</target> <target state="new">Netherlands</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">87</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3591085113786124083" datatype="html"> <trans-unit id="3591085113786124083" datatype="html">
@ -6963,7 +6931,7 @@
<target state="new">New Zealand</target> <target state="new">New Zealand</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2356316679035829946" datatype="html"> <trans-unit id="2356316679035829946" datatype="html">
@ -6971,7 +6939,7 @@
<target state="new">Poland</target> <target state="new">Poland</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="545992063382313902" datatype="html"> <trans-unit id="545992063382313902" datatype="html">
@ -6979,7 +6947,7 @@
<target state="new">Romania</target> <target state="new">Romania</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">88</context> <context context-type="linenumber">90</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8039968326438721789" datatype="html"> <trans-unit id="8039968326438721789" datatype="html">
@ -6987,7 +6955,7 @@
<target state="new">South Africa</target> <target state="new">South Africa</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">92</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2040543873210054611" datatype="html"> <trans-unit id="2040543873210054611" datatype="html">
@ -6995,7 +6963,7 @@
<target state="new">Thailand</target> <target state="new">Thailand</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6133495983093212227" datatype="html"> <trans-unit id="6133495983093212227" datatype="html">
@ -7003,7 +6971,7 @@
<target state="new">United States</target> <target state="new">United States</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">93</context> <context context-type="linenumber">96</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1519954996184640001" datatype="html"> <trans-unit id="1519954996184640001" datatype="html">
@ -7035,7 +7003,7 @@
<target state="new">Inactive</target> <target state="new">Inactive</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -7347,7 +7315,7 @@
<target state="new">Ukraine</target> <target state="new">Ukraine</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">95</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html"> <trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html">
@ -7437,7 +7405,7 @@
<target state="new">Economic Market Cluster Risks</target> <target state="new">Economic Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">130</context> <context context-type="linenumber">165</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html"> <trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html">
@ -7565,7 +7533,7 @@
<target state="new">out of</target> <target state="new">out of</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html"> <trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html">
@ -7573,7 +7541,7 @@
<target state="new">rules align with your portfolio.</target> <target state="new">rules align with your portfolio.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">24</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3768927257183755959" datatype="html"> <trans-unit id="3768927257183755959" datatype="html">
@ -7589,7 +7557,7 @@
<target state="new">Asset Class Cluster Risks</target> <target state="new">Asset Class Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7156797854368699223" datatype="html"> <trans-unit id="7156797854368699223" datatype="html">
@ -7621,15 +7589,7 @@
<target state="new">AI prompt has been copied to the clipboard</target> <target state="new">AI prompt has been copied to the clipboard</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">153</context> <context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="4eecb3acb016e7d86740405b21599cdad8e0dd9f" datatype="html">
<source>Copy AI prompt to clipboard</source>
<target state="new">Copy AI prompt to clipboard</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">27</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7653,7 +7613,7 @@
<target state="new">Regional Market Cluster Risks</target> <target state="new">Regional Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">189</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8540986733881734625" datatype="html"> <trans-unit id="8540986733881734625" datatype="html">
@ -7725,7 +7685,7 @@
<target state="new">Open Duck.ai</target> <target state="new">Open Duck.ai</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7764,6 +7724,86 @@
<context context-type="linenumber">378</context> <context context-type="linenumber">378</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="afd6e2886f0bb7db3b54bef42bced4e7c67cc40c" datatype="html">
<source>Copy portfolio data to clipboard for AI prompt</source>
<target state="new">Copy portfolio data to clipboard for AI prompt</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="187b68f90f45d63f0d3b1e830ac92f98d2447313" datatype="html">
<source>Copy AI prompt to clipboard for analysis</source>
<target state="new">Copy AI prompt to clipboard for analysis</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5004849258025239958" datatype="html">
<source>Armenia</source>
<target state="new">Armenia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context>
</context-group>
</trans-unit>
<trans-unit id="7899437916897426237" datatype="html">
<source>British Virgin Islands</source>
<target state="new">British Virgin Islands</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context>
</context-group>
</trans-unit>
<trans-unit id="4830118002486243553" datatype="html">
<source>Singapore</source>
<target state="new">Singapore</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context>
</context-group>
</trans-unit>
<trans-unit id="e9048704780ed5bb3fc1af4f94d4fc5fdeb72cab" datatype="html">
<source>Terms and Conditions</source>
<target state="new">Terms and Conditions</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4051385e7211aebdb652666927a0564de3e74fd0" datatype="html">
<source>Please keep your security token safe. If you lose it, you will not be able to recover your account.</source>
<target state="new">Please keep your security token safe. If you lose it, you will not be able to recover your account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="0c165378eae03c8bd376d2819d94b108d9929c64" datatype="html">
<source>I understand that if I lose my security token, I cannot recover my account.</source>
<target state="new">I understand that if I lose my security token, I cannot recover my account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">
<source>Continue</source>
<target state="new">Continue</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="43a04e6b986ac8b5184330fdcc4235867d48bcf7" datatype="html">
<source>Here is your security token. It is only visible once, please store and keep it in a safe place.</source>
<target state="new">Here is your security token. It is only visible once, please store and keep it in a safe place.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">47</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

@ -469,6 +469,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">2</context> <context context-type="linenumber">2</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="41d338980f469b334618a07e799b4aa40fcf4834" datatype="html"> <trans-unit id="41d338980f469b334618a07e799b4aa40fcf4834" datatype="html">
<source>Personal Finance</source> <source>Personal Finance</source>
@ -1109,10 +1113,6 @@
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">231</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">92</context>
@ -1143,11 +1143,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">129</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">196</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
@ -1379,7 +1375,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context> <context context-type="linenumber">29</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
@ -1455,7 +1451,7 @@
<target state="translated">Czy na pewno chcesz usunąć ten profil aktywów?</target> <target state="translated">Czy na pewno chcesz usunąć ten profil aktywów?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">36</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4550487415324294802" datatype="html"> <trans-unit id="4550487415324294802" datatype="html">
@ -1787,15 +1783,7 @@
<target state="translated">Czy naprawdę chcesz usunąć ten kupon?</target> <target state="translated">Czy naprawdę chcesz usunąć ten kupon?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">137</context> <context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="1110981355132746478" datatype="html">
<source>Do you really want to delete this currency?</source>
<target state="translated">Czy naprawdę chcesz usunąć tę walutę?</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">150</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="297546430113071258" datatype="html"> <trans-unit id="297546430113071258" datatype="html">
@ -1803,7 +1791,7 @@
<target state="translated">Czy naprawdę chcesz usunąć tę wiadomość systemową?</target> <target state="translated">Czy naprawdę chcesz usunąć tę wiadomość systemową?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">163</context> <context context-type="linenumber">147</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6470890277760887814" datatype="html"> <trans-unit id="6470890277760887814" datatype="html">
@ -1811,7 +1799,7 @@
<target state="translated">Czy naprawdę chcesz wyczyścić pamięć podręczną?</target> <target state="translated">Czy naprawdę chcesz wyczyścić pamięć podręczną?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">187</context> <context context-type="linenumber">171</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2712770700065625080" datatype="html"> <trans-unit id="2712770700065625080" datatype="html">
@ -1819,7 +1807,7 @@
<target state="translated">Proszę ustawić swoją wiadomość systemową:</target> <target state="translated">Proszę ustawić swoją wiadomość systemową:</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">191</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html"> <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">
@ -1854,14 +1842,6 @@
<context context-type="linenumber">28</context> <context context-type="linenumber">28</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="37ff0697aa81b2777250c483d2ce1ebdaa5ab042" datatype="html">
<source>Exchange Rates</source>
<target state="translated">Kursy Walut</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html"> <trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html">
<source>Add Currency</source> <source>Add Currency</source>
<target state="translated">Dodaj Walutę</target> <target state="translated">Dodaj Walutę</target>
@ -1875,7 +1855,7 @@
<target state="translated">Rejestracja Użytkownika</target> <target state="translated">Rejestracja Użytkownika</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">101</context> <context context-type="linenumber">34</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html"> <trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html">
@ -1883,7 +1863,7 @@
<target state="translated">Tryb Tylko do Odczytu</target> <target state="translated">Tryb Tylko do Odczytu</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">48</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="860e5f056b59410ec8db65cb53955505c6931752" datatype="html"> <trans-unit id="860e5f056b59410ec8db65cb53955505c6931752" datatype="html">
@ -1891,7 +1871,7 @@
<target state="translated">Wiadomość Systemowa</target> <target state="translated">Wiadomość Systemowa</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">139</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html"> <trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html">
@ -1899,7 +1879,7 @@
<target state="translated">Ustaw Wiadomość</target> <target state="translated">Ustaw Wiadomość</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">161</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html"> <trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html">
@ -1907,7 +1887,7 @@
<target state="translated">Kupony</target> <target state="translated">Kupony</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html"> <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">
@ -1915,7 +1895,7 @@
<target state="translated">Dodaj</target> <target state="translated">Dodaj</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">229</context> <context context-type="linenumber">162</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context>
@ -1927,7 +1907,7 @@
<target state="translated">Konserwacja</target> <target state="translated">Konserwacja</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">237</context> <context context-type="linenumber">170</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html"> <trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html">
@ -1935,7 +1915,7 @@
<target state="translated">Wyczyszczenie pamięci podręcznej</target> <target state="translated">Wyczyszczenie pamięci podręcznej</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e587f3aaad8881a0b7732fb3e86df8a4c91f25d2" datatype="html"> <trans-unit id="e587f3aaad8881a0b7732fb3e86df8a4c91f25d2" datatype="html">
@ -2327,7 +2307,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">98</context> <context context-type="linenumber">101</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6844699413925472826" datatype="html"> <trans-unit id="6844699413925472826" datatype="html">
@ -2339,7 +2319,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">99</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html"> <trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html">
@ -2471,7 +2451,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context> <context context-type="linenumber">44</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">52</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html"> <trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html">
@ -2587,7 +2571,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">178</context> <context context-type="linenumber">213</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="de518fa0cd3a454e84102c0d9984c4a3cfdb590d" datatype="html"> <trans-unit id="de518fa0cd3a454e84102c0d9984c4a3cfdb590d" datatype="html">
@ -2635,7 +2619,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">34</context> <context context-type="linenumber">69</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="311828ec96f91f6f530219b07d5531a8aa507d64" datatype="html"> <trans-unit id="311828ec96f91f6f530219b07d5531a8aa507d64" datatype="html">
@ -4207,7 +4191,7 @@
<target state="translated">Czy na pewno chcesz usunąć te aktywności?</target> <target state="translated">Czy na pewno chcesz usunąć te aktywności?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">218</context> <context context-type="linenumber">219</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72ba3bcdd8350cb8bf462e217a28ec7f7a48bb44" datatype="html"> <trans-unit id="72ba3bcdd8350cb8bf462e217a28ec7f7a48bb44" datatype="html">
@ -4655,7 +4639,7 @@
<target state="translated">Dywidenda</target> <target state="translated">Dywidenda</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -4675,7 +4659,7 @@
<target state="translated">Miesięcznie</target> <target state="translated">Miesięcznie</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">66</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8036977202721714375" datatype="html"> <trans-unit id="8036977202721714375" datatype="html">
@ -4683,7 +4667,7 @@
<target state="translated">Rocznie</target> <target state="translated">Rocznie</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">56</context> <context context-type="linenumber">67</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -4699,7 +4683,7 @@
<target state="translated">Największe wzrosty</target> <target state="translated">Największe wzrosty</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">239</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html"> <trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html">
@ -4707,7 +4691,7 @@
<target state="translated">Największy spadek</target> <target state="translated">Największy spadek</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">246</context> <context context-type="linenumber">288</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html"> <trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html">
@ -4715,7 +4699,7 @@
<target state="translated">Rozwój portfela</target> <target state="translated">Rozwój portfela</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">341</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html"> <trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html">
@ -4723,7 +4707,7 @@
<target state="translated">Oś czasu inwestycji</target> <target state="translated">Oś czasu inwestycji</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">326</context> <context context-type="linenumber">368</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1c275927e7e22395d21a86e4ab459e428bcac27e" datatype="html"> <trans-unit id="1c275927e7e22395d21a86e4ab459e428bcac27e" datatype="html">
@ -4731,7 +4715,7 @@
<target state="translated">Obecna passa</target> <target state="translated">Obecna passa</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">347</context> <context context-type="linenumber">389</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html"> <trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html">
@ -4739,7 +4723,7 @@
<target state="translated">Najdłuższa passa</target> <target state="translated">Najdłuższa passa</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">356</context> <context context-type="linenumber">398</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html"> <trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html">
@ -4747,7 +4731,7 @@
<target state="translated">Oś czasu dywidend</target> <target state="translated">Oś czasu dywidend</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">383</context> <context context-type="linenumber">425</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html"> <trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html">
@ -4779,7 +4763,7 @@
<target state="translated">Ryzyko związane z klastrem walutowym</target> <target state="translated">Ryzyko związane z klastrem walutowym</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">58</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html"> <trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html">
@ -4787,7 +4771,7 @@
<target state="translated">Ryzyko związane z klastrem kont</target> <target state="translated">Ryzyko związane z klastrem kont</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">106</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4945c8e3bbf650f8dc6d03b16553f2c0bac42b11" datatype="html"> <trans-unit id="4945c8e3bbf650f8dc6d03b16553f2c0bac42b11" datatype="html">
@ -5079,23 +5063,7 @@
<target state="translated">Kopiuj do schowka</target> <target state="translated">Kopiuj do schowka</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">26</context> <context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="9397711dc06a5d217fb57befe8ae2fec4b8ed039" datatype="html">
<source> I agree to have stored my <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> from above in a secure place. If I lose it, I cannot get my account back. </source>
<target state="translated"> Wyrażam zgodę na przechowywanie mojego <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Tokenu zabezpieczającego<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> w bezpiecznym miejscu. Jego utrata nie pozwoli odzyskać konta! </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="6a9a8caf09dab1871f119d73dfb79db2eda37a35" datatype="html">
<source>Agree and continue</source>
<target state="translated">Zgadzam się i kontynuuję</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1914201149277662818" datatype="html"> <trans-unit id="1914201149277662818" datatype="html">
@ -5383,7 +5351,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">90</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3437679369074503203" datatype="html"> <trans-unit id="3437679369074503203" datatype="html">
@ -5555,7 +5523,7 @@
<target state="translated">Czy na pewno chcesz usunąć tę działalność?</target> <target state="translated">Czy na pewno chcesz usunąć tę działalność?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">229</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4149127798893455354" datatype="html"> <trans-unit id="4149127798893455354" datatype="html">
@ -5803,7 +5771,7 @@
<target state="translated">Japonia</target> <target state="translated">Japonia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4152514811781104574" datatype="html"> <trans-unit id="4152514811781104574" datatype="html">
@ -6087,7 +6055,7 @@
<target state="translated">Skrajny Strach</target> <target state="translated">Skrajny Strach</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">96</context> <context context-type="linenumber">99</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2634398159221205491" datatype="html"> <trans-unit id="2634398159221205491" datatype="html">
@ -6095,7 +6063,7 @@
<target state="translated">Skrajna Zachłanność</target> <target state="translated">Skrajna Zachłanność</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">100</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3511545370905854666" datatype="html"> <trans-unit id="3511545370905854666" datatype="html">
@ -6103,7 +6071,7 @@
<target state="translated">Neutralny</target> <target state="translated">Neutralny</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3c33a66194384cf8c14e25170416767efa56fd98" datatype="html"> <trans-unit id="3c33a66194384cf8c14e25170416767efa56fd98" datatype="html">
@ -6299,11 +6267,11 @@
<target state="translated">Inwestycje</target> <target state="translated">Inwestycje</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">61</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context>
@ -6315,7 +6283,7 @@
<target state="translated">Łączny wynik aktywów</target> <target state="translated">Łączny wynik aktywów</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">60</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html"> <trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html">
@ -6323,7 +6291,7 @@
<target state="translated"> Wyniki aktywów </target> <target state="translated"> Wyniki aktywów </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html"> <trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html">
@ -6331,7 +6299,7 @@
<target state="translated">Łączny wynik walut</target> <target state="translated">Łączny wynik walut</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">145</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html"> <trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html">
@ -6339,7 +6307,7 @@
<target state="translated"> Wynik walut </target> <target state="translated"> Wynik walut </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">169</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html"> <trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html">
@ -6347,7 +6315,7 @@
<target state="translated"> Łączna wartość netto </target> <target state="translated"> Łączna wartość netto </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">150</context> <context context-type="linenumber">192</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html"> <trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html">
@ -6355,7 +6323,7 @@
<target state="translated"> Wynik netto </target> <target state="translated"> Wynik netto </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">211</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3105754554141014845" datatype="html"> <trans-unit id="3105754554141014845" datatype="html">
@ -6463,7 +6431,7 @@
<target state="translated">Gromadzenie Danych</target> <target state="translated">Gromadzenie Danych</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">60</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6439365426343089851" datatype="html"> <trans-unit id="6439365426343089851" datatype="html">
@ -6715,7 +6683,7 @@
<target state="translated">Czy na pewno chcesz usunąć te profile?</target> <target state="translated">Czy na pewno chcesz usunąć te profile?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">68</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8127349194179456616" datatype="html"> <trans-unit id="8127349194179456616" datatype="html">
@ -6723,7 +6691,7 @@
<target state="translated">Ups! Nie udało się usunąć profili.</target> <target state="translated">Ups! Nie udało się usunąć profili.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html"> <trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html">
@ -6867,7 +6835,7 @@
<target state="translated">Australia</target> <target state="translated">Australia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context> <context context-type="linenumber">74</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="21641575311466062" datatype="html"> <trans-unit id="21641575311466062" datatype="html">
@ -6875,7 +6843,7 @@
<target state="translated">Austria</target> <target state="translated">Austria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6787546539374733271" datatype="html"> <trans-unit id="6787546539374733271" datatype="html">
@ -6883,7 +6851,7 @@
<target state="translated">Belgia</target> <target state="translated">Belgia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">75</context> <context context-type="linenumber">76</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8273479446468988017" datatype="html"> <trans-unit id="8273479446468988017" datatype="html">
@ -6891,7 +6859,7 @@
<target state="translated">Bułgaria</target> <target state="translated">Bułgaria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">76</context> <context context-type="linenumber">78</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3486679398271885916" datatype="html"> <trans-unit id="3486679398271885916" datatype="html">
@ -6899,7 +6867,7 @@
<target state="translated">Kanada</target> <target state="translated">Kanada</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context> <context context-type="linenumber">79</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="724957661944599897" datatype="html"> <trans-unit id="724957661944599897" datatype="html">
@ -6907,7 +6875,7 @@
<target state="translated">Czechy</target> <target state="translated">Czechy</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">78</context> <context context-type="linenumber">80</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8812557643580169825" datatype="html"> <trans-unit id="8812557643580169825" datatype="html">
@ -6915,7 +6883,7 @@
<target state="translated">Finlandia</target> <target state="translated">Finlandia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">79</context> <context context-type="linenumber">81</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="956678847762152494" datatype="html"> <trans-unit id="956678847762152494" datatype="html">
@ -6923,7 +6891,7 @@
<target state="translated">Francja</target> <target state="translated">Francja</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">80</context> <context context-type="linenumber">82</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6014862663057951430" datatype="html"> <trans-unit id="6014862663057951430" datatype="html">
@ -6931,7 +6899,7 @@
<target state="translated">Niemcy</target> <target state="translated">Niemcy</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">83</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="212820117866187249" datatype="html"> <trans-unit id="212820117866187249" datatype="html">
@ -6939,7 +6907,7 @@
<target state="translated">Indie</target> <target state="translated">Indie</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">84</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2427223107800831324" datatype="html"> <trans-unit id="2427223107800831324" datatype="html">
@ -6947,7 +6915,7 @@
<target state="translated">Włochy</target> <target state="translated">Włochy</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">83</context> <context context-type="linenumber">85</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3783587393795767345" datatype="html"> <trans-unit id="3783587393795767345" datatype="html">
@ -6955,7 +6923,7 @@
<target state="translated">Holandia</target> <target state="translated">Holandia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">87</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3591085113786124083" datatype="html"> <trans-unit id="3591085113786124083" datatype="html">
@ -6963,7 +6931,7 @@
<target state="translated">Nowa Zelandia</target> <target state="translated">Nowa Zelandia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2356316679035829946" datatype="html"> <trans-unit id="2356316679035829946" datatype="html">
@ -6971,7 +6939,7 @@
<target state="translated">Polska</target> <target state="translated">Polska</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="545992063382313902" datatype="html"> <trans-unit id="545992063382313902" datatype="html">
@ -6979,7 +6947,7 @@
<target state="translated">Rumunia</target> <target state="translated">Rumunia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">88</context> <context context-type="linenumber">90</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8039968326438721789" datatype="html"> <trans-unit id="8039968326438721789" datatype="html">
@ -6987,7 +6955,7 @@
<target state="translated">Południowa Afryka</target> <target state="translated">Południowa Afryka</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">92</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2040543873210054611" datatype="html"> <trans-unit id="2040543873210054611" datatype="html">
@ -6995,7 +6963,7 @@
<target state="translated">Tajlandia</target> <target state="translated">Tajlandia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6133495983093212227" datatype="html"> <trans-unit id="6133495983093212227" datatype="html">
@ -7003,7 +6971,7 @@
<target state="translated">Stany Zjednoczone</target> <target state="translated">Stany Zjednoczone</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">93</context> <context context-type="linenumber">96</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1519954996184640001" datatype="html"> <trans-unit id="1519954996184640001" datatype="html">
@ -7035,7 +7003,7 @@
<target state="translated">Nieaktywny</target> <target state="translated">Nieaktywny</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -7347,7 +7315,7 @@
<target state="translated">Ukraina</target> <target state="translated">Ukraina</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">95</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html"> <trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html">
@ -7437,7 +7405,7 @@
<target state="translated">Ryzyko związane z klastrem rynków gospodarczych</target> <target state="translated">Ryzyko związane z klastrem rynków gospodarczych</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">130</context> <context context-type="linenumber">165</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html"> <trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html">
@ -7565,7 +7533,7 @@
<target state="translated">poza</target> <target state="translated">poza</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html"> <trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html">
@ -7573,7 +7541,7 @@
<target state="translated">zasady zgodne z Twoim portfelem.</target> <target state="translated">zasady zgodne z Twoim portfelem.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">24</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3768927257183755959" datatype="html"> <trans-unit id="3768927257183755959" datatype="html">
@ -7589,7 +7557,7 @@
<target state="translated">Ryzyko klastra klasy aktywów</target> <target state="translated">Ryzyko klastra klasy aktywów</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7156797854368699223" datatype="html"> <trans-unit id="7156797854368699223" datatype="html">
@ -7621,15 +7589,7 @@
<target state="new">AI prompt has been copied to the clipboard</target> <target state="new">AI prompt has been copied to the clipboard</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">153</context> <context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="4eecb3acb016e7d86740405b21599cdad8e0dd9f" datatype="html">
<source>Copy AI prompt to clipboard</source>
<target state="new">Copy AI prompt to clipboard</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">27</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7653,7 +7613,7 @@
<target state="new">Regional Market Cluster Risks</target> <target state="new">Regional Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">189</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8540986733881734625" datatype="html"> <trans-unit id="8540986733881734625" datatype="html">
@ -7725,7 +7685,7 @@
<target state="new">Open Duck.ai</target> <target state="new">Open Duck.ai</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7764,6 +7724,86 @@
<context context-type="linenumber">378</context> <context context-type="linenumber">378</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="afd6e2886f0bb7db3b54bef42bced4e7c67cc40c" datatype="html">
<source>Copy portfolio data to clipboard for AI prompt</source>
<target state="new">Copy portfolio data to clipboard for AI prompt</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="187b68f90f45d63f0d3b1e830ac92f98d2447313" datatype="html">
<source>Copy AI prompt to clipboard for analysis</source>
<target state="new">Copy AI prompt to clipboard for analysis</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5004849258025239958" datatype="html">
<source>Armenia</source>
<target state="new">Armenia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context>
</context-group>
</trans-unit>
<trans-unit id="7899437916897426237" datatype="html">
<source>British Virgin Islands</source>
<target state="new">British Virgin Islands</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context>
</context-group>
</trans-unit>
<trans-unit id="4830118002486243553" datatype="html">
<source>Singapore</source>
<target state="new">Singapore</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context>
</context-group>
</trans-unit>
<trans-unit id="e9048704780ed5bb3fc1af4f94d4fc5fdeb72cab" datatype="html">
<source>Terms and Conditions</source>
<target state="new">Terms and Conditions</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4051385e7211aebdb652666927a0564de3e74fd0" datatype="html">
<source>Please keep your security token safe. If you lose it, you will not be able to recover your account.</source>
<target state="new">Please keep your security token safe. If you lose it, you will not be able to recover your account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="0c165378eae03c8bd376d2819d94b108d9929c64" datatype="html">
<source>I understand that if I lose my security token, I cannot recover my account.</source>
<target state="new">I understand that if I lose my security token, I cannot recover my account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">
<source>Continue</source>
<target state="new">Continue</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="43a04e6b986ac8b5184330fdcc4235867d48bcf7" datatype="html">
<source>Here is your security token. It is only visible once, please store and keep it in a safe place.</source>
<target state="new">Here is your security token. It is only visible once, please store and keep it in a safe place.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">47</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

@ -320,10 +320,6 @@
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">231</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">92</context>
@ -354,11 +350,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">129</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">196</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
@ -590,7 +582,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context> <context context-type="linenumber">29</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
@ -786,15 +778,7 @@
<target state="translated">Deseja realmente eliminar este cupão?</target> <target state="translated">Deseja realmente eliminar este cupão?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">137</context> <context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="1110981355132746478" datatype="html">
<source>Do you really want to delete this currency?</source>
<target state="translated">Deseja realmente excluir esta moeda?</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">150</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6470890277760887814" datatype="html"> <trans-unit id="6470890277760887814" datatype="html">
@ -802,7 +786,7 @@
<target state="translated">Deseja realmente limpar a cache?</target> <target state="translated">Deseja realmente limpar a cache?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">187</context> <context context-type="linenumber">171</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2712770700065625080" datatype="html"> <trans-unit id="2712770700065625080" datatype="html">
@ -810,7 +794,7 @@
<target state="translated">Por favor, defina a sua mensagem do sistema:</target> <target state="translated">Por favor, defina a sua mensagem do sistema:</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">191</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ec03f5c28b327fc7ecfc4b20a0a7cf14a75843ff" datatype="html"> <trans-unit id="ec03f5c28b327fc7ecfc4b20a0a7cf14a75843ff" datatype="html">
@ -829,14 +813,6 @@
<context context-type="linenumber">28</context> <context context-type="linenumber">28</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="37ff0697aa81b2777250c483d2ce1ebdaa5ab042" datatype="html">
<source>Exchange Rates</source>
<target state="translated">Taxas de Câmbio</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html"> <trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html">
<source>Add Currency</source> <source>Add Currency</source>
<target state="translated">Adicionar Moeda</target> <target state="translated">Adicionar Moeda</target>
@ -850,7 +826,7 @@
<target state="translated">Mensagem de Sistema</target> <target state="translated">Mensagem de Sistema</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">139</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html"> <trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html">
@ -858,7 +834,7 @@
<target state="translated">Definir Mensagem</target> <target state="translated">Definir Mensagem</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">161</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html"> <trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html">
@ -866,7 +842,7 @@
<target state="translated">Modo Somente Leitura</target> <target state="translated">Modo Somente Leitura</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">48</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html"> <trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html">
@ -874,7 +850,7 @@
<target state="translated">Cupões</target> <target state="translated">Cupões</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html"> <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">
@ -882,7 +858,7 @@
<target state="translated">Adicionar</target> <target state="translated">Adicionar</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">229</context> <context context-type="linenumber">162</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context>
@ -894,7 +870,7 @@
<target state="translated">Manutenção</target> <target state="translated">Manutenção</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">237</context> <context context-type="linenumber">170</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html"> <trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html">
@ -902,7 +878,7 @@
<target state="translated">Limpar Cache</target> <target state="translated">Limpar Cache</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2817099043823177227" datatype="html"> <trans-unit id="2817099043823177227" datatype="html">
@ -1250,7 +1226,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">98</context> <context context-type="linenumber">101</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6844699413925472826" datatype="html"> <trans-unit id="6844699413925472826" datatype="html">
@ -1262,7 +1238,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">99</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html"> <trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html">
@ -1318,7 +1294,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context> <context context-type="linenumber">44</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">52</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html"> <trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html">
@ -1466,7 +1446,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">34</context> <context context-type="linenumber">69</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8cce9d03787606e0052d19c2ae7e7fa5ff785e94" datatype="html"> <trans-unit id="8cce9d03787606e0052d19c2ae7e7fa5ff785e94" datatype="html">
@ -2642,7 +2622,7 @@
<target state="translated">Mensalmente</target> <target state="translated">Mensalmente</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">66</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -2658,7 +2638,7 @@
<target state="translated">Topo</target> <target state="translated">Topo</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">239</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html"> <trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html">
@ -2666,7 +2646,7 @@
<target state="translated">Fundo</target> <target state="translated">Fundo</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">246</context> <context context-type="linenumber">288</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html"> <trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html">
@ -2674,7 +2654,7 @@
<target state="translated">Evolução do Portefólio</target> <target state="translated">Evolução do Portefólio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">341</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html"> <trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html">
@ -2682,7 +2662,7 @@
<target state="translated">Cronograma de Investimento</target> <target state="translated">Cronograma de Investimento</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">326</context> <context context-type="linenumber">368</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html"> <trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html">
@ -2824,6 +2804,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">2</context> <context context-type="linenumber">2</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="e1c4e91c3cf021ce1810d037887e0d7d4d1cface" datatype="html"> <trans-unit id="e1c4e91c3cf021ce1810d037887e0d7d4d1cface" datatype="html">
<source>Continue with Internet Identity</source> <source>Continue with Internet Identity</source>
@ -2846,23 +2830,7 @@
<target state="translated">Copiar para a área de transferência</target> <target state="translated">Copiar para a área de transferência</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">26</context> <context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="9397711dc06a5d217fb57befe8ae2fec4b8ed039" datatype="html">
<source> I agree to have stored my <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> from above in a secure place. If I lose it, I cannot get my account back. </source>
<target state="translated"> Concordo em como guardei o meu <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Token de Segurança<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> acima num local seguro. Se o perder, não conseguirei recuperar a minha conta.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="6a9a8caf09dab1871f119d73dfb79db2eda37a35" datatype="html">
<source>Agree and continue</source>
<target state="translated">Aceitar e continuar</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2446117790692479672" datatype="html"> <trans-unit id="2446117790692479672" datatype="html">
@ -2958,7 +2926,7 @@
<target state="translated">Deseja realmente eliminar esta atividade?</target> <target state="translated">Deseja realmente eliminar esta atividade?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">229</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="170f7de02b14690fb9c1999a16926c0044bfd5c1" datatype="html"> <trans-unit id="170f7de02b14690fb9c1999a16926c0044bfd5c1" datatype="html">
@ -3266,7 +3234,7 @@
<target state="translated">Registo do Utilizador</target> <target state="translated">Registo do Utilizador</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">101</context> <context context-type="linenumber">34</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ec2d3a89b366d1ca80be056e9e71f0165ae75c7b" datatype="html"> <trans-unit id="ec2d3a89b366d1ca80be056e9e71f0165ae75c7b" datatype="html">
@ -3374,7 +3342,7 @@
<target state="translated">Dividendos</target> <target state="translated">Dividendos</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -3386,7 +3354,7 @@
<target state="translated">Cronograma de Dividendos</target> <target state="translated">Cronograma de Dividendos</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">383</context> <context context-type="linenumber">425</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7608037008789240367" datatype="html"> <trans-unit id="7608037008789240367" datatype="html">
@ -3422,7 +3390,7 @@
<target state="translated">Anualmente</target> <target state="translated">Anualmente</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">56</context> <context context-type="linenumber">67</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -3758,7 +3726,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">178</context> <context context-type="linenumber">213</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="a6f322a22d0ae0b95dd9c70d43ba2c92de7ed49b" datatype="html"> <trans-unit id="a6f322a22d0ae0b95dd9c70d43ba2c92de7ed49b" datatype="html">
@ -3942,7 +3910,7 @@
<target state="translated">Deseja mesmo eliminar estas atividades?</target> <target state="translated">Deseja mesmo eliminar estas atividades?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">218</context> <context context-type="linenumber">219</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="166ccc92e1aa598f9056a260be209a0bab64d37a" datatype="html"> <trans-unit id="166ccc92e1aa598f9056a260be209a0bab64d37a" datatype="html">
@ -4170,7 +4138,7 @@
<target state="translated">Série Atual</target> <target state="translated">Série Atual</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">347</context> <context context-type="linenumber">389</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html"> <trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html">
@ -4178,7 +4146,7 @@
<target state="translated">Série mais Longa</target> <target state="translated">Série mais Longa</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">356</context> <context context-type="linenumber">398</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4845030128243887325" datatype="html"> <trans-unit id="4845030128243887325" datatype="html">
@ -4658,7 +4626,7 @@
<target state="translated">Japão</target> <target state="translated">Japão</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6fafe6662f57e08bca1f26bc2d2c9631a106ba29" datatype="html"> <trans-unit id="6fafe6662f57e08bca1f26bc2d2c9631a106ba29" datatype="html">
@ -5759,7 +5727,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">90</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3437679369074503203" datatype="html"> <trans-unit id="3437679369074503203" datatype="html">
@ -5903,7 +5871,7 @@
<target state="new">Currency Cluster Risks</target> <target state="new">Currency Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">58</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html"> <trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html">
@ -5911,7 +5879,7 @@
<target state="new">Account Cluster Risks</target> <target state="new">Account Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">106</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4b00337456de4a757f7abc8224d8b391f5d0634a" datatype="html"> <trans-unit id="4b00337456de4a757f7abc8224d8b391f5d0634a" datatype="html">
@ -6031,7 +5999,7 @@
<target state="new">Do you really want to delete this asset profile?</target> <target state="new">Do you really want to delete this asset profile?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">36</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7e892ba15f2c6c17e83510e273b3e10fc32ea016" datatype="html"> <trans-unit id="7e892ba15f2c6c17e83510e273b3e10fc32ea016" datatype="html">
@ -6111,7 +6079,7 @@
<target state="new">Extreme Fear</target> <target state="new">Extreme Fear</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">96</context> <context context-type="linenumber">99</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2634398159221205491" datatype="html"> <trans-unit id="2634398159221205491" datatype="html">
@ -6119,7 +6087,7 @@
<target state="new">Extreme Greed</target> <target state="new">Extreme Greed</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">100</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3511545370905854666" datatype="html"> <trans-unit id="3511545370905854666" datatype="html">
@ -6127,7 +6095,7 @@
<target state="new">Neutral</target> <target state="new">Neutral</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7183719827884539616" datatype="html"> <trans-unit id="7183719827884539616" datatype="html">
@ -6143,7 +6111,7 @@
<target state="new">Do you really want to delete this system message?</target> <target state="new">Do you really want to delete this system message?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">163</context> <context context-type="linenumber">147</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d762c43328624b5dd81f3c6a3023203ae9a7553f" datatype="html"> <trans-unit id="d762c43328624b5dd81f3c6a3023203ae9a7553f" datatype="html">
@ -6299,11 +6267,11 @@
<target state="new">Investment</target> <target state="new">Investment</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">61</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context>
@ -6315,7 +6283,7 @@
<target state="new">Absolute Asset Performance</target> <target state="new">Absolute Asset Performance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">60</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html"> <trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html">
@ -6323,7 +6291,7 @@
<target state="new"> Asset Performance </target> <target state="new"> Asset Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html"> <trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html">
@ -6331,7 +6299,7 @@
<target state="new">Absolute Currency Performance</target> <target state="new">Absolute Currency Performance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">145</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html"> <trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html">
@ -6339,7 +6307,7 @@
<target state="new"> Currency Performance </target> <target state="new"> Currency Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">169</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html"> <trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html">
@ -6347,7 +6315,7 @@
<target state="new"> Absolute Net Performance </target> <target state="new"> Absolute Net Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">150</context> <context context-type="linenumber">192</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html"> <trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html">
@ -6355,7 +6323,7 @@
<target state="new"> Net Performance </target> <target state="new"> Net Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">211</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3105754554141014845" datatype="html"> <trans-unit id="3105754554141014845" datatype="html">
@ -6463,7 +6431,7 @@
<target state="new">Data Gathering</target> <target state="new">Data Gathering</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">60</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6439365426343089851" datatype="html"> <trans-unit id="6439365426343089851" datatype="html">
@ -6715,7 +6683,7 @@
<target state="new">Do you really want to delete these profiles?</target> <target state="new">Do you really want to delete these profiles?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">68</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8127349194179456616" datatype="html"> <trans-unit id="8127349194179456616" datatype="html">
@ -6723,7 +6691,7 @@
<target state="new">Oops! Could not delete profiles.</target> <target state="new">Oops! Could not delete profiles.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html"> <trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html">
@ -6867,7 +6835,7 @@
<target state="new">Australia</target> <target state="new">Australia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context> <context context-type="linenumber">74</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="21641575311466062" datatype="html"> <trans-unit id="21641575311466062" datatype="html">
@ -6875,7 +6843,7 @@
<target state="new">Austria</target> <target state="new">Austria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6787546539374733271" datatype="html"> <trans-unit id="6787546539374733271" datatype="html">
@ -6883,7 +6851,7 @@
<target state="new">Belgium</target> <target state="new">Belgium</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">75</context> <context context-type="linenumber">76</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8273479446468988017" datatype="html"> <trans-unit id="8273479446468988017" datatype="html">
@ -6891,7 +6859,7 @@
<target state="new">Bulgaria</target> <target state="new">Bulgaria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">76</context> <context context-type="linenumber">78</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3486679398271885916" datatype="html"> <trans-unit id="3486679398271885916" datatype="html">
@ -6899,7 +6867,7 @@
<target state="new">Canada</target> <target state="new">Canada</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context> <context context-type="linenumber">79</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="724957661944599897" datatype="html"> <trans-unit id="724957661944599897" datatype="html">
@ -6907,7 +6875,7 @@
<target state="new">Czech Republic</target> <target state="new">Czech Republic</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">78</context> <context context-type="linenumber">80</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8812557643580169825" datatype="html"> <trans-unit id="8812557643580169825" datatype="html">
@ -6915,7 +6883,7 @@
<target state="new">Finland</target> <target state="new">Finland</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">79</context> <context context-type="linenumber">81</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="956678847762152494" datatype="html"> <trans-unit id="956678847762152494" datatype="html">
@ -6923,7 +6891,7 @@
<target state="new">France</target> <target state="new">France</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">80</context> <context context-type="linenumber">82</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6014862663057951430" datatype="html"> <trans-unit id="6014862663057951430" datatype="html">
@ -6931,7 +6899,7 @@
<target state="new">Germany</target> <target state="new">Germany</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">83</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="212820117866187249" datatype="html"> <trans-unit id="212820117866187249" datatype="html">
@ -6939,7 +6907,7 @@
<target state="new">India</target> <target state="new">India</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">84</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2427223107800831324" datatype="html"> <trans-unit id="2427223107800831324" datatype="html">
@ -6947,7 +6915,7 @@
<target state="new">Italy</target> <target state="new">Italy</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">83</context> <context context-type="linenumber">85</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3783587393795767345" datatype="html"> <trans-unit id="3783587393795767345" datatype="html">
@ -6955,7 +6923,7 @@
<target state="new">Netherlands</target> <target state="new">Netherlands</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">87</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3591085113786124083" datatype="html"> <trans-unit id="3591085113786124083" datatype="html">
@ -6963,7 +6931,7 @@
<target state="new">New Zealand</target> <target state="new">New Zealand</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2356316679035829946" datatype="html"> <trans-unit id="2356316679035829946" datatype="html">
@ -6971,7 +6939,7 @@
<target state="new">Poland</target> <target state="new">Poland</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="545992063382313902" datatype="html"> <trans-unit id="545992063382313902" datatype="html">
@ -6979,7 +6947,7 @@
<target state="new">Romania</target> <target state="new">Romania</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">88</context> <context context-type="linenumber">90</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8039968326438721789" datatype="html"> <trans-unit id="8039968326438721789" datatype="html">
@ -6987,7 +6955,7 @@
<target state="new">South Africa</target> <target state="new">South Africa</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">92</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2040543873210054611" datatype="html"> <trans-unit id="2040543873210054611" datatype="html">
@ -6995,7 +6963,7 @@
<target state="new">Thailand</target> <target state="new">Thailand</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6133495983093212227" datatype="html"> <trans-unit id="6133495983093212227" datatype="html">
@ -7003,7 +6971,7 @@
<target state="new">United States</target> <target state="new">United States</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">93</context> <context context-type="linenumber">96</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1519954996184640001" datatype="html"> <trans-unit id="1519954996184640001" datatype="html">
@ -7035,7 +7003,7 @@
<target state="new">Inactive</target> <target state="new">Inactive</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -7347,7 +7315,7 @@
<target state="new">Ukraine</target> <target state="new">Ukraine</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">95</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html"> <trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html">
@ -7437,7 +7405,7 @@
<target state="new">Economic Market Cluster Risks</target> <target state="new">Economic Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">130</context> <context context-type="linenumber">165</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html"> <trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html">
@ -7565,7 +7533,7 @@
<target state="new">out of</target> <target state="new">out of</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html"> <trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html">
@ -7573,7 +7541,7 @@
<target state="new">rules align with your portfolio.</target> <target state="new">rules align with your portfolio.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">24</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3768927257183755959" datatype="html"> <trans-unit id="3768927257183755959" datatype="html">
@ -7589,7 +7557,7 @@
<target state="new">Asset Class Cluster Risks</target> <target state="new">Asset Class Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7156797854368699223" datatype="html"> <trans-unit id="7156797854368699223" datatype="html">
@ -7621,15 +7589,7 @@
<target state="new">AI prompt has been copied to the clipboard</target> <target state="new">AI prompt has been copied to the clipboard</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">153</context> <context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="4eecb3acb016e7d86740405b21599cdad8e0dd9f" datatype="html">
<source>Copy AI prompt to clipboard</source>
<target state="new">Copy AI prompt to clipboard</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">27</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7653,7 +7613,7 @@
<target state="new">Regional Market Cluster Risks</target> <target state="new">Regional Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">189</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8540986733881734625" datatype="html"> <trans-unit id="8540986733881734625" datatype="html">
@ -7725,7 +7685,7 @@
<target state="new">Open Duck.ai</target> <target state="new">Open Duck.ai</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7764,6 +7724,86 @@
<context context-type="linenumber">378</context> <context context-type="linenumber">378</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="afd6e2886f0bb7db3b54bef42bced4e7c67cc40c" datatype="html">
<source>Copy portfolio data to clipboard for AI prompt</source>
<target state="new">Copy portfolio data to clipboard for AI prompt</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="187b68f90f45d63f0d3b1e830ac92f98d2447313" datatype="html">
<source>Copy AI prompt to clipboard for analysis</source>
<target state="new">Copy AI prompt to clipboard for analysis</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5004849258025239958" datatype="html">
<source>Armenia</source>
<target state="new">Armenia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context>
</context-group>
</trans-unit>
<trans-unit id="7899437916897426237" datatype="html">
<source>British Virgin Islands</source>
<target state="new">British Virgin Islands</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context>
</context-group>
</trans-unit>
<trans-unit id="4830118002486243553" datatype="html">
<source>Singapore</source>
<target state="new">Singapore</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context>
</context-group>
</trans-unit>
<trans-unit id="e9048704780ed5bb3fc1af4f94d4fc5fdeb72cab" datatype="html">
<source>Terms and Conditions</source>
<target state="new">Terms and Conditions</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4051385e7211aebdb652666927a0564de3e74fd0" datatype="html">
<source>Please keep your security token safe. If you lose it, you will not be able to recover your account.</source>
<target state="new">Please keep your security token safe. If you lose it, you will not be able to recover your account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="0c165378eae03c8bd376d2819d94b108d9929c64" datatype="html">
<source>I understand that if I lose my security token, I cannot recover my account.</source>
<target state="new">I understand that if I lose my security token, I cannot recover my account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">
<source>Continue</source>
<target state="new">Continue</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="43a04e6b986ac8b5184330fdcc4235867d48bcf7" datatype="html">
<source>Here is your security token. It is only visible once, please store and keep it in a safe place.</source>
<target state="new">Here is your security token. It is only visible once, please store and keep it in a safe place.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">47</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

@ -1073,10 +1073,6 @@
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">231</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">92</context>
@ -1107,11 +1103,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">129</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">196</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
@ -1343,7 +1335,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context> <context context-type="linenumber">29</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
@ -1695,15 +1687,7 @@
<target state="translated">Önbelleği temizlemeyi gerçekten istiyor musunuz?</target> <target state="translated">Önbelleği temizlemeyi gerçekten istiyor musunuz?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">137</context> <context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="1110981355132746478" datatype="html">
<source>Do you really want to delete this currency?</source>
<target state="translated">Bu para birimini silmeyi gerçekten istiyor musunuz?</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">150</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6470890277760887814" datatype="html"> <trans-unit id="6470890277760887814" datatype="html">
@ -1711,7 +1695,7 @@
<target state="translated">Önbelleği temizlemeyi gerçekten istiyor musunuz</target> <target state="translated">Önbelleği temizlemeyi gerçekten istiyor musunuz</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">187</context> <context context-type="linenumber">171</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2712770700065625080" datatype="html"> <trans-unit id="2712770700065625080" datatype="html">
@ -1719,7 +1703,7 @@
<target state="translated">Lütfen sistem mesajınızı belirleyin:</target> <target state="translated">Lütfen sistem mesajınızı belirleyin:</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">191</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ec03f5c28b327fc7ecfc4b20a0a7cf14a75843ff" datatype="html"> <trans-unit id="ec03f5c28b327fc7ecfc4b20a0a7cf14a75843ff" datatype="html">
@ -1746,14 +1730,6 @@
<context context-type="linenumber">28</context> <context context-type="linenumber">28</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="37ff0697aa81b2777250c483d2ce1ebdaa5ab042" datatype="html">
<source>Exchange Rates</source>
<target state="translated">Döviz Kurları</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html"> <trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html">
<source>Add Currency</source> <source>Add Currency</source>
<target state="translated">Para Birimi Ekle</target> <target state="translated">Para Birimi Ekle</target>
@ -1783,7 +1759,7 @@
<target state="translated">Kullanıcı Kaydı</target> <target state="translated">Kullanıcı Kaydı</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">101</context> <context context-type="linenumber">34</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html"> <trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html">
@ -1791,7 +1767,7 @@
<target state="translated">Salt okunur mod</target> <target state="translated">Salt okunur mod</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">48</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="860e5f056b59410ec8db65cb53955505c6931752" datatype="html"> <trans-unit id="860e5f056b59410ec8db65cb53955505c6931752" datatype="html">
@ -1799,7 +1775,7 @@
<target state="translated">Sistem Mesajı</target> <target state="translated">Sistem Mesajı</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">139</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html"> <trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html">
@ -1807,7 +1783,7 @@
<target state="translated">Mesaj Belirle</target> <target state="translated">Mesaj Belirle</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">161</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html"> <trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html">
@ -1815,7 +1791,7 @@
<target state="translated">Kupon</target> <target state="translated">Kupon</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html"> <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">
@ -1823,7 +1799,7 @@
<target state="translated">Ekle</target> <target state="translated">Ekle</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">229</context> <context context-type="linenumber">162</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context>
@ -1835,7 +1811,7 @@
<target state="translated">Genel Ayarlar</target> <target state="translated">Genel Ayarlar</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">237</context> <context context-type="linenumber">170</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html"> <trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html">
@ -1843,7 +1819,7 @@
<target state="translated">Önbelleği temizle</target> <target state="translated">Önbelleği temizle</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e587f3aaad8881a0b7732fb3e86df8a4c91f25d2" datatype="html"> <trans-unit id="e587f3aaad8881a0b7732fb3e86df8a4c91f25d2" datatype="html">
@ -2179,7 +2155,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">98</context> <context context-type="linenumber">101</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6844699413925472826" datatype="html"> <trans-unit id="6844699413925472826" datatype="html">
@ -2191,7 +2167,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">99</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html"> <trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html">
@ -2323,7 +2299,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context> <context context-type="linenumber">44</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">52</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html"> <trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html">
@ -2471,7 +2451,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">34</context> <context context-type="linenumber">69</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="311828ec96f91f6f530219b07d5531a8aa507d64" datatype="html"> <trans-unit id="311828ec96f91f6f530219b07d5531a8aa507d64" datatype="html">
@ -2627,7 +2607,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">178</context> <context context-type="linenumber">213</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="43d544c2e88959f6c59cc4db419528fb0776bd6c" datatype="html"> <trans-unit id="43d544c2e88959f6c59cc4db419528fb0776bd6c" datatype="html">
@ -3715,7 +3695,7 @@
<target state="new">Tüm işlemlerinizi silmeyi gerçekten istiyor musunuz?</target> <target state="new">Tüm işlemlerinizi silmeyi gerçekten istiyor musunuz?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">218</context> <context context-type="linenumber">219</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72ba3bcdd8350cb8bf462e217a28ec7f7a48bb44" datatype="html"> <trans-unit id="72ba3bcdd8350cb8bf462e217a28ec7f7a48bb44" datatype="html">
@ -4139,7 +4119,7 @@
<target state="translated">Temettü</target> <target state="translated">Temettü</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -4159,7 +4139,7 @@
<target state="translated">Aylık</target> <target state="translated">Aylık</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">66</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8036977202721714375" datatype="html"> <trans-unit id="8036977202721714375" datatype="html">
@ -4167,7 +4147,7 @@
<target state="translated">Yıllık</target> <target state="translated">Yıllık</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">56</context> <context context-type="linenumber">67</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -4183,7 +4163,7 @@
<target state="translated">Üst</target> <target state="translated">Üst</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">239</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html"> <trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html">
@ -4191,7 +4171,7 @@
<target state="translated">Alt</target> <target state="translated">Alt</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">246</context> <context context-type="linenumber">288</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html"> <trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html">
@ -4199,7 +4179,7 @@
<target state="translated">Portföyün Gelişimi</target> <target state="translated">Portföyün Gelişimi</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">341</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html"> <trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html">
@ -4207,7 +4187,7 @@
<target state="translated">Yatırım Zaman Çizelgesi</target> <target state="translated">Yatırım Zaman Çizelgesi</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">326</context> <context context-type="linenumber">368</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1c275927e7e22395d21a86e4ab459e428bcac27e" datatype="html"> <trans-unit id="1c275927e7e22395d21a86e4ab459e428bcac27e" datatype="html">
@ -4215,7 +4195,7 @@
<target state="translated">Güncel Seri</target> <target state="translated">Güncel Seri</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">347</context> <context context-type="linenumber">389</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html"> <trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html">
@ -4223,7 +4203,7 @@
<target state="translated">En Uzun Seri</target> <target state="translated">En Uzun Seri</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">356</context> <context context-type="linenumber">398</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html"> <trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html">
@ -4231,7 +4211,7 @@
<target state="translated">Temettü Zaman Çizelgesi</target> <target state="translated">Temettü Zaman Çizelgesi</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">383</context> <context context-type="linenumber">425</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html"> <trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html">
@ -4541,6 +4521,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">2</context> <context context-type="linenumber">2</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="e1c4e91c3cf021ce1810d037887e0d7d4d1cface" datatype="html"> <trans-unit id="e1c4e91c3cf021ce1810d037887e0d7d4d1cface" datatype="html">
<source>Continue with Internet Identity</source> <source>Continue with Internet Identity</source>
@ -4563,23 +4547,7 @@
<target state="translated">Panoya Kopyala</target> <target state="translated">Panoya Kopyala</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">26</context> <context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="9397711dc06a5d217fb57befe8ae2fec4b8ed039" datatype="html">
<source> I agree to have stored my <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> from above in a secure place. If I lose it, I cannot get my account back. </source>
<target state="new"> I agree to have stored my <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> from above in a secure place. If I lose it, I cannot get my account back. </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="6a9a8caf09dab1871f119d73dfb79db2eda37a35" datatype="html">
<source>Agree and continue</source>
<target state="translated">Kabul et ve devam et</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1914201149277662818" datatype="html"> <trans-unit id="1914201149277662818" datatype="html">
@ -4859,7 +4827,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">90</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3437679369074503203" datatype="html"> <trans-unit id="3437679369074503203" datatype="html">
@ -5271,7 +5239,7 @@
<target state="translated">TBu işlemi silmeyi gerçekten istiyor musunuz?</target> <target state="translated">TBu işlemi silmeyi gerçekten istiyor musunuz?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">229</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="170f7de02b14690fb9c1999a16926c0044bfd5c1" datatype="html"> <trans-unit id="170f7de02b14690fb9c1999a16926c0044bfd5c1" datatype="html">
@ -5483,7 +5451,7 @@
<target state="new">Japan</target> <target state="new">Japan</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4152514811781104574" datatype="html"> <trans-unit id="4152514811781104574" datatype="html">
@ -5903,7 +5871,7 @@
<target state="translated">Kur Kümelenme Riskleri (Currency Cluster Risks)</target> <target state="translated">Kur Kümelenme Riskleri (Currency Cluster Risks)</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">58</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html"> <trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html">
@ -5911,7 +5879,7 @@
<target state="translated">Hesap Kümelenme Riski (Account Cluster Risks)</target> <target state="translated">Hesap Kümelenme Riski (Account Cluster Risks)</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">106</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4b00337456de4a757f7abc8224d8b391f5d0634a" datatype="html"> <trans-unit id="4b00337456de4a757f7abc8224d8b391f5d0634a" datatype="html">
@ -6031,7 +5999,7 @@
<target state="translated">Bu varlık profilini silmeyi gerçekten istiyor musunuz?</target> <target state="translated">Bu varlık profilini silmeyi gerçekten istiyor musunuz?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">36</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7e892ba15f2c6c17e83510e273b3e10fc32ea016" datatype="html"> <trans-unit id="7e892ba15f2c6c17e83510e273b3e10fc32ea016" datatype="html">
@ -6111,7 +6079,7 @@
<target state="translated">Aşırı Korku</target> <target state="translated">Aşırı Korku</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">96</context> <context context-type="linenumber">99</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2634398159221205491" datatype="html"> <trans-unit id="2634398159221205491" datatype="html">
@ -6119,7 +6087,7 @@
<target state="translated">Aşırı Açgözlülük</target> <target state="translated">Aşırı Açgözlülük</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">100</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3511545370905854666" datatype="html"> <trans-unit id="3511545370905854666" datatype="html">
@ -6127,7 +6095,7 @@
<target state="translated">Nötr</target> <target state="translated">Nötr</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7183719827884539616" datatype="html"> <trans-unit id="7183719827884539616" datatype="html">
@ -6143,7 +6111,7 @@
<target state="translated">Bu sistem mesajını silmeyi gerçekten istiyor musunuz?</target> <target state="translated">Bu sistem mesajını silmeyi gerçekten istiyor musunuz?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">163</context> <context context-type="linenumber">147</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d762c43328624b5dd81f3c6a3023203ae9a7553f" datatype="html"> <trans-unit id="d762c43328624b5dd81f3c6a3023203ae9a7553f" datatype="html">
@ -6299,11 +6267,11 @@
<target state="new">Investment</target> <target state="new">Investment</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">61</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context>
@ -6315,7 +6283,7 @@
<target state="new">Absolute Asset Performance</target> <target state="new">Absolute Asset Performance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">60</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html"> <trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html">
@ -6323,7 +6291,7 @@
<target state="new"> Asset Performance </target> <target state="new"> Asset Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html"> <trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html">
@ -6331,7 +6299,7 @@
<target state="new">Absolute Currency Performance</target> <target state="new">Absolute Currency Performance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">145</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html"> <trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html">
@ -6339,7 +6307,7 @@
<target state="new"> Currency Performance </target> <target state="new"> Currency Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">169</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html"> <trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html">
@ -6347,7 +6315,7 @@
<target state="new"> Absolute Net Performance </target> <target state="new"> Absolute Net Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">150</context> <context context-type="linenumber">192</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html"> <trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html">
@ -6355,7 +6323,7 @@
<target state="new"> Net Performance </target> <target state="new"> Net Performance </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">211</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3105754554141014845" datatype="html"> <trans-unit id="3105754554141014845" datatype="html">
@ -6463,7 +6431,7 @@
<target state="new">Data Gathering</target> <target state="new">Data Gathering</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">60</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6439365426343089851" datatype="html"> <trans-unit id="6439365426343089851" datatype="html">
@ -6715,7 +6683,7 @@
<target state="new">Do you really want to delete these profiles?</target> <target state="new">Do you really want to delete these profiles?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">68</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8127349194179456616" datatype="html"> <trans-unit id="8127349194179456616" datatype="html">
@ -6723,7 +6691,7 @@
<target state="new">Oops! Could not delete profiles.</target> <target state="new">Oops! Could not delete profiles.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html"> <trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html">
@ -6867,7 +6835,7 @@
<target state="new">Australia</target> <target state="new">Australia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context> <context context-type="linenumber">74</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="21641575311466062" datatype="html"> <trans-unit id="21641575311466062" datatype="html">
@ -6875,7 +6843,7 @@
<target state="new">Austria</target> <target state="new">Austria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6787546539374733271" datatype="html"> <trans-unit id="6787546539374733271" datatype="html">
@ -6883,7 +6851,7 @@
<target state="new">Belgium</target> <target state="new">Belgium</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">75</context> <context context-type="linenumber">76</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8273479446468988017" datatype="html"> <trans-unit id="8273479446468988017" datatype="html">
@ -6891,7 +6859,7 @@
<target state="new">Bulgaria</target> <target state="new">Bulgaria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">76</context> <context context-type="linenumber">78</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3486679398271885916" datatype="html"> <trans-unit id="3486679398271885916" datatype="html">
@ -6899,7 +6867,7 @@
<target state="new">Canada</target> <target state="new">Canada</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context> <context context-type="linenumber">79</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="724957661944599897" datatype="html"> <trans-unit id="724957661944599897" datatype="html">
@ -6907,7 +6875,7 @@
<target state="new">Czech Republic</target> <target state="new">Czech Republic</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">78</context> <context context-type="linenumber">80</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8812557643580169825" datatype="html"> <trans-unit id="8812557643580169825" datatype="html">
@ -6915,7 +6883,7 @@
<target state="new">Finland</target> <target state="new">Finland</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">79</context> <context context-type="linenumber">81</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="956678847762152494" datatype="html"> <trans-unit id="956678847762152494" datatype="html">
@ -6923,7 +6891,7 @@
<target state="new">France</target> <target state="new">France</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">80</context> <context context-type="linenumber">82</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6014862663057951430" datatype="html"> <trans-unit id="6014862663057951430" datatype="html">
@ -6931,7 +6899,7 @@
<target state="new">Germany</target> <target state="new">Germany</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">83</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="212820117866187249" datatype="html"> <trans-unit id="212820117866187249" datatype="html">
@ -6939,7 +6907,7 @@
<target state="new">India</target> <target state="new">India</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">84</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2427223107800831324" datatype="html"> <trans-unit id="2427223107800831324" datatype="html">
@ -6947,7 +6915,7 @@
<target state="new">Italy</target> <target state="new">Italy</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">83</context> <context context-type="linenumber">85</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3783587393795767345" datatype="html"> <trans-unit id="3783587393795767345" datatype="html">
@ -6955,7 +6923,7 @@
<target state="new">Netherlands</target> <target state="new">Netherlands</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">87</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3591085113786124083" datatype="html"> <trans-unit id="3591085113786124083" datatype="html">
@ -6963,7 +6931,7 @@
<target state="new">New Zealand</target> <target state="new">New Zealand</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2356316679035829946" datatype="html"> <trans-unit id="2356316679035829946" datatype="html">
@ -6971,7 +6939,7 @@
<target state="new">Poland</target> <target state="new">Poland</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="545992063382313902" datatype="html"> <trans-unit id="545992063382313902" datatype="html">
@ -6979,7 +6947,7 @@
<target state="new">Romania</target> <target state="new">Romania</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">88</context> <context context-type="linenumber">90</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8039968326438721789" datatype="html"> <trans-unit id="8039968326438721789" datatype="html">
@ -6987,7 +6955,7 @@
<target state="new">South Africa</target> <target state="new">South Africa</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">92</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2040543873210054611" datatype="html"> <trans-unit id="2040543873210054611" datatype="html">
@ -6995,7 +6963,7 @@
<target state="new">Thailand</target> <target state="new">Thailand</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6133495983093212227" datatype="html"> <trans-unit id="6133495983093212227" datatype="html">
@ -7003,7 +6971,7 @@
<target state="new">United States</target> <target state="new">United States</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">93</context> <context context-type="linenumber">96</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1519954996184640001" datatype="html"> <trans-unit id="1519954996184640001" datatype="html">
@ -7035,7 +7003,7 @@
<target state="new">Inactive</target> <target state="new">Inactive</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -7347,7 +7315,7 @@
<target state="new">Ukraine</target> <target state="new">Ukraine</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">95</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html"> <trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html">
@ -7437,7 +7405,7 @@
<target state="new">Economic Market Cluster Risks</target> <target state="new">Economic Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">130</context> <context context-type="linenumber">165</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html"> <trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html">
@ -7565,7 +7533,7 @@
<target state="new">out of</target> <target state="new">out of</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html"> <trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html">
@ -7573,7 +7541,7 @@
<target state="new">rules align with your portfolio.</target> <target state="new">rules align with your portfolio.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">24</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3768927257183755959" datatype="html"> <trans-unit id="3768927257183755959" datatype="html">
@ -7589,7 +7557,7 @@
<target state="new">Asset Class Cluster Risks</target> <target state="new">Asset Class Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7156797854368699223" datatype="html"> <trans-unit id="7156797854368699223" datatype="html">
@ -7621,15 +7589,7 @@
<target state="new">AI prompt has been copied to the clipboard</target> <target state="new">AI prompt has been copied to the clipboard</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">153</context> <context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="4eecb3acb016e7d86740405b21599cdad8e0dd9f" datatype="html">
<source>Copy AI prompt to clipboard</source>
<target state="new">Copy AI prompt to clipboard</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">27</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7653,7 +7613,7 @@
<target state="new">Regional Market Cluster Risks</target> <target state="new">Regional Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">189</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8540986733881734625" datatype="html"> <trans-unit id="8540986733881734625" datatype="html">
@ -7725,7 +7685,7 @@
<target state="new">Open Duck.ai</target> <target state="new">Open Duck.ai</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7764,6 +7724,86 @@
<context context-type="linenumber">378</context> <context context-type="linenumber">378</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="afd6e2886f0bb7db3b54bef42bced4e7c67cc40c" datatype="html">
<source>Copy portfolio data to clipboard for AI prompt</source>
<target state="new">Copy portfolio data to clipboard for AI prompt</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="187b68f90f45d63f0d3b1e830ac92f98d2447313" datatype="html">
<source>Copy AI prompt to clipboard for analysis</source>
<target state="new">Copy AI prompt to clipboard for analysis</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5004849258025239958" datatype="html">
<source>Armenia</source>
<target state="new">Armenia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context>
</context-group>
</trans-unit>
<trans-unit id="7899437916897426237" datatype="html">
<source>British Virgin Islands</source>
<target state="new">British Virgin Islands</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context>
</context-group>
</trans-unit>
<trans-unit id="4830118002486243553" datatype="html">
<source>Singapore</source>
<target state="new">Singapore</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context>
</context-group>
</trans-unit>
<trans-unit id="e9048704780ed5bb3fc1af4f94d4fc5fdeb72cab" datatype="html">
<source>Terms and Conditions</source>
<target state="new">Terms and Conditions</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4051385e7211aebdb652666927a0564de3e74fd0" datatype="html">
<source>Please keep your security token safe. If you lose it, you will not be able to recover your account.</source>
<target state="new">Please keep your security token safe. If you lose it, you will not be able to recover your account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="0c165378eae03c8bd376d2819d94b108d9929c64" datatype="html">
<source>I understand that if I lose my security token, I cannot recover my account.</source>
<target state="new">I understand that if I lose my security token, I cannot recover my account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">
<source>Continue</source>
<target state="new">Continue</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="43a04e6b986ac8b5184330fdcc4235867d48bcf7" datatype="html">
<source>Here is your security token. It is only visible once, please store and keep it in a safe place.</source>
<target state="new">Here is your security token. It is only visible once, please store and keep it in a safe place.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">47</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

@ -52,6 +52,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">2</context> <context context-type="linenumber">2</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="41d338980f469b334618a07e799b4aa40fcf4834" datatype="html"> <trans-unit id="41d338980f469b334618a07e799b4aa40fcf4834" datatype="html">
<source>Personal Finance</source> <source>Personal Finance</source>
@ -1197,10 +1201,6 @@
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">231</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">92</context>
@ -1231,11 +1231,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">129</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">196</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
@ -1635,7 +1631,7 @@
<target state="translated">Ви дійсно хочете видалити цей профіль активу?</target> <target state="translated">Ви дійсно хочете видалити цей профіль активу?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">36</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8127349194179456616" datatype="html"> <trans-unit id="8127349194179456616" datatype="html">
@ -1643,7 +1639,7 @@
<target state="translated">Упс! Не вдалося видалити профілі.</target> <target state="translated">Упс! Не вдалося видалити профілі.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3514960995395821133" datatype="html"> <trans-unit id="3514960995395821133" datatype="html">
@ -1651,7 +1647,7 @@
<target state="translated">Ви дійсно хочете видалити ці профілі?</target> <target state="translated">Ви дійсно хочете видалити ці профілі?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">68</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1519954996184640001" datatype="html"> <trans-unit id="1519954996184640001" datatype="html">
@ -1855,7 +1851,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context> <context context-type="linenumber">29</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
@ -1959,15 +1955,7 @@
<target state="translated">Ви дійсно хочете видалити цей купон?</target> <target state="translated">Ви дійсно хочете видалити цей купон?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">137</context> <context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="1110981355132746478" datatype="html">
<source>Do you really want to delete this currency?</source>
<target state="translated">Ви дійсно хочете видалити цю валюту?</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">150</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="297546430113071258" datatype="html"> <trans-unit id="297546430113071258" datatype="html">
@ -1975,7 +1963,7 @@
<target state="translated">Ви дійсно хочете видалити це системне повідомлення?</target> <target state="translated">Ви дійсно хочете видалити це системне повідомлення?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">163</context> <context context-type="linenumber">147</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6470890277760887814" datatype="html"> <trans-unit id="6470890277760887814" datatype="html">
@ -1983,7 +1971,7 @@
<target state="translated">Ви дійсно хочете очистити кеш?</target> <target state="translated">Ви дійсно хочете очистити кеш?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">187</context> <context context-type="linenumber">171</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2712770700065625080" datatype="html"> <trans-unit id="2712770700065625080" datatype="html">
@ -1991,7 +1979,7 @@
<target state="translated">Будь ласка, встановіть ваше системне повідомлення:</target> <target state="translated">Будь ласка, встановіть ваше системне повідомлення:</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">191</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html"> <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">
@ -2026,20 +2014,12 @@
<context context-type="linenumber">28</context> <context context-type="linenumber">28</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="37ff0697aa81b2777250c483d2ce1ebdaa5ab042" datatype="html">
<source>Exchange Rates</source>
<target state="translated">Обмінні курси</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="62f17fd50522539fd4c85854828db9d2e1c5330f" datatype="html"> <trans-unit id="62f17fd50522539fd4c85854828db9d2e1c5330f" datatype="html">
<source>User Signup</source> <source>User Signup</source>
<target state="translated">Реєстрація користувача</target> <target state="translated">Реєстрація користувача</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">101</context> <context context-type="linenumber">34</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html"> <trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html">
@ -2047,7 +2027,7 @@
<target state="translated">Режим лише для читання</target> <target state="translated">Режим лише для читання</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">48</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4f986b5ab20fe31ca54d7345a73b6b2402ddd350" datatype="html"> <trans-unit id="4f986b5ab20fe31ca54d7345a73b6b2402ddd350" datatype="html">
@ -2055,7 +2035,7 @@
<target state="translated">Збір даних</target> <target state="translated">Збір даних</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">60</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="860e5f056b59410ec8db65cb53955505c6931752" datatype="html"> <trans-unit id="860e5f056b59410ec8db65cb53955505c6931752" datatype="html">
@ -2063,7 +2043,7 @@
<target state="translated">Системне повідомлення</target> <target state="translated">Системне повідомлення</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">139</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html"> <trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html">
@ -2071,7 +2051,7 @@
<target state="translated">Встановити повідомлення</target> <target state="translated">Встановити повідомлення</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">161</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html"> <trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html">
@ -2079,7 +2059,7 @@
<target state="translated">Купони</target> <target state="translated">Купони</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html"> <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">
@ -2087,7 +2067,7 @@
<target state="translated">Додати</target> <target state="translated">Додати</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">229</context> <context context-type="linenumber">162</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context>
@ -2099,7 +2079,7 @@
<target state="translated">Прибирання</target> <target state="translated">Прибирання</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">237</context> <context context-type="linenumber">170</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html"> <trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html">
@ -2107,7 +2087,7 @@
<target state="translated">Очистити кеш</target> <target state="translated">Очистити кеш</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e587f3aaad8881a0b7732fb3e86df8a4c91f25d2" datatype="html"> <trans-unit id="e587f3aaad8881a0b7732fb3e86df8a4c91f25d2" datatype="html">
@ -2731,7 +2711,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">178</context> <context context-type="linenumber">213</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html"> <trans-unit id="f2005fa461c06dc2e04d8918bbabedf23604b5b7" datatype="html">
@ -2799,7 +2779,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">98</context> <context context-type="linenumber">101</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6844699413925472826" datatype="html"> <trans-unit id="6844699413925472826" datatype="html">
@ -2811,7 +2791,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">99</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html"> <trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html">
@ -2943,7 +2923,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context> <context context-type="linenumber">44</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">52</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="06ce3d665f2d87f69884667d21699ab1cc6fa585" datatype="html"> <trans-unit id="06ce3d665f2d87f69884667d21699ab1cc6fa585" datatype="html">
@ -3071,7 +3055,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">34</context> <context context-type="linenumber">69</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="311828ec96f91f6f530219b07d5531a8aa507d64" datatype="html"> <trans-unit id="311828ec96f91f6f530219b07d5531a8aa507d64" datatype="html">
@ -5331,7 +5315,7 @@
<target state="translated">Дивіденди</target> <target state="translated">Дивіденди</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -5343,11 +5327,11 @@
<target state="translated">Інвестиції</target> <target state="translated">Інвестиції</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">61</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context>
@ -5359,7 +5343,7 @@
<target state="translated">Щомісячно</target> <target state="translated">Щомісячно</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">66</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8036977202721714375" datatype="html"> <trans-unit id="8036977202721714375" datatype="html">
@ -5367,7 +5351,7 @@
<target state="translated">Щорічно</target> <target state="translated">Щорічно</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">56</context> <context context-type="linenumber">67</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -5383,7 +5367,7 @@
<target state="translated">Абсолютна прибутковість активів</target> <target state="translated">Абсолютна прибутковість активів</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">60</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html"> <trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html">
@ -5391,7 +5375,7 @@
<target state="translated"> Прибутковість активів </target> <target state="translated"> Прибутковість активів </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html"> <trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html">
@ -5399,7 +5383,7 @@
<target state="translated">Абсолютна прибутковість валюти</target> <target state="translated">Абсолютна прибутковість валюти</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">145</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html"> <trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html">
@ -5407,7 +5391,7 @@
<target state="translated"> Прибутковість валюти </target> <target state="translated"> Прибутковість валюти </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">169</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html"> <trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html">
@ -5415,7 +5399,7 @@
<target state="translated"> Абсолютна чиста прибутковість </target> <target state="translated"> Абсолютна чиста прибутковість </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">150</context> <context context-type="linenumber">192</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html"> <trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html">
@ -5423,7 +5407,7 @@
<target state="translated"> Чиста прибутковість </target> <target state="translated"> Чиста прибутковість </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">211</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6ae1c94f6bad274424f97e9bc8766242c1577447" datatype="html"> <trans-unit id="6ae1c94f6bad274424f97e9bc8766242c1577447" datatype="html">
@ -5431,7 +5415,7 @@
<target state="translated">Топ</target> <target state="translated">Топ</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">239</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html"> <trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html">
@ -5439,7 +5423,7 @@
<target state="translated">Низ</target> <target state="translated">Низ</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">246</context> <context context-type="linenumber">288</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html"> <trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html">
@ -5447,7 +5431,7 @@
<target state="translated">Еволюція портфеля</target> <target state="translated">Еволюція портфеля</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">341</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html"> <trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html">
@ -5455,7 +5439,7 @@
<target state="translated">Інвестиційний графік</target> <target state="translated">Інвестиційний графік</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">326</context> <context context-type="linenumber">368</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1c275927e7e22395d21a86e4ab459e428bcac27e" datatype="html"> <trans-unit id="1c275927e7e22395d21a86e4ab459e428bcac27e" datatype="html">
@ -5463,7 +5447,7 @@
<target state="translated">Поточна серія</target> <target state="translated">Поточна серія</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">347</context> <context context-type="linenumber">389</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html"> <trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html">
@ -5471,7 +5455,7 @@
<target state="translated">Найдовша серія</target> <target state="translated">Найдовша серія</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">356</context> <context context-type="linenumber">398</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html"> <trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html">
@ -5479,7 +5463,7 @@
<target state="translated">Графік дивідендів</target> <target state="translated">Графік дивідендів</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">383</context> <context context-type="linenumber">425</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html"> <trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html">
@ -5527,7 +5511,7 @@
<target state="translated">з</target> <target state="translated">з</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html"> <trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html">
@ -5535,7 +5519,7 @@
<target state="translated">правила узгоджуються з вашим портфелем.</target> <target state="translated">правила узгоджуються з вашим портфелем.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">24</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="50760c2140335b2324deaee120f40d9aa64b3238" datatype="html"> <trans-unit id="50760c2140335b2324deaee120f40d9aa64b3238" datatype="html">
@ -5543,7 +5527,7 @@
<target state="translated">Ризики зосередження валюти</target> <target state="translated">Ризики зосередження валюти</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">58</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c8b54fb8af53c13793e37377e06bbcd3c7dc2c7d" datatype="html"> <trans-unit id="c8b54fb8af53c13793e37377e06bbcd3c7dc2c7d" datatype="html">
@ -5551,7 +5535,7 @@
<target state="translated">Ризики зосередження класу активів</target> <target state="translated">Ризики зосередження класу активів</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html"> <trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html">
@ -5559,7 +5543,7 @@
<target state="translated">Ризики зосередження рахунків</target> <target state="translated">Ризики зосередження рахунків</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">106</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d3e4b4ce50139bdb8e2ba2703e5e3b2417c0c832" datatype="html"> <trans-unit id="d3e4b4ce50139bdb8e2ba2703e5e3b2417c0c832" datatype="html">
@ -5567,7 +5551,7 @@
<target state="translated">Ризики зосередження економічного ринку</target> <target state="translated">Ризики зосередження економічного ринку</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">130</context> <context context-type="linenumber">165</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="43c4133c7a0263d2e33dd4c2e74d40784b2e4b1c" datatype="html"> <trans-unit id="43c4133c7a0263d2e33dd4c2e74d40784b2e4b1c" datatype="html">
@ -5575,7 +5559,7 @@
<target state="translated">Неактивний</target> <target state="translated">Неактивний</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5080775557941296581" datatype="html"> <trans-unit id="5080775557941296581" datatype="html">
@ -5855,23 +5839,7 @@
<target state="translated">Копіювати в буфер обміну</target> <target state="translated">Копіювати в буфер обміну</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">26</context> <context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="9397711dc06a5d217fb57befe8ae2fec4b8ed039" datatype="html">
<source> I agree to have stored my <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> from above in a secure place. If I lose it, I cannot get my account back. </source>
<target state="translated"> Я погоджуюся зберігати свій <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Секретний Токен<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> у безпечному місці. Якщо я його втрачу, я не зможу відновити свій акаунт. </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="6a9a8caf09dab1871f119d73dfb79db2eda37a35" datatype="html">
<source>Agree and continue</source>
<target state="translated">Погоджуюся і продовжую</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5020357869062357338" datatype="html"> <trans-unit id="5020357869062357338" datatype="html">
@ -6009,7 +5977,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">90</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3437679369074503203" datatype="html"> <trans-unit id="3437679369074503203" datatype="html">
@ -6669,7 +6637,7 @@
<target state="translated">Ви дійсно хочете видалити ці дії?</target> <target state="translated">Ви дійсно хочете видалити ці дії?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">218</context> <context context-type="linenumber">219</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="670983159637074283" datatype="html"> <trans-unit id="670983159637074283" datatype="html">
@ -6677,7 +6645,7 @@
<target state="translated">Ви дійсно хочете видалити цю активність?</target> <target state="translated">Ви дійсно хочете видалити цю активність?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">229</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4149127798893455354" datatype="html"> <trans-unit id="4149127798893455354" datatype="html">
@ -7385,7 +7353,7 @@
<target state="translated">Австралія</target> <target state="translated">Австралія</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context> <context context-type="linenumber">74</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="21641575311466062" datatype="html"> <trans-unit id="21641575311466062" datatype="html">
@ -7393,7 +7361,7 @@
<target state="translated">Австрія</target> <target state="translated">Австрія</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6787546539374733271" datatype="html"> <trans-unit id="6787546539374733271" datatype="html">
@ -7401,7 +7369,7 @@
<target state="translated">Бельгія</target> <target state="translated">Бельгія</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">75</context> <context context-type="linenumber">76</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8273479446468988017" datatype="html"> <trans-unit id="8273479446468988017" datatype="html">
@ -7409,7 +7377,7 @@
<target state="translated">Болгарія</target> <target state="translated">Болгарія</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">76</context> <context context-type="linenumber">78</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3486679398271885916" datatype="html"> <trans-unit id="3486679398271885916" datatype="html">
@ -7417,7 +7385,7 @@
<target state="translated">Канада</target> <target state="translated">Канада</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context> <context context-type="linenumber">79</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="724957661944599897" datatype="html"> <trans-unit id="724957661944599897" datatype="html">
@ -7425,7 +7393,7 @@
<target state="translated">Чеська Республіка</target> <target state="translated">Чеська Республіка</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">78</context> <context context-type="linenumber">80</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8812557643580169825" datatype="html"> <trans-unit id="8812557643580169825" datatype="html">
@ -7433,7 +7401,7 @@
<target state="translated">Фінляндія</target> <target state="translated">Фінляндія</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">79</context> <context context-type="linenumber">81</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="956678847762152494" datatype="html"> <trans-unit id="956678847762152494" datatype="html">
@ -7441,7 +7409,7 @@
<target state="translated">Франція</target> <target state="translated">Франція</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">80</context> <context context-type="linenumber">82</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6014862663057951430" datatype="html"> <trans-unit id="6014862663057951430" datatype="html">
@ -7449,7 +7417,7 @@
<target state="translated">Німеччина</target> <target state="translated">Німеччина</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">83</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="212820117866187249" datatype="html"> <trans-unit id="212820117866187249" datatype="html">
@ -7457,7 +7425,7 @@
<target state="translated">Індія</target> <target state="translated">Індія</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">84</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2427223107800831324" datatype="html"> <trans-unit id="2427223107800831324" datatype="html">
@ -7465,7 +7433,7 @@
<target state="translated">Італія</target> <target state="translated">Італія</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">83</context> <context context-type="linenumber">85</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="80663871075536039" datatype="html"> <trans-unit id="80663871075536039" datatype="html">
@ -7473,7 +7441,7 @@
<target state="translated">Японія</target> <target state="translated">Японія</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3783587393795767345" datatype="html"> <trans-unit id="3783587393795767345" datatype="html">
@ -7481,7 +7449,7 @@
<target state="translated">Нідерланди</target> <target state="translated">Нідерланди</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">87</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3591085113786124083" datatype="html"> <trans-unit id="3591085113786124083" datatype="html">
@ -7489,7 +7457,7 @@
<target state="translated">Нова Зеландія</target> <target state="translated">Нова Зеландія</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2356316679035829946" datatype="html"> <trans-unit id="2356316679035829946" datatype="html">
@ -7497,7 +7465,7 @@
<target state="translated">Польща</target> <target state="translated">Польща</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="545992063382313902" datatype="html"> <trans-unit id="545992063382313902" datatype="html">
@ -7505,7 +7473,7 @@
<target state="translated">Румунія</target> <target state="translated">Румунія</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">88</context> <context context-type="linenumber">90</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8039968326438721789" datatype="html"> <trans-unit id="8039968326438721789" datatype="html">
@ -7513,7 +7481,7 @@
<target state="translated">Південна Африка</target> <target state="translated">Південна Африка</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">92</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2040543873210054611" datatype="html"> <trans-unit id="2040543873210054611" datatype="html">
@ -7521,7 +7489,7 @@
<target state="translated">Таїланд</target> <target state="translated">Таїланд</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4346283537747431562" datatype="html"> <trans-unit id="4346283537747431562" datatype="html">
@ -7529,7 +7497,7 @@
<target state="translated">Україна</target> <target state="translated">Україна</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">95</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6133495983093212227" datatype="html"> <trans-unit id="6133495983093212227" datatype="html">
@ -7537,7 +7505,7 @@
<target state="translated">Сполучені Штати</target> <target state="translated">Сполучені Штати</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">93</context> <context context-type="linenumber">96</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1189482335778578193" datatype="html"> <trans-unit id="1189482335778578193" datatype="html">
@ -7545,7 +7513,7 @@
<target state="translated">Екстремальний страх</target> <target state="translated">Екстремальний страх</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">96</context> <context context-type="linenumber">99</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2634398159221205491" datatype="html"> <trans-unit id="2634398159221205491" datatype="html">
@ -7553,7 +7521,7 @@
<target state="translated">Екстремальна жадібність</target> <target state="translated">Екстремальна жадібність</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">100</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3511545370905854666" datatype="html"> <trans-unit id="3511545370905854666" datatype="html">
@ -7561,7 +7529,7 @@
<target state="translated">Нейтрально</target> <target state="translated">Нейтрально</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="258c041e93862316871096965e2d70579282fb1a" datatype="html"> <trans-unit id="258c041e93862316871096965e2d70579282fb1a" datatype="html">
@ -7629,15 +7597,7 @@
<target state="translated">Запит AI скопійовано в буфер обміну</target> <target state="translated">Запит AI скопійовано в буфер обміну</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">153</context> <context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="4eecb3acb016e7d86740405b21599cdad8e0dd9f" datatype="html">
<source>Copy AI prompt to clipboard</source>
<target state="translated">Скопіюйте запит AI в буфер обміну</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">27</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4499ce8c46ad55564b23a42ed752e72984c0248f" datatype="html"> <trans-unit id="4499ce8c46ad55564b23a42ed752e72984c0248f" datatype="html">
@ -7653,7 +7613,7 @@
<target state="new">Regional Market Cluster Risks</target> <target state="new">Regional Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">189</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8540986733881734625" datatype="html"> <trans-unit id="8540986733881734625" datatype="html">
@ -7725,7 +7685,7 @@
<target state="new">Open Duck.ai</target> <target state="new">Open Duck.ai</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7764,6 +7724,86 @@
<context context-type="linenumber">378</context> <context context-type="linenumber">378</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="afd6e2886f0bb7db3b54bef42bced4e7c67cc40c" datatype="html">
<source>Copy portfolio data to clipboard for AI prompt</source>
<target state="new">Copy portfolio data to clipboard for AI prompt</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="187b68f90f45d63f0d3b1e830ac92f98d2447313" datatype="html">
<source>Copy AI prompt to clipboard for analysis</source>
<target state="new">Copy AI prompt to clipboard for analysis</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5004849258025239958" datatype="html">
<source>Armenia</source>
<target state="new">Armenia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context>
</context-group>
</trans-unit>
<trans-unit id="7899437916897426237" datatype="html">
<source>British Virgin Islands</source>
<target state="new">British Virgin Islands</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context>
</context-group>
</trans-unit>
<trans-unit id="4830118002486243553" datatype="html">
<source>Singapore</source>
<target state="new">Singapore</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context>
</context-group>
</trans-unit>
<trans-unit id="e9048704780ed5bb3fc1af4f94d4fc5fdeb72cab" datatype="html">
<source>Terms and Conditions</source>
<target state="new">Terms and Conditions</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4051385e7211aebdb652666927a0564de3e74fd0" datatype="html">
<source>Please keep your security token safe. If you lose it, you will not be able to recover your account.</source>
<target state="new">Please keep your security token safe. If you lose it, you will not be able to recover your account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="0c165378eae03c8bd376d2819d94b108d9929c64" datatype="html">
<source>I understand that if I lose my security token, I cannot recover my account.</source>
<target state="new">I understand that if I lose my security token, I cannot recover my account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">
<source>Continue</source>
<target state="new">Continue</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="43a04e6b986ac8b5184330fdcc4235867d48bcf7" datatype="html">
<source>Here is your security token. It is only visible once, please store and keep it in a safe place.</source>
<target state="new">Here is your security token. It is only visible once, please store and keep it in a safe place.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">47</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

@ -459,6 +459,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">2</context> <context context-type="linenumber">2</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="41d338980f469b334618a07e799b4aa40fcf4834" datatype="html"> <trans-unit id="41d338980f469b334618a07e799b4aa40fcf4834" datatype="html">
<source>Personal Finance</source> <source>Personal Finance</source>
@ -1077,10 +1081,6 @@
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">231</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">92</context>
@ -1110,11 +1110,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">129</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">196</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
@ -1329,7 +1325,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context> <context context-type="linenumber">29</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
@ -1400,7 +1396,7 @@
<source>Do you really want to delete this asset profile?</source> <source>Do you really want to delete this asset profile?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">36</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4550487415324294802" datatype="html"> <trans-unit id="4550487415324294802" datatype="html">
@ -1704,35 +1700,28 @@
<source>Do you really want to delete this coupon?</source> <source>Do you really want to delete this coupon?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">137</context> <context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="1110981355132746478" datatype="html">
<source>Do you really want to delete this currency?</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">150</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="297546430113071258" datatype="html"> <trans-unit id="297546430113071258" datatype="html">
<source>Do you really want to delete this system message?</source> <source>Do you really want to delete this system message?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">163</context> <context context-type="linenumber">147</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6470890277760887814" datatype="html"> <trans-unit id="6470890277760887814" datatype="html">
<source>Do you really want to flush the cache?</source> <source>Do you really want to flush the cache?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">187</context> <context context-type="linenumber">171</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2712770700065625080" datatype="html"> <trans-unit id="2712770700065625080" datatype="html">
<source>Please set your system message:</source> <source>Please set your system message:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">191</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html"> <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">
@ -1763,13 +1752,6 @@
<context context-type="linenumber">28</context> <context context-type="linenumber">28</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="37ff0697aa81b2777250c483d2ce1ebdaa5ab042" datatype="html">
<source>Exchange Rates</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html"> <trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html">
<source>Add Currency</source> <source>Add Currency</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1781,42 +1763,42 @@
<source>User Signup</source> <source>User Signup</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">101</context> <context context-type="linenumber">34</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html"> <trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html">
<source>Read-only Mode</source> <source>Read-only Mode</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">48</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="860e5f056b59410ec8db65cb53955505c6931752" datatype="html"> <trans-unit id="860e5f056b59410ec8db65cb53955505c6931752" datatype="html">
<source>System Message</source> <source>System Message</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">139</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html"> <trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html">
<source>Set Message</source> <source>Set Message</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">161</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html"> <trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html">
<source>Coupons</source> <source>Coupons</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html"> <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">
<source>Add</source> <source>Add</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">229</context> <context context-type="linenumber">162</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context>
@ -1827,14 +1809,14 @@
<source>Housekeeping</source> <source>Housekeeping</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">237</context> <context context-type="linenumber">170</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html"> <trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html">
<source>Flush Cache</source> <source>Flush Cache</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e587f3aaad8881a0b7732fb3e86df8a4c91f25d2" datatype="html"> <trans-unit id="e587f3aaad8881a0b7732fb3e86df8a4c91f25d2" datatype="html">
@ -2188,7 +2170,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">98</context> <context context-type="linenumber">101</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6844699413925472826" datatype="html"> <trans-unit id="6844699413925472826" datatype="html">
@ -2199,7 +2181,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">99</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html"> <trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html">
@ -2316,7 +2298,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context> <context context-type="linenumber">44</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">52</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html"> <trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html">
@ -2422,7 +2408,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">178</context> <context context-type="linenumber">213</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="de518fa0cd3a454e84102c0d9984c4a3cfdb590d" datatype="html"> <trans-unit id="de518fa0cd3a454e84102c0d9984c4a3cfdb590d" datatype="html">
@ -2465,7 +2451,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">34</context> <context context-type="linenumber">69</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="311828ec96f91f6f530219b07d5531a8aa507d64" datatype="html"> <trans-unit id="311828ec96f91f6f530219b07d5531a8aa507d64" datatype="html">
@ -3875,7 +3861,7 @@
<source>Do you really want to delete these activities?</source> <source>Do you really want to delete these activities?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">218</context> <context context-type="linenumber">219</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72ba3bcdd8350cb8bf462e217a28ec7f7a48bb44" datatype="html"> <trans-unit id="72ba3bcdd8350cb8bf462e217a28ec7f7a48bb44" datatype="html">
@ -4276,7 +4262,7 @@
<source>Dividend</source> <source>Dividend</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -4294,14 +4280,14 @@
<source>Monthly</source> <source>Monthly</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">66</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8036977202721714375" datatype="html"> <trans-unit id="8036977202721714375" datatype="html">
<source>Yearly</source> <source>Yearly</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">56</context> <context context-type="linenumber">67</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -4315,49 +4301,49 @@
<source>Top</source> <source>Top</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">239</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html"> <trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html">
<source>Bottom</source> <source>Bottom</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">246</context> <context context-type="linenumber">288</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html"> <trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html">
<source>Portfolio Evolution</source> <source>Portfolio Evolution</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">341</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html"> <trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html">
<source>Investment Timeline</source> <source>Investment Timeline</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">326</context> <context context-type="linenumber">368</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1c275927e7e22395d21a86e4ab459e428bcac27e" datatype="html"> <trans-unit id="1c275927e7e22395d21a86e4ab459e428bcac27e" datatype="html">
<source>Current Streak</source> <source>Current Streak</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">347</context> <context context-type="linenumber">389</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html"> <trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html">
<source>Longest Streak</source> <source>Longest Streak</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">356</context> <context context-type="linenumber">398</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html"> <trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html">
<source>Dividend Timeline</source> <source>Dividend Timeline</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">383</context> <context context-type="linenumber">425</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html"> <trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html">
@ -4385,14 +4371,14 @@
<source>Currency Cluster Risks</source> <source>Currency Cluster Risks</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">58</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html"> <trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html">
<source>Account Cluster Risks</source> <source>Account Cluster Risks</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">106</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4945c8e3bbf650f8dc6d03b16553f2c0bac42b11" datatype="html"> <trans-unit id="4945c8e3bbf650f8dc6d03b16553f2c0bac42b11" datatype="html">
@ -4655,21 +4641,7 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">26</context> <context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="9397711dc06a5d217fb57befe8ae2fec4b8ed039" datatype="html">
<source> I agree to have stored my <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> from above in a secure place. If I lose it, I cannot get my account back. </source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="6a9a8caf09dab1871f119d73dfb79db2eda37a35" datatype="html">
<source>Agree and continue</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1914201149277662818" datatype="html"> <trans-unit id="1914201149277662818" datatype="html">
@ -4951,7 +4923,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">90</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3437679369074503203" datatype="html"> <trans-unit id="3437679369074503203" datatype="html">
@ -5112,7 +5084,7 @@
<source>Do you really want to delete this activity?</source> <source>Do you really want to delete this activity?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">229</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4149127798893455354" datatype="html"> <trans-unit id="4149127798893455354" datatype="html">
@ -5345,7 +5317,7 @@
<source>Japan</source> <source>Japan</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4152514811781104574" datatype="html"> <trans-unit id="4152514811781104574" datatype="html">
@ -5594,21 +5566,21 @@
<source>Extreme Fear</source> <source>Extreme Fear</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">96</context> <context context-type="linenumber">99</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2634398159221205491" datatype="html"> <trans-unit id="2634398159221205491" datatype="html">
<source>Extreme Greed</source> <source>Extreme Greed</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">100</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3511545370905854666" datatype="html"> <trans-unit id="3511545370905854666" datatype="html">
<source>Neutral</source> <source>Neutral</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3c33a66194384cf8c14e25170416767efa56fd98" datatype="html"> <trans-unit id="3c33a66194384cf8c14e25170416767efa56fd98" datatype="html">
@ -5733,32 +5705,32 @@
<source>Absolute Currency Performance</source> <source>Absolute Currency Performance</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">145</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html"> <trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html">
<source> Absolute Net Performance </source> <source> Absolute Net Performance </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">150</context> <context context-type="linenumber">192</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e19955db970092b9cde70be2cea163ab6adfac97" datatype="html"> <trans-unit id="e19955db970092b9cde70be2cea163ab6adfac97" datatype="html">
<source>Absolute Asset Performance</source> <source>Absolute Asset Performance</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">60</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8580549503047096056" datatype="html"> <trans-unit id="8580549503047096056" datatype="html">
<source>Investment</source> <source>Investment</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">61</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context>
@ -5769,21 +5741,21 @@
<source> Asset Performance </source> <source> Asset Performance </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html"> <trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html">
<source> Net Performance </source> <source> Net Performance </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">211</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html"> <trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html">
<source> Currency Performance </source> <source> Currency Performance </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">169</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2593751087640318641" datatype="html"> <trans-unit id="2593751087640318641" datatype="html">
@ -5907,7 +5879,7 @@
<source>Data Gathering</source> <source>Data Gathering</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">60</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6439365426343089851" datatype="html"> <trans-unit id="6439365426343089851" datatype="html">
@ -6086,7 +6058,7 @@
<source>Do you really want to delete these profiles?</source> <source>Do you really want to delete these profiles?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">68</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5a6b8dff75bad9c9ea5e010bd0d34beabd8ef3a2" datatype="html"> <trans-unit id="5a6b8dff75bad9c9ea5e010bd0d34beabd8ef3a2" datatype="html">
@ -6100,7 +6072,7 @@
<source>Oops! Could not delete profiles.</source> <source>Oops! Could not delete profiles.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="829826868886560502" datatype="html"> <trans-unit id="829826868886560502" datatype="html">
@ -6149,35 +6121,35 @@
<source>Thailand</source> <source>Thailand</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="212820117866187249" datatype="html"> <trans-unit id="212820117866187249" datatype="html">
<source>India</source> <source>India</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">84</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="21641575311466062" datatype="html"> <trans-unit id="21641575311466062" datatype="html">
<source>Austria</source> <source>Austria</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2356316679035829946" datatype="html"> <trans-unit id="2356316679035829946" datatype="html">
<source>Poland</source> <source>Poland</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2427223107800831324" datatype="html"> <trans-unit id="2427223107800831324" datatype="html">
<source>Italy</source> <source>Italy</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">83</context> <context context-type="linenumber">85</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2657610384052021428" datatype="html"> <trans-unit id="2657610384052021428" datatype="html">
@ -6219,21 +6191,21 @@
<source>Canada</source> <source>Canada</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context> <context context-type="linenumber">79</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3591085113786124083" datatype="html"> <trans-unit id="3591085113786124083" datatype="html">
<source>New Zealand</source> <source>New Zealand</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3783587393795767345" datatype="html"> <trans-unit id="3783587393795767345" datatype="html">
<source>Netherlands</source> <source>Netherlands</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">87</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4455104386790567151" datatype="html"> <trans-unit id="4455104386790567151" datatype="html">
@ -6268,21 +6240,21 @@
<source>Romania</source> <source>Romania</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">88</context> <context context-type="linenumber">90</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6014862663057951430" datatype="html"> <trans-unit id="6014862663057951430" datatype="html">
<source>Germany</source> <source>Germany</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">83</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6133495983093212227" datatype="html"> <trans-unit id="6133495983093212227" datatype="html">
<source>United States</source> <source>United States</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">93</context> <context context-type="linenumber">96</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="647668541461749965" datatype="html"> <trans-unit id="647668541461749965" datatype="html">
@ -6296,7 +6268,7 @@
<source>Belgium</source> <source>Belgium</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">75</context> <context context-type="linenumber">76</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6984983607470794786" datatype="html"> <trans-unit id="6984983607470794786" datatype="html">
@ -6310,28 +6282,28 @@
<source>Czech Republic</source> <source>Czech Republic</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">78</context> <context context-type="linenumber">80</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="797743923912773831" datatype="html"> <trans-unit id="797743923912773831" datatype="html">
<source>Australia</source> <source>Australia</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context> <context context-type="linenumber">74</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8039968326438721789" datatype="html"> <trans-unit id="8039968326438721789" datatype="html">
<source>South Africa</source> <source>South Africa</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">92</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8273479446468988017" datatype="html"> <trans-unit id="8273479446468988017" datatype="html">
<source>Bulgaria</source> <source>Bulgaria</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">76</context> <context context-type="linenumber">78</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8440128775129354214" datatype="html"> <trans-unit id="8440128775129354214" datatype="html">
@ -6345,14 +6317,14 @@
<source>Finland</source> <source>Finland</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">79</context> <context context-type="linenumber">81</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="956678847762152494" datatype="html"> <trans-unit id="956678847762152494" datatype="html">
<source>France</source> <source>France</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">80</context> <context context-type="linenumber">82</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1519954996184640001" datatype="html"> <trans-unit id="1519954996184640001" datatype="html">
@ -6380,7 +6352,7 @@
<source>Inactive</source> <source>Inactive</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7819314041543176992" datatype="html"> <trans-unit id="7819314041543176992" datatype="html">
@ -6632,7 +6604,7 @@
<source>Ukraine</source> <source>Ukraine</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">95</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8af1a18460a6a5a33c19443ae14a0417c3a9c023" datatype="html"> <trans-unit id="8af1a18460a6a5a33c19443ae14a0417c3a9c023" datatype="html">
@ -6727,7 +6699,7 @@
<source>Economic Market Cluster Risks</source> <source>Economic Market Cluster Risks</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">130</context> <context context-type="linenumber">165</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f907cfe9cf0c373052ff3964f941a5b784c57f06" datatype="html"> <trans-unit id="f907cfe9cf0c373052ff3964f941a5b784c57f06" datatype="html">
@ -6846,14 +6818,14 @@
<source>rules align with your portfolio.</source> <source>rules align with your portfolio.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">24</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e232c3b25e76f260c7801bfacb60eda70dd44efc" datatype="html"> <trans-unit id="e232c3b25e76f260c7801bfacb60eda70dd44efc" datatype="html">
<source>out of</source> <source>out of</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3768927257183755959" datatype="html"> <trans-unit id="3768927257183755959" datatype="html">
@ -6867,7 +6839,7 @@
<source>Asset Class Cluster Risks</source> <source>Asset Class Cluster Risks</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="110cc6cb39e1806d3775fd76f1d0753c9bc0e062" datatype="html"> <trans-unit id="110cc6cb39e1806d3775fd76f1d0753c9bc0e062" datatype="html">
@ -6891,18 +6863,11 @@
<context context-type="linenumber">57</context> <context context-type="linenumber">57</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4eecb3acb016e7d86740405b21599cdad8e0dd9f" datatype="html">
<source>Copy AI prompt to clipboard</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="7826234236931647519" datatype="html"> <trans-unit id="7826234236931647519" datatype="html">
<source>AI prompt has been copied to the clipboard</source> <source>AI prompt has been copied to the clipboard</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">153</context> <context context-type="linenumber">173</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -6923,7 +6888,7 @@
<source>Regional Market Cluster Risks</source> <source>Regional Market Cluster Risks</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">189</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html"> <trans-unit id="37e10df2d9c0c25ef04ac112c9c9a7723e8efae0" datatype="html">
@ -6986,7 +6951,7 @@
<source>Open Duck.ai</source> <source>Open Duck.ai</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7021,6 +6986,76 @@
<context context-type="linenumber">378</context> <context context-type="linenumber">378</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="187b68f90f45d63f0d3b1e830ac92f98d2447313" datatype="html">
<source>Copy AI prompt to clipboard for analysis</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="4830118002486243553" datatype="html">
<source>Singapore</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context>
</context-group>
</trans-unit>
<trans-unit id="5004849258025239958" datatype="html">
<source>Armenia</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context>
</context-group>
</trans-unit>
<trans-unit id="7899437916897426237" datatype="html">
<source>British Virgin Islands</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context>
</context-group>
</trans-unit>
<trans-unit id="afd6e2886f0bb7db3b54bef42bced4e7c67cc40c" datatype="html">
<source>Copy portfolio data to clipboard for AI prompt</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="0c165378eae03c8bd376d2819d94b108d9929c64" datatype="html">
<source>I understand that if I lose my security token, I cannot recover my account.</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="4051385e7211aebdb652666927a0564de3e74fd0" datatype="html">
<source>Please keep your security token safe. If you lose it, you will not be able to recover your account.</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="43a04e6b986ac8b5184330fdcc4235867d48bcf7" datatype="html">
<source>Here is your security token. It is only visible once, please store and keep it in a safe place.</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">47</context>
</context-group>
</trans-unit>
<trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">
<source>Continue</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="e9048704780ed5bb3fc1af4f94d4fc5fdeb72cab" datatype="html">
<source>Terms and Conditions</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

@ -470,6 +470,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">2</context> <context context-type="linenumber">2</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="41d338980f469b334618a07e799b4aa40fcf4834" datatype="html"> <trans-unit id="41d338980f469b334618a07e799b4aa40fcf4834" datatype="html">
<source>Personal Finance</source> <source>Personal Finance</source>
@ -1118,10 +1122,6 @@
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">231</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">92</context>
@ -1152,11 +1152,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">129</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">196</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.html</context>
@ -1388,7 +1384,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context> <context context-type="linenumber">29</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
@ -1464,7 +1460,7 @@
<target state="translated">您确实要删除此资产配置文件吗?</target> <target state="translated">您确实要删除此资产配置文件吗?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">36</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4550487415324294802" datatype="html"> <trans-unit id="4550487415324294802" datatype="html">
@ -1796,15 +1792,7 @@
<target state="translated">您确实要删除此优惠券吗?</target> <target state="translated">您确实要删除此优惠券吗?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">137</context> <context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="1110981355132746478" datatype="html">
<source>Do you really want to delete this currency?</source>
<target state="translated">您真的要删除该货币吗?</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">150</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="297546430113071258" datatype="html"> <trans-unit id="297546430113071258" datatype="html">
@ -1812,7 +1800,7 @@
<target state="translated">您真的要删除这条系统消息吗?</target> <target state="translated">您真的要删除这条系统消息吗?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">163</context> <context context-type="linenumber">147</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6470890277760887814" datatype="html"> <trans-unit id="6470890277760887814" datatype="html">
@ -1820,7 +1808,7 @@
<target state="translated">您真的要刷新缓存吗?</target> <target state="translated">您真的要刷新缓存吗?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">187</context> <context context-type="linenumber">171</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2712770700065625080" datatype="html"> <trans-unit id="2712770700065625080" datatype="html">
@ -1828,7 +1816,7 @@
<target state="translated">请设置您的系统消息:</target> <target state="translated">请设置您的系统消息:</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">191</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html"> <trans-unit id="8fe73a4787b8068b2ba61f54ab7e0f9af2ea1fc9" datatype="html">
@ -1863,14 +1851,6 @@
<context context-type="linenumber">28</context> <context context-type="linenumber">28</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="37ff0697aa81b2777250c483d2ce1ebdaa5ab042" datatype="html">
<source>Exchange Rates</source>
<target state="translated">汇率</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html"> <trans-unit id="4567a660a7f67e254bbf13219906843e34d9f807" datatype="html">
<source>Add Currency</source> <source>Add Currency</source>
<target state="translated">添加货币</target> <target state="translated">添加货币</target>
@ -1884,7 +1864,7 @@
<target state="translated">用户注册</target> <target state="translated">用户注册</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">101</context> <context context-type="linenumber">34</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html"> <trans-unit id="7fd64c34428887e4cd56d05534b89c100b8544ad" datatype="html">
@ -1892,7 +1872,7 @@
<target state="translated">只读模式</target> <target state="translated">只读模式</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">48</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="860e5f056b59410ec8db65cb53955505c6931752" datatype="html"> <trans-unit id="860e5f056b59410ec8db65cb53955505c6931752" datatype="html">
@ -1900,7 +1880,7 @@
<target state="translated">系统信息</target> <target state="translated">系统信息</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">139</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html"> <trans-unit id="657028d5fc9c3da8f2d667b6b15cd0df8b9a3729" datatype="html">
@ -1908,7 +1888,7 @@
<target state="translated">设置留言</target> <target state="translated">设置留言</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">161</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html"> <trans-unit id="e698b03c34b459b1b006d7f0473a49b9fcf5dfc1" datatype="html">
@ -1916,7 +1896,7 @@
<target state="translated">优惠券</target> <target state="translated">优惠券</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html"> <trans-unit id="f6755cff4957d5c3c89bafce5651f1b6fa2b1fd9" datatype="html">
@ -1924,7 +1904,7 @@
<target state="translated">添加</target> <target state="translated">添加</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">229</context> <context context-type="linenumber">162</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/account-balances/account-balances.component.html</context>
@ -1936,7 +1916,7 @@
<target state="translated">家政</target> <target state="translated">家政</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">237</context> <context context-type="linenumber">170</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html"> <trans-unit id="c7ac907e52a7ce2ac70b1786eb5f403ce306ce1f" datatype="html">
@ -1944,7 +1924,7 @@
<target state="translated">刷新缓存</target> <target state="translated">刷新缓存</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e587f3aaad8881a0b7732fb3e86df8a4c91f25d2" datatype="html"> <trans-unit id="e587f3aaad8881a0b7732fb3e86df8a4c91f25d2" datatype="html">
@ -2336,7 +2316,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">98</context> <context context-type="linenumber">101</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6844699413925472826" datatype="html"> <trans-unit id="6844699413925472826" datatype="html">
@ -2348,7 +2328,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">99</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html"> <trans-unit id="ce718ababbce63d776cf8b1f91412beb4c0a6e04" datatype="html">
@ -2480,7 +2460,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context> <context context-type="linenumber">44</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">52</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html"> <trans-unit id="053e81597467a642e04109eebe934c84e6a1f467" datatype="html">
@ -2596,7 +2580,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">178</context> <context context-type="linenumber">213</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="de518fa0cd3a454e84102c0d9984c4a3cfdb590d" datatype="html"> <trans-unit id="de518fa0cd3a454e84102c0d9984c4a3cfdb590d" datatype="html">
@ -2644,7 +2628,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">34</context> <context context-type="linenumber">69</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="311828ec96f91f6f530219b07d5531a8aa507d64" datatype="html"> <trans-unit id="311828ec96f91f6f530219b07d5531a8aa507d64" datatype="html">
@ -4216,7 +4200,7 @@
<target state="new">您真的要删除所有活动吗?</target> <target state="new">您真的要删除所有活动吗?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">218</context> <context context-type="linenumber">219</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72ba3bcdd8350cb8bf462e217a28ec7f7a48bb44" datatype="html"> <trans-unit id="72ba3bcdd8350cb8bf462e217a28ec7f7a48bb44" datatype="html">
@ -4664,7 +4648,7 @@
<target state="translated">股息</target> <target state="translated">股息</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -4684,7 +4668,7 @@
<target state="translated">每月</target> <target state="translated">每月</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">66</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8036977202721714375" datatype="html"> <trans-unit id="8036977202721714375" datatype="html">
@ -4692,7 +4676,7 @@
<target state="translated">每年</target> <target state="translated">每年</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">56</context> <context context-type="linenumber">67</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -4708,7 +4692,7 @@
<target state="translated">顶部</target> <target state="translated">顶部</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">239</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html"> <trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html">
@ -4716,7 +4700,7 @@
<target state="translated">底部</target> <target state="translated">底部</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">246</context> <context context-type="linenumber">288</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html"> <trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html">
@ -4724,7 +4708,7 @@
<target state="translated">投资组合演变</target> <target state="translated">投资组合演变</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">341</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html"> <trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html">
@ -4732,7 +4716,7 @@
<target state="translated">投资时间表</target> <target state="translated">投资时间表</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">326</context> <context context-type="linenumber">368</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1c275927e7e22395d21a86e4ab459e428bcac27e" datatype="html"> <trans-unit id="1c275927e7e22395d21a86e4ab459e428bcac27e" datatype="html">
@ -4740,7 +4724,7 @@
<target state="translated">当前连胜</target> <target state="translated">当前连胜</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">347</context> <context context-type="linenumber">389</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html"> <trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html">
@ -4748,7 +4732,7 @@
<target state="translated">最长连续纪录</target> <target state="translated">最长连续纪录</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">356</context> <context context-type="linenumber">398</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html"> <trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html">
@ -4756,7 +4740,7 @@
<target state="translated">股息时间表</target> <target state="translated">股息时间表</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">383</context> <context context-type="linenumber">425</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html"> <trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html">
@ -4788,7 +4772,7 @@
<target state="translated">货币集群风险</target> <target state="translated">货币集群风险</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">58</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html"> <trans-unit id="c7b797e5df289241021db16010efb6ac3c6cfb86" datatype="html">
@ -4796,7 +4780,7 @@
<target state="translated">账户集群风险</target> <target state="translated">账户集群风险</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">106</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4945c8e3bbf650f8dc6d03b16553f2c0bac42b11" datatype="html"> <trans-unit id="4945c8e3bbf650f8dc6d03b16553f2c0bac42b11" datatype="html">
@ -5088,23 +5072,7 @@
<target state="translated">复制到剪贴板</target> <target state="translated">复制到剪贴板</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">26</context> <context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="9397711dc06a5d217fb57befe8ae2fec4b8ed039" datatype="html">
<source> I agree to have stored my <x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>Security Token<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/> from above in a secure place. If I lose it, I cannot get my account back. </source>
<target state="translated">我同意存储我的<x id="START_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;i&gt;"/>保安编码器<x id="CLOSE_ITALIC_TEXT" ctype="x-i" equiv-text="&lt;/i&gt;"/>从上面看,在一个安全的地方。如果我丢失了它,我将无法找回我的帐户。</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="6a9a8caf09dab1871f119d73dfb79db2eda37a35" datatype="html">
<source>Agree and continue</source>
<target state="translated">同意并继续</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1914201149277662818" datatype="html"> <trans-unit id="1914201149277662818" datatype="html">
@ -5416,7 +5384,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">90</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3437679369074503203" datatype="html"> <trans-unit id="3437679369074503203" datatype="html">
@ -5596,7 +5564,7 @@
<target state="translated">您确实要删除此活动吗?</target> <target state="translated">您确实要删除此活动吗?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">229</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4149127798893455354" datatype="html"> <trans-unit id="4149127798893455354" datatype="html">
@ -5860,7 +5828,7 @@
<target state="translated">日本</target> <target state="translated">日本</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4152514811781104574" datatype="html"> <trans-unit id="4152514811781104574" datatype="html">
@ -6144,7 +6112,7 @@
<target state="translated">极度恐惧</target> <target state="translated">极度恐惧</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">96</context> <context context-type="linenumber">99</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2634398159221205491" datatype="html"> <trans-unit id="2634398159221205491" datatype="html">
@ -6152,7 +6120,7 @@
<target state="translated">极度贪婪</target> <target state="translated">极度贪婪</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">97</context> <context context-type="linenumber">100</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3511545370905854666" datatype="html"> <trans-unit id="3511545370905854666" datatype="html">
@ -6160,7 +6128,7 @@
<target state="translated">中性的</target> <target state="translated">中性的</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3c33a66194384cf8c14e25170416767efa56fd98" datatype="html"> <trans-unit id="3c33a66194384cf8c14e25170416767efa56fd98" datatype="html">
@ -6300,7 +6268,7 @@
<target state="translated">绝对货币表现</target> <target state="translated">绝对货币表现</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">145</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html"> <trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html">
@ -6308,7 +6276,7 @@
<target state="translated">绝对净性能</target> <target state="translated">绝对净性能</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">150</context> <context context-type="linenumber">192</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e19955db970092b9cde70be2cea163ab6adfac97" datatype="html"> <trans-unit id="e19955db970092b9cde70be2cea163ab6adfac97" datatype="html">
@ -6316,7 +6284,7 @@
<target state="translated">绝对资产绩效</target> <target state="translated">绝对资产绩效</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">60</context> <context context-type="linenumber">102</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8580549503047096056" datatype="html"> <trans-unit id="8580549503047096056" datatype="html">
@ -6324,11 +6292,11 @@
<target state="translated">投资</target> <target state="translated">投资</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">61</context> <context context-type="linenumber">72</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts</context>
@ -6340,7 +6308,7 @@
<target state="translated">资产绩效</target> <target state="translated">资产绩效</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html"> <trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html">
@ -6348,7 +6316,7 @@
<target state="translated">净绩效</target> <target state="translated">净绩效</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">211</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html"> <trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html">
@ -6356,7 +6324,7 @@
<target state="translated">货币表现</target> <target state="translated">货币表现</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">169</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2593751087640318641" datatype="html"> <trans-unit id="2593751087640318641" datatype="html">
@ -6496,7 +6464,7 @@
<target state="translated">数据收集</target> <target state="translated">数据收集</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context> <context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">60</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6439365426343089851" datatype="html"> <trans-unit id="6439365426343089851" datatype="html">
@ -6716,7 +6684,7 @@
<target state="new">Do you really want to delete these profiles?</target> <target state="new">Do you really want to delete these profiles?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">68</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8127349194179456616" datatype="html"> <trans-unit id="8127349194179456616" datatype="html">
@ -6724,7 +6692,7 @@
<target state="new">Oops! Could not delete profiles.</target> <target state="new">Oops! Could not delete profiles.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context> <context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.service.ts</context>
<context context-type="linenumber">55</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html"> <trans-unit id="5c8ea0443990792280e53ee2cc87e577940c95cf" datatype="html">
@ -6868,7 +6836,7 @@
<target state="new">Australia</target> <target state="new">Australia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context> <context context-type="linenumber">74</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="21641575311466062" datatype="html"> <trans-unit id="21641575311466062" datatype="html">
@ -6876,7 +6844,7 @@
<target state="new">Austria</target> <target state="new">Austria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6787546539374733271" datatype="html"> <trans-unit id="6787546539374733271" datatype="html">
@ -6884,7 +6852,7 @@
<target state="new">Belgium</target> <target state="new">Belgium</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">75</context> <context context-type="linenumber">76</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8273479446468988017" datatype="html"> <trans-unit id="8273479446468988017" datatype="html">
@ -6892,7 +6860,7 @@
<target state="new">Bulgaria</target> <target state="new">Bulgaria</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">76</context> <context context-type="linenumber">78</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3486679398271885916" datatype="html"> <trans-unit id="3486679398271885916" datatype="html">
@ -6900,7 +6868,7 @@
<target state="new">Canada</target> <target state="new">Canada</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context> <context context-type="linenumber">79</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="724957661944599897" datatype="html"> <trans-unit id="724957661944599897" datatype="html">
@ -6908,7 +6876,7 @@
<target state="new">Czech Republic</target> <target state="new">Czech Republic</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">78</context> <context context-type="linenumber">80</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8812557643580169825" datatype="html"> <trans-unit id="8812557643580169825" datatype="html">
@ -6916,7 +6884,7 @@
<target state="new">Finland</target> <target state="new">Finland</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">79</context> <context context-type="linenumber">81</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="956678847762152494" datatype="html"> <trans-unit id="956678847762152494" datatype="html">
@ -6924,7 +6892,7 @@
<target state="new">France</target> <target state="new">France</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">80</context> <context context-type="linenumber">82</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6014862663057951430" datatype="html"> <trans-unit id="6014862663057951430" datatype="html">
@ -6932,7 +6900,7 @@
<target state="new">Germany</target> <target state="new">Germany</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">81</context> <context context-type="linenumber">83</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="212820117866187249" datatype="html"> <trans-unit id="212820117866187249" datatype="html">
@ -6940,7 +6908,7 @@
<target state="new">India</target> <target state="new">India</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">84</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2427223107800831324" datatype="html"> <trans-unit id="2427223107800831324" datatype="html">
@ -6948,7 +6916,7 @@
<target state="new">Italy</target> <target state="new">Italy</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">83</context> <context context-type="linenumber">85</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3783587393795767345" datatype="html"> <trans-unit id="3783587393795767345" datatype="html">
@ -6956,7 +6924,7 @@
<target state="new">Netherlands</target> <target state="new">Netherlands</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">87</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3591085113786124083" datatype="html"> <trans-unit id="3591085113786124083" datatype="html">
@ -6964,7 +6932,7 @@
<target state="new">New Zealand</target> <target state="new">New Zealand</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2356316679035829946" datatype="html"> <trans-unit id="2356316679035829946" datatype="html">
@ -6972,7 +6940,7 @@
<target state="new">Poland</target> <target state="new">Poland</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="545992063382313902" datatype="html"> <trans-unit id="545992063382313902" datatype="html">
@ -6980,7 +6948,7 @@
<target state="new">Romania</target> <target state="new">Romania</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">88</context> <context context-type="linenumber">90</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8039968326438721789" datatype="html"> <trans-unit id="8039968326438721789" datatype="html">
@ -6988,7 +6956,7 @@
<target state="new">South Africa</target> <target state="new">South Africa</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">89</context> <context context-type="linenumber">92</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2040543873210054611" datatype="html"> <trans-unit id="2040543873210054611" datatype="html">
@ -6996,7 +6964,7 @@
<target state="new">Thailand</target> <target state="new">Thailand</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context> <context context-type="linenumber">94</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6133495983093212227" datatype="html"> <trans-unit id="6133495983093212227" datatype="html">
@ -7004,7 +6972,7 @@
<target state="new">United States</target> <target state="new">United States</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">93</context> <context context-type="linenumber">96</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1519954996184640001" datatype="html"> <trans-unit id="1519954996184640001" datatype="html">
@ -7036,7 +7004,7 @@
<target state="new">Inactive</target> <target state="new">Inactive</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">197</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -7348,7 +7316,7 @@
<target state="new">Ukraine</target> <target state="new">Ukraine</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context> <context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">92</context> <context context-type="linenumber">95</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html"> <trans-unit id="f977904fb6da18ed1fcc2b56caa2315e991fd2ac" datatype="html">
@ -7438,7 +7406,7 @@
<target state="new">Economic Market Cluster Risks</target> <target state="new">Economic Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">130</context> <context context-type="linenumber">165</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html"> <trans-unit id="169eed2bc3e08e1bea977bcc5d799379f6b8a758" datatype="html">
@ -7566,7 +7534,7 @@
<target state="new">out of</target> <target state="new">out of</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html"> <trans-unit id="8508033bf4a7ba848a54b1606283d2f38679ede9" datatype="html">
@ -7574,7 +7542,7 @@
<target state="new">rules align with your portfolio.</target> <target state="new">rules align with your portfolio.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">24</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3768927257183755959" datatype="html"> <trans-unit id="3768927257183755959" datatype="html">
@ -7590,7 +7558,7 @@
<target state="new">Asset Class Cluster Risks</target> <target state="new">Asset Class Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">82</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7156797854368699223" datatype="html"> <trans-unit id="7156797854368699223" datatype="html">
@ -7622,15 +7590,7 @@
<target state="new">AI prompt has been copied to the clipboard</target> <target state="new">AI prompt has been copied to the clipboard</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">153</context> <context context-type="linenumber">173</context>
</context-group>
</trans-unit>
<trans-unit id="4eecb3acb016e7d86740405b21599cdad8e0dd9f" datatype="html">
<source>Copy AI prompt to clipboard</source>
<target state="new">Copy AI prompt to clipboard</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">27</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7654,7 +7614,7 @@
<target state="new">Regional Market Cluster Risks</target> <target state="new">Regional Market Cluster Risks</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">189</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8540986733881734625" datatype="html"> <trans-unit id="8540986733881734625" datatype="html">
@ -7726,7 +7686,7 @@
<target state="new">Open Duck.ai</target> <target state="new">Open Duck.ai</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">174</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7765,6 +7725,86 @@
<context context-type="linenumber">378</context> <context context-type="linenumber">378</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="afd6e2886f0bb7db3b54bef42bced4e7c67cc40c" datatype="html">
<source>Copy portfolio data to clipboard for AI prompt</source>
<target state="new">Copy portfolio data to clipboard for AI prompt</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="187b68f90f45d63f0d3b1e830ac92f98d2447313" datatype="html">
<source>Copy AI prompt to clipboard for analysis</source>
<target state="new">Copy AI prompt to clipboard for analysis</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">67</context>
</context-group>
</trans-unit>
<trans-unit id="5004849258025239958" datatype="html">
<source>Armenia</source>
<target state="new">Armenia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">73</context>
</context-group>
</trans-unit>
<trans-unit id="7899437916897426237" datatype="html">
<source>British Virgin Islands</source>
<target state="new">British Virgin Islands</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">77</context>
</context-group>
</trans-unit>
<trans-unit id="4830118002486243553" datatype="html">
<source>Singapore</source>
<target state="new">Singapore</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">91</context>
</context-group>
</trans-unit>
<trans-unit id="e9048704780ed5bb3fc1af4f94d4fc5fdeb72cab" datatype="html">
<source>Terms and Conditions</source>
<target state="new">Terms and Conditions</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4051385e7211aebdb652666927a0564de3e74fd0" datatype="html">
<source>Please keep your security token safe. If you lose it, you will not be able to recover your account.</source>
<target state="new">Please keep your security token safe. If you lose it, you will not be able to recover your account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="0c165378eae03c8bd376d2819d94b108d9929c64" datatype="html">
<source>I understand that if I lose my security token, I cannot recover my account.</source>
<target state="new">I understand that if I lose my security token, I cannot recover my account.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="ac10a3d9b59575640797c1a8e6aea642cf5d5e77" datatype="html">
<source>Continue</source>
<target state="new">Continue</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="43a04e6b986ac8b5184330fdcc4235867d48bcf7" datatype="html">
<source>Here is your security token. It is only visible once, please store and keep it in a safe place.</source>
<target state="new">Here is your security token. It is only visible once, please store and keep it in a safe place.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
<context context-type="linenumber">47</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

2
apps/client/src/styles.scss

@ -451,7 +451,7 @@ ngx-skeleton-loader {
} }
.mat-mdc-menu-panel { .mat-mdc-menu-panel {
&.assistant { &.no-max-width {
max-width: unset !important; max-width: unset !important;
.mat-mdc-menu-content { .mat-mdc-menu-content {

2
libs/common/src/lib/config.ts

@ -153,6 +153,8 @@ export const REPLACE_NAME_PARTS = [
'Xtrackers (IE) Plc -' 'Xtrackers (IE) Plc -'
]; ];
export const STORYBOOK_PATH = '/development/storybook';
export const SUPPORTED_LANGUAGE_CODES = [ export const SUPPORTED_LANGUAGE_CODES = [
'ca', 'ca',
'de', 'de',

10
libs/common/src/lib/helper.ts

@ -354,6 +354,16 @@ export function isDerivedCurrency(aCurrency: string) {
}); });
} }
export function isRootCurrency(aCurrency: string) {
if (aCurrency === 'USD') {
return true;
}
return DERIVED_CURRENCIES.find(({ rootCurrency }) => {
return rootCurrency === aCurrency;
});
}
export function parseDate(date: string): Date { export function parseDate(date: string): Date {
if (!date) { if (!date) {
return undefined; return undefined;

4
libs/common/src/lib/interfaces/account-balance.interface.ts

@ -0,0 +1,4 @@
export interface AccountBalance {
date: string;
value: number;
}

7
libs/common/src/lib/interfaces/admin-data.interface.ts

@ -1,11 +1,4 @@
import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces';
export interface AdminData { export interface AdminData {
exchangeRates: ({
label1: string;
label2: string;
value: number;
} & AssetProfileIdentifier)[];
settings: { [key: string]: boolean | object | string | string[] }; settings: { [key: string]: boolean | object | string | string[] };
transactionCount: number; transactionCount: number;
userCount: number; userCount: number;

6
libs/common/src/lib/interfaces/export.interface.ts

@ -1,7 +1,11 @@
import { Account, Order, Platform, Tag } from '@prisma/client'; import { Account, Order, Platform, Tag } from '@prisma/client';
import { AccountBalance } from './account-balance.interface';
export interface Export { export interface Export {
accounts: Omit<Account, 'createdAt' | 'updatedAt' | 'userId'>[]; accounts: (Omit<Account, 'createdAt' | 'updatedAt' | 'userId'> & {
balances: AccountBalance[];
})[];
activities: (Omit< activities: (Omit<
Order, Order,
| 'accountUserId' | 'accountUserId'

4
libs/common/src/lib/interfaces/index.ts

@ -1,4 +1,5 @@
import type { Access } from './access.interface'; import type { Access } from './access.interface';
import type { AccountBalance } from './account-balance.interface';
import type { Accounts } from './accounts.interface'; import type { Accounts } from './accounts.interface';
import type { AdminData } from './admin-data.interface'; import type { AdminData } from './admin-data.interface';
import type { AdminJobs } from './admin-jobs.interface'; import type { AdminJobs } from './admin-jobs.interface';
@ -41,6 +42,7 @@ import type { AccountBalancesResponse } from './responses/account-balances-respo
import type { AiPromptResponse } from './responses/ai-prompt-response.interface'; import type { AiPromptResponse } from './responses/ai-prompt-response.interface';
import type { ApiKeyResponse } from './responses/api-key-response.interface'; import type { ApiKeyResponse } from './responses/api-key-response.interface';
import type { BenchmarkResponse } from './responses/benchmark-response.interface'; import type { BenchmarkResponse } from './responses/benchmark-response.interface';
import type { DataProviderGhostfolioAssetProfileResponse } from './responses/data-provider-ghostfolio-asset-profile-response.interface';
import type { DataProviderGhostfolioStatusResponse } from './responses/data-provider-ghostfolio-status-response.interface'; import type { DataProviderGhostfolioStatusResponse } from './responses/data-provider-ghostfolio-status-response.interface';
import type { DividendsResponse } from './responses/dividends-response.interface'; import type { DividendsResponse } from './responses/dividends-response.interface';
import type { ResponseError } from './responses/errors.interface'; import type { ResponseError } from './responses/errors.interface';
@ -67,6 +69,7 @@ import type { XRayRulesSettings } from './x-ray-rules-settings.interface';
export { export {
Access, Access,
AccountBalance,
AccountBalancesResponse, AccountBalancesResponse,
Accounts, Accounts,
AdminData, AdminData,
@ -83,6 +86,7 @@ export {
BenchmarkProperty, BenchmarkProperty,
BenchmarkResponse, BenchmarkResponse,
Coupon, Coupon,
DataProviderGhostfolioAssetProfileResponse,
DataProviderGhostfolioStatusResponse, DataProviderGhostfolioStatusResponse,
DataProviderInfo, DataProviderInfo,
DividendsResponse, DividendsResponse,

4
libs/common/src/lib/interfaces/responses/data-provider-ghostfolio-asset-profile-response.interface.ts

@ -0,0 +1,4 @@
import { SymbolProfile } from '@prisma/client';
export interface DataProviderGhostfolioAssetProfileResponse
extends Partial<SymbolProfile> {}

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

@ -82,6 +82,16 @@ export const personalFinanceTools: Product[] = [
regions: ['Global'], regions: ['Global'],
slogan: 'Take control of your financial future' slogan: 'Take control of your financial future'
}, },
{
founded: 2017,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'coinstats',
name: 'CoinStats',
origin: 'Armenia',
pricingPerYear: '$168',
slogan: 'Manage All Your Wallets & Exchanges From One Place'
},
{ {
founded: 2013, founded: 2013,
hasFreePlan: true, hasFreePlan: true,
@ -154,6 +164,7 @@ export const personalFinanceTools: Product[] = [
name: 'Delta Investment Tracker', name: 'Delta Investment Tracker',
note: 'Acquired by eToro', note: 'Acquired by eToro',
origin: 'Belgium', origin: 'Belgium',
pricingPerYear: '$150',
slogan: 'The app to track all your investments. Make smart moves only.' slogan: 'The app to track all your investments. Make smart moves only.'
}, },
{ {
@ -252,6 +263,13 @@ export const personalFinanceTools: Product[] = [
slogan: slogan:
'The most convenient mobile application for personal finance accounting' 'The most convenient mobile application for personal finance accounting'
}, },
{
founded: 2022,
key: 'fincake',
name: 'Fincake',
origin: 'British Virgin Islands',
slogan: 'Easy-to-use Portfolio Tracker'
},
{ {
founded: 2023, founded: 2023,
hasFreePlan: true, hasFreePlan: true,
@ -340,6 +358,15 @@ export const personalFinanceTools: Product[] = [
pricingPerYear: '€119', pricingPerYear: '€119',
slogan: 'ETF portfolios made simple' slogan: 'ETF portfolios made simple'
}, },
{
founded: 2018,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'koinly',
name: 'Koinly',
origin: 'Singapore',
slogan: 'Track all your crypto wallets in one place'
},
{ {
founded: 2016, founded: 2016,
hasFreePlan: true, hasFreePlan: true,
@ -469,6 +496,16 @@ export const personalFinanceTools: Product[] = [
slogan: slogan:
'Track your equity, fund, investment trust, ETF and pension investments in one place.' 'Track your equity, fund, investment trust, ETF and pension investments in one place.'
}, },
{
founded: 2020,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'nansen',
name: 'Crypto Portfolio Tracker by Nansen',
origin: 'Singapore',
pricingPerYear: '$1188',
slogan: 'Your Complete Crypto Portfolio, Reimagined'
},
{ {
founded: 2017, founded: 2017,
hasFreePlan: false, hasFreePlan: false,
@ -634,6 +671,16 @@ export const personalFinanceTools: Product[] = [
pricingPerYear: '€80', pricingPerYear: '€80',
slogan: 'Stock Portfolio Tracker' slogan: 'Stock Portfolio Tracker'
}, },
{
founded: 2014,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'simply-wallstreet',
name: 'Stock Portfolio Tracker & Visualizer by Simply Wall St',
origin: 'Australia',
pricingPerYear: '$120',
slogan: 'Smart portfolio tracker for informed investors'
},
{ {
founded: 2021, founded: 2021,
hasFreePlan: true, hasFreePlan: true,
@ -706,6 +753,16 @@ export const personalFinanceTools: Product[] = [
slogan: slogan:
'Your financial life in a spreadsheet, automatically updated each day' 'Your financial life in a spreadsheet, automatically updated each day'
}, },
{
founded: 2011,
hasFreePlan: false,
hasSelfHostingAbility: false,
key: 'tradervue',
name: 'Tradervue',
origin: 'United States',
pricingPerYear: '$360',
slogan: 'The Trading Journal to Improve Your Trading Performance'
},
{ {
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,

1
libs/common/src/lib/types/ai-prompt-mode.type.ts

@ -0,0 +1 @@
export type AiPromptMode = 'analysis' | 'portfolio';

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save