Browse Source

Merge branch 'main' into es-translations

pull/5240/head
Diego Noah 4 weeks ago
committed by GitHub
parent
commit
84b7dcaf3f
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 22
      CHANGELOG.md
  2. 2
      README.md
  3. 92
      apps/api/src/app/admin/create-asset-profile.dto.ts
  4. 1
      apps/api/src/app/export/export.service.ts
  5. 17
      apps/api/src/app/import/create-asset-profile-with-market-data.dto.ts
  6. 11
      apps/api/src/app/import/import-data.dto.ts
  7. 1
      apps/api/src/app/import/import.controller.ts
  8. 2
      apps/api/src/app/import/import.module.ts
  9. 72
      apps/api/src/app/import/import.service.ts
  10. 23
      apps/api/src/app/portfolio/calculator/portfolio-calculator.ts
  11. 32
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts
  12. 1
      apps/api/src/app/portfolio/interfaces/transaction-point-symbol.interface.ts
  13. 6
      apps/api/src/app/portfolio/portfolio.controller.ts
  14. 13
      apps/api/src/app/portfolio/portfolio.service.ts
  15. 20
      apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.spec.ts
  16. 3
      apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts
  17. 68
      apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts
  18. 2
      apps/client/src/app/components/header/header.component.html
  19. 2
      apps/client/src/app/components/header/header.component.ts
  20. 2
      apps/client/src/app/components/home-holdings/home-holdings.component.ts
  21. 2
      apps/client/src/app/components/home-holdings/home-holdings.html
  22. 2
      apps/client/src/app/components/home-overview/home-overview.component.ts
  23. 2
      apps/client/src/app/components/markets/markets.component.ts
  24. 2
      apps/client/src/app/components/markets/markets.html
  25. 2
      apps/client/src/app/pages/api/api-page.component.ts
  26. 5
      apps/client/src/app/pages/faq/overview/faq-overview-page.html
  27. 6
      apps/client/src/app/pages/faq/saas/saas-page.html
  28. 11
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
  29. 3
      apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
  30. 4
      apps/client/src/app/pages/portfolio/analysis/analysis-page.html
  31. 6
      apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts
  32. 5
      apps/client/src/app/pages/pricing/pricing-page.html
  33. 26
      apps/client/src/app/services/import-activities.service.ts
  34. 58
      apps/client/src/locales/messages.ca.xlf
  35. 58
      apps/client/src/locales/messages.de.xlf
  36. 58
      apps/client/src/locales/messages.es.xlf
  37. 58
      apps/client/src/locales/messages.fr.xlf
  38. 58
      apps/client/src/locales/messages.it.xlf
  39. 58
      apps/client/src/locales/messages.nl.xlf
  40. 58
      apps/client/src/locales/messages.pl.xlf
  41. 88
      apps/client/src/locales/messages.pt.xlf
  42. 58
      apps/client/src/locales/messages.tr.xlf
  43. 58
      apps/client/src/locales/messages.uk.xlf
  44. 58
      apps/client/src/locales/messages.xlf
  45. 58
      apps/client/src/locales/messages.zh.xlf
  46. 8
      libs/common/src/lib/config.ts
  47. 8
      libs/common/src/lib/interfaces/export.interface.ts
  48. 2
      libs/common/src/lib/interfaces/index.ts
  49. 4
      libs/common/src/lib/interfaces/market-data.interface.ts
  50. 10
      libs/common/src/lib/interfaces/responses/portfolio-report.interface.ts
  51. 111
      libs/common/src/lib/personal-finance-tools.ts
  52. 30
      libs/ui/src/lib/activity-type/activity-type.component.stories.ts
  53. 4
      libs/ui/src/lib/fire-calculator/fire-calculator.component.html
  54. 1
      libs/ui/src/lib/i18n.ts
  55. 1
      libs/ui/src/lib/toggle/index.ts
  56. 0
      libs/ui/src/lib/toggle/toggle.component.html
  57. 0
      libs/ui/src/lib/toggle/toggle.component.scss
  58. 33
      libs/ui/src/lib/toggle/toggle.component.stories.ts
  59. 14
      libs/ui/src/lib/toggle/toggle.component.ts
  60. 4
      package-lock.json
  61. 2
      package.json
  62. 115
      test/import/ok/sample.json

22
CHANGELOG.md

@ -9,9 +9,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed ### Changed
- Improved the language localization for Spanish (`es`)
- Restructured the response of the portfolio report endpoint (_X-ray_)
### Fixed
- Excluded the holdings originated of `FEE`, `INTEREST` and `LIABILITY` activities from the closed holdings on the portfolio holdings page
## 2.185.0 - 2025-07-26
### Added
- Added a _Storybook_ story for the activity type component
- Added a _Storybook_ story for the toggle component
### Changed
- Extended the import functionality by custom asset profiles
- Migrated the get country and sector weightings, dividends, ETF holdings, ETF info, historical price, profile, quote and symbol search functionalities of the _Financial Modeling Prep_ service to its stable API version
- Refactored the toggle component to standalone - Refactored the toggle component to standalone
- Improved the language localization for Dutch (`nl`) - Improved the language localization for Dutch (`nl`)
- Improved the language localization for Spanish (`es`) - Improved the language localization for Portuguese (`pt`)
- Improved the language localization for Turkish (`tr`) - Improved the language localization for Turkish (`tr`)
- Upgraded the _Stripe_ dependencies - Upgraded the _Stripe_ dependencies
- Upgraded `angular` from version `19.2.1` to `20.0.7` - Upgraded `angular` from version `19.2.1` to `20.0.7`
@ -23,8 +41,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed ### Fixed
- Fixed the date format of the retirement date in the _FIRE_ calculator
- Fixed an issue with the permissions of the impersonation mode related to the onboarding on the overview tab of the home page - Fixed an issue with the permissions of the impersonation mode related to the onboarding on the overview tab of the home page
- Fixed an issue with the permissions of the impersonation mode related to the manage activities button of the holdings tab on the home page - Fixed an issue with the permissions of the impersonation mode related to the manage activities button of the holdings tab on the home page
- Fixed an issue with the currency detection related to `USD.AX` in the _Yahoo Finance_ service
## 2.184.0 - 2025-07-22 ## 2.184.0 - 2025-07-22

2
README.md

@ -25,7 +25,7 @@
## Ghostfolio Premium ## Ghostfolio Premium
Our official **[Ghostfolio Premium](https://ghostfol.io/en/pricing)** cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. Our official **[Ghostfolio Premium](https://ghostfol.io/en/pricing)** cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover operational costs for the hosting infrastructure and professional data providers, and to fund ongoing development.
If you prefer to run Ghostfolio on your own infrastructure, please find further instructions in the [Self-hosting](#self-hosting) section. If you prefer to run Ghostfolio on your own infrastructure, please find further instructions in the [Self-hosting](#self-hosting) section.

92
apps/api/src/app/admin/create-asset-profile.dto.ts

@ -0,0 +1,92 @@
import { IsCurrencyCode } from '@ghostfolio/api/validators/is-currency-code';
import { AssetClass, AssetSubClass, DataSource, Prisma } from '@prisma/client';
import {
IsArray,
IsBoolean,
IsEnum,
IsObject,
IsOptional,
IsString,
IsUrl
} from 'class-validator';
export class CreateAssetProfileDto {
@IsEnum(AssetClass, { each: true })
@IsOptional()
assetClass?: AssetClass;
@IsEnum(AssetSubClass, { each: true })
@IsOptional()
assetSubClass?: AssetSubClass;
@IsOptional()
@IsString()
comment?: string;
@IsArray()
@IsOptional()
countries?: Prisma.InputJsonArray;
@IsCurrencyCode()
currency: string;
@IsOptional()
@IsString()
cusip?: string;
@IsEnum(DataSource)
dataSource: DataSource;
@IsOptional()
@IsString()
figi?: string;
@IsOptional()
@IsString()
figiComposite?: string;
@IsOptional()
@IsString()
figiShareClass?: string;
@IsArray()
@IsOptional()
holdings?: Prisma.InputJsonArray;
@IsBoolean()
@IsOptional()
isActive?: boolean;
@IsOptional()
@IsString()
isin?: string;
@IsOptional()
@IsString()
name?: string;
@IsObject()
@IsOptional()
scraperConfiguration?: Prisma.InputJsonObject;
@IsArray()
@IsOptional()
sectors?: Prisma.InputJsonArray;
@IsString()
symbol: string;
@IsObject()
@IsOptional()
symbolMapping?: {
[dataProvider: string]: string;
};
@IsOptional()
@IsUrl({
protocols: ['https'],
require_protocol: true
})
url?: string;
}

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

@ -195,7 +195,6 @@ export class ExportService {
figiComposite, figiComposite,
figiShareClass, figiShareClass,
holdings: holdings as unknown as Prisma.JsonArray, holdings: holdings as unknown as Prisma.JsonArray,
id,
isActive, isActive,
isin, isin,
marketData: marketDataByAssetProfile[id], marketData: marketDataByAssetProfile[id],

17
apps/api/src/app/import/create-asset-profile-with-market-data.dto.ts

@ -0,0 +1,17 @@
import { MarketData } from '@ghostfolio/common/interfaces';
import { DataSource } from '@prisma/client';
import { IsArray, IsEnum, IsOptional } from 'class-validator';
import { CreateAssetProfileDto } from '../admin/create-asset-profile.dto';
export class CreateAssetProfileWithMarketDataDto extends CreateAssetProfileDto {
@IsEnum([DataSource.MANUAL], {
message: `dataSource must be '${DataSource.MANUAL}'`
})
dataSource: DataSource;
@IsArray()
@IsOptional()
marketData?: MarketData[];
}

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

@ -4,16 +4,23 @@ 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'; import { CreateAccountWithBalancesDto } from './create-account-with-balances.dto';
import { CreateAssetProfileWithMarketDataDto } from './create-asset-profile-with-market-data.dto';
export class ImportDataDto { export class ImportDataDto {
@IsOptional()
@IsArray() @IsArray()
@IsOptional()
@Type(() => CreateAccountWithBalancesDto) @Type(() => CreateAccountWithBalancesDto)
@ValidateNested({ each: true }) @ValidateNested({ each: true })
accounts: CreateAccountWithBalancesDto[]; accounts?: CreateAccountWithBalancesDto[];
@IsArray() @IsArray()
@Type(() => CreateOrderDto) @Type(() => CreateOrderDto)
@ValidateNested({ each: true }) @ValidateNested({ each: true })
activities: CreateOrderDto[]; activities: CreateOrderDto[];
@IsArray()
@IsOptional()
@Type(() => CreateAssetProfileWithMarketDataDto)
@ValidateNested({ each: true })
assetProfiles?: CreateAssetProfileWithMarketDataDto[];
} }

1
apps/api/src/app/import/import.controller.ts

@ -73,6 +73,7 @@ export class ImportController {
maxActivitiesToImport, maxActivitiesToImport,
accountsWithBalancesDto: importData.accounts ?? [], accountsWithBalancesDto: importData.accounts ?? [],
activitiesDto: importData.activities, activitiesDto: importData.activities,
assetProfilesWithMarketDataDto: importData.assetProfiles ?? [],
user: this.request.user user: this.request.user
}); });

2
apps/api/src/app/import/import.module.ts

@ -9,6 +9,7 @@ import { TransformDataSourceInResponseModule } from '@ghostfolio/api/interceptor
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';
import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module';
import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module';
import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module';
import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module';
@ -27,6 +28,7 @@ import { ImportService } from './import.service';
DataGatheringModule, DataGatheringModule,
DataProviderModule, DataProviderModule,
ExchangeRateDataModule, ExchangeRateDataModule,
MarketDataModule,
OrderModule, OrderModule,
PlatformModule, PlatformModule,
PortfolioModule, PortfolioModule,

72
apps/api/src/app/import/import.service.ts

