Browse Source

Feature/set up language localization for X-ray rule Account Cluster Risks (Single Account) (#4959)

* Set up language localization

* Update changelog
pull/4965/head
Tobias Kugel 2 weeks ago
committed by GitHub
parent
commit
7a251ef749
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      CHANGELOG.md
  2. 2
      apps/api/src/app/portfolio/portfolio.service.ts
  3. 2
      apps/api/src/app/user/user.service.ts
  4. 21
      apps/api/src/models/rules/account-cluster-risk/single-account.ts
  5. 7
      apps/client/src/app/pages/i18n/i18n-page.html

1
CHANGELOG.md

@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added ### Added
- Set up the language localization for the static portfolio analysis rule: _Account Cluster Risks_ (Single Account)
- Included the admin control panel in the quick links of the assistant - Included the admin control panel in the quick links of the assistant
### Changed ### Changed

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

@ -1261,6 +1261,8 @@ export class PortfolioService {
), ),
new AccountClusterRiskSingleAccount( new AccountClusterRiskSingleAccount(
this.exchangeRateDataService, this.exchangeRateDataService,
this.i18nService,
userSettings.language,
accounts accounts
) )
], ],

2
apps/api/src/app/user/user.service.ts

@ -263,6 +263,8 @@ export class UserService {
user.Settings.settings user.Settings.settings
), ),
AccountClusterRiskSingleAccount: new AccountClusterRiskSingleAccount( AccountClusterRiskSingleAccount: new AccountClusterRiskSingleAccount(
undefined,
undefined,
undefined, undefined,
{} {}
).getSettings(user.Settings.settings), ).getSettings(user.Settings.settings),

21
apps/api/src/models/rules/account-cluster-risk/single-account.ts

@ -1,6 +1,7 @@
import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface';
import { Rule } from '@ghostfolio/api/models/rule'; import { Rule } from '@ghostfolio/api/models/rule';
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service';
import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service';
import { PortfolioDetails, UserSettings } from '@ghostfolio/common/interfaces'; import { PortfolioDetails, UserSettings } from '@ghostfolio/common/interfaces';
export class AccountClusterRiskSingleAccount extends Rule<RuleSettings> { export class AccountClusterRiskSingleAccount extends Rule<RuleSettings> {
@ -8,9 +9,12 @@ export class AccountClusterRiskSingleAccount extends Rule<RuleSettings> {
public constructor( public constructor(
protected exchangeRateDataService: ExchangeRateDataService, protected exchangeRateDataService: ExchangeRateDataService,
private i18nService: I18nService,
languageCode: string,
accounts: PortfolioDetails['accounts'] accounts: PortfolioDetails['accounts']
) { ) {
super(exchangeRateDataService, { super(exchangeRateDataService, {
languageCode,
key: AccountClusterRiskSingleAccount.name key: AccountClusterRiskSingleAccount.name
}); });
@ -22,13 +26,22 @@ export class AccountClusterRiskSingleAccount extends Rule<RuleSettings> {
if (accounts.length === 1) { if (accounts.length === 1) {
return { return {
evaluation: `Your net worth is managed by a single account`, evaluation: this.i18nService.getTranslation({
id: 'rule.accountClusterRiskSingleAccount.false',
languageCode: this.getLanguageCode()
}),
value: false value: false
}; };
} }
return { return {
evaluation: `Your net worth is managed by ${accounts.length} accounts`, evaluation: this.i18nService.getTranslation({
id: 'rule.accountClusterRiskSingleAccount.true',
languageCode: this.getLanguageCode(),
placeholders: {
accountsLength: accounts.length
}
}),
value: true value: true
}; };
} }
@ -38,6 +51,10 @@ export class AccountClusterRiskSingleAccount extends Rule<RuleSettings> {
} }
public getName() { public getName() {
return this.i18nService.getTranslation({
id: 'rule.accountClusterRiskSingleAccount',
languageCode: this.getLanguageCode()
});
return 'Single Account'; return 'Single Account';
} }

7
apps/client/src/app/pages/i18n/i18n-page.html

@ -11,6 +11,13 @@
performance, portfolio, software, stock, trading, wealth, web3 performance, portfolio, software, stock, trading, wealth, web3
</li> </li>
<li i18n="@@myAccount">My Account</li> <li i18n="@@myAccount">My Account</li>
<li i18n="@@rule.accountClusterRiskSingleAccount">Single Account</li>
<li i18n="@@rule.accountClusterRiskSingleAccount.false">
Your net worth is managed by a single account
</li>
<li i18n="@@rule.accountClusterRiskSingleAccount.true">
Your net worth is managed by $&#123;accountsLength&#125; accounts
</li>
<li i18n="@@rule.emergencyFundSetup">Emergency Fund: Set up</li> <li i18n="@@rule.emergencyFundSetup">Emergency Fund: Set up</li>
<li i18n="@@rule.emergencyFundSetup.false"> <li i18n="@@rule.emergencyFundSetup.false">
No emergency fund has been set up No emergency fund has been set up

Loading…
Cancel
Save