From e2ec635bbff27bdba8edfe0c703844c4b26f78ba Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 6 Jun 2025 07:41:35 +0200 Subject: [PATCH] Feature/localize X-ray rule EmergencyFundSetup (#4835) * Set up language localization for static portfolio analysis rule: Emergency Fund (Set up) * Update changelog --- CHANGELOG.md | 1 + .../src/app/portfolio/portfolio.service.ts | 1 + apps/api/src/app/user/user.service.ts | 1 + .../emergency-fund/emergency-fund-setup.ts | 19 ++++++++++++++++--- apps/client/src/app/pages/i18n/i18n-page.html | 7 +++++++ 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d53d2290c..ecbfdad28 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 ### Added +- Set up the language localization for the static portfolio analysis rule: _Emergency Fund_ (Setup) - Set up the language localization for the static portfolio analysis rule: _Fees_ (Fee Ratio) ### Changed diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 313721a17..9f1901c7f 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -1319,6 +1319,7 @@ export class PortfolioService { [ new EmergencyFundSetup( this.exchangeRateDataService, + userSettings.language, this.getTotalEmergencyFund({ userSettings, emergencyFundHoldingsValueInBaseCurrency: diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 774f9746b..21790182f 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -298,6 +298,7 @@ export class UserService { undefined ).getSettings(user.Settings.settings), EmergencyFundSetup: new EmergencyFundSetup( + undefined, undefined, undefined ).getSettings(user.Settings.settings), diff --git a/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts b/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts index 8b53e6799..a91e68425 100644 --- a/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts +++ b/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts @@ -1,16 +1,20 @@ 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 { UserSettings } from '@ghostfolio/common/interfaces'; export class EmergencyFundSetup extends Rule { private emergencyFund: number; + private i18nService = new I18nService(); public constructor( protected exchangeRateDataService: ExchangeRateDataService, + languageCode: string, emergencyFund: number ) { super(exchangeRateDataService, { + languageCode, key: EmergencyFundSetup.name }); @@ -20,13 +24,19 @@ export class EmergencyFundSetup extends Rule { public evaluate() { if (!this.emergencyFund) { return { - evaluation: 'No emergency fund has been set up', + evaluation: this.i18nService.getTranslation({ + id: 'rule.emergencyFundSetup.false', + languageCode: this.getLanguageCode() + }), value: false }; } return { - evaluation: 'An emergency fund has been set up', + evaluation: this.i18nService.getTranslation({ + id: 'rule.emergencyFundSetup.true', + languageCode: this.getLanguageCode() + }), value: true }; } @@ -36,7 +46,10 @@ export class EmergencyFundSetup extends Rule { } public getName() { - return 'Emergency Fund: Set up'; + return this.i18nService.getTranslation({ + id: 'rule.emergencyFundSetup', + 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 e1c244265..f54a45b3f 100644 --- a/apps/client/src/app/pages/i18n/i18n-page.html +++ b/apps/client/src/app/pages/i18n/i18n-page.html @@ -11,6 +11,13 @@ performance, portfolio, software, stock, trading, wealth, web3
  • My Account
  • +
  • Emergency Fund: Set up
  • +
  • + No emergency fund has been set up +
  • +
  • + An emergency fund has been set up +
  • Fee Ratio
  • The fees do exceed {thresholdMax}% of your initial investment