@ -10,6 +10,7 @@ import { PlatformService } from '@ghostfolio/api/app/platform/platform.service';
import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service';
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 { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service';
import { DataGatheringService } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.service'; import { DataGatheringService } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.service';
import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service';
import { DATA_GATHERING_QUEUE_PRIORITY_HIGH } from '@ghostfolio/common/config'; import { DATA_GATHERING_QUEUE_PRIORITY_HIGH } from '@ghostfolio/common/config';
@ -31,6 +32,7 @@ import { endOfToday, isAfter, isSameSecond, parseISO } from 'date-fns';
import { omit, uniqBy } from 'lodash'; import { omit, uniqBy } from 'lodash';
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import { CreateAssetProfileDto } from '../admin/create-asset-profile.dto';
import { ImportDataDto } from './import-data.dto'; import { ImportDataDto } from './import-data.dto';
@Injectable() @Injectable()
@ -40,6 +42,7 @@ export class ImportService {
private readonly configurationService: ConfigurationService, private readonly configurationService: ConfigurationService,
private readonly dataGatheringService: DataGatheringService, private readonly dataGatheringService: DataGatheringService,
private readonly dataProviderService: DataProviderService, private readonly dataProviderService: DataProviderService,
private readonly marketDataService: MarketDataService,
private readonly orderService: OrderService, private readonly orderService: OrderService,
private readonly platformService: PlatformService, private readonly platformService: PlatformService,
private readonly portfolioService: PortfolioService, private readonly portfolioService: PortfolioService,
@ -148,17 +151,20 @@ export class ImportService {
public async import({ public async import({
accountsWithBalancesDto, accountsWithBalancesDto,
activitiesDto, activitiesDto,
assetProfilesWithMarketDataDto,
isDryRun = false, isDryRun = false,
maxActivitiesToImport, maxActivitiesToImport,
user user
}: { }: {
accountsWithBalancesDto: ImportDataDto['accounts']; accountsWithBalancesDto: ImportDataDto['accounts'];
activitiesDto: ImportDataDto['activities']; activitiesDto: ImportDataDto['activities'];
assetProfilesWithMarketDataDto: ImportDataDto['assetProfiles'];
isDryRun?: boolean; isDryRun?: boolean;
maxActivitiesToImport: number; maxActivitiesToImport: number;
user: UserWithSettings; user: UserWithSettings;
}): Promise<Activity[]> { }): Promise<Activity[]> {
const accountIdMapping: { [oldAccountId: string]: string } = {}; const accountIdMapping: { [oldAccountId: string]: string } = {};
const assetProfileSymbolMapping: { [oldSymbol: string]: string } = {};
const userCurrency = user.settings.settings.baseCurrency; const userCurrency = user.settings.settings.baseCurrency;
if (!isDryRun && accountsWithBalancesDto?.length) { if (!isDryRun && accountsWithBalancesDto?.length) {
@ -230,6 +236,63 @@ export class ImportService {
} }
} }
if (!isDryRun && assetProfilesWithMarketDataDto?.length) {
const existingAssetProfiles =
await this.symbolProfileService.getSymbolProfiles(
assetProfilesWithMarketDataDto.map(({ dataSource, symbol }) => {
return { dataSource, symbol };
})
);
for (const assetProfileWithMarketData of assetProfilesWithMarketDataDto) {
// Check if there is any existing asset profile
const existingAssetProfile = existingAssetProfiles.find(
({ dataSource, symbol }) => {
return (
dataSource === assetProfileWithMarketData.dataSource &&
symbol === assetProfileWithMarketData.symbol
);
}
);
// If there is no asset profile or if the asset profile belongs to a different user, then create a new asset profile
if (!existingAssetProfile || existingAssetProfile.userId !== user.id) {
const assetProfile: CreateAssetProfileDto = omit(
assetProfileWithMarketData,
'marketData'
);
// Asset profile belongs to a different user
if (existingAssetProfile) {
const symbol = uuidv4();
assetProfileSymbolMapping[assetProfile.symbol] = symbol;
assetProfile.symbol = symbol;
}
// Create a new asset profile
const assetProfileObject: Prisma.SymbolProfileCreateInput = {
...assetProfile,
user: { connect: { id: user.id } }
};
await this.symbolProfileService.add(assetProfileObject);
}
// Insert or update market data
const marketDataObjects = assetProfileWithMarketData.marketData.map(
(marketData) => {
return {
...marketData,
dataSource: assetProfileWithMarketData.dataSource,
symbol: assetProfileWithMarketData.symbol
} as Prisma.MarketDataUpdateInput;
}
);
await this.marketDataService.updateMany({ data: marketDataObjects });
}
}
for (const activity of activitiesDto) { for (const activity of activitiesDto) {
if (!activity.dataSource) { if (!activity.dataSource) {
if (['FEE', 'INTEREST', 'LIABILITY'].includes(activity.type)) { if (['FEE', 'INTEREST', 'LIABILITY'].includes(activity.type)) {
@ -240,11 +303,16 @@ export class ImportService {
} }
} }
// If a new account is created, then update the accountId in all activities
if (!isDryRun) { if (!isDryRun) {
if (Object.keys(accountIdMapping).includes(activity.accountId)) { // If a new account is created, then update the accountId in all activities
if (accountIdMapping[activity.accountId]) {
activity.accountId = accountIdMapping[activity.accountId]; activity.accountId = accountIdMapping[activity.accountId];
} }
// If a new asset profile is created, then update the symbol in all activities
if (assetProfileSymbolMapping[activity.symbol]) {
activity.symbol = assetProfileSymbolMapping[activity.symbol];
}
} }
} }

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

@ -13,6 +13,7 @@ import { IDataGatheringItem } from '@ghostfolio/api/services/interfaces/interfac
import { PortfolioSnapshotService } from '@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.service'; import { PortfolioSnapshotService } from '@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.service';
import { getIntervalFromDateRange } from '@ghostfolio/common/calculation-helper'; import { getIntervalFromDateRange } from '@ghostfolio/common/calculation-helper';
import { import {
INVESTMENT_ACTIVITY_TYPES,
PORTFOLIO_SNAPSHOT_PROCESS_JOB_NAME, PORTFOLIO_SNAPSHOT_PROCESS_JOB_NAME,
PORTFOLIO_SNAPSHOT_PROCESS_JOB_OPTIONS, PORTFOLIO_SNAPSHOT_PROCESS_JOB_OPTIONS,
PORTFOLIO_SNAPSHOT_COMPUTATION_QUEUE_PRIORITY_HIGH, PORTFOLIO_SNAPSHOT_COMPUTATION_QUEUE_PRIORITY_HIGH,
@ -287,10 +288,12 @@ export abstract class PortfolioCalculator {
firstIndex--; firstIndex--;
} }
const positions: TimelinePosition[] = []; const errors: ResponseError['errors'] = [];
let hasAnySymbolMetricsErrors = false; let hasAnySymbolMetricsErrors = false;
const errors: ResponseError['errors'] = []; const positions: (TimelinePosition & {
includeInHoldings: boolean;
})[] = [];
const accumulatedValuesByDate: { const accumulatedValuesByDate: {
[date: string]: { [date: string]: {
@ -409,6 +412,7 @@ export abstract class PortfolioCalculator {
grossPerformanceWithCurrencyEffect: !hasErrors grossPerformanceWithCurrencyEffect: !hasErrors
? (grossPerformanceWithCurrencyEffect ?? null) ? (grossPerformanceWithCurrencyEffect ?? null)
: null, : null,
includeInHoldings: item.includeInHoldings,
investment: totalInvestment, investment: totalInvestment,
investmentWithCurrencyEffect: totalInvestmentWithCurrencyEffect, investmentWithCurrencyEffect: totalInvestmentWithCurrencyEffect,
marketPrice: marketPrice:
@ -605,14 +609,23 @@ export abstract class PortfolioCalculator {
const overall = this.calculateOverallPerformance(positions); const overall = this.calculateOverallPerformance(positions);
const positionsIncludedInHoldings = positions
.filter(({ includeInHoldings }) => {
return includeInHoldings;
})
// eslint-disable-next-line @typescript-eslint/no-unused-vars
.map(({ includeInHoldings, ...rest }) => {
return rest;
});
return { return {
...overall, ...overall,
errors, errors,
historicalData, historicalData,
positions,
totalInterestWithCurrencyEffect, totalInterestWithCurrencyEffect,
totalLiabilitiesWithCurrencyEffect, totalLiabilitiesWithCurrencyEffect,
hasErrors: hasAnySymbolMetricsErrors || overall.hasErrors hasErrors: hasAnySymbolMetricsErrors || overall.hasErrors,
positions: positionsIncludedInHoldings
}; };
} }
@ -935,6 +948,7 @@ export abstract class PortfolioCalculator {
dividend: new Big(0), dividend: new Big(0),
fee: oldAccumulatedSymbol.fee.plus(fee), fee: oldAccumulatedSymbol.fee.plus(fee),
firstBuyDate: oldAccumulatedSymbol.firstBuyDate, firstBuyDate: oldAccumulatedSymbol.firstBuyDate,
includeInHoldings: oldAccumulatedSymbol.includeInHoldings,
quantity: newQuantity, quantity: newQuantity,
tags: oldAccumulatedSymbol.tags.concat(tags), tags: oldAccumulatedSymbol.tags.concat(tags),
transactionCount: oldAccumulatedSymbol.transactionCount + 1 transactionCount: oldAccumulatedSymbol.transactionCount + 1
@ -950,6 +964,7 @@ export abstract class PortfolioCalculator {
averagePrice: unitPrice, averagePrice: unitPrice,
dividend: new Big(0), dividend: new Big(0),
firstBuyDate: date, firstBuyDate: date,
includeInHoldings: INVESTMENT_ACTIVITY_TYPES.includes(type),
investment: unitPrice.mul(quantity).mul(factor), investment: unitPrice.mul(quantity).mul(factor),
quantity: quantity.mul(factor), quantity: quantity.mul(factor),
transactionCount: 1 transactionCount: 1

32
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts

@ -116,37 +116,7 @@ describe('PortfolioCalculator', () => {
currentValueInBaseCurrency: new Big('0'), currentValueInBaseCurrency: new Big('0'),
errors: [], errors: [],
hasErrors: true, hasErrors: true,
positions: [ positions: [],
{
averagePrice: new Big('0'),
currency: 'USD',
dataSource: 'MANUAL',
dividend: new Big('0'),
dividendInBaseCurrency: new Big('0'),
fee: new Big('49'),
feeInBaseCurrency: new Big('49'),
firstBuyDate: '2021-09-01',
grossPerformance: null,
grossPerformancePercentage: null,
grossPerformancePercentageWithCurrencyEffect: null,
grossPerformanceWithCurrencyEffect: null,
investment: new Big('0'),
investmentWithCurrencyEffect: new Big('0'),
marketPrice: null,
marketPriceInBaseCurrency: 0,
netPerformance: null,
netPerformancePercentage: null,
netPerformancePercentageWithCurrencyEffectMap: null,
netPerformanceWithCurrencyEffectMap: null,
quantity: new Big('0'),
symbol: '2c463fb3-af07-486e-adb0-8301b3d72141',
tags: [],
timeWeightedInvestment: new Big('0'),
timeWeightedInvestmentWithCurrencyEffect: new Big('0'),
transactionCount: 1,
valueInBaseCurrency: new Big('0')
}
],
totalFeesWithCurrencyEffect: new Big('49'), totalFeesWithCurrencyEffect: new Big('49'),
totalInterestWithCurrencyEffect: new Big('0'), totalInterestWithCurrencyEffect: new Big('0'),
totalInvestment: new Big('0'), totalInvestment: new Big('0'),

1
apps/api/src/app/portfolio/interfaces/transaction-point-symbol.interface.ts

@ -8,6 +8,7 @@ export interface TransactionPointSymbol {
dividend: Big; dividend: Big;
fee: Big; fee: Big;
firstBuyDate: string; firstBuyDate: string;
includeInHoldings: boolean;
investment: Big; investment: Big;
quantity: Big; quantity: Big;
skipErrors: boolean; skipErrors: boolean;

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

@ -655,11 +655,11 @@ export class PortfolioController {
this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION') && this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION') &&
this.request.user.subscription.type === 'Basic' this.request.user.subscription.type === 'Basic'
) { ) {
for (const rule in report.rules) { for (const rule in report['x-ray'].rules) {
report.rules[rule] = null; report['x-ray'].rules[rule] = null;
} }
report.statistics = { report['x-ray'].statistics = {
rulesActiveCount: 0, rulesActiveCount: 0,
rulesFulfilledCount: 0 rulesFulfilledCount: 0
}; };

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

@ -1156,7 +1156,7 @@ export class PortfolioService {
}) })
).toNumber(); ).toNumber();
const rules: PortfolioReportResponse['rules'] = { const rules: PortfolioReportResponse['x-ray']['rules'] = {
accountClusterRisk: accountClusterRisk:
summary.activityCount > 0 summary.activityCount > 0
? await this.rulesService.evaluate( ? await this.rulesService.evaluate(
@ -1311,7 +1311,12 @@ export class PortfolioService {
: undefined : undefined
}; };
return { rules, statistics: this.getReportStatistics(rules) }; return {
'x-ray': {
rules,
statistics: this.getReportStatistics(rules)
}
};
} }
public async updateTags({ public async updateTags({
@ -1731,8 +1736,8 @@ export class PortfolioService {
} }
private getReportStatistics( private getReportStatistics(
evaluatedRules: PortfolioReportResponse['rules'] evaluatedRules: PortfolioReportResponse['x-ray']['rules']
): PortfolioReportResponse['statistics'] { ): PortfolioReportResponse['x-ray']['statistics'] {
const rulesActiveCount = Object.values(evaluatedRules) const rulesActiveCount = Object.values(evaluatedRules)
.flat() .flat()
.filter((rule) => { .filter((rule) => {

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

@ -47,11 +47,21 @@ describe('YahooFinanceDataEnhancerService', () => {
'BTC-USD' 'BTC-USD'
) )
).toEqual('BTCUSD'); ).toEqual('BTCUSD');
expect(
await yahooFinanceDataEnhancerService.convertFromYahooFinanceSymbol(
'USD.AX'
)
).toEqual('USD.AX');
expect( expect(
await yahooFinanceDataEnhancerService.convertFromYahooFinanceSymbol( await yahooFinanceDataEnhancerService.convertFromYahooFinanceSymbol(
'EURUSD=X' 'EURUSD=X'
) )
).toEqual('EURUSD'); ).toEqual('EURUSD');
expect(
await yahooFinanceDataEnhancerService.convertFromYahooFinanceSymbol(
'USDCHF=X'
)
).toEqual('USDCHF');
}); });
it('convertToYahooFinanceSymbol', async () => { it('convertToYahooFinanceSymbol', async () => {
@ -65,6 +75,16 @@ describe('YahooFinanceDataEnhancerService', () => {
'DOGEUSD' 'DOGEUSD'
) )
).toEqual('DOGE-USD'); ).toEqual('DOGE-USD');
expect(
await yahooFinanceDataEnhancerService.convertToYahooFinanceSymbol(
'EURUSD'
)
).toEqual('EURUSD=X');
expect(
await yahooFinanceDataEnhancerService.convertToYahooFinanceSymbol(
'USD.AX'
)
).toEqual('USD.AX');
expect( expect(
await yahooFinanceDataEnhancerService.convertToYahooFinanceSymbol( await yahooFinanceDataEnhancerService.convertToYahooFinanceSymbol(
'USDCHF' 'USDCHF'

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

@ -63,7 +63,8 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface {
if ( if (
isCurrency( isCurrency(
aSymbol.substring(0, aSymbol.length - DEFAULT_CURRENCY.length) aSymbol.substring(0, aSymbol.length - DEFAULT_CURRENCY.length)
) ) &&
isCurrency(aSymbol.substring(aSymbol.length - DEFAULT_CURRENCY.length))
) { ) {
return `${aSymbol}=X`; return `${aSymbol}=X`;
} else if ( } else if (

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

@ -46,7 +46,6 @@ import {
@Injectable() @Injectable()
export class FinancialModelingPrepService implements DataProviderInterface { export class FinancialModelingPrepService implements DataProviderInterface {
private apiKey: string; private apiKey: string;
private readonly URL = this.getUrl({ version: 3 });
public constructor( public constructor(
private readonly configurationService: ConfigurationService, private readonly configurationService: ConfigurationService,
@ -81,7 +80,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
); );
} else if (this.cryptocurrencyService.isCryptocurrency(symbol)) { } else if (this.cryptocurrencyService.isCryptocurrency(symbol)) {
const [quote] = await fetch( const [quote] = await fetch(
`${this.URL}/quote/${symbol}?apikey=${this.apiKey}`, `${this.getUrl({ version: 'stable' })}/quote?symbol=${symbol}&apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout(requestTimeout) signal: AbortSignal.timeout(requestTimeout)
} }
@ -95,7 +94,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
response.name = quote.name; response.name = quote.name;
} else { } else {
const [assetProfile] = await fetch( const [assetProfile] = await fetch(
`${this.URL}/profile/${symbol}?apikey=${this.apiKey}`, `${this.getUrl({ version: 'stable' })}/profile?symbol=${symbol}&apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout(requestTimeout) signal: AbortSignal.timeout(requestTimeout)
} }
@ -109,7 +108,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
if (assetSubClass === AssetSubClass.ETF) { if (assetSubClass === AssetSubClass.ETF) {
const etfCountryWeightings = await fetch( const etfCountryWeightings = await fetch(
`${this.URL}/etf-country-weightings/${symbol}?apikey=${this.apiKey}`, `${this.getUrl({ version: 'stable' })}/etf/country-weightings?symbol=${symbol}&apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout(requestTimeout) signal: AbortSignal.timeout(requestTimeout)
} }
@ -133,45 +132,38 @@ export class FinancialModelingPrepService implements DataProviderInterface {
} }
); );
const [etfInformation] = await fetch( const etfHoldings = await fetch(
`${this.getUrl({ version: 4 })}/etf-info?symbol=${symbol}&apikey=${this.apiKey}`, `${this.getUrl({ version: 'stable' })}/etf/holdings?symbol=${symbol}&apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout(requestTimeout) signal: AbortSignal.timeout(requestTimeout)
} }
).then((res) => res.json()); ).then((res) => res.json());
if (etfInformation.website) { const sortedTopHoldings = etfHoldings
response.url = etfInformation.website; .sort((a, b) => {
} return b.weightPercentage - a.weightPercentage;
})
.slice(0, 10);
const [portfolioDate] = await fetch( response.holdings = sortedTopHoldings.map(
`${this.getUrl({ version: 4 })}/etf-holdings/portfolio-date?symbol=${symbol}&apikey=${this.apiKey}`, ({ name, weightPercentage }) => {
return { name, weight: weightPercentage / 100 };
}
);
const [etfInformation] = await fetch(
`${this.getUrl({ version: 'stable' })}/etf/info?symbol=${symbol}&apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout(requestTimeout) signal: AbortSignal.timeout(requestTimeout)
} }
).then((res) => res.json()); ).then((res) => res.json());
if (portfolioDate) { if (etfInformation.website) {
const etfHoldings = await fetch( response.url = etfInformation.website;
`${this.getUrl({ version: 4 })}/etf-holdings?date=${portfolioDate.date}&symbol=${symbol}&apikey=${this.apiKey}`,
{
signal: AbortSignal.timeout(requestTimeout)
}
).then((res) => res.json());
const sortedTopHoldings = etfHoldings
.sort((a, b) => {
return b.pctVal - a.pctVal;
})
.slice(0, 10);
response.holdings = sortedTopHoldings.map(({ name, pctVal }) => {
return { name, weight: pctVal / 100 };
});
} }
const etfSectorWeightings = await fetch( const etfSectorWeightings = await fetch(
`${this.URL}/etf-sector-weightings/${symbol}?apikey=${this.apiKey}`, `${this.getUrl({ version: 'stable' })}/etf/sector-weightings?symbol=${symbol}&apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout(requestTimeout) signal: AbortSignal.timeout(requestTimeout)
} }
@ -181,7 +173,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
({ sector, weightPercentage }) => { ({ sector, weightPercentage }) => {
return { return {
name: sector, name: sector,
weight: parseFloat(weightPercentage.slice(0, -1)) / 100 weight: weightPercentage / 100
}; };
} }
); );
@ -246,14 +238,14 @@ export class FinancialModelingPrepService implements DataProviderInterface {
[date: string]: IDataProviderHistoricalResponse; [date: string]: IDataProviderHistoricalResponse;
} = {}; } = {};
const { historical = [] } = await fetch( const dividends = await fetch(
`${this.URL}/historical-price-full/stock_dividend/${symbol}?apikey=${this.apiKey}`, `${this.getUrl({ version: 'stable' })}/dividends?symbol=${symbol}&apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout(requestTimeout) signal: AbortSignal.timeout(requestTimeout)
} }
).then((res) => res.json()); ).then((res) => res.json());
historical dividends
.filter(({ date }) => { .filter(({ date }) => {
return ( return (
(isSameDay(parseISO(date), from) || (isSameDay(parseISO(date), from) ||
@ -307,21 +299,21 @@ 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.getUrl({ version: 'stable' })}/historical-price-eod/full?symbol=${symbol}&apikey=${this.apiKey}&from=${format(currentFrom, DATE_FORMAT)}&to=${format(currentTo, DATE_FORMAT)}`,
{ {
signal: AbortSignal.timeout(requestTimeout) signal: AbortSignal.timeout(requestTimeout)
} }
).then((res) => res.json()); ).then((res) => res.json());
for (const { adjClose, date } of historical) { for (const { close, date } of historical) {
if ( if (
(isSameDay(parseDate(date), currentFrom) || (isSameDay(parseDate(date), currentFrom) ||
isAfter(parseDate(date), currentFrom)) && isAfter(parseDate(date), currentFrom)) &&
isBefore(parseDate(date), currentTo) isBefore(parseDate(date), currentTo)
) { ) {
result[symbol][date] = { result[symbol][date] = {
marketPrice: adjClose marketPrice: close
}; };
} }
} }
@ -454,7 +446,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
}); });
} else { } else {
const result = await fetch( const result = await fetch(
`${this.URL}/search?query=${query}&apikey=${this.apiKey}`, `${this.getUrl({ version: 'stable' })}/search-symbol?query=${query}&apikey=${this.apiKey}`,
{ {
signal: AbortSignal.timeout( signal: AbortSignal.timeout(
this.configurationService.get('REQUEST_TIMEOUT') this.configurationService.get('REQUEST_TIMEOUT')

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

@ -205,7 +205,7 @@
<ion-icon <ion-icon
class="mr-2" class="mr-2"
[name]=" [name]="
impersonationId hasImpersonationId
? 'radio-button-off-outline' ? 'radio-button-off-outline'
: 'radio-button-on-outline' : 'radio-button-on-outline'
" "

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

@ -82,6 +82,7 @@ export class HeaderComponent implements OnChanges {
@ViewChild('assistantTrigger') assistentMenuTriggerElement: MatMenuTrigger; @ViewChild('assistantTrigger') assistentMenuTriggerElement: MatMenuTrigger;
public hasFilters: boolean; public hasFilters: boolean;
public hasImpersonationId: boolean;
public hasPermissionForSocialLogin: boolean; public hasPermissionForSocialLogin: boolean;
public hasPermissionForSubscription: boolean; public hasPermissionForSubscription: boolean;
public hasPermissionToAccessAdminControl: boolean; public hasPermissionToAccessAdminControl: boolean;
@ -124,6 +125,7 @@ export class HeaderComponent implements OnChanges {
.onChangeHasImpersonation() .onChangeHasImpersonation()
.pipe(takeUntil(this.unsubscribeSubject)) .pipe(takeUntil(this.unsubscribeSubject))
.subscribe((impersonationId) => { .subscribe((impersonationId) => {
this.hasImpersonationId = !!impersonationId;
this.impersonationId = impersonationId; this.impersonationId = impersonationId;
}); });

2
apps/client/src/app/components/home-holdings/home-holdings.component.ts

@ -1,4 +1,3 @@
import { GfToggleComponent } from '@ghostfolio/client/components/toggle/toggle.component';
import { DataService } from '@ghostfolio/client/services/data.service'; import { DataService } from '@ghostfolio/client/services/data.service';
import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service';
import { UserService } from '@ghostfolio/client/services/user/user.service'; import { UserService } from '@ghostfolio/client/services/user/user.service';
@ -12,6 +11,7 @@ import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { internalRoutes } from '@ghostfolio/common/routes/routes';
import { HoldingType, HoldingsViewMode } from '@ghostfolio/common/types'; import { HoldingType, HoldingsViewMode } from '@ghostfolio/common/types';
import { GfHoldingsTableComponent } from '@ghostfolio/ui/holdings-table'; import { GfHoldingsTableComponent } from '@ghostfolio/ui/holdings-table';
import { GfToggleComponent } from '@ghostfolio/ui/toggle';
import { GfTreemapChartComponent } from '@ghostfolio/ui/treemap-chart'; import { GfTreemapChartComponent } from '@ghostfolio/ui/treemap-chart';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';

2
apps/client/src/app/components/home-holdings/home-holdings.html

@ -28,7 +28,7 @@
[defaultValue]="holdingType" [defaultValue]="holdingType"
[isLoading]="false" [isLoading]="false"
[options]="holdingTypeOptions" [options]="holdingTypeOptions"
(change)="onChangeHoldingType($event.value)" (valueChange)="onChangeHoldingType($event.value)"
/> />
</div> </div>
</div> </div>

2
apps/client/src/app/components/home-overview/home-overview.component.ts

@ -1,5 +1,4 @@
import { GfPortfolioPerformanceModule } from '@ghostfolio/client/components/portfolio-performance/portfolio-performance.module'; import { GfPortfolioPerformanceModule } from '@ghostfolio/client/components/portfolio-performance/portfolio-performance.module';
import { GfToggleComponent } from '@ghostfolio/client/components/toggle/toggle.component';
import { LayoutService } from '@ghostfolio/client/core/layout.service'; import { LayoutService } from '@ghostfolio/client/core/layout.service';
import { DataService } from '@ghostfolio/client/services/data.service'; import { DataService } from '@ghostfolio/client/services/data.service';
import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service';
@ -43,7 +42,6 @@ import { takeUntil } from 'rxjs/operators';
templateUrl: './home-overview.html' templateUrl: './home-overview.html'
}) })
export class GfHomeOverviewComponent implements OnDestroy, OnInit { export class GfHomeOverviewComponent implements OnDestroy, OnInit {
public dateRangeOptions = GfToggleComponent.DEFAULT_DATE_RANGE_OPTIONS;
public deviceType: string; public deviceType: string;
public errors: AssetProfileIdentifier[]; public errors: AssetProfileIdentifier[];
public hasError: boolean; public hasError: boolean;

2
apps/client/src/app/components/markets/markets.component.ts

@ -1,5 +1,4 @@
import { GfFearAndGreedIndexModule } from '@ghostfolio/client/components/fear-and-greed-index/fear-and-greed-index.module'; import { GfFearAndGreedIndexModule } from '@ghostfolio/client/components/fear-and-greed-index/fear-and-greed-index.module';
import { GfToggleComponent } from '@ghostfolio/client/components/toggle/toggle.component';
import { DataService } from '@ghostfolio/client/services/data.service'; 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 { resetHours } from '@ghostfolio/common/helper'; import { resetHours } from '@ghostfolio/common/helper';
@ -13,6 +12,7 @@ import {
import { FearAndGreedIndexMode } from '@ghostfolio/common/types'; import { FearAndGreedIndexMode } from '@ghostfolio/common/types';
import { GfBenchmarkComponent } from '@ghostfolio/ui/benchmark'; import { GfBenchmarkComponent } from '@ghostfolio/ui/benchmark';
import { GfLineChartComponent } from '@ghostfolio/ui/line-chart'; import { GfLineChartComponent } from '@ghostfolio/ui/line-chart';
import { GfToggleComponent } from '@ghostfolio/ui/toggle';
import { import {
ChangeDetectionStrategy, ChangeDetectionStrategy,

2
apps/client/src/app/components/markets/markets.html

@ -9,7 +9,7 @@
[defaultValue]="fearAndGreedIndexMode" [defaultValue]="fearAndGreedIndexMode"
[isLoading]="false" [isLoading]="false"
[options]="fearAndGreedIndexModeOptions" [options]="fearAndGreedIndexModeOptions"
(change)="onChangeFearAndGreedIndexMode($event.value)" (valueChange)="onChangeFearAndGreedIndexMode($event.value)"
/> />
</div> </div>
} }

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

@ -44,7 +44,7 @@ export class GfApiPageComponent implements OnInit {
this.historicalData$ = this.fetchHistoricalData({ symbol: 'AAPL' }); this.historicalData$ = this.fetchHistoricalData({ symbol: 'AAPL' });
this.isinLookupItems$ = this.fetchLookupItems({ query: 'US0378331005' }); this.isinLookupItems$ = this.fetchLookupItems({ query: 'US0378331005' });
this.lookupItems$ = this.fetchLookupItems({ query: 'apple' }); this.lookupItems$ = this.fetchLookupItems({ query: 'apple' });
this.quotes$ = this.fetchQuotes({ symbols: ['AAPL', 'VOO.US'] }); this.quotes$ = this.fetchQuotes({ symbols: ['AAPL', 'VOO'] });
this.status$ = this.fetchStatus(); this.status$ = this.fetchStatus();
} }

5
apps/client/src/app/pages/faq/overview/faq-overview-page.html

@ -133,8 +133,9 @@
class="d-inline-block ml-1" class="d-inline-block ml-1"
[enableLink]="false" [enableLink]="false"
/></a> /></a>
subscription to finance the hosting infrastructure, a positive rating subscription to finance the operational costs for the hosting
in the infrastructure and professional data providers, a positive rating in
the
<a <a
href="https://play.google.com/store/apps/details?id=ch.dotsilver.ghostfolio.twa" href="https://play.google.com/store/apps/details?id=ch.dotsilver.ghostfolio.twa"
>Google Play Store</a >Google Play Store</a

6
apps/client/src/app/pages/faq/saas/saas-page.html

@ -58,9 +58,9 @@
[enableLink]="false" [enableLink]="false"
/></a> /></a>
is a fully managed Ghostfolio cloud offering for ambitious investors. is a fully managed Ghostfolio cloud offering for ambitious investors.
Revenue is used to cover the costs of the hosting infrastructure and Revenue is used to cover operational costs for the hosting
to fund ongoing development. It is the Open Source code base with some infrastructure and professional data providers, and to fund ongoing
extras like the development. It is the Open Source code base with some extras like the
<a [routerLink]="routerLinkMarkets">markets overview</a> and a <a [routerLink]="routerLinkMarkets">markets overview</a> and a
professional data provider.</mat-card-content professional data provider.</mat-card-content
> >

11
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts

@ -1,4 +1,5 @@
import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto'; import { CreateAccountWithBalancesDto } from '@ghostfolio/api/app/import/create-account-with-balances.dto';
import { CreateAssetProfileWithMarketDataDto } from '@ghostfolio/api/app/import/create-asset-profile-with-market-data.dto';
import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface'; import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface';
import { GfDialogFooterModule } from '@ghostfolio/client/components/dialog-footer/dialog-footer.module'; import { GfDialogFooterModule } from '@ghostfolio/client/components/dialog-footer/dialog-footer.module';
import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-header/dialog-header.module'; import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-header/dialog-header.module';
@ -75,9 +76,10 @@ import { ImportActivitiesDialogParams } from './interfaces/interfaces';
templateUrl: 'import-activities-dialog.html' templateUrl: 'import-activities-dialog.html'
}) })
export class GfImportActivitiesDialog implements OnDestroy { export class GfImportActivitiesDialog implements OnDestroy {
public accounts: CreateAccountDto[] = []; public accounts: CreateAccountWithBalancesDto[] = [];
public activities: Activity[] = []; public activities: Activity[] = [];
public assetProfileForm: FormGroup; public assetProfileForm: FormGroup;
public assetProfiles: CreateAssetProfileWithMarketDataDto[] = [];
public dataSource: MatTableDataSource<Activity>; public dataSource: MatTableDataSource<Activity>;
public details: any[] = []; public details: any[] = [];
public deviceType: string; public deviceType: string;
@ -166,7 +168,8 @@ export class GfImportActivitiesDialog implements OnDestroy {
await this.importActivitiesService.importSelectedActivities({ await this.importActivitiesService.importSelectedActivities({
accounts: this.accounts, accounts: this.accounts,
activities: this.selectedActivities activities: this.selectedActivities,
assetProfiles: this.assetProfiles
}); });
this.snackBar.open( this.snackBar.open(
@ -293,6 +296,7 @@ export class GfImportActivitiesDialog implements OnDestroy {
const content = JSON.parse(fileContent); const content = JSON.parse(fileContent);
this.accounts = content.accounts; this.accounts = content.accounts;
this.assetProfiles = content.assetProfiles;
if (!isArray(content.activities)) { if (!isArray(content.activities)) {
if (isArray(content.orders)) { if (isArray(content.orders)) {
@ -323,6 +327,7 @@ export class GfImportActivitiesDialog implements OnDestroy {
await this.importActivitiesService.importJson({ await this.importActivitiesService.importJson({
accounts: content.accounts, accounts: content.accounts,
activities: content.activities, activities: content.activities,
assetProfiles: content.assetProfiles,
isDryRun: true isDryRun: true
}); });
this.activities = activities; this.activities = activities;

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

@ -1,6 +1,5 @@
import { GfBenchmarkComparatorModule } from '@ghostfolio/client/components/benchmark-comparator/benchmark-comparator.module'; import { GfBenchmarkComparatorModule } from '@ghostfolio/client/components/benchmark-comparator/benchmark-comparator.module';
import { GfInvestmentChartModule } from '@ghostfolio/client/components/investment-chart/investment-chart.module'; import { GfInvestmentChartModule } from '@ghostfolio/client/components/investment-chart/investment-chart.module';
import { GfToggleComponent } from '@ghostfolio/client/components/toggle/toggle.component';
import { DataService } from '@ghostfolio/client/services/data.service'; import { DataService } from '@ghostfolio/client/services/data.service';
import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service';
import { UserService } from '@ghostfolio/client/services/user/user.service'; import { UserService } from '@ghostfolio/client/services/user/user.service';
@ -17,6 +16,7 @@ import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import type { AiPromptMode, 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 { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
import { GfToggleComponent } from '@ghostfolio/ui/toggle';
import { GfValueComponent } from '@ghostfolio/ui/value'; import { GfValueComponent } from '@ghostfolio/ui/value';
import { Clipboard } from '@angular/cdk/clipboard'; import { Clipboard } from '@angular/cdk/clipboard';
@ -68,7 +68,6 @@ export class GfAnalysisPageComponent implements OnDestroy, OnInit {
public benchmarkDataItems: HistoricalDataItem[] = []; public benchmarkDataItems: HistoricalDataItem[] = [];
public benchmarks: Partial<SymbolProfile>[]; public benchmarks: Partial<SymbolProfile>[];
public bottom3: PortfolioPosition[]; public bottom3: PortfolioPosition[];
public dateRangeOptions = GfToggleComponent.DEFAULT_DATE_RANGE_OPTIONS;
public deviceType: string; public deviceType: string;
public dividendsByGroup: InvestmentItem[]; public dividendsByGroup: InvestmentItem[];
public dividendTimelineDataLabel = $localize`Dividend`; public dividendTimelineDataLabel = $localize`Dividend`;

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

@ -375,7 +375,7 @@
[defaultValue]="mode" [defaultValue]="mode"
[isLoading]="false" [isLoading]="false"
[options]="modeOptions" [options]="modeOptions"
(change)="onChangeGroupBy($event.value)" (valueChange)="onChangeGroupBy($event.value)"
/> />
</div> </div>
@if (streaks) { @if (streaks) {
@ -432,7 +432,7 @@
[defaultValue]="mode" [defaultValue]="mode"
[isLoading]="false" [isLoading]="false"
[options]="modeOptions" [options]="modeOptions"
(change)="onChangeGroupBy($event.value)" (valueChange)="onChangeGroupBy($event.value)"
/> />
</div> </div>
<div class="chart-container"> <div class="chart-container">

6
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts

@ -47,7 +47,7 @@ export class GfXRayPageComponent {
public inactiveRules: PortfolioReportRule[]; public inactiveRules: PortfolioReportRule[];
public isLoading = false; public isLoading = false;
public regionalMarketClusterRiskRules: PortfolioReportRule[]; public regionalMarketClusterRiskRules: PortfolioReportRule[];
public statistics: PortfolioReportResponse['statistics']; public statistics: PortfolioReportResponse['x-ray']['statistics'];
public user: User; public user: User;
private unsubscribeSubject = new Subject<void>(); private unsubscribeSubject = new Subject<void>();
@ -115,7 +115,7 @@ export class GfXRayPageComponent {
this.dataService this.dataService
.fetchPortfolioReport() .fetchPortfolioReport()
.pipe(takeUntil(this.unsubscribeSubject)) .pipe(takeUntil(this.unsubscribeSubject))
.subscribe(({ rules, statistics }) => { .subscribe(({ 'x-ray': { rules, statistics } }) => {
this.inactiveRules = this.mergeInactiveRules(rules); this.inactiveRules = this.mergeInactiveRules(rules);
this.statistics = statistics; this.statistics = statistics;
@ -161,7 +161,7 @@ export class GfXRayPageComponent {
} }
private mergeInactiveRules( private mergeInactiveRules(
rules: PortfolioReportResponse['rules'] rules: PortfolioReportResponse['x-ray']['rules']
): PortfolioReportRule[] { ): PortfolioReportRule[] {
let inactiveRules: PortfolioReportRule[] = []; let inactiveRules: PortfolioReportRule[] = [];

5
apps/client/src/app/pages/pricing/pricing-page.html

@ -6,8 +6,9 @@
<p i18n> <p i18n>
Our official Ghostfolio Premium cloud offering is the easiest way to Our official Ghostfolio Premium cloud offering is the easiest way to
get started. Due to the time it saves, this will be the best option get started. Due to the time it saves, this will be the best option
for most people. Revenue is used to cover the costs of the hosting for most people. Revenue is used to cover operational costs for the
infrastructure and to fund ongoing development. hosting infrastructure and professional data providers, and to fund
ongoing development.
</p> </p>
<p i18n> <p i18n>
If you prefer to run Ghostfolio on your own infrastructure, please If you prefer to run Ghostfolio on your own infrastructure, please

26
apps/client/src/app/services/import-activities.service.ts

@ -1,4 +1,5 @@
import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto'; import { CreateAccountWithBalancesDto } from '@ghostfolio/api/app/import/create-account-with-balances.dto';
import { CreateAssetProfileWithMarketDataDto } from '@ghostfolio/api/app/import/create-asset-profile-with-market-data.dto';
import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto'; import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto';
import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface'; import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface';
import { parseDate as parseDateHelper } from '@ghostfolio/common/helper'; import { parseDate as parseDateHelper } from '@ghostfolio/common/helper';
@ -73,20 +74,22 @@ export class ImportActivitiesService {
public importJson({ public importJson({
accounts, accounts,
activities, activities,
assetProfiles,
isDryRun = false isDryRun = false
}: { }: {
activities: CreateOrderDto[]; activities: CreateOrderDto[];
accounts?: CreateAccountDto[]; accounts?: CreateAccountWithBalancesDto[];
assetProfiles?: CreateAssetProfileWithMarketDataDto[];
isDryRun?: boolean; isDryRun?: boolean;
}): Promise<{ }): Promise<{
activities: Activity[]; activities: Activity[];
accounts?: CreateAccountDto[];
}> { }> {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.postImport( this.postImport(
{ {
accounts, accounts,
activities activities,
assetProfiles
}, },
isDryRun isDryRun
) )
@ -106,13 +109,14 @@ export class ImportActivitiesService {
public importSelectedActivities({ public importSelectedActivities({
accounts, accounts,
activities activities,
assetProfiles
}: { }: {
accounts: CreateAccountDto[]; accounts?: CreateAccountWithBalancesDto[];
activities: Activity[]; activities: Activity[];
assetProfiles?: CreateAssetProfileWithMarketDataDto[];
}): Promise<{ }): Promise<{
activities: Activity[]; activities: Activity[];
accounts?: CreateAccountDto[];
}> { }> {
const importData: CreateOrderDto[] = []; const importData: CreateOrderDto[] = [];
@ -120,7 +124,7 @@ export class ImportActivitiesService {
importData.push(this.convertToCreateOrderDto(activity)); importData.push(this.convertToCreateOrderDto(activity));
} }
return this.importJson({ accounts, activities: importData }); return this.importJson({ accounts, assetProfiles, activities: importData });
} }
private convertToCreateOrderDto({ private convertToCreateOrderDto({
@ -383,7 +387,11 @@ export class ImportActivitiesService {
} }
private postImport( private postImport(
aImportData: { accounts: CreateAccountDto[]; activities: CreateOrderDto[] }, aImportData: {
accounts?: CreateAccountWithBalancesDto[];
activities: CreateOrderDto[];
assetProfiles?: CreateAssetProfileWithMarketDataDto[];
},
aIsDryRun = false aIsDryRun = false
) { ) {
return this.http.post<{ activities: Activity[] }>( return this.http.post<{ activities: Activity[] }>(

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

@ -22,7 +22,7 @@
<target state="translated">Iniciar sessió</target> <target state="translated">Iniciar sessió</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">257</context> <context context-type="linenumber">259</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context> <context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context>
@ -2199,7 +2199,7 @@
<target state="translated">Oooh! El testimoni de seguretat és incorrecte.</target> <target state="translated">Oooh! El testimoni de seguretat és incorrecte.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">274</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
@ -2913,10 +2913,6 @@
<trans-unit id="6048892649018070225" datatype="html"> <trans-unit id="6048892649018070225" datatype="html">
<source>Today</source> <source>Today</source>
<target state="translated">Avui</target> <target state="translated">Avui</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">24</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
@ -2925,10 +2921,6 @@
<trans-unit id="7377728350294749129" datatype="html"> <trans-unit id="7377728350294749129" datatype="html">
<source>YTD</source> <source>YTD</source>
<target state="translated">YTD</target> <target state="translated">YTD</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">25</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">360</context> <context context-type="linenumber">360</context>
@ -2937,10 +2929,6 @@
<trans-unit id="8768104874317770689" datatype="html"> <trans-unit id="8768104874317770689" datatype="html">
<source>1Y</source> <source>1Y</source>
<target state="translated">1 any</target> <target state="translated">1 any</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">26</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">370</context> <context context-type="linenumber">370</context>
@ -2949,10 +2937,6 @@
<trans-unit id="7304247106520037555" datatype="html"> <trans-unit id="7304247106520037555" datatype="html">
<source>5Y</source> <source>5Y</source>
<target state="translated">5 anys</target> <target state="translated">5 anys</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">27</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">395</context> <context context-type="linenumber">395</context>
@ -2961,10 +2945,6 @@
<trans-unit id="3667949571823271511" datatype="html"> <trans-unit id="3667949571823271511" datatype="html">
<source>Max</source> <source>Max</source>
<target state="translated">Màx</target> <target state="translated">Màx</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">401</context> <context context-type="linenumber">401</context>
@ -3311,7 +3291,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">183</context> <context context-type="linenumber">186</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8236987838684066590" datatype="html"> <trans-unit id="8236987838684066590" datatype="html">
@ -3331,7 +3311,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">184</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1579692722565712588" datatype="html"> <trans-unit id="1579692722565712588" datatype="html">
@ -3347,7 +3327,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">184</context> <context context-type="linenumber">187</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2998033970178753887" datatype="html"> <trans-unit id="2998033970178753887" datatype="html">
@ -4372,7 +4352,7 @@
<target state="translated">Activitats d’importació</target> <target state="translated">Activitats d’importació</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.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="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -4380,7 +4360,7 @@
<target state="translated">Importar dividends</target> <target state="translated">Importar dividends</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="848497846891931418" datatype="html"> <trans-unit id="848497846891931418" datatype="html">
@ -4388,7 +4368,7 @@
<target state="translated">S’estan important dades...</target> <target state="translated">S’estan important dades...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">165</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7500216440144530775" datatype="html"> <trans-unit id="7500216440144530775" datatype="html">
@ -4396,7 +4376,7 @@
<target state="translated">La importació s’ha completat</target> <target state="translated">La importació s’ha completat</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">173</context> <context context-type="linenumber">176</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8763985977445247551" datatype="html"> <trans-unit id="8763985977445247551" datatype="html">
@ -4404,7 +4384,7 @@
<target state="translated">S’estan validant les dades...</target> <target state="translated">S’estan validant les dades...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">281</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4de7b521c9a386fa682d6c995b30f6bc2d6c14b8" datatype="html"> <trans-unit id="4de7b521c9a386fa682d6c995b30f6bc2d6c14b8" datatype="html">
@ -4692,7 +4672,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">74</context> <context context-type="linenumber">73</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>
@ -4704,11 +4684,11 @@
<target state="translated">Inversió</target> <target state="translated">Inversió</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">79</context> <context context-type="linenumber">78</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">95</context> <context context-type="linenumber">94</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>
@ -4720,7 +4700,7 @@
<target state="translated">Mensualment</target> <target state="translated">Mensualment</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">89</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8036977202721714375" datatype="html"> <trans-unit id="8036977202721714375" datatype="html">
@ -4728,7 +4708,7 @@
<target state="translated">Anualment</target> <target state="translated">Anualment</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">90</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -5809,7 +5789,7 @@
<target state="translated">Import total previst</target> <target state="translated">Import total previst</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">59</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5213771062241898526" datatype="html"> <trans-unit id="5213771062241898526" datatype="html">
@ -7171,7 +7151,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">198</context> <context context-type="linenumber">197</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7259,7 +7239,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">199</context> <context context-type="linenumber">198</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7291,7 +7271,7 @@
<target state="new">Performance</target> <target state="new">Performance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

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

@ -1026,7 +1026,7 @@
<target state="translated">Einloggen</target> <target state="translated">Einloggen</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">257</context> <context context-type="linenumber">259</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context> <context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context>
@ -1042,7 +1042,7 @@
<target state="translated">Ups! Falsches Sicherheits-Token.</target> <target state="translated">Ups! Falsches Sicherheits-Token.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">274</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
@ -1412,10 +1412,6 @@
<trans-unit id="6048892649018070225" datatype="html"> <trans-unit id="6048892649018070225" datatype="html">
<source>Today</source> <source>Today</source>
<target state="translated">Heute</target> <target state="translated">Heute</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">24</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
@ -1424,10 +1420,6 @@
<trans-unit id="7377728350294749129" datatype="html"> <trans-unit id="7377728350294749129" datatype="html">
<source>YTD</source> <source>YTD</source>
<target state="translated">YTD</target> <target state="translated">YTD</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">25</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">360</context> <context context-type="linenumber">360</context>
@ -1436,10 +1428,6 @@
<trans-unit id="8768104874317770689" datatype="html"> <trans-unit id="8768104874317770689" datatype="html">
<source>1Y</source> <source>1Y</source>
<target state="translated">1J</target> <target state="translated">1J</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">26</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">370</context> <context context-type="linenumber">370</context>
@ -1448,10 +1436,6 @@
<trans-unit id="7304247106520037555" datatype="html"> <trans-unit id="7304247106520037555" datatype="html">
<source>5Y</source> <source>5Y</source>
<target state="translated">5J</target> <target state="translated">5J</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">27</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">395</context> <context context-type="linenumber">395</context>
@ -1460,10 +1444,6 @@
<trans-unit id="3667949571823271511" datatype="html"> <trans-unit id="3667949571823271511" datatype="html">
<source>Max</source> <source>Max</source>
<target state="translated">Max</target> <target state="translated">Max</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">401</context> <context context-type="linenumber">401</context>
@ -1482,7 +1462,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">184</context> <context context-type="linenumber">187</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1726363342938046830" datatype="html"> <trans-unit id="1726363342938046830" datatype="html">
@ -2346,7 +2326,7 @@
<target state="translated">Daten importieren...</target> <target state="translated">Daten importieren...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">165</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7500216440144530775" datatype="html"> <trans-unit id="7500216440144530775" datatype="html">
@ -2354,7 +2334,7 @@
<target state="translated">Der Import wurde abgeschlossen</target> <target state="translated">Der Import wurde abgeschlossen</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">173</context> <context context-type="linenumber">176</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5080775557941296581" datatype="html"> <trans-unit id="5080775557941296581" datatype="html">
@ -2486,7 +2466,7 @@
<target state="translated">Aktivitäten importieren</target> <target state="translated">Aktivitäten importieren</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.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="446d1376bd7f6cf33d75d7a6022c33d2910327a2" datatype="html"> <trans-unit id="446d1376bd7f6cf33d75d7a6022c33d2910327a2" datatype="html">
@ -2606,7 +2586,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">183</context> <context context-type="linenumber">186</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7224997887539831269" datatype="html"> <trans-unit id="7224997887539831269" datatype="html">
@ -2618,7 +2598,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">184</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html"> <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">
@ -2746,7 +2726,7 @@
<target state="translated">Projizierter Gesamtbetrag</target> <target state="translated">Projizierter Gesamtbetrag</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">59</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6762743264882388498" datatype="html"> <trans-unit id="6762743264882388498" datatype="html">
@ -2754,7 +2734,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">89</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5213771062241898526" datatype="html"> <trans-unit id="5213771062241898526" datatype="html">
@ -3282,7 +3262,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">74</context> <context context-type="linenumber">73</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>
@ -3310,7 +3290,7 @@
<target state="translated">Daten validieren...</target> <target state="translated">Daten validieren...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">281</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html"> <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">
@ -3378,7 +3358,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">90</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -3386,7 +3366,7 @@
<target state="translated">Dividenden importieren</target> <target state="translated">Dividenden importieren</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html"> <trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html">
@ -5908,11 +5888,11 @@
<target state="translated">Investition</target> <target state="translated">Investition</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">79</context> <context context-type="linenumber">78</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">95</context> <context context-type="linenumber">94</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>
@ -7195,7 +7175,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">198</context> <context context-type="linenumber">197</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7283,7 +7263,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">199</context> <context context-type="linenumber">198</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7315,7 +7295,7 @@
<target state="translated">Performance</target> <target state="translated">Performance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

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

@ -1011,7 +1011,7 @@
<target state="translated">Iniciar sesión</target> <target state="translated">Iniciar sesión</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">257</context> <context context-type="linenumber">259</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context> <context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context>
@ -1027,7 +1027,7 @@
<target state="translated">Vaya! Token de seguridad incorrecto.</target> <target state="translated">Vaya! Token de seguridad incorrecto.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">274</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
@ -1397,10 +1397,6 @@
<trans-unit id="6048892649018070225" datatype="html"> <trans-unit id="6048892649018070225" datatype="html">
<source>Today</source> <source>Today</source>
<target state="translated">Hoy</target> <target state="translated">Hoy</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">24</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
@ -1409,10 +1405,6 @@
<trans-unit id="7377728350294749129" datatype="html"> <trans-unit id="7377728350294749129" datatype="html">
<source>YTD</source> <source>YTD</source>
<target state="translated">Desde principio de año</target> <target state="translated">Desde principio de año</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">25</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">360</context> <context context-type="linenumber">360</context>
@ -1421,10 +1413,6 @@
<trans-unit id="8768104874317770689" datatype="html"> <trans-unit id="8768104874317770689" datatype="html">
<source>1Y</source> <source>1Y</source>
<target state="translated">1 año</target> <target state="translated">1 año</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">26</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">370</context> <context context-type="linenumber">370</context>
@ -1433,10 +1421,6 @@
<trans-unit id="7304247106520037555" datatype="html"> <trans-unit id="7304247106520037555" datatype="html">
<source>5Y</source> <source>5Y</source>
<target state="translated">5 años</target> <target state="translated">5 años</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">27</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">395</context> <context context-type="linenumber">395</context>
@ -1445,10 +1429,6 @@
<trans-unit id="3667949571823271511" datatype="html"> <trans-unit id="3667949571823271511" datatype="html">
<source>Max</source> <source>Max</source>
<target state="translated">Máximo</target> <target state="translated">Máximo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">401</context> <context context-type="linenumber">401</context>
@ -1467,7 +1447,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">184</context> <context context-type="linenumber">187</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1726363342938046830" datatype="html"> <trans-unit id="1726363342938046830" datatype="html">
@ -2331,7 +2311,7 @@
<target state="translated">Importando datos...</target> <target state="translated">Importando datos...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">165</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7500216440144530775" datatype="html"> <trans-unit id="7500216440144530775" datatype="html">
@ -2339,7 +2319,7 @@
<target state="translated">La importación se ha completado</target> <target state="translated">La importación se ha completado</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">173</context> <context context-type="linenumber">176</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5080775557941296581" datatype="html"> <trans-unit id="5080775557941296581" datatype="html">
@ -2471,7 +2451,7 @@
<target state="translated">Importar operaciones</target> <target state="translated">Importar operaciones</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.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="446d1376bd7f6cf33d75d7a6022c33d2910327a2" datatype="html"> <trans-unit id="446d1376bd7f6cf33d75d7a6022c33d2910327a2" datatype="html">
@ -2587,7 +2567,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">184</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8947585964755853889" datatype="html"> <trans-unit id="8947585964755853889" 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/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">183</context> <context context-type="linenumber">186</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html"> <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">
@ -2731,7 +2711,7 @@
<target state="translated">Importe total previsto</target> <target state="translated">Importe total previsto</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">59</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1054498214311181686" datatype="html"> <trans-unit id="1054498214311181686" datatype="html">
@ -2767,7 +2747,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">89</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8511b16abcf065252b350d64e337ba2447db3ffb" datatype="html"> <trans-unit id="8511b16abcf065252b350d64e337ba2447db3ffb" datatype="html">
@ -3259,7 +3239,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">74</context> <context context-type="linenumber">73</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>
@ -3295,7 +3275,7 @@
<target state="translated">Validando datos...</target> <target state="translated">Validando datos...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">281</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html"> <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">
@ -3363,7 +3343,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">90</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -3371,7 +3351,7 @@
<target state="translated">Importar Dividendos</target> <target state="translated">Importar Dividendos</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html"> <trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html">
@ -5885,11 +5865,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">79</context> <context context-type="linenumber">78</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">95</context> <context context-type="linenumber">94</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>
@ -7172,7 +7152,7 @@
<target state="translated">El aviso de IA ha sido copiado al portapapeles</target> <target state="translated">El aviso de IA ha sido copiado al portapapeles</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">198</context> <context context-type="linenumber">197</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7260,7 +7240,7 @@
<target state="translated">Abrir Duck.ai</target> <target state="translated">Abrir 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">199</context> <context context-type="linenumber">198</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7292,7 +7272,7 @@
<target state="translated">Rendimiento</target> <target state="translated">Rendimiento</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

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

@ -1322,7 +1322,7 @@
<target state="translated">Se connecter</target> <target state="translated">Se connecter</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">257</context> <context context-type="linenumber">259</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context> <context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context>
@ -1338,7 +1338,7 @@
<target state="translated">Oups! Jeton de Sécurité Incorrect.</target> <target state="translated">Oups! Jeton de Sécurité Incorrect.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">274</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
@ -1712,10 +1712,6 @@
<trans-unit id="6048892649018070225" datatype="html"> <trans-unit id="6048892649018070225" datatype="html">
<source>Today</source> <source>Today</source>
<target state="translated">Aujourd’hui</target> <target state="translated">Aujourd’hui</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">24</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
@ -1724,10 +1720,6 @@
<trans-unit id="7377728350294749129" datatype="html"> <trans-unit id="7377728350294749129" datatype="html">
<source>YTD</source> <source>YTD</source>
<target state="translated">CDA</target> <target state="translated">CDA</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">25</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">360</context> <context context-type="linenumber">360</context>
@ -1736,10 +1728,6 @@
<trans-unit id="8768104874317770689" datatype="html"> <trans-unit id="8768104874317770689" datatype="html">
<source>1Y</source> <source>1Y</source>
<target state="translated">1A</target> <target state="translated">1A</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">26</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">370</context> <context context-type="linenumber">370</context>
@ -1748,10 +1736,6 @@
<trans-unit id="7304247106520037555" datatype="html"> <trans-unit id="7304247106520037555" datatype="html">
<source>5Y</source> <source>5Y</source>
<target state="translated">5A</target> <target state="translated">5A</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">27</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">395</context> <context context-type="linenumber">395</context>
@ -1760,10 +1744,6 @@
<trans-unit id="3667949571823271511" datatype="html"> <trans-unit id="3667949571823271511" datatype="html">
<source>Max</source> <source>Max</source>
<target state="translated">Max</target> <target state="translated">Max</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">401</context> <context context-type="linenumber">401</context>
@ -1790,7 +1770,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">183</context> <context context-type="linenumber">186</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7224997887539831269" datatype="html"> <trans-unit id="7224997887539831269" datatype="html">
@ -1802,7 +1782,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">184</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1579692722565712588" datatype="html"> <trans-unit id="1579692722565712588" datatype="html">
@ -1818,7 +1798,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">184</context> <context context-type="linenumber">187</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1726363342938046830" datatype="html"> <trans-unit id="1726363342938046830" datatype="html">
@ -2502,7 +2482,7 @@
<target state="translated">Import des données...</target> <target state="translated">Import des données...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">165</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7500216440144530775" datatype="html"> <trans-unit id="7500216440144530775" datatype="html">
@ -2510,7 +2490,7 @@
<target state="translated">L’import est terminé</target> <target state="translated">L’import est terminé</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">173</context> <context context-type="linenumber">176</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8763985977445247551" datatype="html"> <trans-unit id="8763985977445247551" datatype="html">
@ -2518,7 +2498,7 @@
<target state="translated">Validation des données...</target> <target state="translated">Validation des données...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">281</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6f9fd3da06dc9000eef0d4dcbb37747b303048e9" datatype="html"> <trans-unit id="6f9fd3da06dc9000eef0d4dcbb37747b303048e9" datatype="html">
@ -2702,7 +2682,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">74</context> <context context-type="linenumber">73</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>
@ -2722,7 +2702,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">89</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -2986,7 +2966,7 @@
<target state="translated">Importer Activités</target> <target state="translated">Importer Activités</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.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="446d1376bd7f6cf33d75d7a6022c33d2910327a2" datatype="html"> <trans-unit id="446d1376bd7f6cf33d75d7a6022c33d2910327a2" datatype="html">
@ -3066,7 +3046,7 @@
<target state="translated">Montant Total Prévu</target> <target state="translated">Montant Total Prévu</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">59</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3441715041566940420" datatype="html"> <trans-unit id="3441715041566940420" datatype="html">
@ -3362,7 +3342,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">90</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -3370,7 +3350,7 @@
<target state="translated">Importer Dividendes</target> <target state="translated">Importer Dividendes</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html"> <trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html">
@ -5884,11 +5864,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">79</context> <context context-type="linenumber">78</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">95</context> <context context-type="linenumber">94</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>
@ -7171,7 +7151,7 @@
<target state="translated">Le prompt IA a été copié dans le presse-papiers</target> <target state="translated">Le prompt IA a été copié dans le presse-papiers</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">198</context> <context context-type="linenumber">197</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7259,7 +7239,7 @@
<target state="translated">Ouvrir Duck.ai</target> <target state="translated">Ouvrir 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">199</context> <context context-type="linenumber">198</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7291,7 +7271,7 @@
<target state="translated">Performance</target> <target state="translated">Performance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

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

@ -1011,7 +1011,7 @@
<target state="translated">Accedi</target> <target state="translated">Accedi</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">257</context> <context context-type="linenumber">259</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context> <context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context>
@ -1027,7 +1027,7 @@
<target state="translated">Ops! Token di sicurezza errato.</target> <target state="translated">Ops! Token di sicurezza errato.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">274</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
@ -1397,10 +1397,6 @@
<trans-unit id="6048892649018070225" datatype="html"> <trans-unit id="6048892649018070225" datatype="html">
<source>Today</source> <source>Today</source>
<target state="translated">Oggi</target> <target state="translated">Oggi</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">24</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
@ -1409,10 +1405,6 @@
<trans-unit id="7377728350294749129" datatype="html"> <trans-unit id="7377728350294749129" datatype="html">
<source>YTD</source> <source>YTD</source>
<target state="translated">anno corrente</target> <target state="translated">anno corrente</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">25</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">360</context> <context context-type="linenumber">360</context>
@ -1421,10 +1413,6 @@
<trans-unit id="8768104874317770689" datatype="html"> <trans-unit id="8768104874317770689" datatype="html">
<source>1Y</source> <source>1Y</source>
<target state="translated">1 anno</target> <target state="translated">1 anno</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">26</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">370</context> <context context-type="linenumber">370</context>
@ -1433,10 +1421,6 @@
<trans-unit id="7304247106520037555" datatype="html"> <trans-unit id="7304247106520037555" datatype="html">
<source>5Y</source> <source>5Y</source>
<target state="translated">5 anni</target> <target state="translated">5 anni</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">27</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">395</context> <context context-type="linenumber">395</context>
@ -1445,10 +1429,6 @@
<trans-unit id="3667949571823271511" datatype="html"> <trans-unit id="3667949571823271511" datatype="html">
<source>Max</source> <source>Max</source>
<target state="translated">Massimo</target> <target state="translated">Massimo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">401</context> <context context-type="linenumber">401</context>
@ -1467,7 +1447,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">184</context> <context context-type="linenumber">187</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1726363342938046830" datatype="html"> <trans-unit id="1726363342938046830" datatype="html">
@ -2331,7 +2311,7 @@
<target state="translated">Importazione dei dati...</target> <target state="translated">Importazione dei dati...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">165</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7500216440144530775" datatype="html"> <trans-unit id="7500216440144530775" datatype="html">
@ -2339,7 +2319,7 @@
<target state="translated">L’importazione è stata completata</target> <target state="translated">L’importazione è stata completata</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">173</context> <context context-type="linenumber">176</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5080775557941296581" datatype="html"> <trans-unit id="5080775557941296581" datatype="html">
@ -2471,7 +2451,7 @@
<target state="translated">Importa le attività</target> <target state="translated">Importa le attività</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.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="446d1376bd7f6cf33d75d7a6022c33d2910327a2" datatype="html"> <trans-unit id="446d1376bd7f6cf33d75d7a6022c33d2910327a2" datatype="html">
@ -2587,7 +2567,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">184</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8947585964755853889" datatype="html"> <trans-unit id="8947585964755853889" 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/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">183</context> <context context-type="linenumber">186</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html"> <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">
@ -2731,7 +2711,7 @@
<target state="translated">Importo totale previsto</target> <target state="translated">Importo totale previsto</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">59</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1054498214311181686" datatype="html"> <trans-unit id="1054498214311181686" datatype="html">
@ -2767,7 +2747,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">89</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8511b16abcf065252b350d64e337ba2447db3ffb" datatype="html"> <trans-unit id="8511b16abcf065252b350d64e337ba2447db3ffb" datatype="html">
@ -3259,7 +3239,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">74</context> <context context-type="linenumber">73</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>
@ -3295,7 +3275,7 @@
<target state="translated">Convalida dei dati...</target> <target state="translated">Convalida dei dati...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">281</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html"> <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">
@ -3363,7 +3343,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">90</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -3371,7 +3351,7 @@
<target state="translated">Importa i dividendi</target> <target state="translated">Importa i dividendi</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html"> <trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html">
@ -5885,11 +5865,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">79</context> <context context-type="linenumber">78</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">95</context> <context context-type="linenumber">94</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>
@ -7172,7 +7152,7 @@
<target state="translated">L’AI prompt è stato copiato negli appunti</target> <target state="translated">L’AI prompt è stato copiato negli appunti</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">198</context> <context context-type="linenumber">197</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7260,7 +7240,7 @@
<target state="translated">Apri Duck.ai</target> <target state="translated">Apri 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">199</context> <context context-type="linenumber">198</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7292,7 +7272,7 @@
<target state="translated">Prestazione</target> <target state="translated">Prestazione</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

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

@ -1010,7 +1010,7 @@
<target state="translated">Aanmelden</target> <target state="translated">Aanmelden</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">257</context> <context context-type="linenumber">259</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context> <context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context>
@ -1026,7 +1026,7 @@
<target state="translated">Oeps! Onjuiste beveiligingstoken.</target> <target state="translated">Oeps! Onjuiste beveiligingstoken.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">274</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
@ -1396,10 +1396,6 @@
<trans-unit id="6048892649018070225" datatype="html"> <trans-unit id="6048892649018070225" datatype="html">
<source>Today</source> <source>Today</source>
<target state="translated">Vandaag</target> <target state="translated">Vandaag</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">24</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
@ -1408,10 +1404,6 @@
<trans-unit id="7377728350294749129" datatype="html"> <trans-unit id="7377728350294749129" datatype="html">
<source>YTD</source> <source>YTD</source>
<target state="translated">YTD</target> <target state="translated">YTD</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">25</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">360</context> <context context-type="linenumber">360</context>
@ -1420,10 +1412,6 @@
<trans-unit id="8768104874317770689" datatype="html"> <trans-unit id="8768104874317770689" datatype="html">
<source>1Y</source> <source>1Y</source>
<target state="translated">1J</target> <target state="translated">1J</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">26</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">370</context> <context context-type="linenumber">370</context>
@ -1432,10 +1420,6 @@
<trans-unit id="7304247106520037555" datatype="html"> <trans-unit id="7304247106520037555" datatype="html">
<source>5Y</source> <source>5Y</source>
<target state="translated">5J</target> <target state="translated">5J</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">27</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">395</context> <context context-type="linenumber">395</context>
@ -1444,10 +1428,6 @@
<trans-unit id="3667949571823271511" datatype="html"> <trans-unit id="3667949571823271511" datatype="html">
<source>Max</source> <source>Max</source>
<target state="translated">Max</target> <target state="translated">Max</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">401</context> <context context-type="linenumber">401</context>
@ -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/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">184</context> <context context-type="linenumber">187</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1726363342938046830" datatype="html"> <trans-unit id="1726363342938046830" datatype="html">
@ -2330,7 +2310,7 @@
<target state="translated">Gegevens importeren...</target> <target state="translated">Gegevens importeren...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">165</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7500216440144530775" datatype="html"> <trans-unit id="7500216440144530775" datatype="html">
@ -2338,7 +2318,7 @@
<target state="translated">Importeren is voltooid</target> <target state="translated">Importeren is voltooid</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">173</context> <context context-type="linenumber">176</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5080775557941296581" datatype="html"> <trans-unit id="5080775557941296581" datatype="html">
@ -2470,7 +2450,7 @@
<target state="translated">Activiteiten importeren</target> <target state="translated">Activiteiten importeren</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.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="446d1376bd7f6cf33d75d7a6022c33d2910327a2" datatype="html"> <trans-unit id="446d1376bd7f6cf33d75d7a6022c33d2910327a2" datatype="html">
@ -2586,7 +2566,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">184</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8947585964755853889" datatype="html"> <trans-unit id="8947585964755853889" datatype="html">
@ -2602,7 +2582,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">183</context> <context context-type="linenumber">186</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html"> <trans-unit id="024cdb2814b0cb3f4ced148f1a0b9854447cb214" datatype="html">
@ -2730,7 +2710,7 @@
<target state="translated">Verwacht totaalbedrag</target> <target state="translated">Verwacht totaalbedrag</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">59</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1054498214311181686" datatype="html"> <trans-unit id="1054498214311181686" datatype="html">
@ -2766,7 +2746,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">89</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8511b16abcf065252b350d64e337ba2447db3ffb" datatype="html"> <trans-unit id="8511b16abcf065252b350d64e337ba2447db3ffb" datatype="html">
@ -3258,7 +3238,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">74</context> <context context-type="linenumber">73</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>
@ -3294,7 +3274,7 @@
<target state="translated">Gegevens valideren...</target> <target state="translated">Gegevens valideren...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">281</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html"> <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">
@ -3362,7 +3342,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">90</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -3370,7 +3350,7 @@
<target state="translated">Importeer dividenden</target> <target state="translated">Importeer dividenden</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html"> <trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html">
@ -5884,11 +5864,11 @@
<target state="translated">Investering</target> <target state="translated">Investering</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">79</context> <context context-type="linenumber">78</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">95</context> <context context-type="linenumber">94</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>
@ -7171,7 +7151,7 @@
<target state="translated">AI-prompt is naar het klembord gekopieerd</target> <target state="translated">AI-prompt is naar het klembord gekopieerd</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">198</context> <context context-type="linenumber">197</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7259,7 +7239,7 @@
<target state="translated">Open Duck.ai</target> <target state="translated">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">199</context> <context context-type="linenumber">198</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7291,7 +7271,7 @@
<target state="translated">Prestatie</target> <target state="translated">Prestatie</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

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

@ -1995,7 +1995,7 @@
<target state="translated">Zaloguj się</target> <target state="translated">Zaloguj się</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">257</context> <context context-type="linenumber">259</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context> <context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context>
@ -2011,7 +2011,7 @@
<target state="translated">Ups! Nieprawidłowy token bezpieczeństwa.</target> <target state="translated">Ups! Nieprawidłowy token bezpieczeństwa.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">274</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
@ -2673,10 +2673,6 @@
<trans-unit id="6048892649018070225" datatype="html"> <trans-unit id="6048892649018070225" datatype="html">
<source>Today</source> <source>Today</source>
<target state="translated">Dziś</target> <target state="translated">Dziś</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">24</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
@ -2685,10 +2681,6 @@
<trans-unit id="7377728350294749129" datatype="html"> <trans-unit id="7377728350294749129" datatype="html">
<source>YTD</source> <source>YTD</source>
<target state="translated">Liczony od początku roku (year-to-date)</target> <target state="translated">Liczony od początku roku (year-to-date)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">25</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">360</context> <context context-type="linenumber">360</context>
@ -2697,10 +2689,6 @@
<trans-unit id="8768104874317770689" datatype="html"> <trans-unit id="8768104874317770689" datatype="html">
<source>1Y</source> <source>1Y</source>
<target state="translated">1 rok</target> <target state="translated">1 rok</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">26</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">370</context> <context context-type="linenumber">370</context>
@ -2709,10 +2697,6 @@
<trans-unit id="7304247106520037555" datatype="html"> <trans-unit id="7304247106520037555" datatype="html">
<source>5Y</source> <source>5Y</source>
<target state="translated">5 lat</target> <target state="translated">5 lat</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">27</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">395</context> <context context-type="linenumber">395</context>
@ -2721,10 +2705,6 @@
<trans-unit id="3667949571823271511" datatype="html"> <trans-unit id="3667949571823271511" datatype="html">
<source>Max</source> <source>Max</source>
<target state="translated">Maksimum</target> <target state="translated">Maksimum</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">401</context> <context context-type="linenumber">401</context>
@ -3015,7 +2995,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">183</context> <context context-type="linenumber">186</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7224997887539831269" datatype="html"> <trans-unit id="7224997887539831269" datatype="html">
@ -3027,7 +3007,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">184</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1579692722565712588" datatype="html"> <trans-unit id="1579692722565712588" datatype="html">
@ -3043,7 +3023,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">184</context> <context context-type="linenumber">187</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1726363342938046830" datatype="html"> <trans-unit id="1726363342938046830" datatype="html">
@ -3999,7 +3979,7 @@
<target state="translated">Importuj Aktywności</target> <target state="translated">Importuj Aktywności</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.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="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -4007,7 +3987,7 @@
<target state="translated">Impotruj Dywidendy</target> <target state="translated">Impotruj Dywidendy</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="848497846891931418" datatype="html"> <trans-unit id="848497846891931418" datatype="html">
@ -4015,7 +3995,7 @@
<target state="translated">Importowanie danych...</target> <target state="translated">Importowanie danych...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">165</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7500216440144530775" datatype="html"> <trans-unit id="7500216440144530775" datatype="html">
@ -4023,7 +4003,7 @@
<target state="translated">Importowanie zakończone</target> <target state="translated">Importowanie zakończone</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">173</context> <context context-type="linenumber">176</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8763985977445247551" datatype="html"> <trans-unit id="8763985977445247551" datatype="html">
@ -4031,7 +4011,7 @@
<target state="translated">Weryfikacja danych...</target> <target state="translated">Weryfikacja danych...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">281</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4de7b521c9a386fa682d6c995b30f6bc2d6c14b8" datatype="html"> <trans-unit id="4de7b521c9a386fa682d6c995b30f6bc2d6c14b8" datatype="html">
@ -4303,7 +4283,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">74</context> <context context-type="linenumber">73</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>
@ -4323,7 +4303,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">89</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8036977202721714375" datatype="html"> <trans-unit id="8036977202721714375" datatype="html">
@ -4331,7 +4311,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">90</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -5244,7 +5224,7 @@
<target state="translated">Przewidywana Łączna Kwota</target> <target state="translated">Przewidywana Łączna Kwota</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">59</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3441715041566940420" datatype="html"> <trans-unit id="3441715041566940420" datatype="html">
@ -5884,11 +5864,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">79</context> <context context-type="linenumber">78</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">95</context> <context context-type="linenumber">94</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>
@ -7171,7 +7151,7 @@
<target state="translated">Prompt AI został skopiowany do schowka</target> <target state="translated">Prompt AI został skopiowany do schowka</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">198</context> <context context-type="linenumber">197</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7259,7 +7239,7 @@
<target state="translated">Otwórz Duck.ai</target> <target state="translated">Otwórz 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">199</context> <context context-type="linenumber">198</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7291,7 +7271,7 @@
<target state="translated">Wydajność</target> <target state="translated">Wydajność</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

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

@ -1194,7 +1194,7 @@
<target state="translated">Iniciar sessão</target> <target state="translated">Iniciar sessão</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">257</context> <context context-type="linenumber">259</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context> <context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context>
@ -1210,7 +1210,7 @@
<target state="translated">Oops! Token de Segurança Incorreto.</target> <target state="translated">Oops! Token de Segurança Incorreto.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">274</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
@ -1696,10 +1696,6 @@
<trans-unit id="6048892649018070225" datatype="html"> <trans-unit id="6048892649018070225" datatype="html">
<source>Today</source> <source>Today</source>
<target state="translated">Hoje</target> <target state="translated">Hoje</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">24</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
@ -1708,10 +1704,6 @@
<trans-unit id="7377728350294749129" datatype="html"> <trans-unit id="7377728350294749129" datatype="html">
<source>YTD</source> <source>YTD</source>
<target state="translated">AATD</target> <target state="translated">AATD</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">25</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">360</context> <context context-type="linenumber">360</context>
@ -1720,10 +1712,6 @@
<trans-unit id="8768104874317770689" datatype="html"> <trans-unit id="8768104874317770689" datatype="html">
<source>1Y</source> <source>1Y</source>
<target state="translated">1A</target> <target state="translated">1A</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">26</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">370</context> <context context-type="linenumber">370</context>
@ -1732,10 +1720,6 @@
<trans-unit id="7304247106520037555" datatype="html"> <trans-unit id="7304247106520037555" datatype="html">
<source>5Y</source> <source>5Y</source>
<target state="translated">5A</target> <target state="translated">5A</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">27</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">395</context> <context context-type="linenumber">395</context>
@ -1744,10 +1728,6 @@
<trans-unit id="3667949571823271511" datatype="html"> <trans-unit id="3667949571823271511" datatype="html">
<source>Max</source> <source>Max</source>
<target state="translated">Máx</target> <target state="translated">Máx</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">401</context> <context context-type="linenumber">401</context>
@ -1774,7 +1754,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">183</context> <context context-type="linenumber">186</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7224997887539831269" datatype="html"> <trans-unit id="7224997887539831269" datatype="html">
@ -1786,7 +1766,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">184</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1579692722565712588" datatype="html"> <trans-unit id="1579692722565712588" datatype="html">
@ -1802,7 +1782,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">184</context> <context context-type="linenumber">187</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1726363342938046830" datatype="html"> <trans-unit id="1726363342938046830" datatype="html">
@ -2442,7 +2422,7 @@
<target state="translated">A importar dados...</target> <target state="translated">A importar dados...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">165</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7500216440144530775" datatype="html"> <trans-unit id="7500216440144530775" datatype="html">
@ -2450,7 +2430,7 @@
<target state="translated">A importação foi concluída</target> <target state="translated">A importação foi concluída</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">173</context> <context context-type="linenumber">176</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6f9fd3da06dc9000eef0d4dcbb37747b303048e9" datatype="html"> <trans-unit id="6f9fd3da06dc9000eef0d4dcbb37747b303048e9" datatype="html">
@ -2618,7 +2598,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">89</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -2866,7 +2846,7 @@
<target state="translated">Importar Atividades</target> <target state="translated">Importar Atividades</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.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="446d1376bd7f6cf33d75d7a6022c33d2910327a2" datatype="html"> <trans-unit id="446d1376bd7f6cf33d75d7a6022c33d2910327a2" datatype="html">
@ -2946,7 +2926,7 @@
<target state="translated">Montante Total Projetado</target> <target state="translated">Montante Total Projetado</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">59</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3441715041566940420" datatype="html"> <trans-unit id="3441715041566940420" datatype="html">
@ -3290,7 +3270,7 @@
<target state="translated">A validar dados...</target> <target state="translated">A validar dados...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">281</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html"> <trans-unit id="a059709f71aa4c0ac219e160e78a738682ca6a36" datatype="html">
@ -3314,7 +3294,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">74</context> <context context-type="linenumber">73</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>
@ -3362,7 +3342,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">90</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -3370,7 +3350,7 @@
<target state="translated">Importar Dividendos</target> <target state="translated">Importar Dividendos</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html"> <trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html">
@ -5884,11 +5864,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">79</context> <context context-type="linenumber">78</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">95</context> <context context-type="linenumber">94</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>
@ -7171,7 +7151,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">198</context> <context context-type="linenumber">197</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7259,7 +7239,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">199</context> <context context-type="linenumber">198</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7291,7 +7271,7 @@
<target state="new">Performance</target> <target state="new">Performance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>
@ -8181,7 +8161,7 @@
</trans-unit> </trans-unit>
<trans-unit id="rule.economicMarketClusterRiskEmergingMarkets" datatype="html"> <trans-unit id="rule.economicMarketClusterRiskEmergingMarkets" datatype="html">
<source> Emerging Markets </source> <source> Emerging Markets </source>
<target state="new"> Emerging Markets </target> <target state="translated"> Mercados Emergentes </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">113</context> <context context-type="linenumber">113</context>
@ -8213,7 +8193,7 @@
</trans-unit> </trans-unit>
<trans-unit id="rule.accountClusterRiskCurrentInvestment.false.invalid" datatype="html"> <trans-unit id="rule.accountClusterRiskCurrentInvestment.false.invalid" datatype="html">
<source> No accounts have been set up </source> <source> No accounts have been set up </source>
<target state="new"> No accounts have been set up </target> <target state="translated"> Nenhuma conta foi configurada </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">20</context>
@ -8221,7 +8201,7 @@
</trans-unit> </trans-unit>
<trans-unit id="rule.accountClusterRiskSingleAccount.false.invalid" datatype="html"> <trans-unit id="rule.accountClusterRiskSingleAccount.false.invalid" datatype="html">
<source> Your net worth is managed by 0 accounts </source> <source> Your net worth is managed by 0 accounts </source>
<target state="new"> Your net worth is managed by 0 accounts </target> <target state="translated"> Seu patrimônio líquido é gerenciado por 0 contas </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">32</context> <context context-type="linenumber">32</context>
@ -8229,7 +8209,7 @@
</trans-unit> </trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskAsiaPacific" datatype="html"> <trans-unit id="rule.regionalMarketClusterRiskAsiaPacific" datatype="html">
<source>Asia-Pacific</source> <source>Asia-Pacific</source>
<target state="new">Asia-Pacific</target> <target state="translated">Ásia-Pacífico</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">152</context> <context context-type="linenumber">152</context>
@ -8261,7 +8241,7 @@
</trans-unit> </trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskEmergingMarkets" datatype="html"> <trans-unit id="rule.regionalMarketClusterRiskEmergingMarkets" datatype="html">
<source> Emerging Markets </source> <source> Emerging Markets </source>
<target state="new"> Emerging Markets </target> <target state="translated"> Mercados Emergentes </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">166</context> <context context-type="linenumber">166</context>
@ -8293,7 +8273,7 @@
</trans-unit> </trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskEurope" datatype="html"> <trans-unit id="rule.regionalMarketClusterRiskEurope" datatype="html">
<source>Europe</source> <source>Europe</source>
<target state="new">Europe</target> <target state="translated">Europa</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">182</context> <context context-type="linenumber">182</context>
@ -8325,7 +8305,7 @@
</trans-unit> </trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskJapan" datatype="html"> <trans-unit id="rule.regionalMarketClusterRiskJapan" datatype="html">
<source>Japan</source> <source>Japan</source>
<target state="new">Japan</target> <target state="translated">Japão</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">196</context> <context context-type="linenumber">196</context>
@ -8357,7 +8337,7 @@
</trans-unit> </trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskNorthAmerica" datatype="html"> <trans-unit id="rule.regionalMarketClusterRiskNorthAmerica" datatype="html">
<source>North America</source> <source>North America</source>
<target state="new">North America</target> <target state="translated">América do Norte</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">210</context> <context context-type="linenumber">210</context>
@ -8389,7 +8369,7 @@
</trans-unit> </trans-unit>
<trans-unit id="1fcac88ae8e9a85075cdb79b41e8e01d99929e36" datatype="html"> <trans-unit id="1fcac88ae8e9a85075cdb79b41e8e01d99929e36" datatype="html">
<source>Find Ghostfolio on GitHub</source> <source>Find Ghostfolio on GitHub</source>
<target state="new">Find Ghostfolio on GitHub</target> <target state="translated">Encontre o Ghostfolio no GitHub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">74</context> <context context-type="linenumber">74</context>
@ -8401,7 +8381,7 @@
</trans-unit> </trans-unit>
<trans-unit id="83437c98bf84f17c50c20f5519608f162881a2c8" datatype="html"> <trans-unit id="83437c98bf84f17c50c20f5519608f162881a2c8" datatype="html">
<source>Join the Ghostfolio Slack community</source> <source>Join the Ghostfolio Slack community</source>
<target state="new">Join the Ghostfolio Slack community</target> <target state="translated">Junte-se à comunidade do Ghostfolio Slack</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">84</context>
@ -8409,7 +8389,7 @@
</trans-unit> </trans-unit>
<trans-unit id="f5df23754cae65f4637314605cfad153569c3462" datatype="html"> <trans-unit id="f5df23754cae65f4637314605cfad153569c3462" datatype="html">
<source>Follow Ghostfolio on X (formerly Twitter)</source> <source>Follow Ghostfolio on X (formerly Twitter)</source>
<target state="new">Follow Ghostfolio on X (formerly Twitter)</target> <target state="translated">Siga o Ghostfolio no X (antigo Twitter)</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">93</context> <context context-type="linenumber">93</context>
@ -8417,7 +8397,7 @@
</trans-unit> </trans-unit>
<trans-unit id="71c7491454b583e05a73d278aef040220b122086" datatype="html"> <trans-unit id="71c7491454b583e05a73d278aef040220b122086" datatype="html">
<source>Send an e-mail</source> <source>Send an e-mail</source>
<target state="new">Send an e-mail</target> <target state="translated">Enviar um e-mail</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">103</context>
@ -8425,7 +8405,7 @@
</trans-unit> </trans-unit>
<trans-unit id="b62bff3fbe3999076ed3927ba4beaaa1530ebc33" datatype="html"> <trans-unit id="b62bff3fbe3999076ed3927ba4beaaa1530ebc33" datatype="html">
<source>Follow Ghostfolio on LinkedIn</source> <source>Follow Ghostfolio on LinkedIn</source>
<target state="new">Follow Ghostfolio on LinkedIn</target> <target state="translated">Siga o Ghostfolio no LinkedIn</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">122</context> <context context-type="linenumber">122</context>
@ -8433,7 +8413,7 @@
</trans-unit> </trans-unit>
<trans-unit id="4dc6baa510f0fc18e63021108e86605a3ba16e76" datatype="html"> <trans-unit id="4dc6baa510f0fc18e63021108e86605a3ba16e76" datatype="html">
<source>Ghostfolio is an independent &amp; bootstrapped business</source> <source>Ghostfolio is an independent &amp; bootstrapped business</source>
<target state="new">Ghostfolio is an independent &amp; bootstrapped business</target> <target state="translated">Ghostfolio é um negócio independente e autossuficiente</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">132</context> <context context-type="linenumber">132</context>
@ -8441,7 +8421,7 @@
</trans-unit> </trans-unit>
<trans-unit id="1739057cce181564a4b34537df2aacbd017e5778" datatype="html"> <trans-unit id="1739057cce181564a4b34537df2aacbd017e5778" datatype="html">
<source>Support Ghostfolio</source> <source>Support Ghostfolio</source>
<target state="new">Support Ghostfolio</target> <target state="translated">Apoie o Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">141</context> <context context-type="linenumber">141</context>

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

@ -1843,7 +1843,7 @@
<target state="translated">Giriş</target> <target state="translated">Giriş</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">257</context> <context context-type="linenumber">259</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context> <context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context>
@ -1859,7 +1859,7 @@
<target state="translated">Hay Allah! Güvenlik anahtarı yanlış.</target> <target state="translated">Hay Allah! Güvenlik anahtarı yanlış.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">274</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
@ -2513,10 +2513,6 @@
<trans-unit id="6048892649018070225" datatype="html"> <trans-unit id="6048892649018070225" datatype="html">
<source>Today</source> <source>Today</source>
<target state="translated">Bugün</target> <target state="translated">Bugün</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">24</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
@ -2525,10 +2521,6 @@
<trans-unit id="7377728350294749129" datatype="html"> <trans-unit id="7377728350294749129" datatype="html">
<source>YTD</source> <source>YTD</source>
<target state="translated">YTD</target> <target state="translated">YTD</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">25</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">360</context> <context context-type="linenumber">360</context>
@ -2537,10 +2529,6 @@
<trans-unit id="8768104874317770689" datatype="html"> <trans-unit id="8768104874317770689" datatype="html">
<source>1Y</source> <source>1Y</source>
<target state="trasnlated">1Y</target> <target state="trasnlated">1Y</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">26</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">370</context> <context context-type="linenumber">370</context>
@ -2549,10 +2537,6 @@
<trans-unit id="7304247106520037555" datatype="html"> <trans-unit id="7304247106520037555" datatype="html">
<source>5Y</source> <source>5Y</source>
<target state="translated">5Y</target> <target state="translated">5Y</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">27</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">395</context> <context context-type="linenumber">395</context>
@ -2561,10 +2545,6 @@
<trans-unit id="3667949571823271511" datatype="html"> <trans-unit id="3667949571823271511" datatype="html">
<source>Max</source> <source>Max</source>
<target state="translated">Maks.</target> <target state="translated">Maks.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">401</context> <context context-type="linenumber">401</context>
@ -2591,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/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">183</context> <context context-type="linenumber">186</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7224997887539831269" datatype="html"> <trans-unit id="7224997887539831269" 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/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">184</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1579692722565712588" datatype="html"> <trans-unit id="1579692722565712588" datatype="html">
@ -2619,7 +2599,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">184</context> <context context-type="linenumber">187</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1726363342938046830" datatype="html"> <trans-unit id="1726363342938046830" datatype="html">
@ -3479,7 +3459,7 @@
<target state="translated">İşlemleri İçe Aktar</target> <target state="translated">İşlemleri İçe Aktar</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.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="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -3487,7 +3467,7 @@
<target state="translated">Temettüleri İçe Aktar</target> <target state="translated">Temettüleri İçe Aktar</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="848497846891931418" datatype="html"> <trans-unit id="848497846891931418" datatype="html">
@ -3495,7 +3475,7 @@
<target state="translated">Veri içe aktarılıyor...</target> <target state="translated">Veri içe aktarılıyor...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">165</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7500216440144530775" datatype="html"> <trans-unit id="7500216440144530775" datatype="html">
@ -3503,7 +3483,7 @@
<target state="translated">İçe aktarma tamamlandı</target> <target state="translated">İçe aktarma tamamlandı</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">173</context> <context context-type="linenumber">176</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8763985977445247551" datatype="html"> <trans-unit id="8763985977445247551" datatype="html">
@ -3511,7 +3491,7 @@
<target state="translated">Veri doğrulanıyor...</target> <target state="translated">Veri doğrulanıyor...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">281</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4de7b521c9a386fa682d6c995b30f6bc2d6c14b8" datatype="html"> <trans-unit id="4de7b521c9a386fa682d6c995b30f6bc2d6c14b8" datatype="html">
@ -3791,7 +3771,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">74</context> <context context-type="linenumber">73</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>
@ -3811,7 +3791,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">89</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8036977202721714375" datatype="html"> <trans-unit id="8036977202721714375" datatype="html">
@ -3819,7 +3799,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">90</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -4960,7 +4940,7 @@
<target state="translated">Hesaplanan Toplam Tutar</target> <target state="translated">Hesaplanan Toplam Tutar</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">59</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3441715041566940420" datatype="html"> <trans-unit id="3441715041566940420" datatype="html">
@ -5884,11 +5864,11 @@
<target state="translated">Yatırım</target> <target state="translated">Yatırım</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">79</context> <context context-type="linenumber">78</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">95</context> <context context-type="linenumber">94</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>
@ -7171,7 +7151,7 @@
<target state="translated">Yapay zeka istemi panoya kopyalandı</target> <target state="translated">Yapay zeka istemi panoya kopyalandı</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">198</context> <context context-type="linenumber">197</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7259,7 +7239,7 @@
<target state="translated">Duck.ai’yi aç</target> <target state="translated">Duck.ai’yi aç</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">199</context> <context context-type="linenumber">198</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7291,7 +7271,7 @@
<target state="translated">Performans</target> <target state="translated">Performans</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

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

@ -22,7 +22,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/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">257</context> <context context-type="linenumber">259</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context> <context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context>
@ -2295,7 +2295,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/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">274</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
@ -3057,10 +3057,6 @@
<trans-unit id="6048892649018070225" datatype="html"> <trans-unit id="6048892649018070225" datatype="html">
<source>Today</source> <source>Today</source>
<target state="translated">Сьогодні</target> <target state="translated">Сьогодні</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">24</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
@ -3069,10 +3065,6 @@
<trans-unit id="7377728350294749129" datatype="html"> <trans-unit id="7377728350294749129" datatype="html">
<source>YTD</source> <source>YTD</source>
<target state="translated">З початку року</target> <target state="translated">З початку року</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">25</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">360</context> <context context-type="linenumber">360</context>
@ -3081,10 +3073,6 @@
<trans-unit id="8768104874317770689" datatype="html"> <trans-unit id="8768104874317770689" datatype="html">
<source>1Y</source> <source>1Y</source>
<target state="translated">1 рік</target> <target state="translated">1 рік</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">26</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">370</context> <context context-type="linenumber">370</context>
@ -3093,10 +3081,6 @@
<trans-unit id="7304247106520037555" datatype="html"> <trans-unit id="7304247106520037555" datatype="html">
<source>5Y</source> <source>5Y</source>
<target state="translated">5 років</target> <target state="translated">5 років</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">27</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">395</context> <context context-type="linenumber">395</context>
@ -3105,10 +3089,6 @@
<trans-unit id="3667949571823271511" datatype="html"> <trans-unit id="3667949571823271511" datatype="html">
<source>Max</source> <source>Max</source>
<target state="translated">Максимум</target> <target state="translated">Максимум</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">401</context> <context context-type="linenumber">401</context>
@ -3203,7 +3183,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">184</context> <context context-type="linenumber">187</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9173945515149078768" datatype="html"> <trans-unit id="9173945515149078768" datatype="html">
@ -3527,7 +3507,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">183</context> <context context-type="linenumber">186</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8236987838684066590" datatype="html"> <trans-unit id="8236987838684066590" datatype="html">
@ -3547,7 +3527,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">184</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2998033970178753887" datatype="html"> <trans-unit id="2998033970178753887" datatype="html">
@ -4600,7 +4580,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/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.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="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -4608,7 +4588,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/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="848497846891931418" datatype="html"> <trans-unit id="848497846891931418" datatype="html">
@ -4616,7 +4596,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/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">165</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7500216440144530775" datatype="html"> <trans-unit id="7500216440144530775" datatype="html">
@ -4624,7 +4604,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/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">173</context> <context context-type="linenumber">176</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8763985977445247551" datatype="html"> <trans-unit id="8763985977445247551" datatype="html">
@ -4632,7 +4612,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/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">281</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4de7b521c9a386fa682d6c995b30f6bc2d6c14b8" datatype="html"> <trans-unit id="4de7b521c9a386fa682d6c995b30f6bc2d6c14b8" datatype="html">
@ -4936,7 +4916,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">74</context> <context context-type="linenumber">73</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>
@ -4948,11 +4928,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">79</context> <context context-type="linenumber">78</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">95</context> <context context-type="linenumber">94</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>
@ -4964,7 +4944,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">89</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8036977202721714375" datatype="html"> <trans-unit id="8036977202721714375" datatype="html">
@ -4972,7 +4952,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">90</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -6431,7 +6411,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/fire-calculator/fire-calculator.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">59</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5213771062241898526" datatype="html"> <trans-unit id="5213771062241898526" datatype="html">
@ -7179,7 +7159,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">198</context> <context context-type="linenumber">197</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="189ecd7821c0e70fd7b29d9255600d3157865b3b" datatype="html"> <trans-unit id="189ecd7821c0e70fd7b29d9255600d3157865b3b" datatype="html">
@ -7259,7 +7239,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">199</context> <context context-type="linenumber">198</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7291,7 +7271,7 @@
<target state="new">Performance</target> <target state="new">Performance</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

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

@ -1885,7 +1885,7 @@
<source>Sign in</source> <source>Sign in</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">257</context> <context context-type="linenumber">259</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context> <context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context>
@ -1900,7 +1900,7 @@
<source>Oops! Incorrect Security Token.</source> <source>Oops! Incorrect Security Token.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">274</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
@ -2502,10 +2502,6 @@
</trans-unit> </trans-unit>
<trans-unit id="6048892649018070225" datatype="html"> <trans-unit id="6048892649018070225" datatype="html">
<source>Today</source> <source>Today</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">24</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
@ -2513,10 +2509,6 @@
</trans-unit> </trans-unit>
<trans-unit id="7377728350294749129" datatype="html"> <trans-unit id="7377728350294749129" datatype="html">
<source>YTD</source> <source>YTD</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">25</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">360</context> <context context-type="linenumber">360</context>
@ -2524,10 +2516,6 @@
</trans-unit> </trans-unit>
<trans-unit id="8768104874317770689" datatype="html"> <trans-unit id="8768104874317770689" datatype="html">
<source>1Y</source> <source>1Y</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">26</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">370</context> <context context-type="linenumber">370</context>
@ -2535,10 +2523,6 @@
</trans-unit> </trans-unit>
<trans-unit id="7304247106520037555" datatype="html"> <trans-unit id="7304247106520037555" datatype="html">
<source>5Y</source> <source>5Y</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">27</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">395</context> <context context-type="linenumber">395</context>
@ -2546,10 +2530,6 @@
</trans-unit> </trans-unit>
<trans-unit id="3667949571823271511" datatype="html"> <trans-unit id="3667949571823271511" datatype="html">
<source>Max</source> <source>Max</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">401</context> <context context-type="linenumber">401</context>
@ -2807,7 +2787,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">183</context> <context context-type="linenumber">186</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7224997887539831269" datatype="html"> <trans-unit id="7224997887539831269" datatype="html">
@ -2818,7 +2798,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">184</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1579692722565712588" datatype="html"> <trans-unit id="1579692722565712588" datatype="html">
@ -2833,7 +2813,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">184</context> <context context-type="linenumber">187</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1726363342938046830" datatype="html"> <trans-unit id="1726363342938046830" datatype="html">
@ -3682,35 +3662,35 @@
<source>Import Activities</source> <source>Import Activities</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.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="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
<source>Import Dividends</source> <source>Import Dividends</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="848497846891931418" datatype="html"> <trans-unit id="848497846891931418" datatype="html">
<source>Importing data...</source> <source>Importing data...</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">165</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7500216440144530775" datatype="html"> <trans-unit id="7500216440144530775" datatype="html">
<source>Import has been completed</source> <source>Import has been completed</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">173</context> <context context-type="linenumber">176</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8763985977445247551" datatype="html"> <trans-unit id="8763985977445247551" datatype="html">
<source>Validating data...</source> <source>Validating data...</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">281</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4de7b521c9a386fa682d6c995b30f6bc2d6c14b8" datatype="html"> <trans-unit id="4de7b521c9a386fa682d6c995b30f6bc2d6c14b8" datatype="html">
@ -3953,7 +3933,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">74</context> <context context-type="linenumber">73</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>
@ -3971,14 +3951,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">89</context> <context context-type="linenumber">88</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">90</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -4838,7 +4818,7 @@
<source>Projected Total Amount</source> <source>Projected Total Amount</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">59</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3441715041566940420" datatype="html"> <trans-unit id="3441715041566940420" datatype="html">
@ -5374,11 +5354,11 @@
<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">79</context> <context context-type="linenumber">78</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">95</context> <context context-type="linenumber">94</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>
@ -6485,7 +6465,7 @@
<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">198</context> <context context-type="linenumber">197</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -6562,7 +6542,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">199</context> <context context-type="linenumber">198</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -6590,7 +6570,7 @@
<source>Performance</source> <source>Performance</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

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

@ -2004,7 +2004,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/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">257</context> <context context-type="linenumber">259</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context> <context context-type="sourcefile">libs/common/src/lib/routes/routes.ts</context>
@ -2020,7 +2020,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/header/header.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">274</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
@ -2682,10 +2682,6 @@
<trans-unit id="6048892649018070225" datatype="html"> <trans-unit id="6048892649018070225" datatype="html">
<source>Today</source> <source>Today</source>
<target state="translated">今天</target> <target state="translated">今天</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">24</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
@ -2694,10 +2690,6 @@
<trans-unit id="7377728350294749129" datatype="html"> <trans-unit id="7377728350294749129" datatype="html">
<source>YTD</source> <source>YTD</source>
<target state="translated">年初至今</target> <target state="translated">年初至今</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">25</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">360</context> <context context-type="linenumber">360</context>
@ -2706,10 +2698,6 @@
<trans-unit id="8768104874317770689" datatype="html"> <trans-unit id="8768104874317770689" datatype="html">
<source>1Y</source> <source>1Y</source>
<target state="translated">1年</target> <target state="translated">1年</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">26</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">370</context> <context context-type="linenumber">370</context>
@ -2718,10 +2706,6 @@
<trans-unit id="7304247106520037555" datatype="html"> <trans-unit id="7304247106520037555" datatype="html">
<source>5Y</source> <source>5Y</source>
<target state="translated">5年</target> <target state="translated">5年</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">27</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">395</context> <context context-type="linenumber">395</context>
@ -2730,10 +2714,6 @@
<trans-unit id="3667949571823271511" datatype="html"> <trans-unit id="3667949571823271511" datatype="html">
<source>Max</source> <source>Max</source>
<target state="translated">最大限度</target> <target state="translated">最大限度</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/toggle/toggle.component.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">401</context> <context context-type="linenumber">401</context>
@ -3024,7 +3004,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">183</context> <context context-type="linenumber">186</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7224997887539831269" datatype="html"> <trans-unit id="7224997887539831269" datatype="html">
@ -3036,7 +3016,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">184</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1579692722565712588" datatype="html"> <trans-unit id="1579692722565712588" datatype="html">
@ -3052,7 +3032,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">184</context> <context context-type="linenumber">187</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1726363342938046830" datatype="html"> <trans-unit id="1726363342938046830" datatype="html">
@ -4008,7 +3988,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/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.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="72640258012696878" datatype="html"> <trans-unit id="72640258012696878" datatype="html">
@ -4016,7 +3996,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/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">127</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="848497846891931418" datatype="html"> <trans-unit id="848497846891931418" datatype="html">
@ -4024,7 +4004,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/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">165</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7500216440144530775" datatype="html"> <trans-unit id="7500216440144530775" datatype="html">
@ -4032,7 +4012,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/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">173</context> <context context-type="linenumber">176</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8763985977445247551" datatype="html"> <trans-unit id="8763985977445247551" datatype="html">
@ -4040,7 +4020,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/activities/import-activities-dialog/import-activities-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts</context>
<context context-type="linenumber">281</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4de7b521c9a386fa682d6c995b30f6bc2d6c14b8" datatype="html"> <trans-unit id="4de7b521c9a386fa682d6c995b30f6bc2d6c14b8" datatype="html">
@ -4312,7 +4292,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">74</context> <context context-type="linenumber">73</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>
@ -4332,7 +4312,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">89</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8036977202721714375" datatype="html"> <trans-unit id="8036977202721714375" datatype="html">
@ -4340,7 +4320,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">90</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html"> <trans-unit id="f6413089f93ac0756a20f8e74ef1ab78c81ef13c" datatype="html">
@ -5301,7 +5281,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/fire-calculator/fire-calculator.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">59</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3441715041566940420" datatype="html"> <trans-unit id="3441715041566940420" datatype="html">
@ -5909,11 +5889,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">79</context> <context context-type="linenumber">78</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">95</context> <context context-type="linenumber">94</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>
@ -7172,7 +7152,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">198</context> <context context-type="linenumber">197</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1616747898909934803" datatype="html"> <trans-unit id="1616747898909934803" datatype="html">
@ -7260,7 +7240,7 @@
<target state="translated">打开 Duck.ai</target> <target state="translated">打开 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">199</context> <context context-type="linenumber">198</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
@ -7292,7 +7272,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/home-overview/home-overview.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/treemap-chart/treemap-chart.component.ts</context>

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

@ -1,4 +1,4 @@
import { AssetClass, AssetSubClass, DataSource } from '@prisma/client'; import { AssetClass, AssetSubClass, DataSource, Type } from '@prisma/client';
import { JobOptions, JobStatus } from 'bull'; import { JobOptions, JobStatus } from 'bull';
import ms from 'ms'; import ms from 'ms';
@ -118,6 +118,12 @@ export const GATHER_HISTORICAL_MARKET_DATA_PROCESS_JOB_OPTIONS: JobOptions = {
removeOnComplete: true removeOnComplete: true
}; };
export const INVESTMENT_ACTIVITY_TYPES = [
Type.BUY,
Type.DIVIDEND,
Type.SELL
] as Type[];
export const PORTFOLIO_SNAPSHOT_PROCESS_JOB_NAME = 'PORTFOLIO'; export const PORTFOLIO_SNAPSHOT_PROCESS_JOB_NAME = 'PORTFOLIO';
export const PORTFOLIO_SNAPSHOT_PROCESS_JOB_OPTIONS: JobOptions = { export const PORTFOLIO_SNAPSHOT_PROCESS_JOB_OPTIONS: JobOptions = {
removeOnComplete: true removeOnComplete: true

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

@ -8,6 +8,7 @@ import {
} from '@prisma/client'; } from '@prisma/client';
import { AccountBalance } from './account-balance.interface'; import { AccountBalance } from './account-balance.interface';
import { MarketData } from './market-data.interface';
export interface Export { export interface Export {
accounts: (Omit<Account, 'createdAt' | 'updatedAt' | 'userId'> & { accounts: (Omit<Account, 'createdAt' | 'updatedAt' | 'userId'> & {
@ -23,8 +24,11 @@ export interface Export {
| 'updatedAt' | 'updatedAt'
| 'userId' | 'userId'
> & { dataSource: DataSource; date: string; symbol: string })[]; > & { dataSource: DataSource; date: string; symbol: string })[];
assetProfiles: (Omit<SymbolProfile, 'createdAt' | 'updatedAt' | 'userId'> & { assetProfiles: (Omit<
marketData: { date: string; marketPrice: number }[]; SymbolProfile,
'createdAt' | 'id' | 'updatedAt' | 'userId'
> & {
marketData: MarketData[];
})[]; })[];
meta: { meta: {
date: string; date: string;

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

@ -25,6 +25,7 @@ import type { InfoItem } from './info-item.interface';
import type { InvestmentItem } from './investment-item.interface'; import type { InvestmentItem } from './investment-item.interface';
import type { LineChartItem } from './line-chart-item.interface'; import type { LineChartItem } from './line-chart-item.interface';
import type { LookupItem } from './lookup-item.interface'; import type { LookupItem } from './lookup-item.interface';
import type { MarketData } from './market-data.interface';
import type { PortfolioChart } from './portfolio-chart.interface'; import type { PortfolioChart } from './portfolio-chart.interface';
import type { PortfolioDetails } from './portfolio-details.interface'; import type { PortfolioDetails } from './portfolio-details.interface';
import type { PortfolioDividends } from './portfolio-dividends.interface'; import type { PortfolioDividends } from './portfolio-dividends.interface';
@ -111,6 +112,7 @@ export {
LineChartItem, LineChartItem,
LookupItem, LookupItem,
LookupResponse, LookupResponse,
MarketData,
MarketDataDetailsResponse, MarketDataDetailsResponse,
MarketDataOfMarketsResponse, MarketDataOfMarketsResponse,
OAuthResponse, OAuthResponse,

4
libs/common/src/lib/interfaces/market-data.interface.ts

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

10
libs/common/src/lib/interfaces/responses/portfolio-report.interface.ts

@ -1,9 +1,11 @@
import { PortfolioReportRule } from '../portfolio-report-rule.interface'; import { PortfolioReportRule } from '../portfolio-report-rule.interface';
export interface PortfolioReportResponse { export interface PortfolioReportResponse {
rules: { [group: string]: PortfolioReportRule[] }; 'x-ray': {
statistics: { rules: { [group: string]: PortfolioReportRule[] };
rulesActiveCount: number; statistics: {
rulesFulfilledCount: number; rulesActiveCount: number;
rulesFulfilledCount: number;
};
}; };
} }

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

@ -101,6 +101,33 @@ export const personalFinanceTools: Product[] = [
regions: ['Global'], regions: ['Global'],
slogan: 'Take control of your financial future' slogan: 'Take control of your financial future'
}, },
{
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'capitally',
name: 'Capitally',
origin: 'Poland',
pricingPerYear: '€50',
slogan: 'Optimize your investments performance'
},
{
founded: 2022,
isArchived: true,
key: 'capmon',
name: 'CapMon.org',
origin: 'Germany',
note: 'CapMon.org was discontinued in 2023',
slogan: 'Next Generation Assets Tracking'
},
{
founded: 2024,
hasFreePlan: true,
isOpenSource: true,
key: 'cleverbilling',
languages: ['Español'],
name: 'CleverBilling',
slogan: 'Toma el control total de tus finanzas.'
},
{ {
founded: 2017, founded: 2017,
hasFreePlan: true, hasFreePlan: true,
@ -122,35 +149,6 @@ export const personalFinanceTools: Product[] = [
pricingPerYear: '$120', pricingPerYear: '$120',
slogan: 'The leading Crypto Portfolio Tracker & Tax Calculator' slogan: 'The leading Crypto Portfolio Tracker & Tax Calculator'
}, },
{
founded: 2022,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'degiro-portfolio-tracker-by-capitalyse',
languages: ['English'],
name: 'DEGIRO Portfolio Tracker by Capitalyse',
origin: 'Netherlands',
pricingPerYear: '€24',
slogan: 'Democratizing Data Analytics'
},
{
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'capitally',
name: 'Capitally',
origin: 'Poland',
pricingPerYear: '€50',
slogan: 'Optimize your investments performance'
},
{
founded: 2022,
isArchived: true,
key: 'capmon',
name: 'CapMon.org',
origin: 'Germany',
note: 'CapMon.org was discontinued in 2023',
slogan: 'Next Generation Assets Tracking'
},
{ {
founded: 2019, founded: 2019,
key: 'compound-planning', key: 'compound-planning',
@ -183,6 +181,28 @@ export const personalFinanceTools: Product[] = [
name: 'De.Fi', name: 'De.Fi',
slogan: 'DeFi Portfolio Tracker' slogan: 'DeFi Portfolio Tracker'
}, },
{
founded: 2016,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'defi-portfolio-tracker-by-zerion',
languages: ['English'],
name: 'DeFi Portfolio Tracker by Zerion',
origin: 'United States',
pricingPerYear: '$99',
slogan: 'DeFi Portfolio Tracker for All Chains'
},
{
founded: 2022,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'degiro-portfolio-tracker-by-capitalyse',
languages: ['English'],
name: 'DEGIRO Portfolio Tracker by Capitalyse',
origin: 'Netherlands',
pricingPerYear: '€24',
slogan: 'Democratizing Data Analytics'
},
{ {
founded: 2017, founded: 2017,
hasFreePlan: true, hasFreePlan: true,
@ -194,6 +214,15 @@ export const personalFinanceTools: Product[] = [
pricingPerYear: '$150', 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.'
}, },
{
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'digrin',
languages: ['English'],
name: 'Digrin',
pricingPerYear: '$49.90',
slogan: 'Dividend Portfolio Tracker'
},
{ {
founded: 2019, founded: 2019,
hasFreePlan: true, hasFreePlan: true,
@ -464,12 +493,11 @@ export const personalFinanceTools: Product[] = [
}, },
{ {
founded: 2021, founded: 2021,
hasSelfHostingAbility: false,
isArchived: true, isArchived: true,
key: 'maybe-finance', key: 'maybe-finance',
languages: ['English'], languages: ['English'],
name: 'Maybe Finance', name: 'Maybe Finance',
note: 'Maybe Finance was discontinued in 2023', note: 'Maybe Finance was discontinued in 2023, relaunched in 2024, and discontinued again in 2025',
origin: 'United States', origin: 'United States',
pricingPerYear: '$145', pricingPerYear: '$145',
regions: ['United States'], regions: ['United States'],
@ -532,6 +560,17 @@ export const personalFinanceTools: Product[] = [
pricingPerYear: '$60', pricingPerYear: '$60',
slogan: 'Gain financial control and keep your data private.' slogan: 'Gain financial control and keep your data private.'
}, },
{
founded: 2025,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'monsy',
languages: ['English'],
name: 'Monsy',
origin: 'Indonesia',
pricingPerYear: '$20',
slogan: 'Smart, simple, stress-free money tracking.'
},
{ {
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
@ -858,6 +897,16 @@ export const personalFinanceTools: Product[] = [
pricingPerYear: '$348', pricingPerYear: '$348',
slogan: 'Virtual Family Office for Smart Wealth Management' slogan: 'Virtual Family Office for Smart Wealth Management'
}, },
{
founded: 2020,
hasFreePlan: false,
hasSelfHostingAbility: false,
key: 'walletguide',
name: 'Walletguide',
origin: 'Germany',
pricingPerYear: '€90',
slogan: 'Personal finance reimagined with AI'
},
{ {
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
key: 'wallmine', key: 'wallmine',

30
libs/ui/src/lib/activity-type/activity-type.component.stories.ts

@ -0,0 +1,30 @@
import { CommonModule } from '@angular/common';
import { IonIcon } from '@ionic/angular/standalone';
import { moduleMetadata } from '@storybook/angular';
import type { Meta, StoryObj } from '@storybook/angular';
import { GfActivityTypeComponent } from './activity-type.component';
export default {
title: 'Activity Type',
component: GfActivityTypeComponent,
decorators: [
moduleMetadata({
imports: [CommonModule, IonIcon]
})
],
argTypes: {
activityType: {
control: 'select',
options: ['BUY', 'DIVIDEND', 'FEE', 'INTEREST', 'LIABILITY', 'SELL']
}
}
} as Meta<GfActivityTypeComponent>;
type Story = StoryObj<GfActivityTypeComponent>;
export const Default: Story = {
args: {
activityType: 'BUY'
}
};

4
libs/ui/src/lib/fire-calculator/fire-calculator.component.html

@ -31,7 +31,9 @@
<mat-form-field appearance="outline" class="w-100"> <mat-form-field appearance="outline" class="w-100">
<mat-label i18n>Retirement Date</mat-label> <mat-label i18n>Retirement Date</mat-label>
<div> <div>
{{ calculatorForm.get('retirementDate').value | date: 'MMMM YYYY' }} {{
calculatorForm.get('retirementDate')?.value | date: 'MMMM yyyy'
}}
</div> </div>
<input <input
class="d-none" class="d-none"

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

@ -84,6 +84,7 @@ const locales = {
France: $localize`France`, France: $localize`France`,
Germany: $localize`Germany`, Germany: $localize`Germany`,
India: $localize`India`, India: $localize`India`,
Indonesia: $localize`Indonesia`,
Italy: $localize`Italy`, Italy: $localize`Italy`,
Japan: $localize`Japan`, Japan: $localize`Japan`,
Netherlands: $localize`Netherlands`, Netherlands: $localize`Netherlands`,

1
libs/ui/src/lib/toggle/index.ts

@ -0,0 +1 @@
export * from './toggle.component';

0
apps/client/src/app/components/toggle/toggle.component.html → libs/ui/src/lib/toggle/toggle.component.html

0
apps/client/src/app/components/toggle/toggle.component.scss → libs/ui/src/lib/toggle/toggle.component.scss

33
libs/ui/src/lib/toggle/toggle.component.stories.ts

@ -0,0 +1,33 @@
import { CommonModule } from '@angular/common';
import { ReactiveFormsModule } from '@angular/forms';
import { MatRadioModule } from '@angular/material/radio';
import { moduleMetadata } from '@storybook/angular';
import type { Meta, StoryObj } from '@storybook/angular';
import { GfToggleComponent } from './toggle.component';
export default {
title: 'Toggle',
component: GfToggleComponent,
decorators: [
moduleMetadata({
imports: [CommonModule, MatRadioModule, ReactiveFormsModule]
})
]
} as Meta<GfToggleComponent>;
type Story = StoryObj<GfToggleComponent>;
export const Default: Story = {
args: {
defaultValue: '1d',
isLoading: false,
options: [
{ label: 'Today', value: '1d' },
{ label: 'YTD', value: 'ytd' },
{ label: '1Y', value: '1y' },
{ label: '5Y', value: '5y' },
{ label: 'Max', value: 'max' }
]
}
};

14
apps/client/src/app/components/toggle/toggle.component.ts → libs/ui/src/lib/toggle/toggle.component.ts

@ -20,19 +20,11 @@ import { MatRadioModule } from '@angular/material/radio';
templateUrl: './toggle.component.html' templateUrl: './toggle.component.html'
}) })
export class GfToggleComponent implements OnChanges { export class GfToggleComponent implements OnChanges {
public static DEFAULT_DATE_RANGE_OPTIONS: ToggleOption[] = [
{ label: $localize`Today`, value: '1d' },
{ label: $localize`YTD`, value: 'ytd' },
{ label: $localize`1Y`, value: '1y' },
{ label: $localize`5Y`, value: '5y' },
{ label: $localize`Max`, value: 'max' }
];
@Input() defaultValue: string; @Input() defaultValue: string;
@Input() isLoading: boolean; @Input() isLoading: boolean;
@Input() options: ToggleOption[]; @Input() options: ToggleOption[] = [];
@Output() change = new EventEmitter<Pick<ToggleOption, 'value'>>(); @Output() valueChange = new EventEmitter<Pick<ToggleOption, 'value'>>();
public optionFormControl = new FormControl<string>(undefined); public optionFormControl = new FormControl<string>(undefined);
@ -41,6 +33,6 @@ export class GfToggleComponent implements OnChanges {
} }
public onValueChange() { public onValueChange() {
this.change.emit({ value: this.optionFormControl.value }); this.valueChange.emit({ value: this.optionFormControl.value });
} }
} }

4
package-lock.json

@ -1,12 +1,12 @@
{ {
"name": "ghostfolio", "name": "ghostfolio",
"version": "2.184.0", "version": "2.185.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "ghostfolio", "name": "ghostfolio",
"version": "2.184.0", "version": "2.185.0",
"hasInstallScript": true, "hasInstallScript": true,
"license": "AGPL-3.0", "license": "AGPL-3.0",
"dependencies": { "dependencies": {

2
package.json

@ -1,6 +1,6 @@
{ {
"name": "ghostfolio", "name": "ghostfolio",
"version": "2.184.0", "version": "2.185.0",
"homepage": "https://ghostfol.io", "homepage": "https://ghostfol.io",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"repository": "https://github.com/ghostfolio/ghostfolio", "repository": "https://github.com/ghostfolio/ghostfolio",

115
test/import/ok/sample.json

@ -16,6 +16,7 @@
"value": 1000 "value": 1000
} }
], ],
"comment": null,
"currency": "USD", "currency": "USD",
"id": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0", "id": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0",
"isExcluded": false, "isExcluded": false,
@ -23,30 +24,80 @@
"platformId": null "platformId": null
} }
], ],
"assetProfiles": [
{
"assetClass": null,
"assetSubClass": null,
"comment": null,
"countries": [],
"currency": "USD",
"cusip": null,
"dataSource": "MANUAL",
"figi": null,
"figiComposite": null,
"figiShareClass": null,
"holdings": [],
"isActive": true,
"isin": null,
"marketData": [],
"name": "Account Opening Fee",
"scraperConfiguration": null,
"sectors": [],
"symbol": "14a69cb9-1e31-43fa-b320-83703d8ed74b",
"symbolMapping": {},
"url": null
},
{
"assetClass": null,
"assetSubClass": null,
"comment": null,
"countries": [],
"currency": "USD",
"cusip": null,
"dataSource": "MANUAL",
"figi": null,
"figiComposite": null,
"figiShareClass": null,
"holdings": [],
"isActive": true,
"isin": null,
"marketData": [],
"name": "Penthouse Apartment",
"scraperConfiguration": null,
"sectors": [],
"symbol": "7e91b7d4-1430-4212-8380-289a06c9bbc1",
"symbolMapping": {},
"url": null
}
],
"platforms": [],
"tags": [],
"activities": [ "activities": [
{ {
"accountId": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0", "accountId": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0",
"comment": null, "comment": null,
"fee": 0, "fee": 49,
"quantity": 0, "quantity": 0,
"type": "BUY", "type": "FEE",
"unitPrice": 0, "unitPrice": 0,
"currency": "USD", "currency": "USD",
"dataSource": "YAHOO", "dataSource": "MANUAL",
"date": "2050-06-06T00:00:00.000Z", "date": "2021-09-01T00:00:00.000Z",
"symbol": "US5949181045" "symbol": "14a69cb9-1e31-43fa-b320-83703d8ed74b",
"tags": []
}, },
{ {
"accountId": null, "accountId": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0",
"comment": null, "comment": "My first order 🤓",
"fee": 0, "fee": 19,
"quantity": 1, "quantity": 5,
"type": "BUY", "type": "BUY",
"unitPrice": 500000, "unitPrice": 298.58,
"currency": "USD", "currency": "USD",
"dataSource": "MANUAL", "dataSource": "YAHOO",
"date": "2022-01-01T00:00:00.000Z", "date": "2021-09-16T00:00:00.000Z",
"symbol": "Penthouse Apartment" "symbol": "MSFT",
"tags": []
}, },
{ {
"accountId": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0", "accountId": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0",
@ -58,31 +109,39 @@
"currency": "USD", "currency": "USD",
"dataSource": "YAHOO", "dataSource": "YAHOO",
"date": "2021-11-17T00:00:00.000Z", "date": "2021-11-17T00:00:00.000Z",
"symbol": "MSFT" "symbol": "MSFT",
"tags": []
}, },
{ {
"accountId": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0", "accountId": null,
"comment": "My first order 🤓", "comment": null,
"fee": 19, "fee": 0,
"quantity": 5, "quantity": 1,
"type": "BUY", "type": "BUY",
"unitPrice": 298.58, "unitPrice": 500000,
"currency": "USD", "currency": "USD",
"dataSource": "YAHOO", "dataSource": "MANUAL",
"date": "2021-09-16T00:00:00.000Z", "date": "2022-01-01T00:00:00.000Z",
"symbol": "MSFT" "symbol": "7e91b7d4-1430-4212-8380-289a06c9bbc1",
"tags": []
}, },
{ {
"accountId": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0", "accountId": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0",
"comment": null, "comment": null,
"fee": 49, "fee": 0,
"quantity": 0, "quantity": 0,
"type": "FEE", "type": "BUY",
"unitPrice": 0, "unitPrice": 0,
"currency": "USD", "currency": "USD",
"dataSource": "MANUAL", "dataSource": "YAHOO",
"date": "2021-09-01T00:00:00.000Z", "date": "2050-06-06T00:00:00.000Z",
"symbol": "Account Opening Fee" "symbol": "MSFT",
"tags": []
}
],
"user": {
"settings": {
"currency": "USD"
} }
] }
} }

Loading…
Cancel
Save