From a0c5958f8101360b8f9216a7970af71969852ada Mon Sep 17 00:00:00 2001 From: Diego Noah Date: Wed, 25 Jun 2025 09:56:28 -0600 Subject: [PATCH 01/20] Feature/improve language localization for CA 20250625 (#5028) * Improve language localization for CA * Update changelog --- CHANGELOG.md | 6 ++++++ apps/client/src/locales/messages.ca.xlf | 18 +++++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92519471a..41895b842 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Changed + +- Improved the language localization for Catalan (`ca`) + ## 2.174.0 - 2025-06-24 ### Added diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 6914f5f80..5b4e696fc 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -4845,7 +4845,7 @@ Currency Cluster Risks - Currency Cluster Risks + Riscos del clúster de divises apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 93 @@ -4853,7 +4853,7 @@ Account Cluster Risks - Account Cluster Risks + Riscos del clúster de comptes apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 141 @@ -4861,7 +4861,7 @@ Pricing - Pricing + Preus apps/client/src/app/pages/pricing/pricing-page-routing.module.ts 13 @@ -4873,7 +4873,7 @@ Pricing Plans - Pricing Plans + Plans de preus apps/client/src/app/pages/pricing/pricing-page.html 4 @@ -4881,7 +4881,7 @@ 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 for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - 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 for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. + La nostra oferta oficial al núvol Ghostfolio Premium és la manera més senzilla de començar. A causa del temps que estalvia, aquesta serà la millor opció per a la majoria de la gent. Els ingressos s’utilitzen per cobrir els costos de la infraestructura d’allotjament i per finançar el desenvolupament en curs. apps/client/src/app/pages/pricing/pricing-page.html 6 @@ -4897,7 +4897,7 @@ For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. - For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. + Per a inversors experts en tecnologia que prefereixen executar Ghostfolio a la seva pròpia infraestructura. apps/client/src/app/pages/pricing/pricing-page.html 24 @@ -4905,7 +4905,7 @@ Unlimited Transactions - Unlimited Transactions + Transaccions il·limitades apps/client/src/app/pages/pricing/pricing-page.html 31 @@ -4921,7 +4921,7 @@ Unlimited Accounts - Unlimited Accounts + Comptes il·limitats apps/client/src/app/pages/pricing/pricing-page.html 35 @@ -4937,7 +4937,7 @@ Portfolio Performance - Portfolio Performance + Rendiment de la cartera apps/client/src/app/pages/pricing/pricing-page.html 39 From a7a33eeb56faafa8e5b627b9eccc234cb10a6655 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 25 Jun 2025 18:08:45 +0200 Subject: [PATCH 02/20] Bugfix/fix locale in scraper configuration (#5011) * Fix locale in scraper configuration * Update changelog --- CHANGELOG.md | 4 +++ apps/api/src/app/admin/admin.controller.ts | 8 ++--- .../data-provider/manual/manual.service.ts | 8 +++-- .../asset-profile-dialog.component.ts | 35 ++++++++++++------- 4 files changed, 36 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41895b842..7636f30e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for Catalan (`ca`) +### Fixed + +- Fixed an issue with the locale in the scraper configuration + ## 2.174.0 - 2025-06-24 ### Added diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index 82524ef9b..8531cf95c 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -17,7 +17,8 @@ import { AdminData, AdminMarketData, AdminUsers, - EnhancedSymbolProfile + EnhancedSymbolProfile, + ScraperConfiguration } from '@ghostfolio/common/interfaces'; import { permissions } from '@ghostfolio/common/permissions'; import type { @@ -222,13 +223,12 @@ export class AdminController { @Post('market-data/:dataSource/:symbol/test') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) public async testMarketData( - @Body() data: { scraperConfiguration: string }, + @Body() data: { scraperConfiguration: ScraperConfiguration }, @Param('dataSource') dataSource: DataSource, @Param('symbol') symbol: string ): Promise<{ price: number }> { try { - const scraperConfiguration = JSON.parse(data.scraperConfiguration); - const price = await this.manualService.test(scraperConfiguration); + const price = await this.manualService.test(data.scraperConfiguration); if (price) { return { price }; diff --git a/apps/api/src/services/data-provider/manual/manual.service.ts b/apps/api/src/services/data-provider/manual/manual.service.ts index 66e625e47..bcaa77a17 100644 --- a/apps/api/src/services/data-provider/manual/manual.service.ts +++ b/apps/api/src/services/data-provider/manual/manual.service.ts @@ -104,7 +104,7 @@ export class ManualService implements DataProviderInterface { } return historical; - } else if (selector === undefined || url === undefined) { + } else if (!selector || !url) { return {}; } @@ -162,7 +162,11 @@ export class ManualService implements DataProviderInterface { const symbolProfilesWithScraperConfigurationAndInstantMode = symbolProfiles.filter(({ scraperConfiguration }) => { - return scraperConfiguration?.mode === 'instant'; + return ( + scraperConfiguration?.mode === 'instant' && + scraperConfiguration?.selector && + scraperConfiguration?.url + ); }); const scraperResultPromises = diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts index d9b344699..c52d9137d 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts @@ -11,6 +11,7 @@ import { AdminMarketDataDetails, AssetProfileIdentifier, LineChartItem, + ScraperConfiguration, User } from '@ghostfolio/common/interfaces'; import { translate } from '@ghostfolio/ui/i18n'; @@ -41,6 +42,7 @@ import { AssetClass, AssetSubClass, MarketData, + Prisma, SymbolProfile } from '@prisma/client'; import { format } from 'date-fns'; @@ -343,7 +345,10 @@ export class AssetProfileDialog implements OnDestroy, OnInit { public async onSubmitAssetProfileForm() { let countries = []; - let scraperConfiguration = {}; + let scraperConfiguration: ScraperConfiguration = { + selector: '', + url: '' + }; let sectors = []; let symbolMapping = {}; @@ -354,9 +359,9 @@ export class AssetProfileDialog implements OnDestroy, OnInit { try { scraperConfiguration = { defaultMarketPrice: - this.assetProfileForm.controls['scraperConfiguration'].controls[ + (this.assetProfileForm.controls['scraperConfiguration'].controls[ 'defaultMarketPrice' - ].value, + ].value as number) || undefined, headers: JSON.parse( this.assetProfileForm.controls['scraperConfiguration'].controls[ 'headers' @@ -365,10 +370,10 @@ export class AssetProfileDialog implements OnDestroy, OnInit { locale: this.assetProfileForm.controls['scraperConfiguration'].controls[ 'locale' - ].value, + ].value || undefined, mode: this.assetProfileForm.controls['scraperConfiguration'].controls[ 'mode' - ].value, + ].value as ScraperConfiguration['mode'], selector: this.assetProfileForm.controls['scraperConfiguration'].controls[ 'selector' @@ -377,6 +382,10 @@ export class AssetProfileDialog implements OnDestroy, OnInit { 'url' ].value }; + + if (!scraperConfiguration.selector || !scraperConfiguration.url) { + scraperConfiguration = undefined; + } } catch {} try { @@ -391,7 +400,6 @@ export class AssetProfileDialog implements OnDestroy, OnInit { const assetProfile: UpdateAssetProfileDto = { countries, - scraperConfiguration, sectors, symbolMapping, assetClass: this.assetProfileForm.get('assetClass').value, @@ -400,6 +408,8 @@ export class AssetProfileDialog implements OnDestroy, OnInit { currency: this.assetProfileForm.get('currency').value, isActive: this.assetProfileForm.get('isActive').value, name: this.assetProfileForm.get('name').value, + scraperConfiguration: + scraperConfiguration as unknown as Prisma.InputJsonObject, url: this.assetProfileForm.get('url').value || null }; @@ -493,11 +503,10 @@ export class AssetProfileDialog implements OnDestroy, OnInit { this.adminService .testMarketData({ dataSource: this.data.dataSource, - scraperConfiguration: JSON.stringify({ - defaultMarketPrice: - this.assetProfileForm.controls['scraperConfiguration'].controls[ - 'defaultMarketPrice' - ].value, + scraperConfiguration: { + defaultMarketPrice: this.assetProfileForm.controls[ + 'scraperConfiguration' + ].controls['defaultMarketPrice'].value as number, headers: JSON.parse( this.assetProfileForm.controls['scraperConfiguration'].controls[ 'headers' @@ -506,7 +515,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit { locale: this.assetProfileForm.controls['scraperConfiguration'].controls[ 'locale' - ].value, + ].value || undefined, mode: this.assetProfileForm.controls['scraperConfiguration'].controls[ 'mode' ].value, @@ -517,7 +526,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit { url: this.assetProfileForm.controls['scraperConfiguration'].controls[ 'url' ].value - }), + }, symbol: this.data.symbol }) .pipe( From c40993ce3380bfec229be14c7e4e89e1001becfc Mon Sep 17 00:00:00 2001 From: Alesky Zakarin <59431392+aleskrin@users.noreply.github.com> Date: Wed, 25 Jun 2025 10:14:27 -0600 Subject: [PATCH 03/20] Feature/improve language localization for ES 20250625 (#5029) * Improve language localization for ES * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.es.xlf | 28 ++++++++++++------------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7636f30e0..b7e34b644 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the language localization for Catalan (`ca`) +- Improved the language localization for Español (`es`) ### Fixed diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 6a442e524..fd9a974d2 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -5850,7 +5850,7 @@ Market data is delayed for - Market data is delayed for + Los datos del mercado se retrasan por apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts 87 @@ -5874,7 +5874,7 @@ Absolute Asset Performance - Absolute Asset Performance + Rendimiento absoluto de los activos apps/client/src/app/pages/portfolio/analysis/analysis-page.html 102 @@ -5882,7 +5882,7 @@ Asset Performance - Asset Performance + Rendimiento de activos apps/client/src/app/pages/portfolio/analysis/analysis-page.html 123 @@ -5890,7 +5890,7 @@ Absolute Currency Performance - Absolute Currency Performance + Rendimiento absoluto de divisas apps/client/src/app/pages/portfolio/analysis/analysis-page.html 145 @@ -5898,7 +5898,7 @@ Currency Performance - Currency Performance + Rendimiento de la moneda apps/client/src/app/pages/portfolio/analysis/analysis-page.html 169 @@ -5906,7 +5906,7 @@ Absolute Net Performance - Absolute Net Performance + Rendimiento neto absoluto apps/client/src/app/pages/portfolio/analysis/analysis-page.html 192 @@ -5914,7 +5914,7 @@ Net Performance - Net Performance + Rendimiento neto apps/client/src/app/pages/portfolio/analysis/analysis-page.html 211 @@ -5922,7 +5922,7 @@ Week to date - Week to date + Semana hasta la fecha libs/ui/src/lib/assistant/assistant.component.ts 343 @@ -5930,7 +5930,7 @@ WTD - WTD + WTD libs/ui/src/lib/assistant/assistant.component.ts 343 @@ -5938,7 +5938,7 @@ Month to date - Month to date + Mes hasta la fecha libs/ui/src/lib/assistant/assistant.component.ts 347 @@ -5946,7 +5946,7 @@ MTD - MTD + MTD libs/ui/src/lib/assistant/assistant.component.ts 347 @@ -5954,7 +5954,7 @@ Year to date - Year to date + El año hasta la fecha libs/ui/src/lib/assistant/assistant.component.ts 351 @@ -5974,7 +5974,7 @@ Oops! A data provider is experiencing the hiccups. - Oops! A data provider is experiencing the hiccups. + ¡Ups! Un proveedor de datos está experimentando problemas. apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html 8 @@ -6022,7 +6022,7 @@ Data Gathering - Data Gathering + Recopilación de datos apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 541 From 2fa16480a561770dd10fca97a22ab2d31331904e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 25 Jun 2025 18:16:16 +0200 Subject: [PATCH 04/20] Feature/update locales (#5031) Co-authored-by: github-actions[bot] --- apps/client/src/locales/messages.ca.xlf | 16 ++++++++-------- apps/client/src/locales/messages.de.xlf | 16 ++++++++-------- apps/client/src/locales/messages.es.xlf | 16 ++++++++-------- apps/client/src/locales/messages.fr.xlf | 16 ++++++++-------- apps/client/src/locales/messages.it.xlf | 16 ++++++++-------- apps/client/src/locales/messages.nl.xlf | 16 ++++++++-------- apps/client/src/locales/messages.pl.xlf | 16 ++++++++-------- apps/client/src/locales/messages.pt.xlf | 16 ++++++++-------- apps/client/src/locales/messages.tr.xlf | 16 ++++++++-------- apps/client/src/locales/messages.uk.xlf | 16 ++++++++-------- apps/client/src/locales/messages.xlf | 16 ++++++++-------- apps/client/src/locales/messages.zh.xlf | 16 ++++++++-------- 12 files changed, 96 insertions(+), 96 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 5b4e696fc..65a765fd0 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -1463,7 +1463,7 @@ El preu de mercat actual és apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + 545 @@ -6569,7 +6569,7 @@ Error apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + 536 @@ -7171,7 +7171,7 @@ Lazy apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7179,7 +7179,7 @@ Instant apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7219,7 +7219,7 @@ end of day apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7227,7 +7227,7 @@ real-time apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7436,7 +7436,7 @@ () is already in use. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + 472 @@ -7444,7 +7444,7 @@ An error occurred while updating to (). apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + 480 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 01cfda12a..b7a5963ce 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -5804,7 +5804,7 @@ Der aktuelle Marktpreis ist apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + 545 @@ -6593,7 +6593,7 @@ Fehler apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + 536 @@ -7195,7 +7195,7 @@ Verzögert apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7203,7 +7203,7 @@ Sofort apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7243,7 +7243,7 @@ Tagesende apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7251,7 +7251,7 @@ in Echtzeit apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7460,7 +7460,7 @@ () wird bereits verwendet. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + 472 @@ -7468,7 +7468,7 @@ Bei der Änderung zu () ist ein Fehler aufgetreten. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + 480 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index fd9a974d2..94351ef38 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -5781,7 +5781,7 @@ El precio actual de mercado es apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + 545 @@ -6570,7 +6570,7 @@ Error apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + 536 @@ -7172,7 +7172,7 @@ Lazy apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7180,7 +7180,7 @@ Instant apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7220,7 +7220,7 @@ end of day apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7228,7 +7228,7 @@ real-time apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7437,7 +7437,7 @@ () is already in use. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + 472 @@ -7445,7 +7445,7 @@ An error occurred while updating to (). apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + 480 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 60148b120..fa4df5a8e 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -5780,7 +5780,7 @@ Le prix actuel du marché est apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + 545 @@ -6569,7 +6569,7 @@ Erreur apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + 536 @@ -7171,7 +7171,7 @@ Paresseux apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7179,7 +7179,7 @@ Instantané apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7219,7 +7219,7 @@ fin de journée apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7227,7 +7227,7 @@ temps réel apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7436,7 +7436,7 @@ () est déjà utilisé. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + 472 @@ -7444,7 +7444,7 @@ Une erreur s’est produite lors de la mise à jour vers (). apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + 480 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 6b196879a..503b67d91 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -5781,7 +5781,7 @@ L’attuale prezzo di mercato è apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + 545 @@ -6570,7 +6570,7 @@ Errore apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + 536 @@ -7172,7 +7172,7 @@ Pigro apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7180,7 +7180,7 @@ Istantaneo apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7220,7 +7220,7 @@ fine giornata apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7228,7 +7228,7 @@ in tempo reale apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7437,7 +7437,7 @@ () e gia in uso. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + 472 @@ -7445,7 +7445,7 @@ Si è verificato un errore durante l’aggiornamento di (). apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + 480 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 276925ab8..69196f1b6 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -5780,7 +5780,7 @@ De huidige markt waarde is apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + 545 @@ -6569,7 +6569,7 @@ Fout apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + 536 @@ -7171,7 +7171,7 @@ Lui apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7179,7 +7179,7 @@ Direct apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7219,7 +7219,7 @@ eind van de dag apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7227,7 +7227,7 @@ real-time apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7436,7 +7436,7 @@ () is al in gebruik. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + 472 @@ -7444,7 +7444,7 @@ Er is een fout opgetreden tijdens het updaten naar (). apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + 480 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 2339475d4..44329441a 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -5780,7 +5780,7 @@ Obecna cena rynkowa wynosi apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + 545 @@ -6569,7 +6569,7 @@ Błąd apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + 536 @@ -7171,7 +7171,7 @@ Leniwy apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7179,7 +7179,7 @@ Natychmiastowy apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7219,7 +7219,7 @@ koniec dnia apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7227,7 +7227,7 @@ w czasie rzeczywistym apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7436,7 +7436,7 @@ () jest już w użyciu. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + 472 @@ -7444,7 +7444,7 @@ Wystąpił błąd podczas aktualizacji do (). apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + 480 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index f755a694c..3e159139a 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -5780,7 +5780,7 @@ O preço de mercado atual é apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + 545 @@ -6569,7 +6569,7 @@ Error apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + 536 @@ -7171,7 +7171,7 @@ Lazy apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7179,7 +7179,7 @@ Instant apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7219,7 +7219,7 @@ end of day apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7227,7 +7227,7 @@ real-time apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7436,7 +7436,7 @@ () is already in use. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + 472 @@ -7444,7 +7444,7 @@ An error occurred while updating to (). apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + 480 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index cf5f1f3d5..1a52f8445 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -5780,7 +5780,7 @@ Şu anki piyasa fiyatı apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + 545 @@ -6569,7 +6569,7 @@ Hata apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + 536 @@ -7171,7 +7171,7 @@ Tembel apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7179,7 +7179,7 @@ Anında apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7219,7 +7219,7 @@ gün sonu apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7227,7 +7227,7 @@ gerçek zamanlı apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7436,7 +7436,7 @@ () is already in use. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + 472 @@ -7444,7 +7444,7 @@ Güncelleştirilirken bir hata oluştu (). apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + 480 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index adc1da6ee..c81920b5e 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -1355,7 +1355,7 @@ Помилка apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + 536 @@ -1363,7 +1363,7 @@ Поточна ринкова ціна apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + 545 @@ -7171,7 +7171,7 @@ Lazy apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7179,7 +7179,7 @@ Instant apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7219,7 +7219,7 @@ end of day apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7227,7 +7227,7 @@ real-time apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7436,7 +7436,7 @@ () is already in use. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + 472 @@ -7444,7 +7444,7 @@ An error occurred while updating to (). apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + 480 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 95bd5aac2..04a855509 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -5263,7 +5263,7 @@ The current market price is apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + 545 @@ -5951,7 +5951,7 @@ Error apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + 536 @@ -6501,14 +6501,14 @@ Instant apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 Lazy apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -6522,14 +6522,14 @@ real-time apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 end of day apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -6713,14 +6713,14 @@ () is already in use. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + 472 An error occurred while updating to (). apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + 480 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 11233248c..0d3293272 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -5789,7 +5789,7 @@ 当前市场价格为 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + 545 @@ -6570,7 +6570,7 @@ 错误 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + 536 @@ -7172,7 +7172,7 @@ 延迟 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7180,7 +7180,7 @@ 即时 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7220,7 +7220,7 @@ 收盘 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + 140 @@ -7228,7 +7228,7 @@ 实时 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + 144 @@ -7437,7 +7437,7 @@ () 已在使用中。 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + 472 @@ -7445,7 +7445,7 @@ 在更新到 () 时发生错误。 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + 480 From 0fca29199d1141c57d475970870ffc476536e622 Mon Sep 17 00:00:00 2001 From: Hash Palak Date: Wed, 25 Jun 2025 10:51:55 -0600 Subject: [PATCH 05/20] Feature/improve language localization for TR 20250625 (#5030) * Improve language localization for TR * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.tr.xlf | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b7e34b644..ee2a00a50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for Catalan (`ca`) - Improved the language localization for Español (`es`) +- Improved the language localization for Turkish (`tr`) ### Fixed diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 1a52f8445..faa6b3912 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -7674,7 +7674,7 @@ Live Demo - Live Demo + Canlı Demo libs/common/src/lib/routes/routes.ts 216 @@ -7682,7 +7682,7 @@ Open Source Alternative to - Open Source Alternative to + Açık Kaynak Alternatifi libs/common/src/lib/routes/routes.ts 306 @@ -7690,7 +7690,7 @@ Single Account - Single Account + Tek Hesap apps/client/src/app/pages/i18n/i18n-page.html 24 @@ -7698,7 +7698,7 @@ Your net worth is managed by a single account - Your net worth is managed by a single account + Net değeriniz tek bir hesap tarafından yönetiliyor apps/client/src/app/pages/i18n/i18n-page.html 25 @@ -7706,7 +7706,7 @@ Your net worth is managed by ${accountsLength} accounts - Your net worth is managed by ${accountsLength} accounts + Net değeriniz ${accountsLength} hesaplar tarafından yönetiliyor apps/client/src/app/pages/i18n/i18n-page.html 28 @@ -7714,7 +7714,7 @@ Holdings - Holdings + Holdingler libs/ui/src/lib/assistant/assistant.html 68 @@ -7722,7 +7722,7 @@ personal-finance-tools - personal-finance-tools + kisisel-finans-araclari kebab-case libs/common/src/lib/routes/routes.ts @@ -7735,7 +7735,7 @@ markets - markets + pazarlar kebab-case libs/common/src/lib/routes/routes.ts From ded0385da74186e062225e12b82fcb722468f9d5 Mon Sep 17 00:00:00 2001 From: Stefan Haun Date: Wed, 25 Jun 2025 20:06:40 +0200 Subject: [PATCH 06/20] Feature/change entrypoint.sh to run app with main PID (#5019) * Change entrypoint.sh to run app with main PID * Update changelog --- CHANGELOG.md | 1 + docker/entrypoint.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee2a00a50..159f20c24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Changed `node main` to `exec node main` in the `entrypoint.sh` file to improve the container signal handling - Improved the language localization for Catalan (`ca`) - Improved the language localization for Español (`es`) - Improved the language localization for Turkish (`tr`) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 71cf6f2dc..440886903 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -9,4 +9,4 @@ echo "Seeding the database" npx prisma db seed echo "Starting the server" -node main +exec node main From f0eb0dc7fc725b057a6d8478dea79182930d7e72 Mon Sep 17 00:00:00 2001 From: Tobias Kugel <78074722+tobikugel@users.noreply.github.com> Date: Thu, 26 Jun 2025 11:27:57 -0300 Subject: [PATCH 07/20] Feature/localize asset class cluster risks (Equity and Fixed Income) (#5033) * Localize asset class cluster risks * Update changelog --- CHANGELOG.md | 5 ++ .../src/app/portfolio/portfolio.service.ts | 4 ++ apps/api/src/app/user/user.service.ts | 4 ++ .../rules/asset-class-cluster-risk/equity.ts | 46 +++++++++++++------ .../asset-class-cluster-risk/fixed-income.ts | 46 +++++++++++++------ apps/client/src/app/pages/i18n/i18n-page.html | 29 ++++++++++++ 6 files changed, 108 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 159f20c24..72595e388 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Set up the language localization for the static portfolio analysis rule: _Asset Class Cluster Risks_ (Equity) +- Set up the language localization for the static portfolio analysis rule: _Asset Class Cluster Risks_ (Fixed Income) + ### Changed - Changed `node main` to `exec node main` in the `entrypoint.sh` file to improve the container signal handling diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index aed8e0acb..6a580f42f 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -1280,10 +1280,14 @@ export class PortfolioService { [ new AssetClassClusterRiskEquity( this.exchangeRateDataService, + this.i18nService, + userSettings.language, Object.values(holdings) ), new AssetClassClusterRiskFixedIncome( this.exchangeRateDataService, + this.i18nService, + userSettings.language, Object.values(holdings) ) ], diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 46b46bce2..161d490d7 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -272,10 +272,14 @@ export class UserService { {} ).getSettings(user.Settings.settings), AssetClassClusterRiskEquity: new AssetClassClusterRiskEquity( + undefined, + undefined, undefined, undefined ).getSettings(user.Settings.settings), AssetClassClusterRiskFixedIncome: new AssetClassClusterRiskFixedIncome( + undefined, + undefined, undefined, undefined ).getSettings(user.Settings.settings), diff --git a/apps/api/src/models/rules/asset-class-cluster-risk/equity.ts b/apps/api/src/models/rules/asset-class-cluster-risk/equity.ts index b386f3e18..704cfdb85 100644 --- a/apps/api/src/models/rules/asset-class-cluster-risk/equity.ts +++ b/apps/api/src/models/rules/asset-class-cluster-risk/equity.ts @@ -1,6 +1,7 @@ import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { Rule } from '@ghostfolio/api/models/rule'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { PortfolioPosition, UserSettings } from '@ghostfolio/common/interfaces'; export class AssetClassClusterRiskEquity extends Rule { @@ -8,9 +9,12 @@ export class AssetClassClusterRiskEquity extends Rule { public constructor( protected exchangeRateDataService: ExchangeRateDataService, + private i18nService: I18nService, + languageCode: string, holdings: PortfolioPosition[] ) { super(exchangeRateDataService, { + languageCode, key: AssetClassClusterRiskEquity.name }); @@ -40,26 +44,39 @@ export class AssetClassClusterRiskEquity extends Rule { if (equityValueRatio > ruleSettings.thresholdMax) { return { - evaluation: `The equity contribution of your current investment (${(equityValueRatio * 100).toPrecision(3)}%) exceeds ${( - ruleSettings.thresholdMax * 100 - ).toPrecision(3)}%`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskEquity.false.max', + languageCode: this.getLanguageCode(), + placeholders: { + equityValueRatio: (equityValueRatio * 100).toPrecision(3), + thresholdMax: (ruleSettings.thresholdMax * 100).toPrecision(3) + } + }), value: false }; } else if (equityValueRatio < ruleSettings.thresholdMin) { return { - evaluation: `The equity contribution of your current investment (${(equityValueRatio * 100).toPrecision(3)}%) is below ${( - ruleSettings.thresholdMin * 100 - ).toPrecision(3)}%`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskEquity.false.min', + languageCode: this.getLanguageCode(), + placeholders: { + equityValueRatio: (equityValueRatio * 100).toPrecision(3), + thresholdMin: (ruleSettings.thresholdMin * 100).toPrecision(3) + } + }), value: false }; } - return { - evaluation: `The equity contribution of your current investment (${(equityValueRatio * 100).toPrecision(3)}%) is within the range of ${( - ruleSettings.thresholdMin * 100 - ).toPrecision( - 3 - )}% and ${(ruleSettings.thresholdMax * 100).toPrecision(3)}%`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskEquity.true', + languageCode: this.getLanguageCode(), + placeholders: { + equityValueRatio: (equityValueRatio * 100).toPrecision(3), + thresholdMax: (ruleSettings.thresholdMax * 100).toPrecision(3), + thresholdMin: (ruleSettings.thresholdMin * 100).toPrecision(3) + } + }), value: true }; } @@ -78,7 +95,10 @@ export class AssetClassClusterRiskEquity extends Rule { } public getName() { - return 'Equity'; + return this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskEquity', + languageCode: this.getLanguageCode() + }); } public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { diff --git a/apps/api/src/models/rules/asset-class-cluster-risk/fixed-income.ts b/apps/api/src/models/rules/asset-class-cluster-risk/fixed-income.ts index 918856c45..e0ca92311 100644 --- a/apps/api/src/models/rules/asset-class-cluster-risk/fixed-income.ts +++ b/apps/api/src/models/rules/asset-class-cluster-risk/fixed-income.ts @@ -1,6 +1,7 @@ import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { Rule } from '@ghostfolio/api/models/rule'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { PortfolioPosition, UserSettings } from '@ghostfolio/common/interfaces'; export class AssetClassClusterRiskFixedIncome extends Rule { @@ -8,9 +9,12 @@ export class AssetClassClusterRiskFixedIncome extends Rule { public constructor( protected exchangeRateDataService: ExchangeRateDataService, + private i18nService: I18nService, + languageCode: string, holdings: PortfolioPosition[] ) { super(exchangeRateDataService, { + languageCode, key: AssetClassClusterRiskFixedIncome.name }); @@ -40,26 +44,39 @@ export class AssetClassClusterRiskFixedIncome extends Rule { if (fixedIncomeValueRatio > ruleSettings.thresholdMax) { return { - evaluation: `The fixed income contribution of your current investment (${(fixedIncomeValueRatio * 100).toPrecision(3)}%) exceeds ${( - ruleSettings.thresholdMax * 100 - ).toPrecision(3)}%`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskFixedIncome.false.max', + languageCode: this.getLanguageCode(), + placeholders: { + fixedIncomeValueRatio: (fixedIncomeValueRatio * 100).toPrecision(3), + thresholdMax: (ruleSettings.thresholdMax * 100).toPrecision(3) + } + }), value: false }; } else if (fixedIncomeValueRatio < ruleSettings.thresholdMin) { return { - evaluation: `The fixed income contribution of your current investment (${(fixedIncomeValueRatio * 100).toPrecision(3)}%) is below ${( - ruleSettings.thresholdMin * 100 - ).toPrecision(3)}%`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskFixedIncome.false.min', + languageCode: this.getLanguageCode(), + placeholders: { + fixedIncomeValueRatio: (fixedIncomeValueRatio * 100).toPrecision(3), + thresholdMin: (ruleSettings.thresholdMin * 100).toPrecision(3) + } + }), value: false }; } - return { - evaluation: `The fixed income contribution of your current investment (${(fixedIncomeValueRatio * 100).toPrecision(3)}%) is within the range of ${( - ruleSettings.thresholdMin * 100 - ).toPrecision( - 3 - )}% and ${(ruleSettings.thresholdMax * 100).toPrecision(3)}%`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskFixedIncome.true', + languageCode: this.getLanguageCode(), + placeholders: { + fixedIncomeValueRatio: (fixedIncomeValueRatio * 100).toPrecision(3), + thresholdMax: (ruleSettings.thresholdMax * 100).toPrecision(3), + thresholdMin: (ruleSettings.thresholdMin * 100).toPrecision(3) + } + }), value: true }; } @@ -78,7 +95,10 @@ export class AssetClassClusterRiskFixedIncome extends Rule { } public getName() { - return 'Fixed Income'; + return this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskFixedIncome', + languageCode: this.getLanguageCode() + }); } public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { diff --git a/apps/client/src/app/pages/i18n/i18n-page.html b/apps/client/src/app/pages/i18n/i18n-page.html index 20fa23f9a..6ffd5b011 100644 --- a/apps/client/src/app/pages/i18n/i18n-page.html +++ b/apps/client/src/app/pages/i18n/i18n-page.html @@ -28,6 +28,35 @@
  • Your net worth is managed by ${accountsLength} accounts
  • +
  • Equity
  • +
  • + The equity contribution of your current investment + (${equityValueRatio}%) exceeds ${thresholdMax}% +
  • +
  • + The equity contribution of your current investment + (${equityValueRatio}%) is below ${thresholdMin}% +
  • +
  • + The equity contribution of your current investment + (${equityValueRatio}%) is within the range of + ${thresholdMin}% and ${thresholdMax}% +
  • +
  • Fixed Income
  • +
  • + The fixed income contribution of your current investment + (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% +
  • +
  • + The fixed income contribution of your current investment + (${fixedIncomeValueRatio}%) is below + ${thresholdMin}% +
  • +
  • + The fixed income contribution of your current investment + (${fixedIncomeValueRatio}%) is within the range of + ${thresholdMin}% and ${thresholdMax}% +
  • Emergency Fund: Set up
  • No emergency fund has been set up From 36741dedf079c42ce90e95dfb9a44e98a00c6039 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 27 Jun 2025 17:14:42 +0200 Subject: [PATCH 08/20] Feature/update locales (#5034) * Update locales * Update translations * Update changelog --------- Co-authored-by: github-actions[bot] Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + apps/client/src/locales/messages.ca.xlf | 78 ++++++++++++++++++++++--- apps/client/src/locales/messages.de.xlf | 78 ++++++++++++++++++++++--- apps/client/src/locales/messages.es.xlf | 78 ++++++++++++++++++++++--- apps/client/src/locales/messages.fr.xlf | 78 ++++++++++++++++++++++--- apps/client/src/locales/messages.it.xlf | 78 ++++++++++++++++++++++--- apps/client/src/locales/messages.nl.xlf | 78 ++++++++++++++++++++++--- apps/client/src/locales/messages.pl.xlf | 78 ++++++++++++++++++++++--- apps/client/src/locales/messages.pt.xlf | 78 ++++++++++++++++++++++--- apps/client/src/locales/messages.tr.xlf | 78 ++++++++++++++++++++++--- apps/client/src/locales/messages.uk.xlf | 78 ++++++++++++++++++++++--- apps/client/src/locales/messages.xlf | 70 +++++++++++++++++++--- apps/client/src/locales/messages.zh.xlf | 78 ++++++++++++++++++++++--- 13 files changed, 845 insertions(+), 84 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72595e388..3a2fefaa5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Changed `node main` to `exec node main` in the `entrypoint.sh` file to improve the container signal handling - Improved the language localization for Catalan (`ca`) - Improved the language localization for Español (`es`) +- Improved the language localization for German (`de`) - Improved the language localization for Turkish (`tr`) ### Fixed diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 65a765fd0..191c8c59d 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -3808,7 +3808,7 @@ Programari de gestió patrimonial de codi obert apps/client/src/app/pages/i18n/i18n-page.html - 47 + 76 @@ -7597,7 +7597,7 @@ Emergency Fund: Set up apps/client/src/app/pages/i18n/i18n-page.html - 31 + 60 @@ -7605,7 +7605,7 @@ No emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 32 + 61 @@ -7613,7 +7613,7 @@ An emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 35 + 64 @@ -7621,7 +7621,7 @@ Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 38 + 67 @@ -7629,7 +7629,7 @@ The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 39 + 68 @@ -7637,7 +7637,7 @@ The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 43 + 72 @@ -7842,6 +7842,70 @@ 19 + + Equity + Equity + + apps/client/src/app/pages/i18n/i18n-page.html + 31 + + + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 32 + + + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 36 + + + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 40 + + + + Fixed Income + Fixed Income + + apps/client/src/app/pages/i18n/i18n-page.html + 45 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 46 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 50 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 55 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index b7a5963ce..4eb925491 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -5676,7 +5676,7 @@ Open Source Software für die Vermögensverwaltung apps/client/src/app/pages/i18n/i18n-page.html - 47 + 76 @@ -7597,7 +7597,7 @@ Notfallfonds: Einrichtung apps/client/src/app/pages/i18n/i18n-page.html - 31 + 60 @@ -7605,7 +7605,7 @@ Es wurde kein Notfallfonds eingerichtet apps/client/src/app/pages/i18n/i18n-page.html - 32 + 61 @@ -7613,7 +7613,7 @@ Ein Notfallfonds wurde eingerichtet apps/client/src/app/pages/i18n/i18n-page.html - 35 + 64 @@ -7621,7 +7621,7 @@ Gebührenverhältnis apps/client/src/app/pages/i18n/i18n-page.html - 38 + 67 @@ -7629,7 +7629,7 @@ Die Gebühren übersteigen ${thresholdMax}% deiner ursprünglichen Investition (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 39 + 68 @@ -7637,7 +7637,7 @@ Die Gebühren übersteigen ${thresholdMax}% deiner ursprünglichen Investition (${feeRatio}%) nicht apps/client/src/app/pages/i18n/i18n-page.html - 43 + 72 @@ -7842,6 +7842,70 @@ 19 + + Equity + Beteiligungskapital + + apps/client/src/app/pages/i18n/i18n-page.html + 31 + + + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + Der Beteiligungskapitalanteil deiner aktuellen Investition (${equityValueRatio}%) übersteigt ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 32 + + + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + Der Beteiligungskapitalanteil deiner aktuellen Investition (${equityValueRatio}%) liegt unter ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 36 + + + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + Der Beteiligungskapitalanteil deiner aktuellen Investition (${equityValueRatio}%) liegt im Bereich zwischen ${thresholdMin}% und ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 40 + + + + Fixed Income + Feste Einkünfte + + apps/client/src/app/pages/i18n/i18n-page.html + 45 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + Der Anteil der festen Einkünfte deiner aktuellen Investition (${fixedIncomeValueRatio}%) übersteigt ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 46 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + Der Anteil der festen Einkünfte deiner aktuellen Investition (${fixedIncomeValueRatio}%) liegt unter ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 50 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + Der Anteil der festen Einkünfte deiner aktuellen Investition (${fixedIncomeValueRatio}%) liegt im Bereich zwischen ${thresholdMin}% und ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 55 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 94351ef38..6bbd2f311 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -5653,7 +5653,7 @@ Software de gestión de patrimonio de código abierto apps/client/src/app/pages/i18n/i18n-page.html - 47 + 76 @@ -7598,7 +7598,7 @@ Fondo de Emergencia: Establecer apps/client/src/app/pages/i18n/i18n-page.html - 31 + 60 @@ -7606,7 +7606,7 @@ No se ha creado ningún fondo de emergencia apps/client/src/app/pages/i18n/i18n-page.html - 32 + 61 @@ -7614,7 +7614,7 @@ Se ha creado un fondo de emergencia apps/client/src/app/pages/i18n/i18n-page.html - 35 + 64 @@ -7622,7 +7622,7 @@ Relación de tarifas apps/client/src/app/pages/i18n/i18n-page.html - 38 + 67 @@ -7630,7 +7630,7 @@ Las tarifas superan el ${thresholdMax}% de su inversión inicial (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 39 + 68 @@ -7638,7 +7638,7 @@ Las tarifas no superan el ${thresholdMax}% de su inversión inicial (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 43 + 72 @@ -7843,6 +7843,70 @@ 19 + + Equity + Equity + + apps/client/src/app/pages/i18n/i18n-page.html + 31 + + + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 32 + + + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 36 + + + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 40 + + + + Fixed Income + Fixed Income + + apps/client/src/app/pages/i18n/i18n-page.html + 45 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 46 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 50 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 55 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index fa4df5a8e..f1b703c2a 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -5652,7 +5652,7 @@ Logiciel libre de Gestion de Patrimoine apps/client/src/app/pages/i18n/i18n-page.html - 47 + 76 @@ -7597,7 +7597,7 @@ Fonds d’urgence : Mise en place apps/client/src/app/pages/i18n/i18n-page.html - 31 + 60 @@ -7605,7 +7605,7 @@ Aucun fonds d’urgence n’a été mis en place apps/client/src/app/pages/i18n/i18n-page.html - 32 + 61 @@ -7613,7 +7613,7 @@ Un fonds d’urgence a été mis en place apps/client/src/app/pages/i18n/i18n-page.html - 35 + 64 @@ -7621,7 +7621,7 @@ Ratio de frais apps/client/src/app/pages/i18n/i18n-page.html - 38 + 67 @@ -7629,7 +7629,7 @@ Les frais dépassent ${thresholdMax}% de votre investissement initial (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 39 + 68 @@ -7637,7 +7637,7 @@ Les frais ne dépassent pas ${thresholdMax}% de votre investissement initial (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 43 + 72 @@ -7842,6 +7842,70 @@ 19 + + Equity + Equity + + apps/client/src/app/pages/i18n/i18n-page.html + 31 + + + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 32 + + + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 36 + + + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 40 + + + + Fixed Income + Fixed Income + + apps/client/src/app/pages/i18n/i18n-page.html + 45 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 46 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 50 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 55 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 503b67d91..23bfaddf5 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -5653,7 +5653,7 @@ Software Open Source per la gestione della tua ricchezza apps/client/src/app/pages/i18n/i18n-page.html - 47 + 76 @@ -7598,7 +7598,7 @@ Fondo di emergenza: istituito apps/client/src/app/pages/i18n/i18n-page.html - 31 + 60 @@ -7606,7 +7606,7 @@ Non è stato istituito alcun fondo di emergenza apps/client/src/app/pages/i18n/i18n-page.html - 32 + 61 @@ -7614,7 +7614,7 @@ È stato istituito un fondo di emergenza apps/client/src/app/pages/i18n/i18n-page.html - 35 + 64 @@ -7622,7 +7622,7 @@ Rapporto tariffario apps/client/src/app/pages/i18n/i18n-page.html - 38 + 67 @@ -7630,7 +7630,7 @@ Le commissioni superano il ${thresholdMax}% del tuo investimento iniziale (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 39 + 68 @@ -7638,7 +7638,7 @@ Le commissioni non superano il ${thresholdMax}% del tuo investimento iniziale (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 43 + 72 @@ -7843,6 +7843,70 @@ 19 + + Equity + Equity + + apps/client/src/app/pages/i18n/i18n-page.html + 31 + + + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 32 + + + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 36 + + + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 40 + + + + Fixed Income + Fixed Income + + apps/client/src/app/pages/i18n/i18n-page.html + 45 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 46 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 50 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 55 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 69196f1b6..7df8ffe91 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -5652,7 +5652,7 @@ Open Source Vermogensbeheer Software apps/client/src/app/pages/i18n/i18n-page.html - 47 + 76 @@ -7597,7 +7597,7 @@ Emergency Fund: Set up apps/client/src/app/pages/i18n/i18n-page.html - 31 + 60 @@ -7605,7 +7605,7 @@ No emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 32 + 61 @@ -7613,7 +7613,7 @@ An emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 35 + 64 @@ -7621,7 +7621,7 @@ Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 38 + 67 @@ -7629,7 +7629,7 @@ The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 39 + 68 @@ -7637,7 +7637,7 @@ The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 43 + 72 @@ -7842,6 +7842,70 @@ 19 + + Equity + Equity + + apps/client/src/app/pages/i18n/i18n-page.html + 31 + + + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 32 + + + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 36 + + + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 40 + + + + Fixed Income + Fixed Income + + apps/client/src/app/pages/i18n/i18n-page.html + 45 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 46 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 50 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 55 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 44329441a..ece0ee7fd 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -3443,7 +3443,7 @@ Oprogramowanie Open Source do Zarządzania Majątkiem apps/client/src/app/pages/i18n/i18n-page.html - 47 + 76 @@ -7597,7 +7597,7 @@ Fundusz awaryjny: Utworzenie apps/client/src/app/pages/i18n/i18n-page.html - 31 + 60 @@ -7605,7 +7605,7 @@ Nie utworzono funduszu awaryjnego apps/client/src/app/pages/i18n/i18n-page.html - 32 + 61 @@ -7613,7 +7613,7 @@ Utworzono fundusz awaryjny apps/client/src/app/pages/i18n/i18n-page.html - 35 + 64 @@ -7621,7 +7621,7 @@ Stosunek opłat apps/client/src/app/pages/i18n/i18n-page.html - 38 + 67 @@ -7629,7 +7629,7 @@ Opłaty przekraczają ${thresholdMax}% początkowej inwestycji (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 39 + 68 @@ -7637,7 +7637,7 @@ Opłaty nie przekraczają ${thresholdMax}% początkowej inwestycji (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 43 + 72 @@ -7842,6 +7842,70 @@ 19 + + Equity + Equity + + apps/client/src/app/pages/i18n/i18n-page.html + 31 + + + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 32 + + + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 36 + + + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 40 + + + + Fixed Income + Fixed Income + + apps/client/src/app/pages/i18n/i18n-page.html + 45 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 46 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 50 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 55 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 3e159139a..fd38a9437 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -5652,7 +5652,7 @@ Software de gerenciamento de patrimônio de código aberto apps/client/src/app/pages/i18n/i18n-page.html - 47 + 76 @@ -7597,7 +7597,7 @@ Emergency Fund: Set up apps/client/src/app/pages/i18n/i18n-page.html - 31 + 60 @@ -7605,7 +7605,7 @@ No emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 32 + 61 @@ -7613,7 +7613,7 @@ An emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 35 + 64 @@ -7621,7 +7621,7 @@ Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 38 + 67 @@ -7629,7 +7629,7 @@ The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 39 + 68 @@ -7637,7 +7637,7 @@ The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 43 + 72 @@ -7842,6 +7842,70 @@ 19 + + Equity + Equity + + apps/client/src/app/pages/i18n/i18n-page.html + 31 + + + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 32 + + + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 36 + + + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 40 + + + + Fixed Income + Fixed Income + + apps/client/src/app/pages/i18n/i18n-page.html + 45 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 46 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 50 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 55 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index faa6b3912..37f2240bc 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -5652,7 +5652,7 @@ Açık Kaynak Varlık Yönetim Yazılımı apps/client/src/app/pages/i18n/i18n-page.html - 47 + 76 @@ -7597,7 +7597,7 @@ Acil Durum Fonu: Kurulum apps/client/src/app/pages/i18n/i18n-page.html - 31 + 60 @@ -7605,7 +7605,7 @@ Acil durum fonu oluşturulmadı apps/client/src/app/pages/i18n/i18n-page.html - 32 + 61 @@ -7613,7 +7613,7 @@ Acil durum fonu kuruldu apps/client/src/app/pages/i18n/i18n-page.html - 35 + 64 @@ -7621,7 +7621,7 @@ Ücret Oranı apps/client/src/app/pages/i18n/i18n-page.html - 38 + 67 @@ -7629,7 +7629,7 @@ Ücretler, ilk yatırımınızın %${thresholdMax} kadarını aşıyor (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 39 + 68 @@ -7637,7 +7637,7 @@ Ücretler, ilk yatırımınızın %${thresholdMax}’ını (${feeRatio}%) aşmaz apps/client/src/app/pages/i18n/i18n-page.html - 43 + 72 @@ -7842,6 +7842,70 @@ 19 + + Equity + Equity + + apps/client/src/app/pages/i18n/i18n-page.html + 31 + + + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 32 + + + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 36 + + + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 40 + + + + Fixed Income + Fixed Income + + apps/client/src/app/pages/i18n/i18n-page.html + 45 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 46 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 50 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 55 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index c81920b5e..3a02cdebf 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -4016,7 +4016,7 @@ Програмне забезпечення управління багатством з відкритим кодом apps/client/src/app/pages/i18n/i18n-page.html - 47 + 76 @@ -7597,7 +7597,7 @@ Emergency Fund: Set up apps/client/src/app/pages/i18n/i18n-page.html - 31 + 60 @@ -7605,7 +7605,7 @@ No emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 32 + 61 @@ -7613,7 +7613,7 @@ An emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 35 + 64 @@ -7621,7 +7621,7 @@ Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 38 + 67 @@ -7629,7 +7629,7 @@ The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 39 + 68 @@ -7637,7 +7637,7 @@ The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 43 + 72 @@ -7842,6 +7842,70 @@ 19 + + Equity + Equity + + apps/client/src/app/pages/i18n/i18n-page.html + 31 + + + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 32 + + + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 36 + + + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 40 + + + + Fixed Income + Fixed Income + + apps/client/src/app/pages/i18n/i18n-page.html + 45 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 46 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 50 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 55 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 04a855509..18e878a87 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -3185,7 +3185,7 @@ Open Source Wealth Management Software apps/client/src/app/pages/i18n/i18n-page.html - 47 + 76 @@ -6841,42 +6841,42 @@ Emergency Fund: Set up apps/client/src/app/pages/i18n/i18n-page.html - 31 + 60 No emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 32 + 61 An emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 35 + 64 Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 38 + 67 The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 39 + 68 The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 43 + 72 @@ -7050,6 +7050,62 @@ 19 + + Equity + + apps/client/src/app/pages/i18n/i18n-page.html + 31 + + + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 32 + + + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 36 + + + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 40 + + + + Fixed Income + + apps/client/src/app/pages/i18n/i18n-page.html + 45 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 46 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 50 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 55 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 0d3293272..17aef6635 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -3452,7 +3452,7 @@ 开源财富管理软件 apps/client/src/app/pages/i18n/i18n-page.html - 47 + 76 @@ -7598,7 +7598,7 @@ 应急资金:设置 apps/client/src/app/pages/i18n/i18n-page.html - 31 + 60 @@ -7606,7 +7606,7 @@ 未设置应急资金 apps/client/src/app/pages/i18n/i18n-page.html - 32 + 61 @@ -7614,7 +7614,7 @@ 已设置应急资金 apps/client/src/app/pages/i18n/i18n-page.html - 35 + 64 @@ -7622,7 +7622,7 @@ 费率 apps/client/src/app/pages/i18n/i18n-page.html - 38 + 67 @@ -7630,7 +7630,7 @@ 费用超过了您初始投资的 ${thresholdMax}% (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 39 + 68 @@ -7638,7 +7638,7 @@ 费用未超过您初始投资的 ${thresholdMax}% (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 43 + 72 @@ -7843,6 +7843,70 @@ 19 + + Equity + Equity + + apps/client/src/app/pages/i18n/i18n-page.html + 31 + + + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 32 + + + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 36 + + + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 40 + + + + Fixed Income + Fixed Income + + apps/client/src/app/pages/i18n/i18n-page.html + 45 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 46 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + + apps/client/src/app/pages/i18n/i18n-page.html + 50 + + + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 55 + + From a919f3bb3b8f90d867d24bea6a039b570157a35d Mon Sep 17 00:00:00 2001 From: Nick Verner <59479310+naevern@users.noreply.github.com> Date: Fri, 27 Jun 2025 09:17:29 -0600 Subject: [PATCH 09/20] Feature/improve language localization for NL (#5037) * Improve language localization for NL * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.nl.xlf | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a2fefaa5..2241ef9eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Changed `node main` to `exec node main` in the `entrypoint.sh` file to improve the container signal handling - Improved the language localization for Catalan (`ca`) +- Improved the language localization for Dutch (`nl`) - Improved the language localization for Español (`es`) - Improved the language localization for German (`de`) - Improved the language localization for Turkish (`tr`) diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 7df8ffe91..e6c8ab26d 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -5945,7 +5945,7 @@ MTD - MTD + MTD libs/ui/src/lib/assistant/assistant.component.ts 347 @@ -7578,7 +7578,7 @@ Demo user account has been synced. - Demo user account has been synced. + Demo-gebruikersaccount is gesynchroniseerd. apps/client/src/app/components/admin-overview/admin-overview.component.ts 223 @@ -7586,7 +7586,7 @@ Sync Demo User Account - Sync Demo User Account + Synchroniseer demo-gebruikersaccount apps/client/src/app/components/admin-overview/admin-overview.html 181 @@ -7594,7 +7594,7 @@ Emergency Fund: Set up - Emergency Fund: Set up + Noodfonds: opgezet apps/client/src/app/pages/i18n/i18n-page.html 60 @@ -7602,7 +7602,7 @@ No emergency fund has been set up - No emergency fund has been set up + Er is geen noodfonds ingesteld apps/client/src/app/pages/i18n/i18n-page.html 61 @@ -7610,7 +7610,7 @@ An emergency fund has been set up - An emergency fund has been set up + Er is een noodfonds opgericht apps/client/src/app/pages/i18n/i18n-page.html 64 @@ -7618,7 +7618,7 @@ Fee Ratio - Fee Ratio + Vergoedingsverhouding apps/client/src/app/pages/i18n/i18n-page.html 67 @@ -7626,7 +7626,7 @@ The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + De kosten overschrijden ${thresholdMax}% van uw initiële investering (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 68 @@ -7634,7 +7634,7 @@ The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + De kosten bedragen niet meer dan ${thresholdMax}% van uw initiële investering (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 72 @@ -7642,7 +7642,7 @@ Name - Name + Naam libs/ui/src/lib/benchmark/benchmark.component.html 11 @@ -7650,7 +7650,7 @@ Find holding or page... - Find holding or page... + Zoek holding of pagina... libs/ui/src/lib/assistant/assistant.component.ts 154 @@ -7658,7 +7658,7 @@ Quick Links - Quick Links + Snelle koppelingen libs/ui/src/lib/assistant/assistant.html 43 From 351fd8a1d49e5eae81e23ba8d70ce4e9471172c1 Mon Sep 17 00:00:00 2001 From: csehatt741 <77381875+csehatt741@users.noreply.github.com> Date: Fri, 27 Jun 2025 17:27:46 +0200 Subject: [PATCH 10/20] Feature/language localization for static portfolio analysis rule: Currency Cluster Risks (#5038) * Language localization for static portfolio analysis rule: Currency Cluster Risks * Update changelog --- CHANGELOG.md | 2 + .../src/app/portfolio/portfolio.service.ts | 8 +++- apps/api/src/app/user/user.service.ts | 4 ++ .../base-currency-current-investment.ts | 37 +++++++++++++---- .../current-investment.ts | 41 +++++++++++++------ apps/client/src/app/pages/i18n/i18n-page.html | 21 ++++++++++ 6 files changed, 89 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2241ef9eb..940093881 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Set up the language localization for the static portfolio analysis rule: _Asset Class Cluster Risks_ (Equity) - Set up the language localization for the static portfolio analysis rule: _Asset Class Cluster Risks_ (Fixed Income) +- Set up the language localization for the static portfolio analysis rule: _Currency Cluster Risks_ (Investment) +- Set up the language localization for the static portfolio analysis rule: _Currency Cluster Risks_ (Investment: Base Currency) ### Changed diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 6a580f42f..fc125656b 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -1300,11 +1300,15 @@ export class PortfolioService { [ new CurrencyClusterRiskBaseCurrencyCurrentInvestment( this.exchangeRateDataService, - Object.values(holdings) + this.i18nService, + Object.values(holdings), + userSettings.language ), new CurrencyClusterRiskCurrentInvestment( this.exchangeRateDataService, - Object.values(holdings) + this.i18nService, + Object.values(holdings), + userSettings.language ) ], userSettings diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 161d490d7..749904803 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -285,11 +285,15 @@ export class UserService { ).getSettings(user.Settings.settings), CurrencyClusterRiskBaseCurrencyCurrentInvestment: new CurrencyClusterRiskBaseCurrencyCurrentInvestment( + undefined, + undefined, undefined, undefined ).getSettings(user.Settings.settings), CurrencyClusterRiskCurrentInvestment: new CurrencyClusterRiskCurrentInvestment( + undefined, + undefined, undefined, undefined ).getSettings(user.Settings.settings), diff --git a/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts b/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts index 6de686a9e..0bf93e9b9 100644 --- a/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts +++ b/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts @@ -1,6 +1,7 @@ import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { Rule } from '@ghostfolio/api/models/rule'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { PortfolioPosition, UserSettings } from '@ghostfolio/common/interfaces'; export class CurrencyClusterRiskBaseCurrencyCurrentInvestment extends Rule { @@ -8,10 +9,13 @@ export class CurrencyClusterRiskBaseCurrencyCurrentInvestment extends Rule { @@ -8,10 +9,13 @@ export class CurrencyClusterRiskCurrentInvestment extends Rule { public constructor( protected exchangeRateDataService: ExchangeRateDataService, - holdings: PortfolioPosition[] + private i18nService: I18nService, + holdings: PortfolioPosition[], + languageCode: string ) { super(exchangeRateDataService, { - key: CurrencyClusterRiskCurrentInvestment.name + key: CurrencyClusterRiskCurrentInvestment.name, + languageCode }); this.holdings = holdings; @@ -41,21 +45,29 @@ export class CurrencyClusterRiskCurrentInvestment extends Rule { if (maxValueRatio > ruleSettings.thresholdMax) { return { - evaluation: `Over ${ - ruleSettings.thresholdMax * 100 - }% of your current investment is in ${maxItem.groupKey} (${( - maxValueRatio * 100 - ).toPrecision(3)}%)`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.currencyClusterRiskCurrentInvestment.false', + languageCode: this.getLanguageCode(), + placeholders: { + currency: maxItem.groupKey as string, + maxValueRatio: (maxValueRatio * 100).toPrecision(3), + thresholdMax: ruleSettings.thresholdMax * 100 + } + }), value: false }; } return { - evaluation: `The major part of your current investment is in ${ - maxItem?.groupKey ?? ruleSettings.baseCurrency - } (${(maxValueRatio * 100).toPrecision(3)}%) and does not exceed ${ - ruleSettings.thresholdMax * 100 - }%`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.currencyClusterRiskCurrentInvestment.true', + languageCode: this.getLanguageCode(), + placeholders: { + currency: maxItem.groupKey as string, + maxValueRatio: (maxValueRatio * 100).toPrecision(3), + thresholdMax: ruleSettings.thresholdMax * 100 + } + }), value: true }; } @@ -73,7 +85,10 @@ export class CurrencyClusterRiskCurrentInvestment extends Rule { } public getName() { - return 'Investment'; + return this.i18nService.getTranslation({ + id: 'rule.currencyClusterRiskCurrentInvestment', + languageCode: this.getLanguageCode() + }); } public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { diff --git a/apps/client/src/app/pages/i18n/i18n-page.html b/apps/client/src/app/pages/i18n/i18n-page.html index 6ffd5b011..232dabba3 100644 --- a/apps/client/src/app/pages/i18n/i18n-page.html +++ b/apps/client/src/app/pages/i18n/i18n-page.html @@ -57,6 +57,27 @@ (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
  • +
  • + Investment: Base Currency +
  • +
  • + The major part of your current investment is not in your base currency + (${baseCurrencyValueRatio}% in ${baseCurrency}) +
  • +
  • + The major part of your current investment is in your base currency + (${baseCurrencyValueRatio}% in ${baseCurrency}) +
  • +
  • Investment
  • +
  • + Over ${thresholdMax}% of your current investment is in + ${currency} (${maxValueRatio}%) +
  • +
  • + The major part of your current investment is in ${currency} + (${maxValueRatio}%) and does not exceed + ${thresholdMax}% +
  • Emergency Fund: Set up
  • No emergency fund has been set up From 3de2c9a81cd24596258070d524e9e6b6b2c89767 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 27 Jun 2025 18:56:07 +0200 Subject: [PATCH 11/20] Feature/update locales (#5039) * Update locales * Update translations --------- Co-authored-by: github-actions[bot] Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- apps/client/src/locales/messages.ca.xlf | 62 ++++++++++++++++++++++--- apps/client/src/locales/messages.de.xlf | 62 ++++++++++++++++++++++--- apps/client/src/locales/messages.es.xlf | 62 ++++++++++++++++++++++--- apps/client/src/locales/messages.fr.xlf | 62 ++++++++++++++++++++++--- apps/client/src/locales/messages.it.xlf | 62 ++++++++++++++++++++++--- apps/client/src/locales/messages.nl.xlf | 62 ++++++++++++++++++++++--- apps/client/src/locales/messages.pl.xlf | 62 ++++++++++++++++++++++--- apps/client/src/locales/messages.pt.xlf | 62 ++++++++++++++++++++++--- apps/client/src/locales/messages.tr.xlf | 62 ++++++++++++++++++++++--- apps/client/src/locales/messages.uk.xlf | 62 ++++++++++++++++++++++--- apps/client/src/locales/messages.xlf | 56 +++++++++++++++++++--- apps/client/src/locales/messages.zh.xlf | 62 ++++++++++++++++++++++--- 12 files changed, 654 insertions(+), 84 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 191c8c59d..74c8e54e0 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -3808,7 +3808,7 @@ Programari de gestió patrimonial de codi obert apps/client/src/app/pages/i18n/i18n-page.html - 76 + 97 @@ -7597,7 +7597,7 @@ Emergency Fund: Set up apps/client/src/app/pages/i18n/i18n-page.html - 60 + 81 @@ -7605,7 +7605,7 @@ No emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 61 + 82 @@ -7613,7 +7613,7 @@ An emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 64 + 85 @@ -7621,7 +7621,7 @@ Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 67 + 88 @@ -7629,7 +7629,7 @@ The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 68 + 89 @@ -7637,7 +7637,7 @@ The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 72 + 93 @@ -7906,6 +7906,54 @@ 55 + + Investment: Base Currency + Investment: Base Currency + + apps/client/src/app/pages/i18n/i18n-page.html + 60 + + + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 63 + + + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 67 + + + + Investment + Investment + + apps/client/src/app/pages/i18n/i18n-page.html + 71 + + + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 76 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 4eb925491..8e4028c8d 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -5676,7 +5676,7 @@ Open Source Software für die Vermögensverwaltung apps/client/src/app/pages/i18n/i18n-page.html - 76 + 97 @@ -7597,7 +7597,7 @@ Notfallfonds: Einrichtung apps/client/src/app/pages/i18n/i18n-page.html - 60 + 81 @@ -7605,7 +7605,7 @@ Es wurde kein Notfallfonds eingerichtet apps/client/src/app/pages/i18n/i18n-page.html - 61 + 82 @@ -7613,7 +7613,7 @@ Ein Notfallfonds wurde eingerichtet apps/client/src/app/pages/i18n/i18n-page.html - 64 + 85 @@ -7621,7 +7621,7 @@ Gebührenverhältnis apps/client/src/app/pages/i18n/i18n-page.html - 67 + 88 @@ -7629,7 +7629,7 @@ Die Gebühren übersteigen ${thresholdMax}% deiner ursprünglichen Investition (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 68 + 89 @@ -7637,7 +7637,7 @@ Die Gebühren übersteigen ${thresholdMax}% deiner ursprünglichen Investition (${feeRatio}%) nicht apps/client/src/app/pages/i18n/i18n-page.html - 72 + 93 @@ -7906,6 +7906,54 @@ 55 + + Investment: Base Currency + Investition: Basiswährung + + apps/client/src/app/pages/i18n/i18n-page.html + 60 + + + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + Der Hauptteil deiner aktuellen Investition ist nicht in deiner Basiswährung (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 63 + + + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + Der Hauptteil deiner aktuellen Investition ist in deiner Basiswährung (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 67 + + + + Investment + Investition + + apps/client/src/app/pages/i18n/i18n-page.html + 71 + + + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Über ${thresholdMax}% deiner aktuellen Investition ist in ${currency} (${maxValueRatio}%) + + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + Der Hauptteil deiner aktuellen Investition ist in ${currency} (${maxValueRatio}%) und übersteigt ${thresholdMax}% nicht + + apps/client/src/app/pages/i18n/i18n-page.html + 76 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 6bbd2f311..a450e6bdd 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -5653,7 +5653,7 @@ Software de gestión de patrimonio de código abierto apps/client/src/app/pages/i18n/i18n-page.html - 76 + 97 @@ -7598,7 +7598,7 @@ Fondo de Emergencia: Establecer apps/client/src/app/pages/i18n/i18n-page.html - 60 + 81 @@ -7606,7 +7606,7 @@ No se ha creado ningún fondo de emergencia apps/client/src/app/pages/i18n/i18n-page.html - 61 + 82 @@ -7614,7 +7614,7 @@ Se ha creado un fondo de emergencia apps/client/src/app/pages/i18n/i18n-page.html - 64 + 85 @@ -7622,7 +7622,7 @@ Relación de tarifas apps/client/src/app/pages/i18n/i18n-page.html - 67 + 88 @@ -7630,7 +7630,7 @@ Las tarifas superan el ${thresholdMax}% de su inversión inicial (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 68 + 89 @@ -7638,7 +7638,7 @@ Las tarifas no superan el ${thresholdMax}% de su inversión inicial (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 72 + 93 @@ -7907,6 +7907,54 @@ 55 + + Investment: Base Currency + Investment: Base Currency + + apps/client/src/app/pages/i18n/i18n-page.html + 60 + + + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 63 + + + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 67 + + + + Investment + Investment + + apps/client/src/app/pages/i18n/i18n-page.html + 71 + + + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 76 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index f1b703c2a..ed8c45638 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -5652,7 +5652,7 @@ Logiciel libre de Gestion de Patrimoine apps/client/src/app/pages/i18n/i18n-page.html - 76 + 97 @@ -7597,7 +7597,7 @@ Fonds d’urgence : Mise en place apps/client/src/app/pages/i18n/i18n-page.html - 60 + 81 @@ -7605,7 +7605,7 @@ Aucun fonds d’urgence n’a été mis en place apps/client/src/app/pages/i18n/i18n-page.html - 61 + 82 @@ -7613,7 +7613,7 @@ Un fonds d’urgence a été mis en place apps/client/src/app/pages/i18n/i18n-page.html - 64 + 85 @@ -7621,7 +7621,7 @@ Ratio de frais apps/client/src/app/pages/i18n/i18n-page.html - 67 + 88 @@ -7629,7 +7629,7 @@ Les frais dépassent ${thresholdMax}% de votre investissement initial (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 68 + 89 @@ -7637,7 +7637,7 @@ Les frais ne dépassent pas ${thresholdMax}% de votre investissement initial (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 72 + 93 @@ -7906,6 +7906,54 @@ 55 + + Investment: Base Currency + Investment: Base Currency + + apps/client/src/app/pages/i18n/i18n-page.html + 60 + + + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 63 + + + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 67 + + + + Investment + Investment + + apps/client/src/app/pages/i18n/i18n-page.html + 71 + + + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 76 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 23bfaddf5..0ab6e7eed 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -5653,7 +5653,7 @@ Software Open Source per la gestione della tua ricchezza apps/client/src/app/pages/i18n/i18n-page.html - 76 + 97 @@ -7598,7 +7598,7 @@ Fondo di emergenza: istituito apps/client/src/app/pages/i18n/i18n-page.html - 60 + 81 @@ -7606,7 +7606,7 @@ Non è stato istituito alcun fondo di emergenza apps/client/src/app/pages/i18n/i18n-page.html - 61 + 82 @@ -7614,7 +7614,7 @@ È stato istituito un fondo di emergenza apps/client/src/app/pages/i18n/i18n-page.html - 64 + 85 @@ -7622,7 +7622,7 @@ Rapporto tariffario apps/client/src/app/pages/i18n/i18n-page.html - 67 + 88 @@ -7630,7 +7630,7 @@ Le commissioni superano il ${thresholdMax}% del tuo investimento iniziale (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 68 + 89 @@ -7638,7 +7638,7 @@ Le commissioni non superano il ${thresholdMax}% del tuo investimento iniziale (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 72 + 93 @@ -7907,6 +7907,54 @@ 55 + + Investment: Base Currency + Investment: Base Currency + + apps/client/src/app/pages/i18n/i18n-page.html + 60 + + + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 63 + + + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 67 + + + + Investment + Investment + + apps/client/src/app/pages/i18n/i18n-page.html + 71 + + + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 76 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index e6c8ab26d..c69e64282 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -5652,7 +5652,7 @@ Open Source Vermogensbeheer Software apps/client/src/app/pages/i18n/i18n-page.html - 76 + 97 @@ -7597,7 +7597,7 @@ Noodfonds: opgezet apps/client/src/app/pages/i18n/i18n-page.html - 60 + 81 @@ -7605,7 +7605,7 @@ Er is geen noodfonds ingesteld apps/client/src/app/pages/i18n/i18n-page.html - 61 + 82 @@ -7613,7 +7613,7 @@ Er is een noodfonds opgericht apps/client/src/app/pages/i18n/i18n-page.html - 64 + 85 @@ -7621,7 +7621,7 @@ Vergoedingsverhouding apps/client/src/app/pages/i18n/i18n-page.html - 67 + 88 @@ -7629,7 +7629,7 @@ De kosten overschrijden ${thresholdMax}% van uw initiële investering (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 68 + 89 @@ -7637,7 +7637,7 @@ De kosten bedragen niet meer dan ${thresholdMax}% van uw initiële investering (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 72 + 93 @@ -7906,6 +7906,54 @@ 55 + + Investment: Base Currency + Investment: Base Currency + + apps/client/src/app/pages/i18n/i18n-page.html + 60 + + + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 63 + + + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 67 + + + + Investment + Investment + + apps/client/src/app/pages/i18n/i18n-page.html + 71 + + + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 76 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index ece0ee7fd..1f4802b78 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -3443,7 +3443,7 @@ Oprogramowanie Open Source do Zarządzania Majątkiem apps/client/src/app/pages/i18n/i18n-page.html - 76 + 97 @@ -7597,7 +7597,7 @@ Fundusz awaryjny: Utworzenie apps/client/src/app/pages/i18n/i18n-page.html - 60 + 81 @@ -7605,7 +7605,7 @@ Nie utworzono funduszu awaryjnego apps/client/src/app/pages/i18n/i18n-page.html - 61 + 82 @@ -7613,7 +7613,7 @@ Utworzono fundusz awaryjny apps/client/src/app/pages/i18n/i18n-page.html - 64 + 85 @@ -7621,7 +7621,7 @@ Stosunek opłat apps/client/src/app/pages/i18n/i18n-page.html - 67 + 88 @@ -7629,7 +7629,7 @@ Opłaty przekraczają ${thresholdMax}% początkowej inwestycji (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 68 + 89 @@ -7637,7 +7637,7 @@ Opłaty nie przekraczają ${thresholdMax}% początkowej inwestycji (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 72 + 93 @@ -7906,6 +7906,54 @@ 55 + + Investment: Base Currency + Investment: Base Currency + + apps/client/src/app/pages/i18n/i18n-page.html + 60 + + + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 63 + + + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 67 + + + + Investment + Investment + + apps/client/src/app/pages/i18n/i18n-page.html + 71 + + + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 76 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index fd38a9437..042d277c6 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -5652,7 +5652,7 @@ Software de gerenciamento de patrimônio de código aberto apps/client/src/app/pages/i18n/i18n-page.html - 76 + 97 @@ -7597,7 +7597,7 @@ Emergency Fund: Set up apps/client/src/app/pages/i18n/i18n-page.html - 60 + 81 @@ -7605,7 +7605,7 @@ No emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 61 + 82 @@ -7613,7 +7613,7 @@ An emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 64 + 85 @@ -7621,7 +7621,7 @@ Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 67 + 88 @@ -7629,7 +7629,7 @@ The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 68 + 89 @@ -7637,7 +7637,7 @@ The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 72 + 93 @@ -7906,6 +7906,54 @@ 55 + + Investment: Base Currency + Investment: Base Currency + + apps/client/src/app/pages/i18n/i18n-page.html + 60 + + + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 63 + + + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 67 + + + + Investment + Investment + + apps/client/src/app/pages/i18n/i18n-page.html + 71 + + + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 76 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 37f2240bc..0cb095a9c 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -5652,7 +5652,7 @@ Açık Kaynak Varlık Yönetim Yazılımı apps/client/src/app/pages/i18n/i18n-page.html - 76 + 97 @@ -7597,7 +7597,7 @@ Acil Durum Fonu: Kurulum apps/client/src/app/pages/i18n/i18n-page.html - 60 + 81 @@ -7605,7 +7605,7 @@ Acil durum fonu oluşturulmadı apps/client/src/app/pages/i18n/i18n-page.html - 61 + 82 @@ -7613,7 +7613,7 @@ Acil durum fonu kuruldu apps/client/src/app/pages/i18n/i18n-page.html - 64 + 85 @@ -7621,7 +7621,7 @@ Ücret Oranı apps/client/src/app/pages/i18n/i18n-page.html - 67 + 88 @@ -7629,7 +7629,7 @@ Ücretler, ilk yatırımınızın %${thresholdMax} kadarını aşıyor (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 68 + 89 @@ -7637,7 +7637,7 @@ Ücretler, ilk yatırımınızın %${thresholdMax}’ını (${feeRatio}%) aşmaz apps/client/src/app/pages/i18n/i18n-page.html - 72 + 93 @@ -7906,6 +7906,54 @@ 55 + + Investment: Base Currency + Investment: Base Currency + + apps/client/src/app/pages/i18n/i18n-page.html + 60 + + + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 63 + + + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 67 + + + + Investment + Investment + + apps/client/src/app/pages/i18n/i18n-page.html + 71 + + + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 76 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 3a02cdebf..c402f5e92 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -4016,7 +4016,7 @@ Програмне забезпечення управління багатством з відкритим кодом apps/client/src/app/pages/i18n/i18n-page.html - 76 + 97 @@ -7597,7 +7597,7 @@ Emergency Fund: Set up apps/client/src/app/pages/i18n/i18n-page.html - 60 + 81 @@ -7605,7 +7605,7 @@ No emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 61 + 82 @@ -7613,7 +7613,7 @@ An emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 64 + 85 @@ -7621,7 +7621,7 @@ Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 67 + 88 @@ -7629,7 +7629,7 @@ The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 68 + 89 @@ -7637,7 +7637,7 @@ The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 72 + 93 @@ -7906,6 +7906,54 @@ 55 + + Investment: Base Currency + Investment: Base Currency + + apps/client/src/app/pages/i18n/i18n-page.html + 60 + + + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 63 + + + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 67 + + + + Investment + Investment + + apps/client/src/app/pages/i18n/i18n-page.html + 71 + + + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 76 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 18e878a87..b25cebb86 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -3185,7 +3185,7 @@ Open Source Wealth Management Software apps/client/src/app/pages/i18n/i18n-page.html - 76 + 97 @@ -6841,42 +6841,42 @@ Emergency Fund: Set up apps/client/src/app/pages/i18n/i18n-page.html - 60 + 81 No emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 61 + 82 An emergency fund has been set up apps/client/src/app/pages/i18n/i18n-page.html - 64 + 85 Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 67 + 88 The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 68 + 89 The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 72 + 93 @@ -7106,6 +7106,48 @@ 55 + + Investment: Base Currency + + apps/client/src/app/pages/i18n/i18n-page.html + 60 + + + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 63 + + + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 67 + + + + Investment + + apps/client/src/app/pages/i18n/i18n-page.html + 71 + + + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 76 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 17aef6635..f7faf273a 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -3452,7 +3452,7 @@ 开源财富管理软件 apps/client/src/app/pages/i18n/i18n-page.html - 76 + 97 @@ -7598,7 +7598,7 @@ 应急资金:设置 apps/client/src/app/pages/i18n/i18n-page.html - 60 + 81 @@ -7606,7 +7606,7 @@ 未设置应急资金 apps/client/src/app/pages/i18n/i18n-page.html - 61 + 82 @@ -7614,7 +7614,7 @@ 已设置应急资金 apps/client/src/app/pages/i18n/i18n-page.html - 64 + 85 @@ -7622,7 +7622,7 @@ 费率 apps/client/src/app/pages/i18n/i18n-page.html - 67 + 88 @@ -7630,7 +7630,7 @@ 费用超过了您初始投资的 ${thresholdMax}% (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 68 + 89 @@ -7638,7 +7638,7 @@ 费用未超过您初始投资的 ${thresholdMax}% (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 72 + 93 @@ -7907,6 +7907,54 @@ 55 + + Investment: Base Currency + Investment: Base Currency + + apps/client/src/app/pages/i18n/i18n-page.html + 60 + + + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 63 + + + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + + apps/client/src/app/pages/i18n/i18n-page.html + 67 + + + + Investment + Investment + + apps/client/src/app/pages/i18n/i18n-page.html + 71 + + + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + + apps/client/src/app/pages/i18n/i18n-page.html + 76 + + From bd04b4a60a659ca82f339106f5803c9e83cf8801 Mon Sep 17 00:00:00 2001 From: Aris Hadrian Date: Fri, 27 Jun 2025 10:56:45 -0600 Subject: [PATCH 12/20] Feature/improve language localization for NL (#5040) * Improve language localization for NL --- apps/client/src/locales/messages.nl.xlf | 36 ++++++++++++------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index c69e64282..8ce13457f 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -7666,7 +7666,7 @@ Asset Profiles - Asset Profiles + Activaprofielen libs/ui/src/lib/assistant/assistant.html 97 @@ -7674,7 +7674,7 @@ Live Demo - Live Demo + Live-demo libs/common/src/lib/routes/routes.ts 216 @@ -7690,7 +7690,7 @@ Single Account - Single Account + Eén account apps/client/src/app/pages/i18n/i18n-page.html 24 @@ -7698,7 +7698,7 @@ Your net worth is managed by a single account - Your net worth is managed by a single account + Uw nettowaarde wordt beheerd door één enkele account apps/client/src/app/pages/i18n/i18n-page.html 25 @@ -7706,7 +7706,7 @@ Your net worth is managed by ${accountsLength} accounts - Your net worth is managed by ${accountsLength} accounts + Uw nettowaarde wordt beheerd door ${accountsLength}-accounts apps/client/src/app/pages/i18n/i18n-page.html 28 @@ -7714,7 +7714,7 @@ Holdings - Holdings + Bezit libs/ui/src/lib/assistant/assistant.html 68 @@ -7735,7 +7735,7 @@ markets - markets + markten kebab-case libs/common/src/lib/routes/routes.ts @@ -7756,7 +7756,7 @@ Get Access - Get Access + Krijg toegang apps/client/src/app/components/admin-settings/admin-settings.component.html 27 @@ -7764,7 +7764,7 @@ Learn more - Learn more + Meer informatie apps/client/src/app/components/admin-settings/admin-settings.component.html 38 @@ -7772,7 +7772,7 @@ new - new + nieuw apps/client/src/app/components/admin-settings/admin-settings.component.html 67 @@ -7780,7 +7780,7 @@ Limited Offer! - Limited Offer! + Beperkt aanbod! apps/client/src/app/pages/pricing/pricing-page.html 311 @@ -7796,7 +7796,7 @@ Available - Available + Beschikbaar apps/client/src/app/components/data-provider-status/data-provider-status.component.html 3 @@ -7804,7 +7804,7 @@ Unavailable - Unavailable + Niet beschikbaar apps/client/src/app/components/data-provider-status/data-provider-status.component.html 5 @@ -7812,7 +7812,7 @@ new - new + nieuw apps/client/src/app/pages/admin/admin-page.component.ts 37 @@ -7820,7 +7820,7 @@ Investment - Investment + Investering apps/client/src/app/pages/i18n/i18n-page.html 14 @@ -7828,7 +7828,7 @@ Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) - Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) + Meer dan ${thresholdMax}% van uw huidige investering bedraagt ​​${maxAccountName} (${maxInvestmentRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 15 @@ -7836,7 +7836,7 @@ The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% - The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% + Het grootste deel van uw huidige investering bedraagt ​​${maxAccountName} (${maxInvestmentRatio}%) en bedraagt ​​niet meer dan ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 19 @@ -7844,7 +7844,7 @@ Equity - Equity + Eigen vermogen apps/client/src/app/pages/i18n/i18n-page.html 31 From b34ef3181210d3614e5251dfe809086aa416663a Mon Sep 17 00:00:00 2001 From: Elisa Falk Date: Fri, 27 Jun 2025 10:57:29 -0600 Subject: [PATCH 13/20] Feature/improve language localization for CA (#5041) * Improve language localization for CA --- apps/client/src/locales/messages.ca.xlf | 36 ++++++++++++------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 74c8e54e0..4a2faca86 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -4829,7 +4829,7 @@ 4% Rule - 4% Rule + 4% Regla apps/client/src/app/pages/portfolio/fire/fire-page.html 40 @@ -4953,7 +4953,7 @@ Data Import and Export - Data Import and Export + Importació i exportació de dades apps/client/src/app/pages/pricing/pricing-page.html 59 @@ -4969,7 +4969,7 @@ Community Support - Community Support + Suport comunitari apps/client/src/app/pages/pricing/pricing-page.html 76 @@ -4977,7 +4977,7 @@ Self-hosted, update manually. - Self-hosted, update manually. + S’allotja automàticament, actualitza manualment. apps/client/src/app/pages/pricing/pricing-page.html 80 @@ -4985,7 +4985,7 @@ Free - Free + Gratuït apps/client/src/app/pages/pricing/pricing-page.html 81 @@ -4997,7 +4997,7 @@ For new investors who are just getting started with trading. - For new investors who are just getting started with trading. + Per a nous inversors que acaben de començar a operar. apps/client/src/app/pages/pricing/pricing-page.html 114 @@ -5005,7 +5005,7 @@ Fully managed Ghostfolio cloud offering. - Fully managed Ghostfolio cloud offering. + Oferta al núvol Ghostfolio totalment gestionada. apps/client/src/app/pages/pricing/pricing-page.html 143 @@ -5017,7 +5017,7 @@ For ambitious investors who need the full picture of their financial assets. - For ambitious investors who need the full picture of their financial assets. + Per a inversors ambiciosos que necessiten la imatge completa dels seus actius financers. apps/client/src/app/pages/pricing/pricing-page.html 185 @@ -5025,7 +5025,7 @@ Email and Chat Support - Email and Chat Support + Suport per correu electrònic i xat apps/client/src/app/pages/pricing/pricing-page.html 265 @@ -5033,7 +5033,7 @@ One-time payment, no auto-renewal. - One-time payment, no auto-renewal. + Pagament únic, sense renovació automàtica. apps/client/src/app/pages/pricing/pricing-page.html 302 @@ -5041,7 +5041,7 @@ It’s free. - It’s free. + És gratuït. apps/client/src/app/pages/pricing/pricing-page.html 352 @@ -5057,7 +5057,7 @@ Currencies - Currencies + Monedes apps/client/src/app/pages/public/public-page.html 88 @@ -5065,7 +5065,7 @@ Continents - Continents + Continents apps/client/src/app/pages/public/public-page.html 124 @@ -5081,7 +5081,7 @@ Ghostfolio empowers you to keep track of your wealth. - Ghostfolio empowers you to keep track of your wealth. + Ghostfolio us permet fer un seguiment de la vostra riquesa. apps/client/src/app/pages/public/public-page.html 215 @@ -5089,7 +5089,7 @@ Registration - Registration + Inscripció libs/common/src/lib/routes/routes.ts 266 @@ -5097,7 +5097,7 @@ Continue with Internet Identity - Continue with Internet Identity + Continueu amb Internet Identity apps/client/src/app/pages/register/register-page.html 42 @@ -5105,7 +5105,7 @@ Continue with Google - Continue with Google + Continueu amb Google apps/client/src/app/pages/register/register-page.html 53 @@ -5113,7 +5113,7 @@ Copy to clipboard - Copy to clipboard + Copia al porta-retalls apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 88 From 5dfe9b54fea796baeeb682463a386de8d425b6a3 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 27 Jun 2025 20:53:29 +0200 Subject: [PATCH 14/20] Feature/rename Analytics to analytics in User database schema (#5032) * Rename Analytics to analytics in User database schema --- apps/api/src/app/admin/admin.service.ts | 20 ++++++++++---------- apps/api/src/app/info/info.service.ts | 6 +++--- apps/api/src/app/user/user.service.ts | 10 +++++----- prisma/schema.prisma | 2 +- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index deb48b7bb..ed55198f0 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -648,7 +648,7 @@ export class AdminService { if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { where = { NOT: { - Analytics: null + analytics: null } }; } @@ -806,13 +806,13 @@ export class AdminService { if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { orderBy = { - Analytics: { + analytics: { lastRequestAt: 'desc' } }; where = { NOT: { - Analytics: null + analytics: null } }; } @@ -826,7 +826,7 @@ export class AdminService { _count: { select: { accounts: true, activities: true } }, - Analytics: { + analytics: { select: { activityCount: true, country: true, @@ -852,11 +852,11 @@ export class AdminService { }); return usersWithAnalytics.map( - ({ _count, Analytics, createdAt, id, role, subscriptions }) => { + ({ _count, analytics, createdAt, id, role, subscriptions }) => { const daysSinceRegistration = differenceInDays(new Date(), createdAt) + 1; - const engagement = Analytics - ? Analytics.activityCount / daysSinceRegistration + const engagement = analytics + ? analytics.activityCount / daysSinceRegistration : undefined; const subscription = @@ -873,9 +873,9 @@ export class AdminService { subscription, accountCount: _count.accounts || 0, activityCount: _count.activities || 0, - country: Analytics?.country, - dailyApiRequests: Analytics?.dataProviderGhostfolioDailyRequests || 0, - lastActivity: Analytics?.updatedAt + country: analytics?.country, + dailyApiRequests: analytics?.dataProviderGhostfolioDailyRequests || 0, + lastActivity: analytics?.updatedAt }; } ); diff --git a/apps/api/src/app/info/info.service.ts b/apps/api/src/app/info/info.service.ts index 9581807b9..327245ade 100644 --- a/apps/api/src/app/info/info.service.ts +++ b/apps/api/src/app/info/info.service.ts @@ -133,11 +133,11 @@ export class InfoService { AND: [ { NOT: { - Analytics: null + analytics: null } }, { - Analytics: { + analytics: { lastRequestAt: { gt: subDays(new Date(), aDays) } @@ -216,7 +216,7 @@ export class InfoService { AND: [ { NOT: { - Analytics: null + analytics: null } }, { diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 749904803..a229e36c4 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -182,7 +182,7 @@ export class UserService { Access, accessToken, accounts, - Analytics, + analytics, authChallenge, createdAt, id, @@ -198,7 +198,7 @@ export class UserService { accounts: { include: { platform: true } }, - Analytics: true, + analytics: true, Settings: true, subscriptions: true }, @@ -217,9 +217,9 @@ export class UserService { Settings: Settings as UserWithSettings['Settings'], thirdPartyId, updatedAt, - activityCount: Analytics?.activityCount, + activityCount: analytics?.activityCount, dataProviderGhostfolioDailyRequests: - Analytics?.dataProviderGhostfolioDailyRequests + analytics?.dataProviderGhostfolioDailyRequests }; if (user?.Settings) { @@ -388,7 +388,7 @@ export class UserService { frequency = 6; } - if (Analytics?.activityCount % frequency === 1) { + if (analytics?.activityCount % frequency === 1) { currentPermissions.push(permissions.enableSubscriptionInterstitial); } diff --git a/prisma/schema.prisma b/prisma/schema.prisma index f1950569d..3d821987d 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -247,6 +247,7 @@ model User { accessToken String? accounts Account[] activities Order[] + analytics Analytics? apiKeys ApiKey[] authChallenge String? createdAt DateTime @default(now()) @@ -260,7 +261,6 @@ model User { watchlist SymbolProfile[] @relation("UserWatchlist") Access Access[] @relation("accessGet") AccessGive Access[] @relation("accessGive") - Analytics Analytics? AuthDevice AuthDevice[] Settings Settings? SymbolProfile SymbolProfile[] From 1ec81d352bd28cdc4e35121d561045341fc765b1 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 27 Jun 2025 20:54:01 +0200 Subject: [PATCH 15/20] Feature/restructure import test files (#4977) * Restructure import test files --- .../calculator/roai/portfolio-calculator-btceur.spec.ts | 2 +- .../calculator/roai/portfolio-calculator-btcusd.spec.ts | 2 +- .../portfolio-calculator-novn-buy-and-sell-partially.spec.ts | 2 +- .../roai/portfolio-calculator-novn-buy-and-sell.spec.ts | 2 +- .../import-activities-dialog/import-activities-dialog.html | 4 ++-- test/import/{ => not-ok}/invalid-currency.csv | 0 test/import/{ => not-ok}/invalid-data-source.json | 0 test/import/{ => not-ok}/invalid-date-before-min.json | 0 test/import/{ => not-ok}/invalid-date-yy.csv | 0 test/import/{ => not-ok}/invalid-date.json | 0 test/import/{ => not-ok}/invalid-fee.csv | 0 test/import/{ => not-ok}/invalid-multi-line.csv | 0 test/import/{ => not-ok}/invalid-symbol-btc-usd.csv | 0 test/import/{ => not-ok}/invalid-symbol.csv | 0 test/import/{ => not-ok}/invalid-symbol.json | 0 test/import/{ => not-ok}/unavailable-exchange-rate.json | 0 test/import/{ => not-ok}/unexpected-format.json | 0 .../import/{ok-500-activities.json => ok/500-activities.json} | 0 test/import/{ok-btceur.json => ok/btceur.json} | 0 test/import/{ok-btcusd.csv => ok/btcusd.csv} | 0 test/import/{ok-btcusd.json => ok/btcusd.json} | 0 .../{ok-derived-currency.json => ok/derived-currency.json} | 0 .../novn-buy-and-sell-partially.json} | 0 .../{ok-novn-buy-and-sell.json => ok/novn-buy-and-sell.json} | 0 test/import/{ok.csv => ok/sample.csv} | 0 test/import/{ok.json => ok/sample.json} | 0 .../vti-buy-long-history.json} | 0 .../import/{ok-vti-buy-on-ibkr.csv => ok/vti-buy-on-ibkr.csv} | 0 .../{ok-without-accounts.json => ok/without-accounts.json} | 0 29 files changed, 6 insertions(+), 6 deletions(-) rename test/import/{ => not-ok}/invalid-currency.csv (100%) rename test/import/{ => not-ok}/invalid-data-source.json (100%) rename test/import/{ => not-ok}/invalid-date-before-min.json (100%) rename test/import/{ => not-ok}/invalid-date-yy.csv (100%) rename test/import/{ => not-ok}/invalid-date.json (100%) rename test/import/{ => not-ok}/invalid-fee.csv (100%) rename test/import/{ => not-ok}/invalid-multi-line.csv (100%) rename test/import/{ => not-ok}/invalid-symbol-btc-usd.csv (100%) rename test/import/{ => not-ok}/invalid-symbol.csv (100%) rename test/import/{ => not-ok}/invalid-symbol.json (100%) rename test/import/{ => not-ok}/unavailable-exchange-rate.json (100%) rename test/import/{ => not-ok}/unexpected-format.json (100%) rename test/import/{ok-500-activities.json => ok/500-activities.json} (100%) rename test/import/{ok-btceur.json => ok/btceur.json} (100%) rename test/import/{ok-btcusd.csv => ok/btcusd.csv} (100%) rename test/import/{ok-btcusd.json => ok/btcusd.json} (100%) rename test/import/{ok-derived-currency.json => ok/derived-currency.json} (100%) rename test/import/{ok-novn-buy-and-sell-partially.json => ok/novn-buy-and-sell-partially.json} (100%) rename test/import/{ok-novn-buy-and-sell.json => ok/novn-buy-and-sell.json} (100%) rename test/import/{ok.csv => ok/sample.csv} (100%) rename test/import/{ok.json => ok/sample.json} (100%) rename test/import/{ok-vti-buy-long-history.json => ok/vti-buy-long-history.json} (100%) rename test/import/{ok-vti-buy-on-ibkr.csv => ok/vti-buy-on-ibkr.csv} (100%) rename test/import/{ok-without-accounts.json => ok/without-accounts.json} (100%) diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts index ba818eb40..5c633817e 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts @@ -63,7 +63,7 @@ describe('PortfolioCalculator', () => { beforeAll(() => { activityDtos = loadActivityExportFile( - join(__dirname, '../../../../../../../test/import/ok-btceur.json') + join(__dirname, '../../../../../../../test/import/ok/btceur.json') ); }); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts index cf07eff97..4e84ba05c 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts @@ -63,7 +63,7 @@ describe('PortfolioCalculator', () => { beforeAll(() => { activityDtos = loadActivityExportFile( - join(__dirname, '../../../../../../../test/import/ok-btcusd.json') + join(__dirname, '../../../../../../../test/import/ok/btcusd.json') ); }); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts index 92a3e33ed..2d66695a2 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts @@ -65,7 +65,7 @@ describe('PortfolioCalculator', () => { activityDtos = loadActivityExportFile( join( __dirname, - '../../../../../../../test/import/ok-novn-buy-and-sell-partially.json' + '../../../../../../../test/import/ok/novn-buy-and-sell-partially.json' ) ); }); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts index 3d4760be7..1a090496a 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts @@ -65,7 +65,7 @@ describe('PortfolioCalculator', () => { activityDtos = loadActivityExportFile( join( __dirname, - '../../../../../../../test/import/ok-novn-buy-and-sell.json' + '../../../../../../../test/import/ok/novn-buy-and-sell.json' ) ); }); diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html index bba859fc2..f5a3612ac 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -90,13 +90,13 @@ >The following file formats are supported: CSV or JSON diff --git a/test/import/invalid-currency.csv b/test/import/not-ok/invalid-currency.csv similarity index 100% rename from test/import/invalid-currency.csv rename to test/import/not-ok/invalid-currency.csv diff --git a/test/import/invalid-data-source.json b/test/import/not-ok/invalid-data-source.json similarity index 100% rename from test/import/invalid-data-source.json rename to test/import/not-ok/invalid-data-source.json diff --git a/test/import/invalid-date-before-min.json b/test/import/not-ok/invalid-date-before-min.json similarity index 100% rename from test/import/invalid-date-before-min.json rename to test/import/not-ok/invalid-date-before-min.json diff --git a/test/import/invalid-date-yy.csv b/test/import/not-ok/invalid-date-yy.csv similarity index 100% rename from test/import/invalid-date-yy.csv rename to test/import/not-ok/invalid-date-yy.csv diff --git a/test/import/invalid-date.json b/test/import/not-ok/invalid-date.json similarity index 100% rename from test/import/invalid-date.json rename to test/import/not-ok/invalid-date.json diff --git a/test/import/invalid-fee.csv b/test/import/not-ok/invalid-fee.csv similarity index 100% rename from test/import/invalid-fee.csv rename to test/import/not-ok/invalid-fee.csv diff --git a/test/import/invalid-multi-line.csv b/test/import/not-ok/invalid-multi-line.csv similarity index 100% rename from test/import/invalid-multi-line.csv rename to test/import/not-ok/invalid-multi-line.csv diff --git a/test/import/invalid-symbol-btc-usd.csv b/test/import/not-ok/invalid-symbol-btc-usd.csv similarity index 100% rename from test/import/invalid-symbol-btc-usd.csv rename to test/import/not-ok/invalid-symbol-btc-usd.csv diff --git a/test/import/invalid-symbol.csv b/test/import/not-ok/invalid-symbol.csv similarity index 100% rename from test/import/invalid-symbol.csv rename to test/import/not-ok/invalid-symbol.csv diff --git a/test/import/invalid-symbol.json b/test/import/not-ok/invalid-symbol.json similarity index 100% rename from test/import/invalid-symbol.json rename to test/import/not-ok/invalid-symbol.json diff --git a/test/import/unavailable-exchange-rate.json b/test/import/not-ok/unavailable-exchange-rate.json similarity index 100% rename from test/import/unavailable-exchange-rate.json rename to test/import/not-ok/unavailable-exchange-rate.json diff --git a/test/import/unexpected-format.json b/test/import/not-ok/unexpected-format.json similarity index 100% rename from test/import/unexpected-format.json rename to test/import/not-ok/unexpected-format.json diff --git a/test/import/ok-500-activities.json b/test/import/ok/500-activities.json similarity index 100% rename from test/import/ok-500-activities.json rename to test/import/ok/500-activities.json diff --git a/test/import/ok-btceur.json b/test/import/ok/btceur.json similarity index 100% rename from test/import/ok-btceur.json rename to test/import/ok/btceur.json diff --git a/test/import/ok-btcusd.csv b/test/import/ok/btcusd.csv similarity index 100% rename from test/import/ok-btcusd.csv rename to test/import/ok/btcusd.csv diff --git a/test/import/ok-btcusd.json b/test/import/ok/btcusd.json similarity index 100% rename from test/import/ok-btcusd.json rename to test/import/ok/btcusd.json diff --git a/test/import/ok-derived-currency.json b/test/import/ok/derived-currency.json similarity index 100% rename from test/import/ok-derived-currency.json rename to test/import/ok/derived-currency.json diff --git a/test/import/ok-novn-buy-and-sell-partially.json b/test/import/ok/novn-buy-and-sell-partially.json similarity index 100% rename from test/import/ok-novn-buy-and-sell-partially.json rename to test/import/ok/novn-buy-and-sell-partially.json diff --git a/test/import/ok-novn-buy-and-sell.json b/test/import/ok/novn-buy-and-sell.json similarity index 100% rename from test/import/ok-novn-buy-and-sell.json rename to test/import/ok/novn-buy-and-sell.json diff --git a/test/import/ok.csv b/test/import/ok/sample.csv similarity index 100% rename from test/import/ok.csv rename to test/import/ok/sample.csv diff --git a/test/import/ok.json b/test/import/ok/sample.json similarity index 100% rename from test/import/ok.json rename to test/import/ok/sample.json diff --git a/test/import/ok-vti-buy-long-history.json b/test/import/ok/vti-buy-long-history.json similarity index 100% rename from test/import/ok-vti-buy-long-history.json rename to test/import/ok/vti-buy-long-history.json diff --git a/test/import/ok-vti-buy-on-ibkr.csv b/test/import/ok/vti-buy-on-ibkr.csv similarity index 100% rename from test/import/ok-vti-buy-on-ibkr.csv rename to test/import/ok/vti-buy-on-ibkr.csv diff --git a/test/import/ok-without-accounts.json b/test/import/ok/without-accounts.json similarity index 100% rename from test/import/ok-without-accounts.json rename to test/import/ok/without-accounts.json From 854a08c7a56531e68a4c64f6510598be45c9647e Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 27 Jun 2025 23:13:55 +0200 Subject: [PATCH 16/20] Bugfix/fix various routes (#5042) * Fix various routes --- apps/client/src/locales/messages.ca.xlf | 6 +++--- apps/client/src/locales/messages.es.xlf | 2 +- apps/client/src/locales/messages.nl.xlf | 2 +- apps/client/src/locales/messages.pl.xlf | 4 ++-- apps/client/src/locales/messages.pt.xlf | 2 +- apps/client/src/locales/messages.tr.xlf | 10 +++++----- apps/client/src/locales/messages.uk.xlf | 4 ++-- libs/common/src/lib/routes/routes.ts | 5 +++-- 8 files changed, 18 insertions(+), 17 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 4a2faca86..832301d6f 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -404,7 +404,7 @@ license - llicències + llicencies kebab-case libs/common/src/lib/routes/routes.ts @@ -417,7 +417,7 @@ privacy-policy - política de privacitat + politica-de-privacitat kebab-case libs/common/src/lib/routes/routes.ts @@ -451,7 +451,7 @@ features - característiques + caracteristiques kebab-case libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index a450e6bdd..4773ef9f6 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -6066,7 +6066,7 @@ self-hosting - auto alojado + auto-alojado kebab-case libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 8ce13457f..9ef26ab15 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -6065,7 +6065,7 @@ self-hosting - zelf hosten + zelf-hosten kebab-case libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 1f4802b78..ac4d1aa74 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -7396,7 +7396,7 @@ terms-of-service - warunki-świadczenia-usług + warunki-swiadczenia-uslug kebab-case libs/common/src/lib/routes/routes.ts @@ -7565,7 +7565,7 @@ changelog - dziennik zmian + dziennik-zmian kebab-case libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 042d277c6..13fc0a098 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -7396,7 +7396,7 @@ terms-of-service - termos-de-serviço + termos-de-servico kebab-case libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 0cb095a9c..c32980026 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -4200,7 +4200,7 @@ open-source-alternative-to - Açık kaynak alternatif + acik-kaynak-alternatif kebab-case libs/common/src/lib/routes/routes.ts @@ -6065,7 +6065,7 @@ self-hosting - Kendini-Barındırma + kendini-barindirma kebab-case libs/common/src/lib/routes/routes.ts @@ -6934,7 +6934,7 @@ guides - kılavuzlar + kilavuzlar kebab-case libs/common/src/lib/routes/routes.ts @@ -6947,7 +6947,7 @@ glossary - sözlük + sozluk kebab-case libs/common/src/lib/routes/routes.ts @@ -7396,7 +7396,7 @@ terms-of-service - Hizmet Koşulları + hizmet-kosullari kebab-case libs/common/src/lib/routes/routes.ts diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index c402f5e92..ce514ca59 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -3796,7 +3796,7 @@ self-hosting - самохостинг + samohosting kebab-case libs/common/src/lib/routes/routes.ts @@ -5511,7 +5511,7 @@ open-source-alternative-to - відкритий-альтернативний-для + vidkrytyi-alternatyvnyi-dlia kebab-case libs/common/src/lib/routes/routes.ts diff --git a/libs/common/src/lib/routes/routes.ts b/libs/common/src/lib/routes/routes.ts index 65d63dce9..ee58d12a7 100644 --- a/libs/common/src/lib/routes/routes.ts +++ b/libs/common/src/lib/routes/routes.ts @@ -312,7 +312,8 @@ export const publicRoutes = { title: $localize`Resources` }, start: { - path: 'start', - routerLink: ['/start'] + excludeFromSitemap: true, + path: $localize`:kebab-case@@routes.start:start`, + routerLink: ['/' + $localize`:kebab-case@@routes.start:start`] } }; From a45ad41459a742f31252a48f836f6ffe7d1a8d59 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 28 Jun 2025 08:34:15 +0200 Subject: [PATCH 17/20] Feature/update locales (#5044) * Update locales * Update translation --------- Co-authored-by: github-actions[bot] Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- apps/client/src/locales/messages.ca.xlf | 13 +++++++++++++ apps/client/src/locales/messages.de.xlf | 13 +++++++++++++ apps/client/src/locales/messages.es.xlf | 13 +++++++++++++ apps/client/src/locales/messages.fr.xlf | 13 +++++++++++++ apps/client/src/locales/messages.it.xlf | 13 +++++++++++++ apps/client/src/locales/messages.nl.xlf | 13 +++++++++++++ apps/client/src/locales/messages.pl.xlf | 13 +++++++++++++ apps/client/src/locales/messages.pt.xlf | 13 +++++++++++++ apps/client/src/locales/messages.tr.xlf | 13 +++++++++++++ apps/client/src/locales/messages.uk.xlf | 13 +++++++++++++ apps/client/src/locales/messages.xlf | 12 ++++++++++++ apps/client/src/locales/messages.zh.xlf | 13 +++++++++++++ 12 files changed, 155 insertions(+) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 832301d6f..b93fdf3ec 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -7954,6 +7954,19 @@ 76 + + start + start + kebab-case + + libs/common/src/lib/routes/routes.ts + 316 + + + libs/common/src/lib/routes/routes.ts + 317 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 8e4028c8d..a24402b61 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -7954,6 +7954,19 @@ 76 + + start + start + kebab-case + + libs/common/src/lib/routes/routes.ts + 316 + + + libs/common/src/lib/routes/routes.ts + 317 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 4773ef9f6..ad10e9d9e 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -7955,6 +7955,19 @@ 76 + + start + start + kebab-case + + libs/common/src/lib/routes/routes.ts + 316 + + + libs/common/src/lib/routes/routes.ts + 317 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index ed8c45638..feba67a5d 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -7954,6 +7954,19 @@ 76 + + start + start + kebab-case + + libs/common/src/lib/routes/routes.ts + 316 + + + libs/common/src/lib/routes/routes.ts + 317 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 0ab6e7eed..01a935490 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -7955,6 +7955,19 @@ 76 + + start + start + kebab-case + + libs/common/src/lib/routes/routes.ts + 316 + + + libs/common/src/lib/routes/routes.ts + 317 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 9ef26ab15..af8b2c704 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -7954,6 +7954,19 @@ 76 + + start + start + kebab-case + + libs/common/src/lib/routes/routes.ts + 316 + + + libs/common/src/lib/routes/routes.ts + 317 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index ac4d1aa74..5825595a1 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -7954,6 +7954,19 @@ 76 + + start + start + kebab-case + + libs/common/src/lib/routes/routes.ts + 316 + + + libs/common/src/lib/routes/routes.ts + 317 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 13fc0a098..049ad4ab7 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -7954,6 +7954,19 @@ 76 + + start + start + kebab-case + + libs/common/src/lib/routes/routes.ts + 316 + + + libs/common/src/lib/routes/routes.ts + 317 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index c32980026..fa1d03d5d 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -7954,6 +7954,19 @@ 76 + + start + start + kebab-case + + libs/common/src/lib/routes/routes.ts + 316 + + + libs/common/src/lib/routes/routes.ts + 317 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index ce514ca59..b88220fd7 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -7954,6 +7954,19 @@ 76 + + start + start + kebab-case + + libs/common/src/lib/routes/routes.ts + 316 + + + libs/common/src/lib/routes/routes.ts + 317 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index b25cebb86..e3274644a 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -7148,6 +7148,18 @@ 76 + + start + kebab-case + + libs/common/src/lib/routes/routes.ts + 316 + + + libs/common/src/lib/routes/routes.ts + 317 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index f7faf273a..90fa84b27 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -7955,6 +7955,19 @@ 76 + + start + start + kebab-case + + libs/common/src/lib/routes/routes.ts + 316 + + + libs/common/src/lib/routes/routes.ts + 317 + + From 4983b7ca1253bec867d9f3d42ca00732edda13d6 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 28 Jun 2025 15:28:24 +0200 Subject: [PATCH 18/20] Feature/simplify badge style in admin settings (#5046) * Simplify badge style --- .../admin-settings/admin-settings.component.html | 2 +- .../admin-settings/admin-settings.component.scss | 7 ------- apps/client/src/app/pages/admin/admin-page.component.ts | 2 +- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.html b/apps/client/src/app/components/admin-settings/admin-settings.component.html index cb93a1e13..af64f034b 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.html +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.html @@ -62,7 +62,7 @@ /> @if (isGhostfolioApiKeyValid === false) { new diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.scss b/apps/client/src/app/components/admin-settings/admin-settings.component.scss index 28bab4deb..4724d4817 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.scss +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.scss @@ -9,13 +9,6 @@ } } - .badge { - &.new { - border: 1px solid var(--mat-table-row-item-outline-color); - padding-bottom: 0.05rem; - } - } - .mat-mdc-card { --mdc-outlined-card-container-color: whitesmoke; diff --git a/apps/client/src/app/pages/admin/admin-page.component.ts b/apps/client/src/app/pages/admin/admin-page.component.ts index 7c8ebfdae..f47771a31 100644 --- a/apps/client/src/app/pages/admin/admin-page.component.ts +++ b/apps/client/src/app/pages/admin/admin-page.component.ts @@ -33,7 +33,7 @@ export class AdminPageComponent implements OnDestroy, OnInit { iconName: 'settings-outline', label: internalRoutes.adminControl.subRoutes.settings.title + - '' + + '' + $localize`new` + '', routerLink: internalRoutes.adminControl.subRoutes.settings.routerLink From 3fcd611e29044d52834dc28125cf361149f1931d Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 28 Jun 2025 15:50:50 +0200 Subject: [PATCH 19/20] Feature/extend selector handling of scraper for more use cases (#5047) * Extend selector handling for more use cases * Update changelog --- CHANGELOG.md | 1 + .../data-provider/manual/manual.service.ts | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 940093881..a4c68125b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Extended the selector handling of the scraper configuration for more use cases - Changed `node main` to `exec node main` in the `entrypoint.sh` file to improve the container signal handling - Improved the language localization for Catalan (`ca`) - Improved the language localization for Dutch (`nl`) diff --git a/apps/api/src/services/data-provider/manual/manual.service.ts b/apps/api/src/services/data-provider/manual/manual.service.ts index bcaa77a17..5cc9c58be 100644 --- a/apps/api/src/services/data-provider/manual/manual.service.ts +++ b/apps/api/src/services/data-provider/manual/manual.service.ts @@ -303,9 +303,21 @@ export class ManualService implements DataProviderInterface { } catch {} } + let value = $(scraperConfiguration.selector).first().text(); + + const lines = value?.split('\n') ?? []; + + const lineWithDigits = lines.find((line) => { + return /\d/.test(line); + }); + + if (lineWithDigits) { + value = lineWithDigits; + } + return extractNumberFromString({ locale, - value: $(scraperConfiguration.selector).first().text() + value }); } } From f936c69a7f38b4ee979b3cf49cc9dd94413dec59 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 28 Jun 2025 16:12:00 +0200 Subject: [PATCH 20/20] Feature/refactor scraper in manual service (#5048) * Refactoring --- .../services/data-provider/manual/manual.service.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/api/src/services/data-provider/manual/manual.service.ts b/apps/api/src/services/data-provider/manual/manual.service.ts index 5cc9c58be..1c1c4c2da 100644 --- a/apps/api/src/services/data-provider/manual/manual.service.ts +++ b/apps/api/src/services/data-provider/manual/manual.service.ts @@ -286,14 +286,12 @@ export class ManualService implements DataProviderInterface { ) }); + let value: string; + if (response.headers.get('content-type')?.includes('application/json')) { const data = await response.json(); - const value = String( - jsonpath.query(data, scraperConfiguration.selector)[0] - ); - - return extractNumberFromString({ locale, value }); + value = String(jsonpath.query(data, scraperConfiguration.selector)[0]); } else { const $ = cheerio.load(await response.text()); @@ -303,7 +301,7 @@ export class ManualService implements DataProviderInterface { } catch {} } - let value = $(scraperConfiguration.selector).first().text(); + value = $(scraperConfiguration.selector).first().text(); const lines = value?.split('\n') ?? []; @@ -320,5 +318,7 @@ export class ManualService implements DataProviderInterface { value }); } + + return extractNumberFromString({ locale, value }); } }