diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e8b6856a..8bd42dc7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,17 +5,20 @@ 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 +## 2.169.0 - 2025-06-08 ### Changed - Renamed the asset profile icon component to entity logo component and moved to `@ghostfolio/ui` - Renamed `Account` to `accounts` in the `User` database schema +- Improved the cache verification in the health check endpoint (experimental) - Improved the language localization for Catalan (`ca`) +- Improved the language localization for French (`fr`) - Improved the language localization for Polish (`pl`) ### Fixed +- Handled an exception in the get keys function of the _Redis_ cache service - Fixed missing `/.well-known/assetlinks.json` for TWA ## 2.168.0 - 2025-06-07 diff --git a/apps/api/src/app/redis-cache/redis-cache.service.ts b/apps/api/src/app/redis-cache/redis-cache.service.ts index e6e98d622..621199cc9 100644 --- a/apps/api/src/app/redis-cache/redis-cache.service.ts +++ b/apps/api/src/app/redis-cache/redis-cache.service.ts @@ -5,17 +5,28 @@ import { AssetProfileIdentifier, Filter } from '@ghostfolio/common/interfaces'; import { CACHE_MANAGER, Cache } from '@nestjs/cache-manager'; import { Inject, Injectable, Logger } from '@nestjs/common'; import { createHash } from 'crypto'; +import Keyv from 'keyv'; import ms from 'ms'; @Injectable() export class RedisCacheService { + private client: Keyv; + public constructor( @Inject(CACHE_MANAGER) private readonly cache: Cache, private readonly configurationService: ConfigurationService ) { - const client = cache.stores[0]; + this.client = cache.stores[0]; + + this.client.deserialize = (value) => { + try { + return JSON.parse(value); + } catch {} - client.on('error', (error) => { + return value; + }; + + this.client.on('error', (error) => { Logger.error(error, 'RedisCacheService'); }); } @@ -28,28 +39,13 @@ export class RedisCacheService { const keys: string[] = []; const prefix = aPrefix; - this.cache.stores[0].deserialize = (value) => { - try { - return JSON.parse(value); - } catch (error: any) { - if (error instanceof SyntaxError) { - Logger.debug( - `Failed to parse json, returning the value as String: ${value}`, - 'RedisCacheService' - ); - - return value; - } else { - throw error; + try { + for await (const [key] of this.client.iterator({})) { + if ((prefix && key.startsWith(prefix)) || !prefix) { + keys.push(key); } } - }; - - for await (const [key] of this.cache.stores[0].iterator({})) { - if ((prefix && key.startsWith(prefix)) || !prefix) { - keys.push(key); - } - } + } catch {} return keys; } @@ -79,12 +75,22 @@ export class RedisCacheService { } public async isHealthy() { + const testKey = '__health_check__'; + const testValue = Date.now().toString(); + try { await Promise.race([ - this.getKeys(), + (async () => { + await this.set(testKey, testValue, ms('1 second')); + const result = await this.get(testKey); + + if (result !== testValue) { + throw new Error('Redis health check failed: value mismatch'); + } + })(), new Promise((_, reject) => setTimeout( - () => reject(new Error('Redis health check timeout')), + () => reject(new Error('Redis health check failed: timeout')), ms('2 seconds') ) ) @@ -92,7 +98,13 @@ export class RedisCacheService { return true; } catch (error) { + Logger.error(error?.message, 'RedisCacheService'); + return false; + } finally { + try { + await this.remove(testKey); + } catch {} } } diff --git a/apps/client/src/app/app.component.ts b/apps/client/src/app/app.component.ts index f0be8c76e..bc3eb69b7 100644 --- a/apps/client/src/app/app.component.ts +++ b/apps/client/src/app/app.component.ts @@ -78,9 +78,9 @@ export class AppComponent implements OnDestroy, OnInit { public routerLinkFaq = ['/' + routes.faq]; public routerLinkFeatures = ['/' + routes.features]; public routerLinkMarkets = ['/' + routes.markets]; - public routerLinkOpenStartup = ['/' + publicRoutes.openStartup.path]; + public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; public routerLinkPricing = ['/' + routes.pricing]; - public routerLinkRegister = ['/' + publicRoutes.register.path]; + public routerLinkRegister = publicRoutes.register.routerLink; public routerLinkResources = ['/' + routes.resources]; public showFooter = false; public user: User; diff --git a/apps/client/src/app/components/header/header.component.html b/apps/client/src/app/components/header/header.component.html index c20711242..c1475d549 100644 --- a/apps/client/src/app/components/header/header.component.html +++ b/apps/client/src/app/components/header/header.component.html @@ -20,9 +20,11 @@ mat-flat-button [ngClass]="{ 'font-weight-bold': - currentRoute === routes.home || currentRoute === routes.zen, + currentRoute === internalRoutes.home.path || + currentRoute === internalRoutes.zen.path, 'text-decoration-underline': - currentRoute === routes.home || currentRoute === routes.zen + currentRoute === internalRoutes.home.path || + currentRoute === internalRoutes.zen.path }" [routerLink]="['/']" >OverviewPortfolioAccountsOverviewPortfolioAccounts diff --git a/apps/client/src/app/components/header/header.component.ts b/apps/client/src/app/components/header/header.component.ts index 0bf42c86e..23049ada9 100644 --- a/apps/client/src/app/components/header/header.component.ts +++ b/apps/client/src/app/components/header/header.component.ts @@ -83,13 +83,13 @@ export class HeaderComponent implements OnChanges { public hasPermissionToAccessFearAndGreedIndex: boolean; public hasPermissionToCreateUser: boolean; public impersonationId: string; + public internalRoutes = internalRoutes; public isMenuOpen: boolean; public routeAbout = routes.about; public routeFeatures = routes.features; public routeMarkets = routes.markets; public routePricing = routes.pricing; public routeResources = routes.resources; - public routes = routes; public routerLinkAbout = ['/' + routes.about]; public routerLinkAccount = ['/' + routes.account]; public routerLinkAccounts = internalRoutes.accounts.routerLink; @@ -98,8 +98,9 @@ export class HeaderComponent implements OnChanges { public routerLinkMarkets = ['/' + routes.markets]; public routerLinkPortfolio = internalRoutes.portfolio.routerLink; public routerLinkPricing = ['/' + routes.pricing]; - public routerLinkRegister = ['/' + publicRoutes.register.path]; + public routerLinkRegister = publicRoutes.register.routerLink; public routerLinkResources = ['/' + routes.resources]; + public routes = routes; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/core/auth.guard.ts b/apps/client/src/app/core/auth.guard.ts index 21a92b166..919a88bd5 100644 --- a/apps/client/src/app/core/auth.guard.ts +++ b/apps/client/src/app/core/auth.guard.ts @@ -55,7 +55,7 @@ export class AuthGuard { this.router.navigate(['/' + routes.demo]); resolve(false); } else if (utmSource === 'trusted-web-activity') { - this.router.navigate(['/' + publicRoutes.register.path]); + this.router.navigate(publicRoutes.register.routerLink); resolve(false); } else if ( AuthGuard.PUBLIC_PAGE_ROUTES.some((publicPageRoute) => { diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts index a2d911a8e..c4ce08aee 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts +++ b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -21,7 +21,7 @@ export class AboutOverviewPageComponent implements OnDestroy, OnInit { public routerLinkBlog = ['/' + routes.blog]; public routerLinkFaq = ['/' + routes.faq]; public routerLinkFeatures = ['/' + routes.features]; - public routerLinkOpenStartup = ['/' + publicRoutes.openStartup.path]; + public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; public user: User; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts b/apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts index 0525adc93..162831703 100644 --- a/apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts @@ -13,5 +13,5 @@ import { RouterModule } from '@angular/router'; export class Hacktoberfest2023PageComponent { public routerLinkAbout = ['/' + routes.about]; public routerLinkBlog = ['/' + routes.blog]; - public routerLinkOpenStartup = ['/' + publicRoutes.openStartup.path]; + public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; } diff --git a/apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts b/apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts index 5a559dd95..28b24cb00 100644 --- a/apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts +++ b/apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts @@ -13,5 +13,5 @@ import { RouterModule } from '@angular/router'; export class Hacktoberfest2024PageComponent { public routerLinkAbout = ['/' + routes.about]; public routerLinkBlog = ['/' + routes.blog]; - public routerLinkOpenStartup = ['/' + publicRoutes.openStartup.path]; + public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; } diff --git a/apps/client/src/app/pages/faq/saas/saas-page.component.ts b/apps/client/src/app/pages/faq/saas/saas-page.component.ts index 27c794069..7f7e2c709 100644 --- a/apps/client/src/app/pages/faq/saas/saas-page.component.ts +++ b/apps/client/src/app/pages/faq/saas/saas-page.component.ts @@ -20,7 +20,7 @@ export class SaasPageComponent implements OnDestroy { routes.membership ]; public routerLinkMarkets = ['/' + routes.markets]; - public routerLinkRegister = ['/' + publicRoutes.register.path]; + public routerLinkRegister = publicRoutes.register.routerLink; public user: User; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/features/features-page.component.ts b/apps/client/src/app/pages/features/features-page.component.ts index bb502fdaf..abe5cab0f 100644 --- a/apps/client/src/app/pages/features/features-page.component.ts +++ b/apps/client/src/app/pages/features/features-page.component.ts @@ -26,7 +26,7 @@ import { Subject, takeUntil } from 'rxjs'; export class GfFeaturesPageComponent implements OnDestroy { public hasPermissionForSubscription: boolean; public info: InfoItem; - public routerLinkRegister = ['/' + publicRoutes.register.path]; + public routerLinkRegister = publicRoutes.register.routerLink; public routerLinkResources = ['/' + routes.resources]; public user: User; diff --git a/apps/client/src/app/pages/landing/landing-page.component.ts b/apps/client/src/app/pages/landing/landing-page.component.ts index 84a2e4768..bdfff38fb 100644 --- a/apps/client/src/app/pages/landing/landing-page.component.ts +++ b/apps/client/src/app/pages/landing/landing-page.component.ts @@ -27,8 +27,8 @@ export class LandingPageComponent implements OnDestroy, OnInit { public hasPermissionToCreateUser: boolean; public routerLinkAbout = ['/' + routes.about]; public routerLinkDemo = ['/' + routes.demo]; - public routerLinkOpenStartup = ['/' + publicRoutes.openStartup.path]; - public routerLinkRegister = ['/' + publicRoutes.register.path]; + public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; + public routerLinkRegister = publicRoutes.register.routerLink; public statistics: Statistics; public testimonials = [ { diff --git a/apps/client/src/app/pages/pricing/pricing-page.component.ts b/apps/client/src/app/pages/pricing/pricing-page.component.ts index e3cc8ccb2..1e9001632 100644 --- a/apps/client/src/app/pages/pricing/pricing-page.component.ts +++ b/apps/client/src/app/pages/pricing/pricing-page.component.ts @@ -42,7 +42,7 @@ export class PricingPageComponent implements OnDestroy, OnInit { 'PROFESSIONAL_DATA_PROVIDER_TOOLTIP_PREMIUM' ); public routerLinkFeatures = ['/' + routes.features]; - public routerLinkRegister = ['/' + publicRoutes.register.path]; + public routerLinkRegister = publicRoutes.register.routerLink; public user: User; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index d8785bf0c..63a6e47ef 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -26,7 +26,7 @@ apps/client/src/app/components/header/header.component.ts - 241 + 242 @@ -74,7 +74,7 @@ apps/client/src/app/components/header/header.component.html - 396 + 403 apps/client/src/app/components/home-market/home-market.html @@ -94,11 +94,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 86 apps/client/src/app/components/header/header.component.html - 289 + 296 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -114,11 +114,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 121 apps/client/src/app/components/header/header.component.html - 362 + 369 @@ -238,7 +238,7 @@ apps/client/src/app/components/header/header.component.html - 349 + 356 apps/client/src/app/pages/features/features-page.html @@ -278,15 +278,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 103 apps/client/src/app/components/header/header.component.html - 301 + 308 apps/client/src/app/components/header/header.component.html - 377 + 384 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -434,7 +434,11 @@ kebab-case libs/common/src/lib/routes.ts - 99 + 100 + + + libs/common/src/lib/routes.ts + 101 @@ -1755,11 +1759,11 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 266 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1971,11 +1975,11 @@ Visió General apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 246 @@ -1983,11 +1987,11 @@ Portfolio apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 256 @@ -1995,11 +1999,11 @@ Panell d’Administració apps/client/src/app/components/header/header.component.html - 68 + 72 apps/client/src/app/components/header/header.component.html - 277 + 284 @@ -2007,7 +2011,7 @@ Millora la teva Subscripció apps/client/src/app/components/header/header.component.html - 187 + 191 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -2027,7 +2031,7 @@ Renova la teva Subscripció apps/client/src/app/components/header/header.component.html - 185 + 189 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -2043,7 +2047,7 @@ Tu apps/client/src/app/components/header/header.component.html - 207 + 211 @@ -2055,7 +2059,7 @@ apps/client/src/app/components/header/header.component.html - 225 + 229 @@ -2063,7 +2067,7 @@ El meu Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 273 @@ -2071,7 +2075,7 @@ Sobre Ghostfolio apps/client/src/app/components/header/header.component.html - 314 + 321 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2083,7 +2087,7 @@ Iniciar Sessió apps/client/src/app/components/header/header.component.html - 410 + 417 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2095,7 +2099,7 @@ Primers Passos apps/client/src/app/components/header/header.component.html - 420 + 427 @@ -2103,7 +2107,7 @@ Oooh! El testimoni de seguretat és incorrecte. apps/client/src/app/components/header/header.component.ts - 256 + 257 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -5060,7 +5064,7 @@ Registration libs/common/src/lib/routes.ts - 100 + 102 @@ -7568,7 +7572,7 @@ Log out apps/client/src/app/components/header/header.component.html - 317 + 324 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 12b6e7e51..bd1e9e165 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -778,7 +778,7 @@ apps/client/src/app/components/header/header.component.html - 225 + 229 @@ -818,11 +818,11 @@ Übersicht apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 246 @@ -830,11 +830,11 @@ Portfolio apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 256 @@ -850,11 +850,11 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 266 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -870,11 +870,11 @@ Administration apps/client/src/app/components/header/header.component.html - 68 + 72 apps/client/src/app/components/header/header.component.html - 277 + 284 @@ -886,11 +886,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 86 apps/client/src/app/components/header/header.component.html - 289 + 296 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -906,15 +906,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 103 apps/client/src/app/components/header/header.component.html - 301 + 308 apps/client/src/app/components/header/header.component.html - 377 + 384 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -930,11 +930,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 121 apps/client/src/app/components/header/header.component.html - 362 + 369 @@ -942,7 +942,7 @@ Ich apps/client/src/app/components/header/header.component.html - 207 + 211 @@ -950,7 +950,7 @@ Mein Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 273 @@ -958,7 +958,7 @@ Über Ghostfolio apps/client/src/app/components/header/header.component.html - 314 + 321 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -974,7 +974,7 @@ apps/client/src/app/components/header/header.component.html - 349 + 356 apps/client/src/app/pages/features/features-page.html @@ -990,7 +990,7 @@ apps/client/src/app/components/header/header.component.html - 396 + 403 apps/client/src/app/components/home-market/home-market.html @@ -1022,7 +1022,7 @@ apps/client/src/app/components/header/header.component.ts - 241 + 242 @@ -1030,7 +1030,7 @@ Ups! Falsches Sicherheits-Token. apps/client/src/app/components/header/header.component.ts - 256 + 257 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1142,7 +1142,7 @@ Einloggen apps/client/src/app/components/header/header.component.html - 410 + 417 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2406,7 +2406,7 @@ Registrierung libs/common/src/lib/routes.ts - 100 + 102 @@ -2574,7 +2574,7 @@ Registrieren apps/client/src/app/components/header/header.component.html - 420 + 427 @@ -3558,7 +3558,7 @@ Abonnement abschliessen apps/client/src/app/components/header/header.component.html - 187 + 191 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3850,7 +3850,7 @@ Abonnement erneuern apps/client/src/app/components/header/header.component.html - 185 + 189 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -5222,7 +5222,11 @@ kebab-case libs/common/src/lib/routes.ts - 99 + 100 + + + libs/common/src/lib/routes.ts + 101 @@ -7568,7 +7572,7 @@ Ausloggen apps/client/src/app/components/header/header.component.html - 317 + 324 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 697222e9a..fee61f309 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -763,7 +763,7 @@ apps/client/src/app/components/header/header.component.html - 225 + 229 @@ -803,11 +803,11 @@ Visión general apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 246 @@ -815,11 +815,11 @@ Cartera apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 256 @@ -835,11 +835,11 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 266 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -855,11 +855,11 @@ Control de administrador apps/client/src/app/components/header/header.component.html - 68 + 72 apps/client/src/app/components/header/header.component.html - 277 + 284 @@ -871,11 +871,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 86 apps/client/src/app/components/header/header.component.html - 289 + 296 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -891,15 +891,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 103 apps/client/src/app/components/header/header.component.html - 301 + 308 apps/client/src/app/components/header/header.component.html - 377 + 384 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -915,11 +915,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 121 apps/client/src/app/components/header/header.component.html - 362 + 369 @@ -927,7 +927,7 @@ apps/client/src/app/components/header/header.component.html - 207 + 211 @@ -935,7 +935,7 @@ Mi Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 273 @@ -943,7 +943,7 @@ Sobre Ghostfolio apps/client/src/app/components/header/header.component.html - 314 + 321 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -959,7 +959,7 @@ apps/client/src/app/components/header/header.component.html - 349 + 356 apps/client/src/app/pages/features/features-page.html @@ -975,7 +975,7 @@ apps/client/src/app/components/header/header.component.html - 396 + 403 apps/client/src/app/components/home-market/home-market.html @@ -1007,7 +1007,7 @@ apps/client/src/app/components/header/header.component.ts - 241 + 242 @@ -1015,7 +1015,7 @@ Vaya! Token de seguridad incorrecto. apps/client/src/app/components/header/header.component.ts - 256 + 257 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1127,7 +1127,7 @@ Iniciar sesión apps/client/src/app/components/header/header.component.html - 410 + 417 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2391,7 +2391,7 @@ Registro libs/common/src/lib/routes.ts - 100 + 102 @@ -2559,7 +2559,7 @@ Comenzar apps/client/src/app/components/header/header.component.html - 420 + 427 @@ -3543,7 +3543,7 @@ Mejorar plan apps/client/src/app/components/header/header.component.html - 187 + 191 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3827,7 +3827,7 @@ Renovar Plan apps/client/src/app/components/header/header.component.html - 185 + 189 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -5199,7 +5199,11 @@ kebab-case libs/common/src/lib/routes.ts - 99 + 100 + + + libs/common/src/lib/routes.ts + 101 @@ -7569,7 +7573,7 @@ Log out apps/client/src/app/components/header/header.component.html - 317 + 324 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 0c1251741..7389e81a1 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -1022,7 +1022,7 @@ apps/client/src/app/components/header/header.component.html - 225 + 229 @@ -1046,11 +1046,11 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 266 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1134,11 +1134,11 @@ Aperçu apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 246 @@ -1146,11 +1146,11 @@ Portefeuille apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 256 @@ -1158,11 +1158,11 @@ Contrôle Administrateur apps/client/src/app/components/header/header.component.html - 68 + 72 apps/client/src/app/components/header/header.component.html - 277 + 284 @@ -1174,11 +1174,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 86 apps/client/src/app/components/header/header.component.html - 289 + 296 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -1194,15 +1194,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 103 apps/client/src/app/components/header/header.component.html - 301 + 308 apps/client/src/app/components/header/header.component.html - 377 + 384 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -1218,11 +1218,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 121 apps/client/src/app/components/header/header.component.html - 362 + 369 @@ -1230,7 +1230,7 @@ Moi apps/client/src/app/components/header/header.component.html - 207 + 211 @@ -1238,7 +1238,7 @@ Mon Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 273 @@ -1246,7 +1246,7 @@ À propos de Ghostfolio apps/client/src/app/components/header/header.component.html - 314 + 321 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1262,7 +1262,7 @@ apps/client/src/app/components/header/header.component.html - 349 + 356 apps/client/src/app/pages/features/features-page.html @@ -1278,7 +1278,7 @@ apps/client/src/app/components/header/header.component.html - 396 + 403 apps/client/src/app/components/home-market/home-market.html @@ -1294,7 +1294,7 @@ Se connecter apps/client/src/app/components/header/header.component.html - 410 + 417 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1306,7 +1306,7 @@ Démarrer apps/client/src/app/components/header/header.component.html - 420 + 427 @@ -1318,7 +1318,7 @@ apps/client/src/app/components/header/header.component.ts - 241 + 242 @@ -1326,7 +1326,7 @@ Oups! Jeton de Sécurité Incorrect. apps/client/src/app/components/header/header.component.ts - 256 + 257 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -2870,7 +2870,7 @@ Enregistrement libs/common/src/lib/routes.ts - 100 + 102 @@ -3542,7 +3542,7 @@ Mettre à niveau l’Abonnement apps/client/src/app/components/header/header.component.html - 187 + 191 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3826,7 +3826,7 @@ Renouveler l’Abonnement apps/client/src/app/components/header/header.component.html - 185 + 189 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -5198,7 +5198,11 @@ kebab-case libs/common/src/lib/routes.ts - 99 + 100 + + + libs/common/src/lib/routes.ts + 101 @@ -7568,7 +7572,7 @@ Se déconnecter apps/client/src/app/components/header/header.component.html - 317 + 324 @@ -7590,7 +7594,7 @@ Demo user account has been synced. - Demo user account has been synced. + Le compte utilisateur de démonstration a été synchronisé. apps/client/src/app/components/admin-overview/admin-overview.component.ts 223 @@ -7598,7 +7602,7 @@ Sync Demo User Account - Sync Demo User Account + Synchroniser le compte utilisateur de démonstration apps/client/src/app/components/admin-overview/admin-overview.html 181 @@ -7606,7 +7610,7 @@ Emergency Fund: Set up - Emergency Fund: Set up + Fonds d’urgence : Mise en place apps/client/src/app/pages/i18n/i18n-page.html 14 @@ -7614,7 +7618,7 @@ No emergency fund has been set up - No emergency fund has been set up + Aucun fonds d’urgence n’a été mis en place apps/client/src/app/pages/i18n/i18n-page.html 15 @@ -7622,7 +7626,7 @@ An emergency fund has been set up - An emergency fund has been set up + Un fonds d’urgence a été mis en place apps/client/src/app/pages/i18n/i18n-page.html 18 @@ -7630,7 +7634,7 @@ Fee Ratio - Fee Ratio + Ratio de frais apps/client/src/app/pages/i18n/i18n-page.html 21 @@ -7638,7 +7642,7 @@ The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + Les frais dépassent ${thresholdMax}% de votre investissement initial (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 22 @@ -7646,7 +7650,7 @@ The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + Les frais ne dépassent pas ${thresholdMax}% de votre investissement initial (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 26 @@ -7654,7 +7658,7 @@ Name - Name + Nom libs/ui/src/lib/benchmark/benchmark.component.html 11 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index de5f4b82a..9d98d4da9 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -763,7 +763,7 @@ apps/client/src/app/components/header/header.component.html - 225 + 229 @@ -803,11 +803,11 @@ Panoramica apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 246 @@ -815,11 +815,11 @@ Portafoglio apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 256 @@ -835,11 +835,11 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 266 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -855,11 +855,11 @@ Controllo amministrativo apps/client/src/app/components/header/header.component.html - 68 + 72 apps/client/src/app/components/header/header.component.html - 277 + 284 @@ -871,11 +871,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 86 apps/client/src/app/components/header/header.component.html - 289 + 296 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -891,15 +891,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 103 apps/client/src/app/components/header/header.component.html - 301 + 308 apps/client/src/app/components/header/header.component.html - 377 + 384 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -915,11 +915,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 121 apps/client/src/app/components/header/header.component.html - 362 + 369 @@ -927,7 +927,7 @@ Io apps/client/src/app/components/header/header.component.html - 207 + 211 @@ -935,7 +935,7 @@ Il mio Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 273 @@ -943,7 +943,7 @@ Informazioni su Ghostfolio apps/client/src/app/components/header/header.component.html - 314 + 321 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -959,7 +959,7 @@ apps/client/src/app/components/header/header.component.html - 349 + 356 apps/client/src/app/pages/features/features-page.html @@ -975,7 +975,7 @@ apps/client/src/app/components/header/header.component.html - 396 + 403 apps/client/src/app/components/home-market/home-market.html @@ -1007,7 +1007,7 @@ apps/client/src/app/components/header/header.component.ts - 241 + 242 @@ -1015,7 +1015,7 @@ Ops! Token di sicurezza errato. apps/client/src/app/components/header/header.component.ts - 256 + 257 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1127,7 +1127,7 @@ Accedi apps/client/src/app/components/header/header.component.html - 410 + 417 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2391,7 +2391,7 @@ Iscrizione libs/common/src/lib/routes.ts - 100 + 102 @@ -2559,7 +2559,7 @@ Inizia apps/client/src/app/components/header/header.component.html - 420 + 427 @@ -3543,7 +3543,7 @@ Aggiorna il piano apps/client/src/app/components/header/header.component.html - 187 + 191 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3827,7 +3827,7 @@ Rinnova il piano apps/client/src/app/components/header/header.component.html - 185 + 189 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -5199,7 +5199,11 @@ kebab-case libs/common/src/lib/routes.ts - 99 + 100 + + + libs/common/src/lib/routes.ts + 101 @@ -7569,7 +7573,7 @@ Esci apps/client/src/app/components/header/header.component.html - 317 + 324 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 920754452..8a6dd3cf7 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -762,7 +762,7 @@ apps/client/src/app/components/header/header.component.html - 225 + 229 @@ -802,11 +802,11 @@ Overzicht apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 246 @@ -814,11 +814,11 @@ Portefeuille apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 256 @@ -834,11 +834,11 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 266 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -854,11 +854,11 @@ Beheer apps/client/src/app/components/header/header.component.html - 68 + 72 apps/client/src/app/components/header/header.component.html - 277 + 284 @@ -870,11 +870,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 86 apps/client/src/app/components/header/header.component.html - 289 + 296 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -890,15 +890,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 103 apps/client/src/app/components/header/header.component.html - 301 + 308 apps/client/src/app/components/header/header.component.html - 377 + 384 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -914,11 +914,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 121 apps/client/src/app/components/header/header.component.html - 362 + 369 @@ -926,7 +926,7 @@ Ik apps/client/src/app/components/header/header.component.html - 207 + 211 @@ -934,7 +934,7 @@ Mijn Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 273 @@ -942,7 +942,7 @@ Over Ghostfolio apps/client/src/app/components/header/header.component.html - 314 + 321 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -958,7 +958,7 @@ apps/client/src/app/components/header/header.component.html - 349 + 356 apps/client/src/app/pages/features/features-page.html @@ -974,7 +974,7 @@ apps/client/src/app/components/header/header.component.html - 396 + 403 apps/client/src/app/components/home-market/home-market.html @@ -1006,7 +1006,7 @@ apps/client/src/app/components/header/header.component.ts - 241 + 242 @@ -1014,7 +1014,7 @@ Oeps! Onjuiste beveiligingstoken. apps/client/src/app/components/header/header.component.ts - 256 + 257 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1126,7 +1126,7 @@ Aanmelden apps/client/src/app/components/header/header.component.html - 410 + 417 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2390,7 +2390,7 @@ Registratie libs/common/src/lib/routes.ts - 100 + 102 @@ -2558,7 +2558,7 @@ Aan de slag apps/client/src/app/components/header/header.component.html - 420 + 427 @@ -3542,7 +3542,7 @@ Abonnement uitbreiden apps/client/src/app/components/header/header.component.html - 187 + 191 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3826,7 +3826,7 @@ Abonnement Vernieuwen apps/client/src/app/components/header/header.component.html - 185 + 189 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -5198,7 +5198,11 @@ kebab-case libs/common/src/lib/routes.ts - 99 + 100 + + + libs/common/src/lib/routes.ts + 101 @@ -7568,7 +7572,7 @@ Uitloggen apps/client/src/app/components/header/header.component.html - 317 + 324 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 3a1aaa389..c063e7beb 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -70,7 +70,11 @@ kebab-case libs/common/src/lib/routes.ts - 99 + 100 + + + libs/common/src/lib/routes.ts + 101 @@ -127,7 +131,7 @@ apps/client/src/app/components/header/header.component.html - 396 + 403 apps/client/src/app/components/home-market/home-market.html @@ -147,11 +151,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 86 apps/client/src/app/components/header/header.component.html - 289 + 296 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -167,11 +171,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 121 apps/client/src/app/components/header/header.component.html - 362 + 369 @@ -291,7 +295,7 @@ apps/client/src/app/components/header/header.component.html - 349 + 356 apps/client/src/app/pages/features/features-page.html @@ -331,15 +335,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 103 apps/client/src/app/components/header/header.component.html - 301 + 308 apps/client/src/app/components/header/header.component.html - 377 + 384 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -1587,11 +1591,11 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 266 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1803,11 +1807,11 @@ Przegląd apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 246 @@ -1815,11 +1819,11 @@ Portfel apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 256 @@ -1827,11 +1831,11 @@ Nadzór Administratora apps/client/src/app/components/header/header.component.html - 68 + 72 apps/client/src/app/components/header/header.component.html - 277 + 284 @@ -1839,7 +1843,7 @@ Ja apps/client/src/app/components/header/header.component.html - 207 + 211 @@ -1851,7 +1855,7 @@ apps/client/src/app/components/header/header.component.html - 225 + 229 @@ -1859,7 +1863,7 @@ Moje Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 273 @@ -1867,7 +1871,7 @@ O Ghostfolio apps/client/src/app/components/header/header.component.html - 314 + 321 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1879,7 +1883,7 @@ Zaloguj się apps/client/src/app/components/header/header.component.html - 410 + 417 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1891,7 +1895,7 @@ Rozpocznij apps/client/src/app/components/header/header.component.html - 420 + 427 @@ -1903,7 +1907,7 @@ apps/client/src/app/components/header/header.component.ts - 241 + 242 @@ -1911,7 +1915,7 @@ Ups! Nieprawidłowy token bezpieczeństwa. apps/client/src/app/components/header/header.component.ts - 256 + 257 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -2539,7 +2543,7 @@ Ulepsz Plan apps/client/src/app/components/header/header.component.html - 187 + 191 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -4555,7 +4559,7 @@ Odnów Plan apps/client/src/app/components/header/header.component.html - 185 + 189 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -4627,7 +4631,7 @@ Rejestracja libs/common/src/lib/routes.ts - 100 + 102 @@ -7568,7 +7572,7 @@ Wyloguj się apps/client/src/app/components/header/header.component.html - 317 + 324 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index c31e11a33..167938e6a 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -894,7 +894,7 @@ apps/client/src/app/components/header/header.component.html - 225 + 229 @@ -918,11 +918,11 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 266 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1006,11 +1006,11 @@ Visão geral apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 246 @@ -1018,11 +1018,11 @@ Portefólio apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 256 @@ -1030,11 +1030,11 @@ Controlo Administrativo apps/client/src/app/components/header/header.component.html - 68 + 72 apps/client/src/app/components/header/header.component.html - 277 + 284 @@ -1046,11 +1046,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 86 apps/client/src/app/components/header/header.component.html - 289 + 296 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -1066,15 +1066,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 103 apps/client/src/app/components/header/header.component.html - 301 + 308 apps/client/src/app/components/header/header.component.html - 377 + 384 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -1090,11 +1090,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 121 apps/client/src/app/components/header/header.component.html - 362 + 369 @@ -1102,7 +1102,7 @@ Eu apps/client/src/app/components/header/header.component.html - 207 + 211 @@ -1110,7 +1110,7 @@ O meu Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 273 @@ -1118,7 +1118,7 @@ Sobre o Ghostfolio apps/client/src/app/components/header/header.component.html - 314 + 321 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1134,7 +1134,7 @@ apps/client/src/app/components/header/header.component.html - 349 + 356 apps/client/src/app/pages/features/features-page.html @@ -1150,7 +1150,7 @@ apps/client/src/app/components/header/header.component.html - 396 + 403 apps/client/src/app/components/home-market/home-market.html @@ -1166,7 +1166,7 @@ Iniciar sessão apps/client/src/app/components/header/header.component.html - 410 + 417 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1178,7 +1178,7 @@ Começar apps/client/src/app/components/header/header.component.html - 420 + 427 @@ -1190,7 +1190,7 @@ apps/client/src/app/components/header/header.component.ts - 241 + 242 @@ -1198,7 +1198,7 @@ Oops! Token de Segurança Incorreto. apps/client/src/app/components/header/header.component.ts - 256 + 257 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -2762,7 +2762,7 @@ Registo libs/common/src/lib/routes.ts - 100 + 102 @@ -3542,7 +3542,7 @@ Atualizar Plano apps/client/src/app/components/header/header.component.html - 187 + 191 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3826,7 +3826,7 @@ Renovar Plano apps/client/src/app/components/header/header.component.html - 185 + 189 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -5198,7 +5198,11 @@ kebab-case libs/common/src/lib/routes.ts - 99 + 100 + + + libs/common/src/lib/routes.ts + 101 @@ -7568,7 +7572,7 @@ Log out apps/client/src/app/components/header/header.component.html - 317 + 324 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index c478b56b7..f2db105b6 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -70,7 +70,11 @@ kebab-case libs/common/src/lib/routes.ts - 99 + 100 + + + libs/common/src/lib/routes.ts + 101 @@ -99,7 +103,7 @@ apps/client/src/app/components/header/header.component.html - 396 + 403 apps/client/src/app/components/home-market/home-market.html @@ -119,11 +123,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 86 apps/client/src/app/components/header/header.component.html - 289 + 296 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -139,11 +143,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 121 apps/client/src/app/components/header/header.component.html - 362 + 369 @@ -263,7 +267,7 @@ apps/client/src/app/components/header/header.component.html - 349 + 356 apps/client/src/app/pages/features/features-page.html @@ -303,15 +307,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 103 apps/client/src/app/components/header/header.component.html - 301 + 308 apps/client/src/app/components/header/header.component.html - 377 + 384 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -1495,11 +1499,11 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 266 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1559,7 +1563,7 @@ apps/client/src/app/components/header/header.component.html - 225 + 229 @@ -1667,11 +1671,11 @@ Genel Bakış apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 246 @@ -1679,11 +1683,11 @@ Portföy apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 256 @@ -1691,11 +1695,11 @@ Yönetici Kontrolü apps/client/src/app/components/header/header.component.html - 68 + 72 apps/client/src/app/components/header/header.component.html - 277 + 284 @@ -1703,7 +1707,7 @@ Ben apps/client/src/app/components/header/header.component.html - 207 + 211 @@ -1711,7 +1715,7 @@ Ghostfolio’m apps/client/src/app/components/header/header.component.html - 266 + 273 @@ -1719,7 +1723,7 @@ Ghostfolio Hakkında apps/client/src/app/components/header/header.component.html - 314 + 321 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1731,7 +1735,7 @@ Giriş apps/client/src/app/components/header/header.component.html - 410 + 417 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1743,7 +1747,7 @@ Haydi Başlayalım apps/client/src/app/components/header/header.component.html - 420 + 427 @@ -1755,7 +1759,7 @@ apps/client/src/app/components/header/header.component.ts - 241 + 242 @@ -1763,7 +1767,7 @@ Hay Allah! Güvenlik anahtarı yanlış. apps/client/src/app/components/header/header.component.ts - 256 + 257 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -2383,7 +2387,7 @@ Üyeliğinizi Yükseltin apps/client/src/app/components/header/header.component.html - 187 + 191 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -4031,7 +4035,7 @@ Aboneliği Yenile apps/client/src/app/components/header/header.component.html - 185 + 189 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -4103,7 +4107,7 @@ Kayıt libs/common/src/lib/routes.ts - 100 + 102 @@ -7568,7 +7572,7 @@ Oturumu kapat apps/client/src/app/components/header/header.component.html - 317 + 324 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index d11343e3d..013649efc 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -26,7 +26,7 @@ apps/client/src/app/components/header/header.component.ts - 241 + 242 @@ -74,7 +74,7 @@ apps/client/src/app/components/header/header.component.html - 396 + 403 apps/client/src/app/components/home-market/home-market.html @@ -94,11 +94,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 86 apps/client/src/app/components/header/header.component.html - 289 + 296 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -114,11 +114,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 121 apps/client/src/app/components/header/header.component.html - 362 + 369 @@ -238,7 +238,7 @@ apps/client/src/app/components/header/header.component.html - 349 + 356 apps/client/src/app/pages/features/features-page.html @@ -278,15 +278,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 103 apps/client/src/app/components/header/header.component.html - 301 + 308 apps/client/src/app/components/header/header.component.html - 377 + 384 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -434,7 +434,11 @@ kebab-case libs/common/src/lib/routes.ts - 99 + 100 + + + libs/common/src/lib/routes.ts + 101 @@ -1743,11 +1747,11 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 266 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1931,7 +1935,7 @@ apps/client/src/app/components/header/header.component.html - 225 + 229 @@ -2087,11 +2091,11 @@ Огляд apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 246 @@ -2099,11 +2103,11 @@ Портфель apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 256 @@ -2111,11 +2115,11 @@ Управління адміністратором apps/client/src/app/components/header/header.component.html - 68 + 72 apps/client/src/app/components/header/header.component.html - 277 + 284 @@ -2123,7 +2127,7 @@ Оновити план apps/client/src/app/components/header/header.component.html - 187 + 191 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -2143,7 +2147,7 @@ Поновити план apps/client/src/app/components/header/header.component.html - 185 + 189 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -2159,7 +2163,7 @@ Я apps/client/src/app/components/header/header.component.html - 207 + 211 @@ -2167,7 +2171,7 @@ Мій Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 273 @@ -2175,7 +2179,7 @@ Про Ghostfolio apps/client/src/app/components/header/header.component.html - 314 + 321 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2187,7 +2191,7 @@ Увійти apps/client/src/app/components/header/header.component.html - 410 + 417 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2199,7 +2203,7 @@ Почати apps/client/src/app/components/header/header.component.html - 420 + 427 @@ -2207,7 +2211,7 @@ Упс! Неправильний Секретний Токен. apps/client/src/app/components/header/header.component.ts - 256 + 257 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -5384,7 +5388,7 @@ Реєстрація libs/common/src/lib/routes.ts - 100 + 102 @@ -7568,7 +7572,7 @@ Log out apps/client/src/app/components/header/header.component.html - 317 + 324 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index a67647667..f9d89c9ca 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -63,7 +63,11 @@ kebab-case libs/common/src/lib/routes.ts - 99 + 100 + + + libs/common/src/lib/routes.ts + 101 @@ -115,7 +119,7 @@ apps/client/src/app/components/header/header.component.html - 396 + 403 apps/client/src/app/components/home-market/home-market.html @@ -134,11 +138,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 86 apps/client/src/app/components/header/header.component.html - 289 + 296 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -153,11 +157,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 121 apps/client/src/app/components/header/header.component.html - 362 + 369 @@ -274,7 +278,7 @@ apps/client/src/app/components/header/header.component.html - 349 + 356 apps/client/src/app/pages/features/features-page.html @@ -311,15 +315,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 103 apps/client/src/app/components/header/header.component.html - 301 + 308 apps/client/src/app/components/header/header.component.html - 377 + 384 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -1509,11 +1513,11 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 266 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1702,40 +1706,40 @@ Overview apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 246 Portfolio apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 256 Admin Control apps/client/src/app/components/header/header.component.html - 68 + 72 apps/client/src/app/components/header/header.component.html - 277 + 284 Me apps/client/src/app/components/header/header.component.html - 207 + 211 @@ -1746,21 +1750,21 @@ apps/client/src/app/components/header/header.component.html - 225 + 229 My Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 273 About Ghostfolio apps/client/src/app/components/header/header.component.html - 314 + 321 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1771,7 +1775,7 @@ Sign in apps/client/src/app/components/header/header.component.html - 410 + 417 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1782,7 +1786,7 @@ Get started apps/client/src/app/components/header/header.component.html - 420 + 427 @@ -1793,14 +1797,14 @@ apps/client/src/app/components/header/header.component.ts - 241 + 242 Oops! Incorrect Security Token. apps/client/src/app/components/header/header.component.ts - 256 + 257 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -2368,7 +2372,7 @@ Upgrade Plan apps/client/src/app/components/header/header.component.html - 187 + 191 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -4170,7 +4174,7 @@ Renew Plan apps/client/src/app/components/header/header.component.html - 185 + 189 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -4234,7 +4238,7 @@ Registration libs/common/src/lib/routes.ts - 100 + 102 @@ -6804,7 +6808,7 @@ Log out apps/client/src/app/components/header/header.component.html - 317 + 324 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 6fe2ecc48..743926cd4 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -71,7 +71,11 @@ kebab-case libs/common/src/lib/routes.ts - 99 + 100 + + + libs/common/src/lib/routes.ts + 101 @@ -128,7 +132,7 @@ apps/client/src/app/components/header/header.component.html - 396 + 403 apps/client/src/app/components/home-market/home-market.html @@ -148,11 +152,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 86 apps/client/src/app/components/header/header.component.html - 289 + 296 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -168,11 +172,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 121 apps/client/src/app/components/header/header.component.html - 362 + 369 @@ -292,7 +296,7 @@ apps/client/src/app/components/header/header.component.html - 349 + 356 apps/client/src/app/pages/features/features-page.html @@ -332,15 +336,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 103 apps/client/src/app/components/header/header.component.html - 301 + 308 apps/client/src/app/components/header/header.component.html - 377 + 384 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -1596,11 +1600,11 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 266 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1812,11 +1816,11 @@ 概述 apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 246 @@ -1824,11 +1828,11 @@ 投资组合 apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 256 @@ -1836,11 +1840,11 @@ 管理控制 apps/client/src/app/components/header/header.component.html - 68 + 72 apps/client/src/app/components/header/header.component.html - 277 + 284 @@ -1848,7 +1852,7 @@ apps/client/src/app/components/header/header.component.html - 207 + 211 @@ -1860,7 +1864,7 @@ apps/client/src/app/components/header/header.component.html - 225 + 229 @@ -1868,7 +1872,7 @@ 我的 Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 273 @@ -1876,7 +1880,7 @@ 关于 Ghostfolio apps/client/src/app/components/header/header.component.html - 314 + 321 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1888,7 +1892,7 @@ 登入 apps/client/src/app/components/header/header.component.html - 410 + 417 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1900,7 +1904,7 @@ 开始使用 apps/client/src/app/components/header/header.component.html - 420 + 427 @@ -1912,7 +1916,7 @@ apps/client/src/app/components/header/header.component.ts - 241 + 242 @@ -1920,7 +1924,7 @@ 哎呀!安全令牌不正确。 apps/client/src/app/components/header/header.component.ts - 256 + 257 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -2548,7 +2552,7 @@ 升级计划 apps/client/src/app/components/header/header.component.html - 187 + 191 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -4564,7 +4568,7 @@ 更新计划 apps/client/src/app/components/header/header.component.html - 185 + 189 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -4636,7 +4640,7 @@ 注册 libs/common/src/lib/routes.ts - 100 + 102 @@ -7569,7 +7573,7 @@ 登出 apps/client/src/app/components/header/header.component.html - 317 + 324 diff --git a/libs/common/src/lib/routes.ts b/libs/common/src/lib/routes.ts index c85ade1d3..a63778693 100644 --- a/libs/common/src/lib/routes.ts +++ b/libs/common/src/lib/routes.ts @@ -101,10 +101,12 @@ export const internalRoutes: Record = { export const publicRoutes = { openStartup: { path: 'open', + routerLink: ['/open'], title: 'Open Startup' }, register: { path: $localize`:kebab-case:register`, + routerLink: ['/' + $localize`:kebab-case:register`], title: $localize`Registration` } }; diff --git a/package-lock.json b/package-lock.json index 58aa36721..f32b2412e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.168.0", + "version": "2.169.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.168.0", + "version": "2.169.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index c3ed868f8..86cadad72 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.168.0", + "version": "2.169.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio",