From af79888cd6cdd3849075b9f58395cf42d79aa928 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 18 May 2025 11:54:53 +0200 Subject: [PATCH 001/294] Feature/add asset profile count to data providers management of admin control (#4707) * Extend admin settings columns * assetProfileCount * status * Update changelog --- CHANGELOG.md | 1 + .../admin-platform.component.html | 201 ++++++++---------- .../admin-settings.component.html | 42 +++- .../admin-settings.component.scss | 12 ++ .../admin-settings.component.ts | 2 +- .../admin-settings/admin-settings.module.ts | 2 + .../admin-tag/admin-tag.component.html | 187 ++++++++-------- 7 files changed, 223 insertions(+), 224 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f509061ee..e140bef44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Harmonized the data providers management style of the admin control panel +- Extended the data providers management of the admin control panel by the asset profile count - Restricted the permissions of the demo user - Renamed `Order` to `activities` in the `User` database schema - Improved the language localization for Catalan (`ca`) diff --git a/apps/client/src/app/components/admin-platform/admin-platform.component.html b/apps/client/src/app/components/admin-platform/admin-platform.component.html index c71594e45..47fee3c8a 100644 --- a/apps/client/src/app/components/admin-platform/admin-platform.component.html +++ b/apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1,115 +1,94 @@ -
-
-
- - - - - + +
- Name - - @if (element.url) { - - } - {{ element.name }} -
+ + + - - - - + + + + - - - - + + + + - - - - + + + + - - -
+ Name + + @if (element.url) { + + } + {{ element.name }} + - Url - - {{ element.url }} - + Url + + {{ element.url }} + - Accounts - - {{ element.accountCount }} - + Accounts + + {{ element.accountCount }} + - - - -
- -
-
+ + + +
+ +
+
-
-
-
+ + + 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 997d34aa5..2dcdefdd0 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 @@ -38,14 +38,6 @@ }} -
- - {{ ghostfolioApiStatus.dailyRequests }} - of - {{ ghostfolioApiStatus.dailyRequestsMax }} - daily requests - -
} } @else { {{ element.name }} @@ -55,6 +47,40 @@ + + + Asset Profiles + + + {{ element.assetProfileCount }} + + + + + + + @if (isGhostfolioDataProvider(element)) { + @if (isGhostfolioApiKeyValid === true) { + + + {{ ghostfolioApiStatus.dailyRequests }} + of + {{ ghostfolioApiStatus.dailyRequestsMax }} + daily requests + + } + } + + + 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 5d4e87f30..c08ba95bc 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 @@ -1,3 +1,15 @@ :host { display: block; + + .mat-mdc-progress-bar { + --mdc-linear-progress-active-indicator-height: 0.5rem; + --mdc-linear-progress-track-height: 0.5rem; + border-radius: 0.25rem; + + ::ng-deep { + .mdc-linear-progress__buffer-bar { + background-color: rgb(var(--palette-background-unselected-chip)); + } + } + } } diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.ts b/apps/client/src/app/components/admin-settings/admin-settings.component.ts index f18e49d10..5c071c60c 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.ts +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.ts @@ -39,7 +39,7 @@ import { GhostfolioPremiumApiDialogParams } from './ghostfolio-premium-api-dialo export class AdminSettingsComponent implements OnDestroy, OnInit { public dataSource = new MatTableDataSource(); public defaultDateFormat: string; - public displayedColumns = ['name', 'actions']; + public displayedColumns = ['name', 'assetProfileCount', 'status', 'actions']; public ghostfolioApiStatus: DataProviderGhostfolioStatusResponse; public isGhostfolioApiKeyValid: boolean; public isLoading = false; diff --git a/apps/client/src/app/components/admin-settings/admin-settings.module.ts b/apps/client/src/app/components/admin-settings/admin-settings.module.ts index c5148f681..706f20a87 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.module.ts +++ b/apps/client/src/app/components/admin-settings/admin-settings.module.ts @@ -7,6 +7,7 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatMenuModule } from '@angular/material/menu'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatTableModule } from '@angular/material/table'; import { RouterModule } from '@angular/router'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; @@ -23,6 +24,7 @@ import { AdminSettingsComponent } from './admin-settings.component'; GfPremiumIndicatorComponent, MatButtonModule, MatMenuModule, + MatProgressBarModule, MatTableModule, NgxSkeletonLoaderModule, RouterModule diff --git a/apps/client/src/app/components/admin-tag/admin-tag.component.html b/apps/client/src/app/components/admin-tag/admin-tag.component.html index f69579ab8..5979d2778 100644 --- a/apps/client/src/app/components/admin-tag/admin-tag.component.html +++ b/apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -1,108 +1,87 @@ -
-
-
- - - - - - + +
- Name - - {{ element.name }} -
+ + + + - - - - + + + + - - - - + + + + - - - - + + + + - - -
+ Name + + {{ element.name }} + - User - - {{ element.userId }} - + User + + {{ element.userId }} + - Activities - - {{ element.activityCount }} - + Activities + + {{ element.activityCount }} + - - - -
- -
-
+ + + +
+ +
+
-
-
-
+ + + From 273ec923165dc4886798aa3030cb0430682e30c9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 18 May 2025 20:14:36 +0200 Subject: [PATCH 002/294] Feature/update locales (#4724) Co-authored-by: github-actions[bot] --- apps/client/src/locales/messages.ca.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.de.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.es.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.fr.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.it.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.nl.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.pl.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.pt.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.tr.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.uk.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.zh.xlf | 44 ++++++++++++++----------- 12 files changed, 288 insertions(+), 240 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 78a341ad7..d0f37ead8 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -959,7 +959,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -1051,7 +1051,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1063,7 +1063,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -1203,11 +1203,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1235,11 +1235,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1907,7 +1907,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -2126,12 +2126,12 @@ 174 - + Add Platform Afegeix Plataforma apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -2139,7 +2139,7 @@ Comptes apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -2191,7 +2191,7 @@ Plataformes apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -2199,7 +2199,7 @@ Etiquetes apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2210,12 +2210,12 @@ 16 - + Add Tag Afegir Etiqueta apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -2443,7 +2443,7 @@ Usuari apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -6081,6 +6081,10 @@ Asset Profiles Asset Profiles + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -7283,7 +7287,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7389,7 +7393,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7397,7 +7401,7 @@ daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7405,7 +7409,7 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index c73acd8e9..7671b9e32 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -102,7 +102,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -138,7 +138,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -150,7 +150,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -258,11 +258,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -290,11 +290,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -404,6 +404,10 @@ Asset Profiles Anlageprofile + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -774,7 +778,7 @@ Benutzer apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -842,7 +846,7 @@ Konten apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1334,7 +1338,7 @@ Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -3946,7 +3950,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3966,7 +3970,7 @@ Plattformen apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -4001,12 +4005,12 @@ 47 - + Add Platform Plattform hinzufügen apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -5846,12 +5850,12 @@ 49 - + Add Tag Tag hinzufügen apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -7307,7 +7311,7 @@ API-Schlüssel setzen apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7413,7 +7417,7 @@ von apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7421,7 +7425,7 @@ täglichen Anfragen apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7429,7 +7433,7 @@ API-Schlüssel löschen apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index de9f07c8d..535415181 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -103,7 +103,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -139,7 +139,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -151,7 +151,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -259,11 +259,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -291,11 +291,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -405,6 +405,10 @@ Asset Profiles Perfiles de activos. + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -759,7 +763,7 @@ Usuario apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -827,7 +831,7 @@ Cuentas apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1319,7 +1323,7 @@ Etiquetas apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -3923,7 +3927,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3943,7 +3947,7 @@ Platforms apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -3978,12 +3982,12 @@ 47 - + Add Platform Add Platform apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -5823,12 +5827,12 @@ 49 - + Add Tag Add Tag apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -7284,7 +7288,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7390,7 +7394,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7398,7 +7402,7 @@ daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7406,7 +7410,7 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 5077a4010..becc95d5d 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -110,7 +110,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -146,7 +146,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -158,7 +158,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -314,11 +314,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -346,11 +346,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -460,6 +460,10 @@ Asset Profiles Profil d’Actifs + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -926,7 +930,7 @@ Étiquettes apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1018,7 +1022,7 @@ Utilisateur apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -1038,7 +1042,7 @@ Comptes apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -3922,7 +3926,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3942,7 +3946,7 @@ Platformes apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -3977,12 +3981,12 @@ 47 - + Add Platform Ajoutez une Plateforme apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -5822,12 +5826,12 @@ 49 - + Add Tag Ajouter un Tag apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -7283,7 +7287,7 @@ Définir clé API apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7389,7 +7393,7 @@ sur apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7397,7 +7401,7 @@ requêtes journalières apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7405,7 +7409,7 @@ Retirer la clé API apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 57a3b7162..a3605173f 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -103,7 +103,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -139,7 +139,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -151,7 +151,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -259,11 +259,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -291,11 +291,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -405,6 +405,10 @@ Asset Profiles Profilo dell’asset + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -759,7 +763,7 @@ Utente apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -827,7 +831,7 @@ Account apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1319,7 +1323,7 @@ Tag apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -3923,7 +3927,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3943,7 +3947,7 @@ Piattaforme apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -3978,12 +3982,12 @@ 47 - + Add Platform Aggiungi la piattaforma apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -5823,12 +5827,12 @@ 49 - + Add Tag Aggiungi un Tag apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -7284,7 +7288,7 @@ Imposta API Key apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7390,7 +7394,7 @@ di apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7398,7 +7402,7 @@ richieste giornaliere apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7406,7 +7410,7 @@ Rimuovi API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 1099d5235..f57b34e88 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -102,7 +102,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -138,7 +138,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -150,7 +150,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -258,11 +258,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -290,11 +290,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -404,6 +404,10 @@ Asset Profiles Activa Profiel + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -758,7 +762,7 @@ Gebruiker apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -826,7 +830,7 @@ Rekeningen apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1318,7 +1322,7 @@ Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -3922,7 +3926,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3942,7 +3946,7 @@ Platforms apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -3977,12 +3981,12 @@ 47 - + Add Platform Platform Toevoegen apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -5822,12 +5826,12 @@ 49 - + Add Tag Label Toevoegen apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -7283,7 +7287,7 @@ API-sleutel instellen apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7389,7 +7393,7 @@ van apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7397,7 +7401,7 @@ dagelijkse verzoeken apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7405,7 +7409,7 @@ Verwijder API-sleutel apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index c62b42f69..40ca77ad9 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -915,7 +915,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -979,7 +979,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -991,7 +991,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -1131,11 +1131,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1163,11 +1163,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1938,12 +1938,12 @@ 174 - + Add Platform Dodaj Platformę apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -1959,7 +1959,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1971,7 +1971,7 @@ Konta apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -2023,7 +2023,7 @@ Platformy apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -2031,7 +2031,7 @@ Tagi apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2042,12 +2042,12 @@ 16 - + Add Tag Dodaj Tag apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -2239,7 +2239,7 @@ Użytkownik apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -5545,6 +5545,10 @@ Asset Profiles Profile aktywów + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -7283,7 +7287,7 @@ Skonfiguruj klucz API apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7389,7 +7393,7 @@ z apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7397,7 +7401,7 @@ codzienne żądania apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7405,7 +7409,7 @@ Usuń klucz API apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 535aa5acf..a6a4f98e2 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -110,7 +110,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -146,7 +146,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -158,7 +158,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -314,11 +314,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -346,11 +346,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -460,6 +460,10 @@ Asset Profiles Perfil de Ativos + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -890,7 +894,7 @@ Utilizador apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -910,7 +914,7 @@ Contas apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1622,7 +1626,7 @@ Marcadores apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -3922,7 +3926,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3942,7 +3946,7 @@ Plataformas apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -3977,12 +3981,12 @@ 47 - + Add Platform Adicionar Plataforma apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -5822,12 +5826,12 @@ 49 - + Add Tag Add Tag apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -7283,7 +7287,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7389,7 +7393,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7397,7 +7401,7 @@ daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7405,7 +7409,7 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 400bed697..139b727fe 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -903,7 +903,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -939,7 +939,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -951,7 +951,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -1091,11 +1091,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1123,11 +1123,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1237,6 +1237,10 @@ Asset Profiles Varlık Profili + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -1763,7 +1767,7 @@ Etiketler apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1842,12 +1846,12 @@ 174 - + Add Platform Platform Ekle apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -1863,7 +1867,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1875,7 +1879,7 @@ Hesaplar apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1927,7 +1931,7 @@ Platformlar apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -1943,7 +1947,7 @@ Kullanıcı apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -5822,12 +5826,12 @@ 37 - + Add Tag Etiket Ekleyiniz apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -7283,7 +7287,7 @@ API anahtarını ayarla apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7389,7 +7393,7 @@ ın apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7397,7 +7401,7 @@ günlük istekler apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7405,7 +7409,7 @@ API anahtarını kaldır apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 56b5ba426..b095cbbff 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -975,7 +975,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -1067,7 +1067,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1079,7 +1079,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -1219,11 +1219,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1251,11 +1251,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1791,7 +1791,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -2114,12 +2114,12 @@ 174 - + Add Platform Додати платформу apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -2127,7 +2127,7 @@ Рахунки apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -2199,7 +2199,7 @@ з apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -2207,7 +2207,7 @@ щоденних запитів apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -2215,7 +2215,7 @@ Вилучити ключ API apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 @@ -2223,7 +2223,7 @@ Встановити ключ API apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -2231,7 +2231,7 @@ Платформи apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -2239,7 +2239,7 @@ Теги apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2306,12 +2306,12 @@ 39 - + Add Tag Додати тег apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -2319,7 +2319,7 @@ Користувач apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -6703,6 +6703,10 @@ Asset Profiles Профілі активів + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 70458fffd..e769e7152 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -883,7 +883,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -951,7 +951,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -963,7 +963,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -1099,11 +1099,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1130,11 +1130,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1863,11 +1863,11 @@ 174 - + Add Platform apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -1882,7 +1882,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1893,7 +1893,7 @@ Accounts apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1941,14 +1941,14 @@ Platforms apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1959,11 +1959,11 @@ 16 - + Add Tag apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -2134,7 +2134,7 @@ User apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -5129,6 +5129,10 @@ Asset Profiles + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -6623,7 +6627,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -6725,7 +6729,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -6746,14 +6750,14 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 12cbd3ed0..e57fec28f 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -916,7 +916,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -988,7 +988,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1000,7 +1000,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -1140,11 +1140,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1172,11 +1172,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1947,12 +1947,12 @@ 174 - + Add Platform 添加平台 apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -1968,7 +1968,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1980,7 +1980,7 @@ 帐户 apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -2032,7 +2032,7 @@ 平台 apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -2040,7 +2040,7 @@ 标签 apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2051,12 +2051,12 @@ 16 - + Add Tag 添加标签 apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -2248,7 +2248,7 @@ 用户 apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -5586,6 +5586,10 @@ Asset Profiles 资产概况 + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -7284,7 +7288,7 @@ 设置 API 密钥 apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7390,7 +7394,7 @@ apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7398,7 +7402,7 @@ 每日请求 apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7406,7 +7410,7 @@ 移除 API 密钥 apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 From 57c43e5815b4b26f4769a94cc480d30125d1a8c6 Mon Sep 17 00:00:00 2001 From: Gadi Cohen Date: Sun, 18 May 2025 19:45:00 +0100 Subject: [PATCH 003/294] Feature/upgrade yahoo-finance2 to version 3.3.2 (#4721) * Upgrade yahoo-finance2 to version 3.3.2 * Update changelog --- CHANGELOG.md | 2 +- package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e140bef44..87d833bf7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,7 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for Italian (`it`) - Upgraded `countup.js` from version `2.8.0` to `2.8.2` - Upgraded `nestjs` from version `10.4.15` to `11.0.12` -- Upgraded `yahoo-finance2` from version `2.11.3` to `3.3.1` +- Upgraded `yahoo-finance2` from version `2.11.3` to `3.3.2` ### Fixed diff --git a/package-lock.json b/package-lock.json index b2e0f3b9f..bf48e51fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -89,7 +89,7 @@ "svgmap": "2.12.2", "twitter-api-v2": "1.14.2", "uuid": "11.1.0", - "yahoo-finance2": "3.3.1", + "yahoo-finance2": "3.3.2", "zone.js": "0.15.0" }, "devDependencies": { @@ -36091,9 +36091,9 @@ } }, "node_modules/yahoo-finance2": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/yahoo-finance2/-/yahoo-finance2-3.3.1.tgz", - "integrity": "sha512-hBXdhieq897OoAu2HxA4/Ca+XrYtPFLTtGzPRW5qKCd+nX1ahHID3tmvxVBBlDTeOesdp0wjO5uGJS+o4cnEMw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/yahoo-finance2/-/yahoo-finance2-3.3.2.tgz", + "integrity": "sha512-KJLrcEwG+PFxe7L2iXe1R9icceFChENA+2EdFo/6GYIFVJR4YJD3MrjIsAYfGuzK531EjDLyT4KSlpIkaKhhgw==", "license": "MIT", "dependencies": { "@deno/shim-deno": "~0.18.0", diff --git a/package.json b/package.json index a995a8a47..822f025b1 100644 --- a/package.json +++ b/package.json @@ -135,7 +135,7 @@ "svgmap": "2.12.2", "twitter-api-v2": "1.14.2", "uuid": "11.1.0", - "yahoo-finance2": "3.3.1", + "yahoo-finance2": "3.3.2", "zone.js": "0.15.0" }, "devDependencies": { From a0f377e8eb0886226415bf645e9f5a8b00411f80 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 19 May 2025 23:27:52 +0200 Subject: [PATCH 004/294] Feature/refactor ordersCount to activityCount (#4688) * Refactor ordersCount to activityCount --- apps/api/src/app/portfolio/portfolio.service.ts | 16 ++++++++-------- apps/api/src/helper/object.helper.spec.ts | 4 ++-- .../portfolio-summary.component.html | 6 +++--- .../interfaces/portfolio-summary.interface.ts | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index c580ce149..7e373c4cc 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -1249,7 +1249,7 @@ export class PortfolioService { const rules: PortfolioReportResponse['rules'] = { accountClusterRisk: - summary.ordersCount > 0 + summary.activityCount > 0 ? await this.rulesService.evaluate( [ new AccountClusterRiskCurrentInvestment( @@ -1265,7 +1265,7 @@ export class PortfolioService { ) : undefined, assetClassClusterRisk: - summary.ordersCount > 0 + summary.activityCount > 0 ? await this.rulesService.evaluate( [ new AssetClassClusterRiskEquity( @@ -1281,7 +1281,7 @@ export class PortfolioService { ) : undefined, currencyClusterRisk: - summary.ordersCount > 0 + summary.activityCount > 0 ? await this.rulesService.evaluate( [ new CurrencyClusterRiskBaseCurrencyCurrentInvestment( @@ -1297,7 +1297,7 @@ export class PortfolioService { ) : undefined, economicMarketClusterRisk: - summary.ordersCount > 0 + summary.activityCount > 0 ? await this.rulesService.evaluate( [ new EconomicMarketClusterRiskDevelopedMarkets( @@ -1338,7 +1338,7 @@ export class PortfolioService { userSettings ), regionalMarketClusterRisk: - summary.ordersCount > 0 + summary.activityCount > 0 ? await this.rulesService.evaluate( [ new RegionalMarketClusterRiskAsiaPacific( @@ -1981,6 +1981,9 @@ export class PortfolioService { netPerformanceWithCurrencyEffect, totalBuy, totalSell, + activityCount: activities.filter(({ type }) => { + return ['BUY', 'SELL'].includes(type); + }).length, committedFunds: committedFunds.toNumber(), currentValueInBaseCurrency: currentValueInBaseCurrency.toNumber(), dividendInBaseCurrency: dividendInBaseCurrency.toNumber(), @@ -2008,9 +2011,6 @@ export class PortfolioService { interest: interest.toNumber(), items: valuables.toNumber(), liabilities: liabilities.toNumber(), - ordersCount: activities.filter(({ type }) => { - return ['BUY', 'SELL'].includes(type); - }).length, totalInvestment: totalInvestment.toNumber(), totalValueInBaseCurrency: netWorth }; diff --git a/apps/api/src/helper/object.helper.spec.ts b/apps/api/src/helper/object.helper.spec.ts index b0370fa3f..d7caf9bc9 100644 --- a/apps/api/src/helper/object.helper.spec.ts +++ b/apps/api/src/helper/object.helper.spec.ts @@ -1515,6 +1515,7 @@ describe('redactAttributes', () => { } }, summary: { + activityCount: 29, annualizedPerformancePercent: 0.16690880197786, annualizedPerformancePercentWithCurrencyEffect: 0.1694019484552876, cash: null, @@ -1538,7 +1539,6 @@ describe('redactAttributes', () => { interest: null, items: null, liabilities: null, - ordersCount: 29, totalInvestment: null, totalValueInBaseCurrency: null, currentNetWorth: null @@ -3018,6 +3018,7 @@ describe('redactAttributes', () => { } }, summary: { + activityCount: 29, annualizedPerformancePercent: 0.16690880197786, annualizedPerformancePercentWithCurrencyEffect: 0.1694019484552876, cash: null, @@ -3041,7 +3042,6 @@ describe('redactAttributes', () => { interest: null, items: null, liabilities: null, - ordersCount: 29, totalInvestment: null, totalValueInBaseCurrency: null, currentNetWorth: null diff --git a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html index 1a52bd646..265904b88 100644 --- a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html +++ b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -7,11 +7,11 @@
- {{ summary?.ordersCount }} - {summary?.ordersCount, plural, + {{ summary?.activityCount }} + {summary?.activityCount, plural, =1 {activity} other {activities} } diff --git a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts index 42496b228..4030b9001 100644 --- a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts @@ -1,6 +1,7 @@ import { PortfolioPerformance } from './portfolio-performance.interface'; export interface PortfolioSummary extends PortfolioPerformance { + activityCount: number; annualizedPerformancePercent: number; annualizedPerformancePercentWithCurrencyEffect: number; cash: number; @@ -21,7 +22,6 @@ export interface PortfolioSummary extends PortfolioPerformance { interest: number; items: number; liabilities: number; - ordersCount: number; totalBuy: number; totalSell: number; totalValueInBaseCurrency?: number; From c2c628e77c2d41428a5bf5d4d9f9ca99e3975ec3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 19 May 2025 22:46:41 +0100 Subject: [PATCH 005/294] Feature/update locales (#4726) Co-authored-by: github-actions[bot] --- apps/client/src/locales/messages.ca.xlf | 2 +- apps/client/src/locales/messages.de.xlf | 2 +- apps/client/src/locales/messages.es.xlf | 2 +- apps/client/src/locales/messages.fr.xlf | 2 +- apps/client/src/locales/messages.it.xlf | 2 +- apps/client/src/locales/messages.nl.xlf | 2 +- apps/client/src/locales/messages.pl.xlf | 2 +- apps/client/src/locales/messages.pt.xlf | 2 +- apps/client/src/locales/messages.tr.xlf | 2 +- apps/client/src/locales/messages.uk.xlf | 2 +- apps/client/src/locales/messages.xlf | 2 +- apps/client/src/locales/messages.zh.xlf | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index d0f37ead8..4e4e7e62d 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -2902,7 +2902,7 @@ 3 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {activity} other {activities}} diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 7671b9e32..f61c91c7e 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -6586,7 +6586,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {Aktivität} other {Aktivitäten}} diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 535415181..49af34834 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -6563,7 +6563,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {activity} other {activities}} diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index becc95d5d..946533d94 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -6562,7 +6562,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {activity} autres {activities}} diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index a3605173f..37c66bfd8 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -6563,7 +6563,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {attività} other {attività}} diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index f57b34e88..ca56dcc82 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -6562,7 +6562,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {activiteit} other {activiteiten}} diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 40ca77ad9..ab45fe323 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -6562,7 +6562,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {activity} other {activities}} diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index a6a4f98e2..3755a9248 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -6562,7 +6562,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {activity} other {activities}} diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 139b727fe..2064777a6 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -6562,7 +6562,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {Etkinlik} other {Etkinlikler}} diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index b095cbbff..5f768b379 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -2982,7 +2982,7 @@ 3 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {дія} other {дій}} diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index e769e7152..472529903 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -6000,7 +6000,7 @@ 8 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index e57fec28f..1697a5197 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -6563,7 +6563,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {活动} other {活动}} From 70a4697f54bc86958d220496647e0976e98472af Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 20 May 2025 08:22:49 +0100 Subject: [PATCH 006/294] Feature/remove deprecated endpoints in admin controller (#4687) * Remove deprecated endpoints * Update changelog --- CHANGELOG.md | 3 + apps/api/src/app/admin/admin.controller.ts | 70 ---------------------- 2 files changed, 3 insertions(+), 70 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87d833bf7..5b9c056dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Extended the data providers management of the admin control panel by the asset profile count - Restricted the permissions of the demo user - Renamed `Order` to `activities` in the `User` database schema +- Removed the deprecated endpoint `GET api/v1/admin/market-data/:dataSource/:symbol` +- Removed the deprecated endpoint `POST api/v1/admin/market-data/:dataSource/:symbol` +- Removed the deprecated endpoint `PUT api/v1/admin/market-data/:dataSource/:symbol/:dateString` - Improved the language localization for Catalan (`ca`) - Improved the language localization for Chinese (`zh`) - Improved the language localization for Dutch (`nl`) diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index d8507bbb0..736f6da33 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -3,7 +3,6 @@ import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard' import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { ManualService } from '@ghostfolio/api/services/data-provider/manual/manual.service'; -import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { PropertyDto } from '@ghostfolio/api/services/property/property.dto'; import { DataGatheringService } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.service'; import { @@ -16,7 +15,6 @@ import { getAssetProfileIdentifier } from '@ghostfolio/common/helper'; import { AdminData, AdminMarketData, - AdminMarketDataDetails, AdminUsers, EnhancedSymbolProfile } from '@ghostfolio/common/interfaces'; @@ -50,8 +48,6 @@ import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { AdminService } from './admin.service'; import { UpdateAssetProfileDto } from './update-asset-profile.dto'; -import { UpdateBulkMarketDataDto } from './update-bulk-market-data.dto'; -import { UpdateMarketDataDto } from './update-market-data.dto'; @Controller('admin') export class AdminController { @@ -60,7 +56,6 @@ export class AdminController { private readonly apiService: ApiService, private readonly dataGatheringService: DataGatheringService, private readonly manualService: ManualService, - private readonly marketDataService: MarketDataService, @Inject(REQUEST) private readonly request: RequestWithUser ) {} @@ -214,19 +209,6 @@ export class AdminController { }); } - /** - * @deprecated - */ - @Get('market-data/:dataSource/:symbol') - @HasPermission(permissions.accessAdminControl) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async getMarketDataBySymbol( - @Param('dataSource') dataSource: DataSource, - @Param('symbol') symbol: string - ): Promise { - return this.adminService.getMarketDataBySymbol({ dataSource, symbol }); - } - @HasPermission(permissions.accessAdminControl) @Post('market-data/:dataSource/:symbol/test') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) @@ -253,58 +235,6 @@ export class AdminController { } } - /** - * @deprecated - */ - @HasPermission(permissions.accessAdminControl) - @Post('market-data/:dataSource/:symbol') - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async updateMarketData( - @Body() data: UpdateBulkMarketDataDto, - @Param('dataSource') dataSource: DataSource, - @Param('symbol') symbol: string - ) { - const dataBulkUpdate: Prisma.MarketDataUpdateInput[] = data.marketData.map( - ({ date, marketPrice }) => ({ - dataSource, - marketPrice, - symbol, - date: parseISO(date), - state: 'CLOSE' - }) - ); - - return this.marketDataService.updateMany({ - data: dataBulkUpdate - }); - } - - /** - * @deprecated - */ - @HasPermission(permissions.accessAdminControl) - @Put('market-data/:dataSource/:symbol/:dateString') - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async update( - @Param('dataSource') dataSource: DataSource, - @Param('dateString') dateString: string, - @Param('symbol') symbol: string, - @Body() data: UpdateMarketDataDto - ) { - const date = parseISO(dateString); - - return this.marketDataService.updateMarketData({ - data: { marketPrice: data.marketPrice, state: 'CLOSE' }, - where: { - dataSource_date_symbol: { - dataSource, - date, - symbol - } - } - }); - } - @HasPermission(permissions.accessAdminControl) @Post('profile-data/:dataSource/:symbol') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) From f63ede46b0d49228613036ba5aedfdade95af31e Mon Sep 17 00:00:00 2001 From: Fabio Carlos Date: Tue, 20 May 2025 13:02:37 -0600 Subject: [PATCH 007/294] Feature/improve language localization for IT 20250513 (#4717) * Improve language localization for IT --- apps/client/src/locales/messages.it.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 37c66bfd8..acc667e17 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -7996,7 +7996,7 @@ Log out - Log out + Esci apps/client/src/app/components/header/header.component.html 315 From 294a1834b6244451cf165a34f454acdd69c5a4d3 Mon Sep 17 00:00:00 2001 From: Felix Jordan Date: Wed, 21 May 2025 01:05:02 +0600 Subject: [PATCH 008/294] Feature/improve language localization for CA 20250513 (#4719) * Improve language localization for CA --- apps/client/src/locales/messages.ca.xlf | 76 ++++++++++++------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 4e4e7e62d..275f6ab40 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -4328,7 +4328,7 @@ Why Ghostfolio? - Why Ghostfolio? + Per què Ghostfolio? apps/client/src/app/pages/landing/landing-page.html 272 @@ -4336,7 +4336,7 @@ Ghostfolio is for you if you are... - Ghostfolio is for you if you are... + Ghostfolio és per a tu si ets... apps/client/src/app/pages/landing/landing-page.html 273 @@ -4344,7 +4344,7 @@ trading stocks, ETFs or cryptocurrencies on multiple platforms - trading stocks, ETFs or cryptocurrencies on multiple platforms + negociar accions, ETF o criptomonedes en múltiples plataformes apps/client/src/app/pages/landing/landing-page.html 280 @@ -4352,7 +4352,7 @@ pursuing a buy & hold strategy - pursuing a buy & hold strategy + perseguint una compra & mantenir l’estratègia apps/client/src/app/pages/landing/landing-page.html 286 @@ -4360,7 +4360,7 @@ interested in getting insights of your portfolio composition - interested in getting insights of your portfolio composition + interessat a obtenir informació sobre la composició de la vostra cartera apps/client/src/app/pages/landing/landing-page.html 291 @@ -4368,7 +4368,7 @@ valuing privacy and data ownership - valuing privacy and data ownership + valorant la privadesa i la propietat de les dades apps/client/src/app/pages/landing/landing-page.html 296 @@ -4376,7 +4376,7 @@ into minimalism - into minimalism + al minimalisme apps/client/src/app/pages/landing/landing-page.html 299 @@ -4384,7 +4384,7 @@ caring about diversifying your financial resources - caring about diversifying your financial resources + preocupant-se per diversificar els seus recursos econòmics apps/client/src/app/pages/landing/landing-page.html 303 @@ -4392,7 +4392,7 @@ interested in financial independence - interested in financial independence + interessada en la independència financera apps/client/src/app/pages/landing/landing-page.html 307 @@ -4400,7 +4400,7 @@ saying no to spreadsheets in - saying no to spreadsheets in + dir no als fulls de càlcul apps/client/src/app/pages/landing/landing-page.html 311 @@ -4408,7 +4408,7 @@ still reading this list - still reading this list + encara llegint aquesta llista apps/client/src/app/pages/landing/landing-page.html 314 @@ -4416,7 +4416,7 @@ Learn more about Ghostfolio - Learn more about Ghostfolio + Més informació sobre Ghostfolio apps/client/src/app/pages/landing/landing-page.html 319 @@ -4424,7 +4424,7 @@ What our users are saying - What our users are saying + Que nostre usuaris estan dient apps/client/src/app/pages/landing/landing-page.html 327 @@ -4432,7 +4432,7 @@ Members from around the globe are using Ghostfolio Premium - Members from around the globe are using Ghostfolio Premium + Membres de tot el món estan utilitzant Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html 366 @@ -4440,7 +4440,7 @@ How does Ghostfolio work? - How does Ghostfolio work? + Com ho fa Ghostfolio treballar? apps/client/src/app/pages/landing/landing-page.html 383 @@ -4448,7 +4448,7 @@ Get started in only 3 steps - Get started in only 3 steps + Comença en només 3 passos apps/client/src/app/pages/landing/landing-page.html 386 @@ -4456,7 +4456,7 @@ Sign up anonymously* - Sign up anonymously* + Registra’t de manera anònima* apps/client/src/app/pages/landing/landing-page.html 392 @@ -4464,7 +4464,7 @@ * no e-mail address nor credit card required - * no e-mail address nor credit card required + * no es requereix cap adreça de correu electrònic ni targeta de crèdit apps/client/src/app/pages/landing/landing-page.html 394 @@ -4472,7 +4472,7 @@ Add any of your historical transactions - Add any of your historical transactions + Afegiu qualsevol de les vostres transaccions històriques apps/client/src/app/pages/landing/landing-page.html 405 @@ -4480,7 +4480,7 @@ Get valuable insights of your portfolio composition - Get valuable insights of your portfolio composition + Obteniu informació valuosa sobre la composició de la vostra cartera apps/client/src/app/pages/landing/landing-page.html 417 @@ -4488,7 +4488,7 @@ Are you ready? - Are you ready? + Són tu llest? apps/client/src/app/pages/landing/landing-page.html 431 @@ -4496,7 +4496,7 @@ Join now or check out the example account - Join now or check out the example account + Uneix-te ara o consulteu el compte d’exemple apps/client/src/app/pages/landing/landing-page.html 434 @@ -4504,7 +4504,7 @@ Get Started - Get Started + Comença apps/client/src/app/pages/landing/landing-page.html 446 @@ -4512,7 +4512,7 @@ At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + A Ghostfolio, la transparència és la base dels nostres valors. Publiquem el codi font com a programari de codi obert (OSS) sota elLlicència AGPL-3.0 i compartim obertament mètriques clau agregades de l’estat operatiu de la plataforma. apps/client/src/app/pages/open/open-page.html 6 @@ -4520,7 +4520,7 @@ (Last 24 hours) - (Last 24 hours) + (Últimes 24 hores) apps/client/src/app/pages/open/open-page.html 37 @@ -4528,7 +4528,7 @@ Active Users - Active Users + Usuaris actius apps/client/src/app/pages/open/open-page.html 40 @@ -4540,7 +4540,7 @@ (Last 30 days) - (Last 30 days) + (Últims 30 dies) apps/client/src/app/pages/open/open-page.html 48 @@ -4552,7 +4552,7 @@ New Users - New Users + Usuaris nous apps/client/src/app/pages/open/open-page.html 51 @@ -4560,7 +4560,7 @@ Users in Slack community - Users in Slack community + Usuaris de la comunitat Slack apps/client/src/app/pages/open/open-page.html 75 @@ -4568,7 +4568,7 @@ Contributors on GitHub - Contributors on GitHub + Col·laboradors a GitHub apps/client/src/app/pages/open/open-page.html 89 @@ -4576,7 +4576,7 @@ (Last 90 days) - (Last 90 days) + (Últims 90 dies) apps/client/src/app/pages/open/open-page.html 127 @@ -4584,7 +4584,7 @@ Uptime - Uptime + Temps de funcionament apps/client/src/app/pages/open/open-page.html 132 @@ -4592,7 +4592,7 @@ Activities - Activities + Activitats apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts 13 @@ -4604,7 +4604,7 @@ Update activity - Update activity + Activitat d’actualització apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 10 @@ -4612,7 +4612,7 @@ Stocks, ETFs, bonds, cryptocurrencies, commodities - Stocks, ETFs, bonds, cryptocurrencies, commodities + Accions, ETF, bons, criptomonedes, matèries primeres apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 25 @@ -4624,7 +4624,7 @@ One-time fee, annual account fees - One-time fee, annual account fees + Comissió única, comissions de compte anual apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 33 @@ -4632,7 +4632,7 @@ Distribution of corporate earnings - Distribution of corporate earnings + Distribució dels beneficis de les empreses apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 41 @@ -4640,7 +4640,7 @@ Revenue for lending out money - Revenue for lending out money + Ingressos per prestar diners apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 49 From f361ecc732b1d8e5e7377e1e394d2cae69221af5 Mon Sep 17 00:00:00 2001 From: jlebutte Date: Tue, 20 May 2025 23:48:34 +0200 Subject: [PATCH 009/294] Feature/improve language localization for FR 20250520 (#4728) * Improve language localization for FR * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.fr.xlf | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b9c056dc..1b0d60eee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,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 Chinese (`zh`) - Improved the language localization for Dutch (`nl`) +- Improved the language localization for French (`fr`) - Improved the language localization for German (`de`) - Improved the language localization for Italian (`it`) - Upgraded `countup.js` from version `2.8.0` to `2.8.2` diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 946533d94..8079a83c6 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -471,7 +471,7 @@ Historical Market Data - Données de Marché Historiques + Données historiques du marché apps/client/src/app/components/admin-jobs/admin-jobs.html 37 @@ -535,7 +535,7 @@ Market Price - Prix du Marché + Prix du marché apps/client/src/app/components/admin-market-data/admin-market-data.html 133 @@ -1127,7 +1127,7 @@ Current Market Mood - Sentiment Actuel du Marché + Sentiment actuel du marché apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html 12 @@ -1479,7 +1479,7 @@ Time in Market - Temps sur le Marché + Temps sur le marché apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 3 @@ -2203,7 +2203,7 @@ Market Data - Données de Marché + Données du marché apps/client/src/app/pages/admin/admin-page-routing.module.ts 30 @@ -2663,7 +2663,7 @@ Developed Markets - Marchés Développés + Marchés développés apps/client/src/app/pages/portfolio/allocations/allocations-page.html 222 @@ -2675,7 +2675,7 @@ Emerging Markets - Marchés Émergents + Marchés émergents apps/client/src/app/pages/portfolio/allocations/allocations-page.html 231 @@ -4171,7 +4171,7 @@ Changelog - Historique des Modifications + Historique des modifications apps/client/src/app/pages/about/about-page.component.ts 50 @@ -4267,7 +4267,7 @@ Market Mood - Sentiment du Marché + Sentiment du marché apps/client/src/app/pages/features/features-page.html 215 @@ -4583,7 +4583,7 @@ By Market - par Marchés + par marché apps/client/src/app/pages/portfolio/allocations/allocations-page.html 175 @@ -7670,7 +7670,7 @@ Market Data - Données de Marché + Données du marché apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 374 @@ -7995,7 +7995,7 @@ Log out - Log out + Se déconnecter apps/client/src/app/components/header/header.component.html 315 From f4ef91e3bea3b0e55d325b3aeeb5694be3b93671 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 20 May 2025 22:49:54 +0100 Subject: [PATCH 010/294] Feature/upgrade twitter-api-v2 to version 1.23.0 (#4693) * Upgrade twitter-api-v2 to version 1.23.0 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b0d60eee..aaa3db02e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for Italian (`it`) - Upgraded `countup.js` from version `2.8.0` to `2.8.2` - Upgraded `nestjs` from version `10.4.15` to `11.0.12` +- Upgraded `twitter-api-v2` from version `1.14.2` to `1.23.0` - Upgraded `yahoo-finance2` from version `2.11.3` to `3.3.2` ### Fixed diff --git a/package-lock.json b/package-lock.json index bf48e51fa..94851b2e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -87,7 +87,7 @@ "rxjs": "7.8.1", "stripe": "17.3.0", "svgmap": "2.12.2", - "twitter-api-v2": "1.14.2", + "twitter-api-v2": "1.23.0", "uuid": "11.1.0", "yahoo-finance2": "3.3.2", "zone.js": "0.15.0" @@ -34027,9 +34027,9 @@ "license": "Unlicense" }, "node_modules/twitter-api-v2": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.14.2.tgz", - "integrity": "sha512-389e/rWaN8zWkmD5z2IpKVb5+ojPxVtrexQoGBI1Xfib1mE/9M7k7zbnZ3Q/WLwthwcWkQIlB25ecT64AL8LvQ==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.23.0.tgz", + "integrity": "sha512-5i1agETVpTuY68Zuk9i2B3N9wHzc4JIWw0WKyG4CEaFv9mRKmU87roa+U1oYYXTChWb0HMcqfkwoBJHYmLbeDA==", "license": "Apache-2.0" }, "node_modules/type-check": { diff --git a/package.json b/package.json index 822f025b1..50abdeea7 100644 --- a/package.json +++ b/package.json @@ -133,7 +133,7 @@ "rxjs": "7.8.1", "stripe": "17.3.0", "svgmap": "2.12.2", - "twitter-api-v2": "1.14.2", + "twitter-api-v2": "1.23.0", "uuid": "11.1.0", "yahoo-finance2": "3.3.2", "zone.js": "0.15.0" From a06872b657027c8ae73bf87d48af7bbed7e76639 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 20 May 2025 22:53:32 +0100 Subject: [PATCH 011/294] Bugfix/improve show condition of button to fetch current market price (#4700) * Improve show condition of button to fetch current market price * Update changelog --- CHANGELOG.md | 1 + .../create-or-update-activity-dialog.component.ts | 12 ++++++++---- .../create-or-update-activity-dialog.html | 4 +++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aaa3db02e..a3db392da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Displayed the button to fetch the current market price only if the activity is not in a custom currency - Fixed an issue in the watchlist endpoint (`POST`) related to the `HasPermissionGuard` ## 2.161.0 - 2025-05-06 diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index dce045a4a..5f651195a 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -39,6 +39,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { return { id: assetSubClass, label: translate(assetSubClass) }; }); public currencies: string[] = []; + public currencyOfAssetProfile: string; public currentMarketPrice = null; public defaultDateFormat: string; public isLoading = false; @@ -63,8 +64,10 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { ) {} public ngOnInit() { - this.mode = this.data.activity.id ? 'update' : 'create'; + this.currencyOfAssetProfile = this.data.activity?.SymbolProfile?.currency; this.locale = this.data.user?.settings?.locale; + this.mode = this.data.activity?.id ? 'update' : 'create'; + this.dateAdapter.setLocale(this.locale); const { currencies, platforms } = this.dataService.fetchInfo(); @@ -210,7 +213,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.activityForm.get('type').value ) ) { - this.updateSymbol(); + this.updateAssetProfile(); } this.changeDetectorRef.markForCheck(); @@ -397,7 +400,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.dialogRef.close(activity); } else { - (activity as UpdateOrderDto).id = this.data.activity.id; + (activity as UpdateOrderDto).id = this.data.activity?.id; await validateObjectForForm({ classDto: UpdateOrderDto, @@ -422,7 +425,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.unsubscribeSubject.complete(); } - private updateSymbol() { + private updateAssetProfile() { this.isLoading = true; this.changeDetectorRef.markForCheck(); @@ -450,6 +453,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.activityForm.get('dataSource').setValue(dataSource); } + this.currencyOfAssetProfile = currency; this.currentMarketPrice = marketPrice; this.isLoading = false; diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html index b0521530f..08e1b5162 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -230,8 +230,10 @@
@if ( + currencyOfAssetProfile === + activityForm.get('currencyOfUnitPrice').value && currentMarketPrice && - (data.activity.type === 'BUY' || data.activity.type === 'SELL') && + ['BUY', 'SELL'].includes(data.activity.type) && isToday(activityForm.get('date')?.value) ) {
From 1cfc691a3e3fcfd5ae73b7078348cae840d28866 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 21 May 2025 19:40:40 +0200 Subject: [PATCH 014/294] Feature/update locales (#4730) * 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 | 8 ++++++++ apps/client/src/locales/messages.de.xlf | 8 ++++++++ apps/client/src/locales/messages.es.xlf | 8 ++++++++ apps/client/src/locales/messages.fr.xlf | 8 ++++++++ apps/client/src/locales/messages.it.xlf | 8 ++++++++ apps/client/src/locales/messages.nl.xlf | 8 ++++++++ apps/client/src/locales/messages.pl.xlf | 8 ++++++++ apps/client/src/locales/messages.pt.xlf | 8 ++++++++ apps/client/src/locales/messages.tr.xlf | 8 ++++++++ apps/client/src/locales/messages.uk.xlf | 8 ++++++++ apps/client/src/locales/messages.xlf | 7 +++++++ apps/client/src/locales/messages.zh.xlf | 8 ++++++++ 12 files changed, 95 insertions(+) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 38ae4f139..fc7e685bc 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -8001,6 +8001,14 @@ 315
+ + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index f1e006a1b..b37c6254e 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -8001,6 +8001,14 @@ 315
+ + Calculations are based on delayed market data and may not be displayed in real-time. + Berechnungen basieren auf verzögerten Marktdaten und werden nicht in Echtzeit angezeigt. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 3490217e8..28650c5fb 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -8002,6 +8002,14 @@ 315
+ + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index aa5d6b26b..36098ab94 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -8001,6 +8001,14 @@ 315
+ + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 4d1423a95..98539f12a 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -8002,6 +8002,14 @@ 315
+ + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index f49a838ed..2d4920df4 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -8001,6 +8001,14 @@ 315
+ + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index d550ce676..5b399a06b 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -8001,6 +8001,14 @@ 315
+ + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index e6d822d8b..9ec736be8 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -8001,6 +8001,14 @@ 315
+ + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index c70d74a5e..7ad178a25 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -8001,6 +8001,14 @@ 315
+ + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 7f9386e43..8bb56f080 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -8001,6 +8001,14 @@ 315
+ + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 75d2164f9..0eaf12d05 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -7237,6 +7237,13 @@ 315
+ + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 7c8694c35..3b6410a4f 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -8002,6 +8002,14 @@ 315
+ + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + From 243ef2206cd50bf002ba1dee3693d5923ef5995d Mon Sep 17 00:00:00 2001 From: Jack Cooper Date: Wed, 21 May 2025 12:02:52 -0600 Subject: [PATCH 015/294] Feature/improve language localization for ES 20250517 (#4723) * Improve language localization for ES * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.es.xlf | 158 ++++++++++++------------ 2 files changed, 80 insertions(+), 79 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2b77ff63..8f98a8401 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,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 Chinese (`zh`) - Improved the language localization for Dutch (`nl`) +- Improved the language localization for Español (`es`) - Improved the language localization for French (`fr`) - Improved the language localization for German (`de`) - Improved the language localization for Italian (`it`) diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 28650c5fb..d172d7857 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -1276,7 +1276,7 @@
Please set the amount of your emergency fund. - Por favor, ingresa la cantidad de tu fondo de emergencia: + Por favor, ingresa la cantidad de tu fondo de emergencia: apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts 64 @@ -1624,7 +1624,7 @@ Please enter your coupon code. - Por favor, ingresa tu código de cupón: + Por favor, ingresa tu código de cupón: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts 201 @@ -2832,7 +2832,7 @@ Hello, has shared a Portfolio with you! - Hola, ha compartido una Cartera contigo! + Hola, ha compartido una Cartera contigo! apps/client/src/app/pages/public/public-page.html 4 @@ -3356,7 +3356,7 @@ Holding - Holding + Participación apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 32 @@ -3404,7 +3404,7 @@ Core - Core + Núcleo libs/ui/src/lib/i18n.ts 10 @@ -3816,7 +3816,7 @@ Retirement Date - Retirement Date + Fecha de jubilación libs/ui/src/lib/fire-calculator/fire-calculator.component.html 32 @@ -3824,7 +3824,7 @@ Professional Data Provider - Professional Data Provider + Proveedor de datos profesional apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 40 @@ -3836,7 +3836,7 @@ Pricing Plans - Pricing Plans + Planes de precios apps/client/src/app/pages/pricing/pricing-page.html 4 @@ -3860,7 +3860,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. + Nuestra oferta oficial en la nube de Ghostfolio Premium es la forma más sencilla de comenzar. Debido al tiempo que ahorra, esta será la mejor opción para la mayoría de las personas. Los ingresos se utilizan para cubrir los costos de la infraestructura de alojamiento y para financiar el desarrollo continuo. apps/client/src/app/pages/pricing/pricing-page.html 6 @@ -3868,7 +3868,7 @@ Impersonate User - Impersonate User + Suplantar usuario apps/client/src/app/components/admin-users/admin-users.html 239 @@ -3876,7 +3876,7 @@ Delete User - Delete User + Eliminar usuario apps/client/src/app/components/admin-users/admin-users.html 260 @@ -3884,7 +3884,7 @@ Do you really want to delete these activities? - Do you really want to delete these activities? + ¿Realmente deseas eliminar estas actividades? libs/ui/src/lib/activities-table/activities-table.component.ts 219 @@ -3892,7 +3892,7 @@ By ETF Provider - By ETF Provider + Por proveedor de ETF apps/client/src/app/pages/portfolio/allocations/allocations-page.html 306 @@ -3900,7 +3900,7 @@ Update platform - Update platform + Actualizar plataforma apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html 8 @@ -3908,7 +3908,7 @@ Add platform - Add platform + Agregar plataforma apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html 10 @@ -3916,7 +3916,7 @@ Url - Url + ¿La URL? apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 455 @@ -3936,7 +3936,7 @@ Do you really want to delete this platform? - Do you really want to delete this platform? + ¿Realmente deseas eliminar esta plataforma? apps/client/src/app/components/admin-platform/admin-platform.component.ts 87 @@ -3944,7 +3944,7 @@ Platforms - Platforms + Plataformas apps/client/src/app/components/admin-settings/admin-settings.component.html 137 @@ -3952,7 +3952,7 @@ Update Cash Balance - Update Cash Balance + Actualizar saldo en efectivo apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 112 @@ -3960,7 +3960,7 @@ By Platform - By Platform + Por plataforma apps/client/src/app/pages/portfolio/allocations/allocations-page.html 44 @@ -3968,7 +3968,7 @@ Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: - Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: + Actualiza a Ghostfolio Premium hoy y accede a características exclusivas para mejorar tu experiencia de inversión: apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 17 @@ -3976,7 +3976,7 @@ Get the tools to effectively manage your finances and refine your personal investment strategy. - Get the tools to effectively manage your finances and refine your personal investment strategy. + Obtén las herramientas para gestionar eficazmente tus finanzas y perfeccionar tu estrategia de inversión personal. apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 47 @@ -3984,7 +3984,7 @@ Add Platform - Add Platform + Agregar plataforma apps/client/src/app/components/admin-platform/admin-platform.component.html 8 @@ -3992,7 +3992,7 @@ Settings - Settings + Configuraciones apps/client/src/app/pages/admin/admin-page-routing.module.ts 35 @@ -4012,7 +4012,7 @@ Equity - Equity + Equidad apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html 58 @@ -4020,7 +4020,7 @@ This activity already exists. - This activity already exists. + Esta actividad ya existe. libs/ui/src/lib/i18n.ts 19 @@ -4028,7 +4028,7 @@ Manage Benchmarks - Manage Benchmarks + Gestionar puntos de referencia apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html 35 @@ -4036,7 +4036,7 @@ Select Holding - Select Holding + Seleccionar posición apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 20 @@ -4044,7 +4044,7 @@ Select File - Select File + Seleccionar archivo apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 22 @@ -4052,7 +4052,7 @@ Select Dividends - Select Dividends + Seleccionar dividendos apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 113 @@ -4060,7 +4060,7 @@ Select Activities - Select Activities + Seleccionar dividendos apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 115 @@ -4068,7 +4068,7 @@ Import Activities - Import Activities + Seleccionar dividendos libs/ui/src/lib/activities-table/activities-table.component.html 9 @@ -4080,7 +4080,7 @@ Import Dividends - Import Dividends + Importar dividendos libs/ui/src/lib/activities-table/activities-table.component.html 29 @@ -4092,7 +4092,7 @@ Personal Finance - Personal Finance + Finanzas personales apps/client/src/app/app.component.html 57 @@ -4100,7 +4100,7 @@ Frequently Asked Questions (FAQ) - Frequently Asked Questions (FAQ) + Preguntas frecuentes (FAQ) apps/client/src/app/app.component.html 83 @@ -4112,7 +4112,7 @@ Current Streak - Current Streak + Racha actual apps/client/src/app/pages/portfolio/analysis/analysis-page.html 389 @@ -4120,7 +4120,7 @@ Longest Streak - Longest Streak + Racha más larga apps/client/src/app/pages/portfolio/analysis/analysis-page.html 398 @@ -4128,7 +4128,7 @@ Months - Months + Meses libs/ui/src/lib/i18n.ts 22 @@ -4136,7 +4136,7 @@ Years - Years + Años libs/ui/src/lib/i18n.ts 31 @@ -4144,7 +4144,7 @@ Month - Month + Mes libs/ui/src/lib/i18n.ts 21 @@ -4152,7 +4152,7 @@ Year - Year + Año libs/ui/src/lib/i18n.ts 30 @@ -4160,7 +4160,7 @@ Liabilities - Liabilities + Pasivos apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 255 @@ -4172,7 +4172,7 @@ Changelog - Changelog + Registro de cambios apps/client/src/app/pages/about/about-page.component.ts 50 @@ -4184,7 +4184,7 @@ License - License + Licencia apps/client/src/app/pages/about/about-page.component.ts 55 @@ -4196,7 +4196,7 @@ Stocks - Stocks + Acciones apps/client/src/app/pages/features/features-page.html 15 @@ -4204,7 +4204,7 @@ ETFs - ETFs + ETFs apps/client/src/app/pages/features/features-page.html 25 @@ -4212,7 +4212,7 @@ Bonds - Bonds + Bonos apps/client/src/app/pages/features/features-page.html 38 @@ -4220,7 +4220,7 @@ Cryptocurrencies - Cryptocurrencies + Criptomonedas apps/client/src/app/pages/features/features-page.html 51 @@ -4228,7 +4228,7 @@ Wealth Items - Wealth Items + Elementos de patrimonio apps/client/src/app/pages/features/features-page.html 76 @@ -4236,7 +4236,7 @@ Import and Export - Import and Export + Importar y exportar apps/client/src/app/pages/features/features-page.html 115 @@ -4244,7 +4244,7 @@ Multi-Accounts - Multi-Accounts + Cuentas múltiples apps/client/src/app/pages/features/features-page.html 127 @@ -4252,7 +4252,7 @@ Portfolio Calculations - Portfolio Calculations + Cálculos de portafolio apps/client/src/app/pages/features/features-page.html 141 @@ -4260,7 +4260,7 @@ Dark Mode - Dark Mode + Modo oscuro apps/client/src/app/pages/features/features-page.html 233 @@ -4268,7 +4268,7 @@ Market Mood - Market Mood + Modo de mercado apps/client/src/app/pages/features/features-page.html 215 @@ -4276,7 +4276,7 @@ Static Analysis - Static Analysis + Análisis estático apps/client/src/app/pages/features/features-page.html 179 @@ -4284,7 +4284,7 @@ Multi-Language - Multi-Language + Multilenguaje apps/client/src/app/pages/features/features-page.html 259 @@ -4292,7 +4292,7 @@ Open Source Software - Open Source Software + Software de código abierto apps/client/src/app/pages/features/features-page.html 295 @@ -4300,7 +4300,7 @@ Liability - Liability + Responsabilidad libs/ui/src/lib/i18n.ts 40 @@ -4308,7 +4308,7 @@ Scraper Configuration - Scraper Configuration + Configuración del scraper apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 377 @@ -4316,7 +4316,7 @@ Add Asset Profile - Add Asset Profile + Agregar perfil de activo apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 7 @@ -4324,7 +4324,7 @@ Personal Finance Tools - Personal Finance Tools + Herramientas de finanzas personales apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts 14 @@ -4444,7 +4444,7 @@ Self-Hosting - Self-Hosting + Autoalojamiento apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 170 @@ -4484,7 +4484,7 @@ Personal Finance Tools - Personal Finance Tools + Herramientas de finanzas personales apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 351 @@ -4492,7 +4492,7 @@ Guides - Guides + Guías apps/client/src/app/pages/resources/guides/resources-guides.component.html 4 @@ -4500,7 +4500,7 @@ Glossary - Glossary + Glosario apps/client/src/app/pages/resources/glossary/resources-glossary.component.html 4 @@ -4508,7 +4508,7 @@ Stocks, ETFs, bonds, cryptocurrencies, commodities - Stocks, ETFs, bonds, cryptocurrencies, commodities + Acciones, ETFs, bonos, criptomonedas, materias primas apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 25 @@ -4520,7 +4520,7 @@ Mortgages, personal loans, credit cards - Mortgages, personal loans, credit cards + Hipotecas, préstamos personales, tarjetas de crédito apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 57 @@ -4528,7 +4528,7 @@ Luxury items, real estate, private companies - Luxury items, real estate, private companies + Artículos de lujo, bienes raíces, empresas privadas apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 73 @@ -4536,7 +4536,7 @@ Buy - Buy + Comprar libs/ui/src/lib/i18n.ts 35 @@ -4544,7 +4544,7 @@ Valuable - Valuable + Valioso libs/ui/src/lib/i18n.ts 39 @@ -4552,7 +4552,7 @@ ETFs without Countries - ETFs without Countries + ETFs sin países apps/client/src/app/components/admin-market-data/admin-market-data.component.ts 91 @@ -4560,7 +4560,7 @@ ETFs without Sectors - ETFs without Sectors + ETFs sin sectores apps/client/src/app/components/admin-market-data/admin-market-data.component.ts 96 @@ -4568,7 +4568,7 @@ Assets - Assets + Activos apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 215 @@ -4576,7 +4576,7 @@ Preset - Preset + Preestablecido libs/ui/src/lib/i18n.ts 25 @@ -4584,7 +4584,7 @@ By Market - By Market + Por mercado apps/client/src/app/pages/portfolio/allocations/allocations-page.html 175 @@ -4592,7 +4592,7 @@ Asia-Pacific - Asia-Pacific + Asia-Pacífico libs/ui/src/lib/i18n.ts 5 @@ -4600,7 +4600,7 @@ Japan - Japan + Japón libs/ui/src/lib/i18n.ts 86 @@ -4608,7 +4608,7 @@ Welcome to Ghostfolio - Welcome to Ghostfolio + Bienvenido a Ghostfolio apps/client/src/app/components/home-overview/home-overview.html 7 @@ -4616,7 +4616,7 @@ Setup your accounts - Setup your accounts + Configura tus cuentas apps/client/src/app/components/home-overview/home-overview.html 15 From d4666f778d6890cfb1ba1eef1fb375d1e3c96e9d Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 21 May 2025 19:04:56 +0100 Subject: [PATCH 016/294] Feature/remove deprecated endpoints in Ghostfolio controller (#4692) * Remove deprecated endpoints --- .../ghostfolio/ghostfolio.controller.ts | 173 ------------------ 1 file changed, 173 deletions(-) diff --git a/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts b/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts index 83e1b5ced..7cb2520bb 100644 --- a/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts +++ b/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts @@ -74,48 +74,6 @@ export class GhostfolioController { } } - /** - * @deprecated - */ - @Get('dividends/:symbol') - @HasPermission(permissions.enableDataProviderGhostfolio) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async getDividendsV1( - @Param('symbol') symbol: string, - @Query() query: GetDividendsDto - ): Promise { - const maxDailyRequests = await this.ghostfolioService.getMaxDailyRequests(); - - if ( - this.request.user.dataProviderGhostfolioDailyRequests > maxDailyRequests - ) { - throw new HttpException( - getReasonPhrase(StatusCodes.TOO_MANY_REQUESTS), - StatusCodes.TOO_MANY_REQUESTS - ); - } - - try { - const dividends = await this.ghostfolioService.getDividends({ - symbol, - from: parseDate(query.from), - granularity: query.granularity, - to: parseDate(query.to) - }); - - await this.ghostfolioService.incrementDailyRequests({ - userId: this.request.user.id - }); - - return dividends; - } catch { - throw new HttpException( - getReasonPhrase(StatusCodes.INTERNAL_SERVER_ERROR), - StatusCodes.INTERNAL_SERVER_ERROR - ); - } - } - @Get('dividends/:symbol') @HasPermission(permissions.enableDataProviderGhostfolio) @UseGuards(AuthGuard('api-key'), HasPermissionGuard) @@ -156,48 +114,6 @@ export class GhostfolioController { } } - /** - * @deprecated - */ - @Get('historical/:symbol') - @HasPermission(permissions.enableDataProviderGhostfolio) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async getHistoricalV1( - @Param('symbol') symbol: string, - @Query() query: GetHistoricalDto - ): Promise { - const maxDailyRequests = await this.ghostfolioService.getMaxDailyRequests(); - - if ( - this.request.user.dataProviderGhostfolioDailyRequests > maxDailyRequests - ) { - throw new HttpException( - getReasonPhrase(StatusCodes.TOO_MANY_REQUESTS), - StatusCodes.TOO_MANY_REQUESTS - ); - } - - try { - const historicalData = await this.ghostfolioService.getHistorical({ - symbol, - from: parseDate(query.from), - granularity: query.granularity, - to: parseDate(query.to) - }); - - await this.ghostfolioService.incrementDailyRequests({ - userId: this.request.user.id - }); - - return historicalData; - } catch { - throw new HttpException( - getReasonPhrase(StatusCodes.INTERNAL_SERVER_ERROR), - StatusCodes.INTERNAL_SERVER_ERROR - ); - } - } - @Get('historical/:symbol') @HasPermission(permissions.enableDataProviderGhostfolio) @UseGuards(AuthGuard('api-key'), HasPermissionGuard) @@ -238,47 +154,6 @@ export class GhostfolioController { } } - /** - * @deprecated - */ - @Get('lookup') - @HasPermission(permissions.enableDataProviderGhostfolio) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async lookupSymbolV1( - @Query('includeIndices') includeIndicesParam = 'false', - @Query('query') query = '' - ): Promise { - const includeIndices = includeIndicesParam === 'true'; - const maxDailyRequests = await this.ghostfolioService.getMaxDailyRequests(); - - if ( - this.request.user.dataProviderGhostfolioDailyRequests > maxDailyRequests - ) { - throw new HttpException( - getReasonPhrase(StatusCodes.TOO_MANY_REQUESTS), - StatusCodes.TOO_MANY_REQUESTS - ); - } - - try { - const result = await this.ghostfolioService.lookup({ - includeIndices, - query: query.toLowerCase() - }); - - await this.ghostfolioService.incrementDailyRequests({ - userId: this.request.user.id - }); - - return result; - } catch { - throw new HttpException( - getReasonPhrase(StatusCodes.INTERNAL_SERVER_ERROR), - StatusCodes.INTERNAL_SERVER_ERROR - ); - } - } - @Get('lookup') @HasPermission(permissions.enableDataProviderGhostfolio) @UseGuards(AuthGuard('api-key'), HasPermissionGuard) @@ -320,44 +195,6 @@ export class GhostfolioController { } } - /** - * @deprecated - */ - @Get('quotes') - @HasPermission(permissions.enableDataProviderGhostfolio) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async getQuotesV1( - @Query() query: GetQuotesDto - ): Promise { - const maxDailyRequests = await this.ghostfolioService.getMaxDailyRequests(); - - if ( - this.request.user.dataProviderGhostfolioDailyRequests > maxDailyRequests - ) { - throw new HttpException( - getReasonPhrase(StatusCodes.TOO_MANY_REQUESTS), - StatusCodes.TOO_MANY_REQUESTS - ); - } - - try { - const quotes = await this.ghostfolioService.getQuotes({ - symbols: query.symbols - }); - - await this.ghostfolioService.incrementDailyRequests({ - userId: this.request.user.id - }); - - return quotes; - } catch { - throw new HttpException( - getReasonPhrase(StatusCodes.INTERNAL_SERVER_ERROR), - StatusCodes.INTERNAL_SERVER_ERROR - ); - } - } - @Get('quotes') @HasPermission(permissions.enableDataProviderGhostfolio) @UseGuards(AuthGuard('api-key'), HasPermissionGuard) @@ -394,16 +231,6 @@ export class GhostfolioController { } } - /** - * @deprecated - */ - @Get('status') - @HasPermission(permissions.enableDataProviderGhostfolio) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async getStatusV1(): Promise { - return this.ghostfolioService.getStatus({ user: this.request.user }); - } - @Get('status') @HasPermission(permissions.enableDataProviderGhostfolio) @UseGuards(AuthGuard('api-key'), HasPermissionGuard) From bd2d05b14384d10d951a0a1d699ae5bccad6d4fc Mon Sep 17 00:00:00 2001 From: Jack Ulf Date: Wed, 21 May 2025 12:44:49 -0600 Subject: [PATCH 017/294] Feature/improve language localization for PT 20250512 (#4712) * Improve language localization for PT * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.pt.xlf | 184 ++++++++++++------------ 2 files changed, 93 insertions(+), 92 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f98a8401..1b9d87f02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for French (`fr`) - Improved the language localization for German (`de`) - Improved the language localization for Italian (`it`) +- Improved the language localization for Portuguese (`pt`) - Upgraded `countup.js` from version `2.8.0` to `2.8.2` - Upgraded `nestjs` from version `10.4.15` to `11.0.12` - Upgraded `twitter-api-v2` from version `1.14.2` to `1.23.0` diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 9ec736be8..d99926cc0 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -1503,7 +1503,7 @@ Please set the amount of your emergency fund. - Por favor, insira o valor do seu fundo de emergência: + Por favor, insira o valor do seu fundo de emergência: apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts 64 @@ -1863,7 +1863,7 @@ Please enter your coupon code. - Por favor, insira o seu código de cupão: + Por favor, insira o seu código de cupão: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts 201 @@ -2735,7 +2735,7 @@ Hello, has shared a Portfolio with you! - Olá, partilhou um Portefólio consigo! + Olá, partilhou um Portefólio consigo! apps/client/src/app/pages/public/public-page.html 4 @@ -4203,7 +4203,7 @@ ETFs - ETFs + ETFs apps/client/src/app/pages/features/features-page.html 25 @@ -4299,7 +4299,7 @@ Liability - Liability + Responsabilidade libs/ui/src/lib/i18n.ts 40 @@ -4307,7 +4307,7 @@ Scraper Configuration - Scraper Configuration + Configuração do raspador apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 377 @@ -4507,7 +4507,7 @@ Stocks, ETFs, bonds, cryptocurrencies, commodities - Stocks, ETFs, bonds, cryptocurrencies, commodities + Ações, ETFs, títulos, criptomoedas, commodities apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 25 @@ -4543,7 +4543,7 @@ Valuable - Valuable + De valor libs/ui/src/lib/i18n.ts 39 @@ -4551,7 +4551,7 @@ ETFs without Countries - ETFs without Countries + ETFs sem países apps/client/src/app/components/admin-market-data/admin-market-data.component.ts 91 @@ -4559,7 +4559,7 @@ ETFs without Sectors - ETFs without Sectors + ETFs sem setores apps/client/src/app/components/admin-market-data/admin-market-data.component.ts 96 @@ -4631,7 +4631,7 @@ Capture your activities - Capture your activities + Capture suas atividades apps/client/src/app/components/home-overview/home-overview.html 24 @@ -4707,7 +4707,7 @@ At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + Na Ghostfolio, a transparência está no centro dos nossos valores. Publicamos o código fonte como open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. apps/client/src/app/pages/open/open-page.html 6 @@ -4763,7 +4763,7 @@ Pulls on Docker Hub - Pulls on Docker Hub + Não puxa Docker Hub apps/client/src/app/pages/landing/landing-page.html 106 @@ -4799,7 +4799,7 @@ Our - Our + Nosso apps/client/src/app/pages/about/oss-friends/oss-friends-page.html 6 @@ -4807,7 +4807,7 @@ Visit - Visit + Visita apps/client/src/app/pages/about/oss-friends/oss-friends-page.html 28 @@ -4839,7 +4839,7 @@ Check out the numerous features of Ghostfolio to manage your wealth - Check out the numerous features of Ghostfolio to manage your wealth + Confira os inúmeros recursos do Ghostfolio para gerenciar seu patrimônio apps/client/src/app/pages/features/features-page.html 6 @@ -4847,7 +4847,7 @@ Discover the latest Ghostfolio updates and insights on personal finance - Discover the latest Ghostfolio updates and insights on personal finance + Descubra as últimas atualizações e insights do Ghostfolio sobre finanças pessoais apps/client/src/app/pages/blog/blog-page.html 7 @@ -4855,7 +4855,7 @@ If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + Se você preferir executar o Ghostfolio em sua própria infraestrutura, encontre o código-fonte e mais instruções em GitHub. apps/client/src/app/pages/pricing/pricing-page.html 26 @@ -4863,7 +4863,7 @@ Manage your wealth like a boss - Manage your wealth like a boss + Gerencie seu patrimônio como um chefe apps/client/src/app/pages/landing/landing-page.html 5 @@ -4871,7 +4871,7 @@ Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio é um painel de código aberto que prioriza a privacidade para suas finanças pessoais. Divida sua alocação de ativos, conheça seu patrimônio líquido e tome decisões de investimento sólidas e baseadas em dados. apps/client/src/app/pages/landing/landing-page.html 9 @@ -4891,7 +4891,7 @@ Monthly Active Users - Monthly Active Users + Usuários ativos mensais apps/client/src/app/pages/landing/landing-page.html 70 @@ -4899,7 +4899,7 @@ As seen in - As seen in + Como visto em apps/client/src/app/pages/landing/landing-page.html 115 @@ -4907,7 +4907,7 @@ Protect your assets. Refine your personal investment strategy. - Protect your assets. Refine your personal investment strategy. + Proteja o seu assets. Refine your personal investment strategy. apps/client/src/app/pages/landing/landing-page.html 225 @@ -4915,7 +4915,7 @@ Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + O Ghostfolio permite que pessoas ocupadas acompanhem ações, ETFs ou criptomoedas sem serem rastreadas. apps/client/src/app/pages/landing/landing-page.html 229 @@ -4923,7 +4923,7 @@ 360° View - 360° View + 360° visualizar apps/client/src/app/pages/landing/landing-page.html 240 @@ -4931,7 +4931,7 @@ Web3 Ready - Web3 Ready + Web3 Preparar apps/client/src/app/pages/landing/landing-page.html 251 @@ -4939,7 +4939,7 @@ Use Ghostfolio anonymously and own your financial data. - Use Ghostfolio anonymously and own your financial data. + Use o Ghostfolio anonimamente e possua seus dados financeiros. apps/client/src/app/pages/landing/landing-page.html 253 @@ -4947,7 +4947,7 @@ Open Source - Open Source + Código aberto apps/client/src/app/pages/landing/landing-page.html 261 @@ -4955,7 +4955,7 @@ Benefit from continuous improvements through a strong community. - Benefit from continuous improvements through a strong community. + Beneficie-se de melhorias contínuas através de uma comunidade forte. apps/client/src/app/pages/landing/landing-page.html 263 @@ -4963,7 +4963,7 @@ Why Ghostfolio? - Why Ghostfolio? + Por que Ghostfolio? apps/client/src/app/pages/landing/landing-page.html 272 @@ -4971,7 +4971,7 @@ Ghostfolio is for you if you are... - Ghostfolio is for you if you are... + Ghostfolio é para você se você for... apps/client/src/app/pages/landing/landing-page.html 273 @@ -4979,7 +4979,7 @@ trading stocks, ETFs or cryptocurrencies on multiple platforms - trading stocks, ETFs or cryptocurrencies on multiple platforms + negociar ações, ETFs ou criptomoedas em múltiplas plataformas apps/client/src/app/pages/landing/landing-page.html 280 @@ -4987,7 +4987,7 @@ pursuing a buy & hold strategy - pursuing a buy & hold strategy + buscando uma compra & estratégia de retenção apps/client/src/app/pages/landing/landing-page.html 286 @@ -4995,7 +4995,7 @@ interested in getting insights of your portfolio composition - interested in getting insights of your portfolio composition + interessado em obter insights sobre a composição do seu portfólio apps/client/src/app/pages/landing/landing-page.html 291 @@ -5003,7 +5003,7 @@ valuing privacy and data ownership - valuing privacy and data ownership + valorizando a privacidade e a propriedade dos dados apps/client/src/app/pages/landing/landing-page.html 296 @@ -5011,7 +5011,7 @@ into minimalism - into minimalism + no minimalismo apps/client/src/app/pages/landing/landing-page.html 299 @@ -5019,7 +5019,7 @@ caring about diversifying your financial resources - caring about diversifying your financial resources + preocupando-se em diversificar seus recursos financeiros apps/client/src/app/pages/landing/landing-page.html 303 @@ -5027,7 +5027,7 @@ interested in financial independence - interested in financial independence + interessado em independência financeira apps/client/src/app/pages/landing/landing-page.html 307 @@ -5035,7 +5035,7 @@ saying no to spreadsheets in - saying no to spreadsheets in + dizendo não às planilhas em apps/client/src/app/pages/landing/landing-page.html 311 @@ -5043,7 +5043,7 @@ still reading this list - still reading this list + ainda lendo esta lista apps/client/src/app/pages/landing/landing-page.html 314 @@ -5051,7 +5051,7 @@ Learn more about Ghostfolio - Learn more about Ghostfolio + Saiba mais sobre o Ghostfolio apps/client/src/app/pages/landing/landing-page.html 319 @@ -5059,7 +5059,7 @@ What our users are saying - What our users are saying + Qual é o nosso users are saying apps/client/src/app/pages/landing/landing-page.html 327 @@ -5067,7 +5067,7 @@ Members from around the globe are using Ghostfolio Premium - Members from around the globe are using Ghostfolio Premium + Membros de todo o mundo estão usando Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html 366 @@ -5075,7 +5075,7 @@ How does Ghostfolio work? - How does Ghostfolio work? + Como é que Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html 383 @@ -5083,7 +5083,7 @@ Sign up anonymously* - Sign up anonymously* + Inscreva-se anonimamente* apps/client/src/app/pages/landing/landing-page.html 392 @@ -5091,7 +5091,7 @@ * no e-mail address nor credit card required - * no e-mail address nor credit card required + * no e-mail address nor credit card required apps/client/src/app/pages/landing/landing-page.html 394 @@ -5099,7 +5099,7 @@ Add any of your historical transactions - Add any of your historical transactions + Adicione qualquer uma de suas transações históricas apps/client/src/app/pages/landing/landing-page.html 405 @@ -5107,7 +5107,7 @@ Get valuable insights of your portfolio composition - Get valuable insights of your portfolio composition + Obtenha insights valiosos sobre a composição do seu portfólio apps/client/src/app/pages/landing/landing-page.html 417 @@ -5123,7 +5123,7 @@ Live Demo - Live Demo + Demonstração ao vivo apps/client/src/app/pages/landing/landing-page.html 49 @@ -5135,7 +5135,7 @@ Get the full picture of your personal finances across multiple platforms. - Get the full picture of your personal finances across multiple platforms. + Tenha uma visão completa das suas finanças pessoais em diversas plataformas. apps/client/src/app/pages/landing/landing-page.html 242 @@ -5143,7 +5143,7 @@ Get started in only 3 steps - Get started in only 3 steps + Comece em apenas 3 passos apps/client/src/app/pages/landing/landing-page.html 386 @@ -5628,7 +5628,7 @@ Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Explore os links abaixo para comparar uma variedade de ferramentas de finanças pessoais com o Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 16 @@ -5636,7 +5636,7 @@ Open Source Alternative to - Alternativa de software livre ao + Alternativa de software livre ao apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 42 @@ -5660,7 +5660,7 @@ Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Você está procurando uma alternativa de código aberto para ? Ghostfolio é uma poderosa ferramenta de gestão de portfólio que oferece aos investidores uma plataforma abrangente para monitorar, analisar e otimizar seus investimentos. Seja você um investidor experiente ou iniciante, o Ghostfolio oferece uma interface de usuário intuitiva e um ampla gama de funcionalidades para ajudá-lo a tomar decisões informadas e assumir o controle do seu futuro financeiro. apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 18 @@ -5668,7 +5668,7 @@ Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio é um software de código aberto (OSS), que oferece uma alternativa econômica para tornando-o particularmente adequado para indivíduos com orçamento apertado, como aqueles buscando Independência Financeira, Aposentadoria Antecipada (FIRE). Ao aproveitar os esforços coletivos de uma comunidade de desenvolvedores e entusiastas de finanças pessoais, o Ghostfolio aprimora continuamente seus recursos, segurança e experiência do usuário. apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 32 @@ -5676,7 +5676,7 @@ Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Vamos nos aprofundar nos detalhes do Ghostfolio vs tabela de comparação abaixo para obter uma compreensão completa de como o Ghostfolio se posiciona em relação a . Exploraremos vários aspectos, como recursos, privacidade de dados, preços e muito mais, permitindo que você faça uma escolha bem informada para suas necessidades pessoais. apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 43 @@ -5696,7 +5696,7 @@ Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Observe que as informações fornecidas no Ghostfolio vs. A tabela de comparação é baseada em nossa pesquisa e análise independentes. Este site não é afiliado a ou qualquer outro produto mencionado na comparação. À medida que o cenário das ferramentas de finanças pessoais evolui, é essencial verificar quaisquer detalhes ou alterações específicas diretamente na página do produto correspondente. Os dados precisam de uma atualização? Ajude-nos a manter dados precisos sobre GitHub. apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 311 @@ -5704,7 +5704,7 @@ Ready to take your investments to the next level? - Ready to take your investments to the next level? + Pronto para levar o seu investimentos para o próximo nível? apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 324 @@ -5720,7 +5720,7 @@ Switzerland - Switzerland + Suíça apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 58 @@ -5732,7 +5732,7 @@ Global - Global + Global apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 59 @@ -5744,7 +5744,7 @@ (Last 24 hours) - (Last 24 hours) + (Últimas 24 horas) apps/client/src/app/pages/open/open-page.html 37 @@ -5752,7 +5752,7 @@ (Last 30 days) - (Last 30 days) + (Últimos 30 dias) apps/client/src/app/pages/open/open-page.html 48 @@ -5764,7 +5764,7 @@ (Last 90 days) - (Last 90 days) + (Últimos 90 dias) apps/client/src/app/pages/open/open-page.html 127 @@ -5772,7 +5772,7 @@ Choose or drop a file here - Choose or drop a file here + Selecione ou solte um arquivo aqui apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 84 @@ -5780,7 +5780,7 @@ You are using the Live Demo. - You are using the Live Demo. + Você está usando a demonstração ao vivo. apps/client/src/app/app.component.html 12 @@ -5788,7 +5788,7 @@ One-time fee, annual account fees - One-time fee, annual account fees + Taxa única, taxas de conta anuais apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 33 @@ -5796,7 +5796,7 @@ Distribution of corporate earnings - Distribution of corporate earnings + Distribuição de lucros corporativos apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 41 @@ -5804,7 +5804,7 @@ Fee - Fee + Taxa libs/ui/src/lib/i18n.ts 37 @@ -5812,7 +5812,7 @@ Interest - Interest + Interesse apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 307 @@ -5820,7 +5820,7 @@ Revenue for lending out money - Revenue for lending out money + Receita por empréstimo de dinheiro apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 49 @@ -5828,7 +5828,7 @@ Add Tag - Add Tag + Adicionar etiqueta apps/client/src/app/components/admin-tag/admin-tag.component.html 8 @@ -5836,7 +5836,7 @@ Do you really want to delete this tag? - Do you really want to delete this tag? + Você realmente deseja excluir esta tag? apps/client/src/app/components/admin-tag/admin-tag.component.ts 85 @@ -5844,7 +5844,7 @@ Update tag - Update tag + Atualizar etiqueta apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 8 @@ -5852,7 +5852,7 @@ Add tag - Add tag + Adicionar etiqueta apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 10 @@ -5860,7 +5860,7 @@ Currency Cluster Risks - Currency Cluster Risks + Riscos de cluster monetário apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 93 @@ -5868,7 +5868,7 @@ Account Cluster Risks - Account Cluster Risks + Riscos de cluster de contas apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 141 @@ -5876,7 +5876,7 @@ Transfer Cash Balance - Transfer Cash Balance + Transferir saldo de dinheiro apps/client/src/app/components/accounts-table/accounts-table.component.html 10 @@ -5888,7 +5888,7 @@ Benchmark - Benchmark + Referência apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 346 @@ -5896,7 +5896,7 @@ Version - Version + Versão apps/client/src/app/components/admin-overview/admin-overview.html 7 @@ -5904,7 +5904,7 @@ Settings - Settings + Configurações apps/client/src/app/components/user-account-settings/user-account-settings.html 2 @@ -5912,7 +5912,7 @@ From - From + De apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html 11 @@ -5920,7 +5920,7 @@ To - To + Para apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html 32 @@ -5928,7 +5928,7 @@ Transfer - Transfer + Transferir apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html 72 @@ -5936,7 +5936,7 @@ Membership - Membership + Associação apps/client/src/app/pages/user-account/user-account-page-routing.module.ts 23 @@ -5948,7 +5948,7 @@ Access - Access + Acesso apps/client/src/app/pages/user-account/user-account-page-routing.module.ts 28 @@ -5960,7 +5960,7 @@ Find holding... - Find holding... + Encontrar retenção... libs/ui/src/lib/assistant/assistant.component.ts 143 @@ -5968,7 +5968,7 @@ No entries... - No entries... + Nenhuma entrada... libs/ui/src/lib/assistant/assistant.html 62 @@ -5980,7 +5980,7 @@ Asset Profile - Asset Profile + Perfil de ativos apps/client/src/app/components/admin-jobs/admin-jobs.html 35 @@ -5988,7 +5988,7 @@ Do you really want to delete this asset profile? - Do you really want to delete this asset profile? + Você realmente deseja excluir este perfil de ativo? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts 37 @@ -6004,7 +6004,7 @@ Add Manually - Add Manually + Adicionar manualmente apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 19 @@ -6012,7 +6012,7 @@ Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio é um dashboard de finanças pessoais para acompanhar os seus activos como acções, ETFs ou criptomoedas em múltiplas plataformas. + Ghostfolio é um dashboard de finanças pessoais para acompanhar os seus activos como acções, ETFs ou criptomoedas em múltiplas plataformas. apps/client/src/app/pages/i18n/i18n-page.html 4 @@ -6020,7 +6020,7 @@ Last All Time High - Last All Time High + Última alta de todos os tempos libs/ui/src/lib/benchmark/benchmark.component.html 74 From 3d94b1a873ab7f7ea965b05f6e4dc38f943076b1 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 22 May 2025 17:23:21 +0100 Subject: [PATCH 018/294] Bugfix/fix exclude route with wildcard of serve static module (#4733) * Fix route with wildcard https://docs.nestjs.com/migration-guide#express-v5 --- apps/api/src/app/app.module.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index 0aca4e62c..87a4db5fc 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -101,7 +101,7 @@ import { UserModule } from './user/user.module'; RedisCacheModule, ScheduleModule.forRoot(), ServeStaticModule.forRoot({ - exclude: ['/api*', '/sitemap.xml'], + exclude: ['/api/*wildcard', '/sitemap.xml'], rootPath: join(__dirname, '..', 'client'), serveStaticOptions: { setHeaders: (res) => { From 0ea588315af4c2407f4a2448a15e835f638408f2 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 23 May 2025 13:23:42 +0100 Subject: [PATCH 019/294] Feature/improve symbol lookup results by removing currency from name of cryptocurrencies (#4702) * Improve symbol lookup results by removing currency from name of cryptocurrencies * Update changelog --- CHANGELOG.md | 1 + .../data-provider/data-provider.service.ts | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b9d87f02..4715c9540 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the symbol lookup results by removing the currency from the name of cryptocurrencies (experimental) - Harmonized the data providers management style of the admin control panel - Extended the data providers management of the admin control panel by the asset profile count - Restricted the permissions of the demo user diff --git a/apps/api/src/services/data-provider/data-provider.service.ts b/apps/api/src/services/data-provider/data-provider.service.ts index 3d8f2e553..8b578a54e 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -663,9 +663,6 @@ export class DataProviderService { // Only allow symbols with supported currency return currency ? true : false; }) - .sort(({ name: name1 }, { name: name2 }) => { - return name1?.toLowerCase().localeCompare(name2?.toLowerCase()); - }) .map((lookupItem) => { if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { if (user.subscription.type === 'Premium') { @@ -679,7 +676,21 @@ export class DataProviderService { lookupItem.dataProviderInfo.isPremium = false; } + if ( + lookupItem.assetSubClass === 'CRYPTOCURRENCY' && + user?.Settings?.settings.isExperimentalFeatures + ) { + // Remove DEFAULT_CURRENCY at the end of cryptocurrency names + lookupItem.name = lookupItem.name.replace( + new RegExp(` ${DEFAULT_CURRENCY}$`), + '' + ); + } + return lookupItem; + }) + .sort(({ name: name1 }, { name: name2 }) => { + return name1?.toLowerCase().localeCompare(name2?.toLowerCase()); }); return { From 6e67520b681b80b68f828911e2783f6ec6b5421f Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 23 May 2025 13:31:22 +0100 Subject: [PATCH 020/294] Feature/improve Ghostfolio data provider status check (#4735) * Improve Ghostfolio data provider status check --- .../admin-settings.component.ts | 48 +++++++++++-------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.ts b/apps/client/src/app/components/admin-settings/admin-settings.component.ts index 5c071c60c..f85d9a2f7 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.ts +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.ts @@ -146,29 +146,35 @@ export class AdminSettingsComponent implements OnDestroy, OnInit { this.dataSource = new MatTableDataSource(filteredProviders); - this.adminService - .fetchGhostfolioDataProviderStatus( - settings[PROPERTY_API_KEY_GHOSTFOLIO] as string - ) - .pipe( - catchError(() => { - this.isGhostfolioApiKeyValid = false; + const ghostfolioApiKey = settings[ + PROPERTY_API_KEY_GHOSTFOLIO + ] as string; + + if (ghostfolioApiKey) { + this.adminService + .fetchGhostfolioDataProviderStatus(ghostfolioApiKey) + .pipe( + catchError(() => { + this.isGhostfolioApiKeyValid = false; + + this.changeDetectorRef.markForCheck(); + + return of(null); + }), + filter((status) => { + return status !== null; + }), + takeUntil(this.unsubscribeSubject) + ) + .subscribe((status) => { + this.ghostfolioApiStatus = status; + this.isGhostfolioApiKeyValid = true; this.changeDetectorRef.markForCheck(); - - return of(null); - }), - filter((status) => { - return status !== null; - }), - takeUntil(this.unsubscribeSubject) - ) - .subscribe((status) => { - this.ghostfolioApiStatus = status; - this.isGhostfolioApiKeyValid = true; - - this.changeDetectorRef.markForCheck(); - }); + }); + } else { + this.isGhostfolioApiKeyValid = false; + } this.isLoading = false; From ba6503636e114fa6c3ad8b6f08d98bb8aa4eabb3 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 23 May 2025 13:31:41 +0100 Subject: [PATCH 021/294] Feature/upgrade yahoo-finance2 to version 3.3.3 (#4736) * Upgrade yahoo-finance2 to version 3.3.3 * Update changelog --- CHANGELOG.md | 2 +- package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4715c9540..799555808 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,7 +33,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `countup.js` from version `2.8.0` to `2.8.2` - Upgraded `nestjs` from version `10.4.15` to `11.0.12` - Upgraded `twitter-api-v2` from version `1.14.2` to `1.23.0` -- Upgraded `yahoo-finance2` from version `2.11.3` to `3.3.2` +- Upgraded `yahoo-finance2` from version `2.11.3` to `3.3.3` ### Fixed diff --git a/package-lock.json b/package-lock.json index 94851b2e1..380e117e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -89,7 +89,7 @@ "svgmap": "2.12.2", "twitter-api-v2": "1.23.0", "uuid": "11.1.0", - "yahoo-finance2": "3.3.2", + "yahoo-finance2": "3.3.3", "zone.js": "0.15.0" }, "devDependencies": { @@ -36091,9 +36091,9 @@ } }, "node_modules/yahoo-finance2": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/yahoo-finance2/-/yahoo-finance2-3.3.2.tgz", - "integrity": "sha512-KJLrcEwG+PFxe7L2iXe1R9icceFChENA+2EdFo/6GYIFVJR4YJD3MrjIsAYfGuzK531EjDLyT4KSlpIkaKhhgw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/yahoo-finance2/-/yahoo-finance2-3.3.3.tgz", + "integrity": "sha512-H6BprlpMU5ieW1BszZiv1c/CHs11NFlnyfXp9UeV7uq8W5xf8xK/nIJwQoS9fdWqco0CTt8X7Gfj1xSnWtu0cQ==", "license": "MIT", "dependencies": { "@deno/shim-deno": "~0.18.0", diff --git a/package.json b/package.json index 50abdeea7..3cef37604 100644 --- a/package.json +++ b/package.json @@ -135,7 +135,7 @@ "svgmap": "2.12.2", "twitter-api-v2": "1.23.0", "uuid": "11.1.0", - "yahoo-finance2": "3.3.2", + "yahoo-finance2": "3.3.3", "zone.js": "0.15.0" }, "devDependencies": { From 4bffb3107dfb541e2baf9860d4152908df9732a4 Mon Sep 17 00:00:00 2001 From: Kenrick Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Fri, 23 May 2025 21:54:09 +0700 Subject: [PATCH 022/294] Bugfix/fix page navigation (#4711) * Fix page navigation and use paths references --- apps/client/src/app/app-routing.module.ts | 44 +- apps/client/src/app/app.component.ts | 33 +- .../access-table/access-table.component.ts | 3 +- .../account-detail-dialog.component.ts | 5 +- .../admin-settings.component.ts | 5 +- .../app/components/header/header.component.ts | 23 +- .../holding-detail-dialog.component.ts | 5 +- ...scription-interstitial-dialog.component.ts | 4 +- .../user-account-membership.component.ts | 3 +- apps/client/src/app/core/auth.guard.ts | 37 +- .../src/app/core/http-response.interceptor.ts | 5 +- apps/client/src/app/core/paths.ts | 12 - .../pages/about/about-page-routing.module.ts | 6 +- .../app/pages/about/about-page.component.ts | 13 +- .../overview/about-overview-page.component.ts | 5 +- .../pages/admin/admin-page-routing.module.ts | 9 +- .../app/pages/admin/admin-page.component.ts | 11 +- .../hallo-ghostfolio-page.component.ts | 6 +- .../hello-ghostfolio-page.component.ts | 6 +- ...st-months-in-open-source-page.component.ts | 4 +- ...get-my-finances-in-order-page.component.ts | 4 +- .../500-stars-on-github-page.component.ts | 6 +- .../black-friday-2022-page.component.ts | 5 +- .../1000-stars-on-github-page.component.ts | 6 +- ...otential-with-ghostfolio-page.component.ts | 6 +- ...ploring-the-path-to-fire-page.component.ts | 4 +- ...tfolio-joins-oss-friends-page.component.ts | 7 +- .../ghostfolio-2-page.component.ts | 13 +- .../hacktoberfest-2023-page.component.ts | 4 +- .../black-week-2023-page.component.ts | 5 +- ...oberfest-2023-debriefing-page.component.ts | 6 +- .../hacktoberfest-2024-page.component.ts | 4 +- .../black-weeks-2024-page.component.ts | 5 +- .../app/pages/faq/faq-page-routing.module.ts | 5 +- .../src/app/pages/faq/faq-page.component.ts | 7 +- .../overview/faq-overview-page.component.ts | 7 +- .../app/pages/faq/saas/saas-page.component.ts | 9 +- .../self-hosting-page.component.ts | 6 +- .../pages/features/features-page.component.ts | 5 +- .../pages/home/home-page-routing.module.ts | 14 +- .../src/app/pages/home/home-page.component.ts | 11 +- .../pages/landing/landing-page.component.ts | 5 +- .../portfolio-page-routing.module.ts | 9 +- .../portfolio/portfolio-page.component.ts | 11 +- .../pages/pricing/pricing-page.component.ts | 5 +- .../show-access-token-dialog.component.ts | 5 +- .../glossary/resources-glossary.component.ts | 5 +- .../overview/resources-overview.component.ts | 19 +- ...sonal-finance-tools-page-routing.module.ts | 3 +- .../personal-finance-tools-page.component.ts | 7 +- .../product-page.component.ts | 9 +- .../resources-page-routing.module.ts | 9 +- .../resources/resources-page.component.ts | 8 +- .../user-account-page-routing.module.ts | 5 +- .../user-account-page.component.ts | 7 +- .../app/pages/zen/zen-page-routing.module.ts | 3 +- .../src/app/pages/zen/zen-page.component.ts | 5 +- apps/client/src/locales/messages.ca.xlf | 714 ++++---------- apps/client/src/locales/messages.de.xlf | 892 +++++------------- apps/client/src/locales/messages.es.xlf | 892 +++++------------- apps/client/src/locales/messages.fr.xlf | 892 +++++------------- apps/client/src/locales/messages.it.xlf | 892 +++++------------- apps/client/src/locales/messages.nl.xlf | 892 +++++------------- apps/client/src/locales/messages.pl.xlf | 712 ++++---------- apps/client/src/locales/messages.pt.xlf | 892 +++++------------- apps/client/src/locales/messages.tr.xlf | 712 ++++---------- apps/client/src/locales/messages.uk.xlf | 714 ++++---------- apps/client/src/locales/messages.xlf | 706 +++----------- apps/client/src/locales/messages.zh.xlf | 716 ++++---------- libs/common/src/lib/paths.ts | 53 ++ .../membership-card.component.ts | 4 +- .../premium-indicator.component.ts | 4 +- 72 files changed, 2753 insertions(+), 7427 deletions(-) delete mode 100644 apps/client/src/app/core/paths.ts create mode 100644 libs/common/src/lib/paths.ts diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts index f4b61ea33..1d62f5f13 100644 --- a/apps/client/src/app/app-routing.module.ts +++ b/apps/client/src/app/app-routing.module.ts @@ -1,6 +1,6 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; -import { paths } from '@ghostfolio/client/core/paths'; import { PageTitleStrategy } from '@ghostfolio/client/services/page-title.strategy'; +import { paths } from '@ghostfolio/common/paths'; import { NgModule } from '@angular/core'; import { RouterModule, Routes, TitleStrategy } from '@angular/router'; @@ -14,21 +14,21 @@ const routes: Routes = [ import('./pages/about/about-page.module').then((m) => m.AboutPageModule) }, { - path: 'account', + path: paths.account, loadChildren: () => import('./pages/user-account/user-account-page.module').then( (m) => m.UserAccountPageModule ) }, { - path: 'accounts', + path: paths.accounts, loadChildren: () => import('./pages/accounts/accounts-page.module').then( (m) => m.AccountsPageModule ) }, { - path: 'admin', + path: paths.admin, loadChildren: () => import('./pages/admin/admin-page.module').then((m) => m.AdminPageModule) }, @@ -38,16 +38,16 @@ const routes: Routes = [ import('./pages/api/api-page.component').then( (c) => c.GfApiPageComponent ), - path: 'api', + path: paths.api, title: 'Ghostfolio API' }, { - path: 'auth', + path: paths.auth, loadChildren: () => import('./pages/auth/auth-page.module').then((m) => m.AuthPageModule) }, { - path: 'blog', + path: paths.blog, loadChildren: () => import('./pages/blog/blog-page.module').then((m) => m.BlogPageModule) }, @@ -57,7 +57,7 @@ const routes: Routes = [ import('./pages/demo/demo-page.component').then( (c) => c.GfDemoPageComponent ), - path: 'demo' + path: paths.demo }, { path: paths.faq, @@ -74,7 +74,7 @@ const routes: Routes = [ title: $localize`Features` }, { - path: 'home', + path: paths.home, loadChildren: () => import('./pages/home/home-page.module').then((m) => m.HomePageModule) }, @@ -84,7 +84,7 @@ const routes: Routes = [ import('./pages/i18n/i18n-page.component').then( (c) => c.GfI18nPageComponent ), - path: 'i18n', + path: paths.i18n, title: $localize`Internationalization` }, { @@ -95,19 +95,12 @@ const routes: Routes = [ ) }, { - path: 'open', + path: paths.open, loadChildren: () => import('./pages/open/open-page.module').then((m) => m.OpenPageModule) }, { - path: 'p', - loadChildren: () => - import('./pages/public/public-page.module').then( - (m) => m.PublicPageModule - ) - }, - { - path: 'portfolio', + path: paths.portfolio, loadChildren: () => import('./pages/portfolio/portfolio-page.module').then( (m) => m.PortfolioPageModule @@ -120,6 +113,13 @@ const routes: Routes = [ (m) => m.PricingPageModule ) }, + { + path: paths.public, + loadChildren: () => + import('./pages/public/public-page.module').then( + (m) => m.PublicPageModule + ) + }, { path: paths.register, loadChildren: () => @@ -135,7 +135,7 @@ const routes: Routes = [ ) }, { - path: 'start', + path: paths.start, loadChildren: () => import('./pages/landing/landing-page.module').then( (m) => m.LandingPageModule @@ -146,11 +146,11 @@ const routes: Routes = [ import('./pages/webauthn/webauthn-page.component').then( (c) => c.GfWebauthnPageComponent ), - path: 'webauthn', + path: paths.webauthn, title: $localize`Sign in` }, { - path: 'zen', + path: paths.zen, loadChildren: () => import('./pages/zen/zen-page.module').then((m) => m.ZenPageModule) }, diff --git a/apps/client/src/app/app.component.ts b/apps/client/src/app/app.component.ts index 38e48f139..02db9fea0 100644 --- a/apps/client/src/app/app.component.ts +++ b/apps/client/src/app/app.component.ts @@ -2,6 +2,7 @@ import { GfHoldingDetailDialogComponent } from '@ghostfolio/client/components/ho import { HoldingDetailDialogParams } from '@ghostfolio/client/components/holding-detail-dialog/interfaces/interfaces'; import { getCssVariable } from '@ghostfolio/common/helper'; import { InfoItem, User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { ColorScheme } from '@ghostfolio/common/types'; @@ -62,29 +63,23 @@ export class AppComponent implements OnDestroy, OnInit { public hasTabs = false; public info: InfoItem; public pageTitle: string; - public routerLinkAbout = ['/' + $localize`:snake-case:about`]; - public routerLinkAboutChangelog = [ - '/' + $localize`:snake-case:about`, - 'changelog' - ]; - public routerLinkAboutLicense = [ - '/' + $localize`:snake-case:about`, - $localize`:snake-case:license` - ]; + public routerLinkAbout = ['/' + paths.about]; + public routerLinkAboutChangelog = ['/' + paths.about, paths.changelog]; + public routerLinkAboutLicense = ['/' + paths.about, paths.license]; public routerLinkAboutPrivacyPolicy = [ - '/' + $localize`:snake-case:about`, - $localize`:snake-case:privacy-policy` + '/' + paths.about, + paths.privacyPolicy ]; public routerLinkAboutTermsOfService = [ - '/' + $localize`:snake-case:about`, - $localize`:snake-case:terms-of-service` + '/' + paths.about, + paths.termsOfService ]; - public routerLinkFaq = ['/' + $localize`:snake-case:faq`]; - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; - public routerLinkMarkets = ['/' + $localize`:snake-case:markets`]; - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; - public routerLinkRegister = ['/' + $localize`:snake-case:register`]; - public routerLinkResources = ['/' + $localize`:snake-case:resources`]; + public routerLinkFaq = ['/' + paths.faq]; + public routerLinkFeatures = ['/' + paths.features]; + public routerLinkMarkets = ['/' + paths.markets]; + public routerLinkPricing = ['/' + paths.pricing]; + public routerLinkRegister = ['/' + paths.register]; + public routerLinkResources = ['/' + paths.resources]; public showFooter = false; public user: User; diff --git a/apps/client/src/app/components/access-table/access-table.component.ts b/apps/client/src/app/components/access-table/access-table.component.ts index 34c5fbda2..e70b6684a 100644 --- a/apps/client/src/app/components/access-table/access-table.component.ts +++ b/apps/client/src/app/components/access-table/access-table.component.ts @@ -2,6 +2,7 @@ import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/con import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { DEFAULT_LANGUAGE_CODE } from '@ghostfolio/common/config'; import { Access, User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { Clipboard } from '@angular/cdk/clipboard'; import { @@ -55,7 +56,7 @@ export class AccessTableComponent implements OnChanges { public getPublicUrl(aId: string): string { const languageCode = this.user?.settings?.language ?? DEFAULT_LANGUAGE_CODE; - return `${this.baseUrl}/${languageCode}/p/${aId}`; + return `${this.baseUrl}/${languageCode}/${paths.public}/${aId}`; } public onCopyUrlToClipboard(aId: string): void { diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts index c77d8cb4a..ba3b9e871 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts @@ -9,6 +9,7 @@ import { PortfolioPosition, User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { OrderWithAccount } from '@ghostfolio/common/types'; @@ -92,7 +93,7 @@ export class AccountDetailDialog implements OnDestroy, OnInit { } public onCloneActivity(aActivity: Activity) { - this.router.navigate(['/portfolio', 'activities'], { + this.router.navigate(['/' + paths.portfolio, paths.activities], { queryParams: { activityId: aActivity.id, createDialog: true } }); @@ -151,7 +152,7 @@ export class AccountDetailDialog implements OnDestroy, OnInit { } public onUpdateActivity(aActivity: Activity) { - this.router.navigate(['/portfolio', 'activities'], { + this.router.navigate(['/' + paths.portfolio, paths.activities], { queryParams: { activityId: aActivity.id, editDialog: true } }); diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.ts b/apps/client/src/app/components/admin-settings/admin-settings.component.ts index f85d9a2f7..3ff8370cd 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.ts +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.ts @@ -13,6 +13,7 @@ import { DataProviderInfo, User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { ChangeDetectionStrategy, @@ -75,9 +76,7 @@ export class AdminSettingsComponent implements OnDestroy, OnInit { const languageCode = this.user?.settings?.language ?? DEFAULT_LANGUAGE_CODE; - this.pricingUrl = - `https://ghostfol.io/${languageCode}/` + - $localize`:snake-case:pricing`; + this.pricingUrl = `https://ghostfol.io/${languageCode}/${paths.pricing}`; this.changeDetectorRef.markForCheck(); } diff --git a/apps/client/src/app/components/header/header.component.ts b/apps/client/src/app/components/header/header.component.ts index 728320aef..a0fbe8c84 100644 --- a/apps/client/src/app/components/header/header.component.ts +++ b/apps/client/src/app/components/header/header.component.ts @@ -11,6 +11,7 @@ import { import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { Filter, InfoItem, User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { DateRange } from '@ghostfolio/common/types'; import { GfAssistantComponent } from '@ghostfolio/ui/assistant/assistant.component'; @@ -79,17 +80,17 @@ export class HeaderComponent implements OnChanges { public hasPermissionToCreateUser: boolean; public impersonationId: string; public isMenuOpen: boolean; - public routeAbout = $localize`:snake-case:about`; - public routeFeatures = $localize`:snake-case:features`; - public routeMarkets = $localize`:snake-case:markets`; - public routePricing = $localize`:snake-case:pricing`; - public routeResources = $localize`:snake-case:resources`; - public routerLinkAbout = ['/' + $localize`:snake-case:about`]; - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; - public routerLinkMarkets = ['/' + $localize`:snake-case:markets`]; - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; - public routerLinkRegister = ['/' + $localize`:snake-case:register`]; - public routerLinkResources = ['/' + $localize`:snake-case:resources`]; + public routeAbout = paths.about; + public routeFeatures = paths.features; + public routeMarkets = paths.markets; + public routePricing = paths.pricing; + public routeResources = paths.resources; + public routerLinkAbout = ['/' + paths.about]; + public routerLinkFeatures = ['/' + paths.features]; + public routerLinkMarkets = ['/' + paths.markets]; + public routerLinkPricing = ['/' + paths.pricing]; + public routerLinkRegister = ['/' + paths.register]; + public routerLinkResources = ['/' + paths.resources]; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index 925a64429..028866009 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -13,6 +13,7 @@ import { LineChartItem, User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { GfActivitiesTableComponent } from '@ghostfolio/ui/activities-table'; import { GfDataProviderCreditsComponent } from '@ghostfolio/ui/data-provider-credits'; @@ -468,7 +469,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { } public onCloneActivity(aActivity: Activity) { - this.router.navigate(['/portfolio', 'activities'], { + this.router.navigate(['/' + paths.portfolio, paths.activities], { queryParams: { activityId: aActivity.id, createDialog: true } }); @@ -510,7 +511,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { } public onUpdateActivity(aActivity: Activity) { - this.router.navigate(['/portfolio', 'activities'], { + this.router.navigate(['/' + paths.portfolio, paths.activities], { queryParams: { activityId: aActivity.id, editDialog: true } }); diff --git a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts index 201a63927..233493d13 100644 --- a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts +++ b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { ChangeDetectionStrategy, ChangeDetectorRef, @@ -26,7 +28,7 @@ export class SubscriptionInterstitialDialog implements OnInit { public remainingSkipButtonDelay = SubscriptionInterstitialDialog.SKIP_BUTTON_DELAY_IN_SECONDS; - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; + public routerLinkPricing = ['/' + paths.pricing]; public variantIndex: number; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts b/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts index 8d54f737c..82810392c 100644 --- a/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts +++ b/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts @@ -4,6 +4,7 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { getDateFormatString } from '@ghostfolio/common/helper'; import { User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { @@ -36,7 +37,7 @@ export class UserAccountMembershipComponent implements OnDestroy { public hasPermissionToUpdateUserSettings: boolean; public price: number; public priceId: string; - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; + public routerLinkPricing = ['/' + paths.pricing]; public trySubscriptionMail = 'mailto:hi@ghostfol.io?Subject=Ghostfolio Premium Trial&body=Hello%0D%0DI am interested in Ghostfolio Premium. Can you please send me a coupon code to try it for some time?%0D%0DKind regards'; public user: User; diff --git a/apps/client/src/app/core/auth.guard.ts b/apps/client/src/app/core/auth.guard.ts index 7a75728ca..16851b4e0 100644 --- a/apps/client/src/app/core/auth.guard.ts +++ b/apps/client/src/app/core/auth.guard.ts @@ -1,6 +1,7 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { SettingsStorageService } from '@ghostfolio/client/services/settings-storage.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; +import { paths } from '@ghostfolio/common/paths'; import { Injectable } from '@angular/core'; import { @@ -11,20 +12,18 @@ import { import { EMPTY } from 'rxjs'; import { catchError } from 'rxjs/operators'; -import { paths } from './paths'; - @Injectable({ providedIn: 'root' }) export class AuthGuard { private static PUBLIC_PAGE_ROUTES = [ `/${paths.about}`, - '/blog', - '/demo', + `/${paths.blog}`, + `/${paths.demo}`, `/${paths.faq}`, `/${paths.features}`, `/${paths.markets}`, - '/open', - '/p', + `/${paths.open}`, `/${paths.pricing}`, + `/${paths.public}`, `/${paths.register}`, `/${paths.resources}` ]; @@ -49,21 +48,21 @@ export class AuthGuard { .pipe( catchError(() => { if (utmSource === 'ios') { - this.router.navigate(['/demo']); + this.router.navigate(['/' + paths.demo]); resolve(false); } else if (utmSource === 'trusted-web-activity') { - this.router.navigate(['/' + $localize`register`]); + this.router.navigate(['/' + paths.register]); resolve(false); } else if ( - AuthGuard.PUBLIC_PAGE_ROUTES.filter((publicPageRoute) => { - const [, url] = state.url.split('/'); + AuthGuard.PUBLIC_PAGE_ROUTES.some((publicPageRoute) => { + const [, url] = decodeURIComponent(state.url).split('/'); return `/${url}` === publicPageRoute; - })?.length > 0 + }) ) { resolve(true); return EMPTY; } else if (state.url !== '/start') { - this.router.navigate(['/start']); + this.router.navigate(['/' + paths.start]); resolve(false); return EMPTY; } @@ -89,26 +88,26 @@ export class AuthGuard { resolve(true); return; } else if ( - state.url.startsWith('/home') && + state.url.startsWith(`/${paths.home}`) && user.settings.viewMode === 'ZEN' ) { - this.router.navigate(['/zen']); + this.router.navigate(['/' + paths.zen]); resolve(false); return; - } else if (state.url.startsWith('/start')) { + } else if (state.url.startsWith(`/${paths.start}`)) { if (user.settings.viewMode === 'ZEN') { - this.router.navigate(['/zen']); + this.router.navigate(['/' + paths.zen]); } else { - this.router.navigate(['/home']); + this.router.navigate(['/' + paths.home]); } resolve(false); return; } else if ( - state.url.startsWith('/zen') && + state.url.startsWith(`/${paths.zen}`) && user.settings.viewMode === 'DEFAULT' ) { - this.router.navigate(['/home']); + this.router.navigate(['/' + paths.home]); resolve(false); return; } diff --git a/apps/client/src/app/core/http-response.interceptor.ts b/apps/client/src/app/core/http-response.interceptor.ts index 62c3540f7..32c5350bb 100644 --- a/apps/client/src/app/core/http-response.interceptor.ts +++ b/apps/client/src/app/core/http-response.interceptor.ts @@ -2,6 +2,7 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service'; import { WebAuthnService } from '@ghostfolio/client/services/web-authn.service'; import { InfoItem } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { HTTP_INTERCEPTORS, @@ -74,7 +75,7 @@ export class HttpResponseInterceptor implements HttpInterceptor { }); this.snackBarRef.onAction().subscribe(() => { - this.router.navigate(['/' + $localize`pricing`]); + this.router.navigate(['/' + paths.pricing]); }); } } else if (error.status === StatusCodes.INTERNAL_SERVER_ERROR) { @@ -110,7 +111,7 @@ export class HttpResponseInterceptor implements HttpInterceptor { } else if (error.status === StatusCodes.UNAUTHORIZED) { if (!error.url.includes('/data-providers/ghostfolio/status')) { if (this.webAuthnService.isEnabled()) { - this.router.navigate(['/webauthn']); + this.router.navigate(['/' + paths.webauthn]); } else { this.tokenStorageService.signOut(); } diff --git a/apps/client/src/app/core/paths.ts b/apps/client/src/app/core/paths.ts deleted file mode 100644 index 17ce75c7c..000000000 --- a/apps/client/src/app/core/paths.ts +++ /dev/null @@ -1,12 +0,0 @@ -export const paths = { - about: $localize`about`, - faq: $localize`faq`, - features: $localize`features`, - license: $localize`license`, - markets: $localize`markets`, - pricing: $localize`pricing`, - privacyPolicy: $localize`privacy-policy`, - register: $localize`register`, - resources: $localize`resources`, - termsOfService: $localize`terms-of-service` -}; diff --git a/apps/client/src/app/pages/about/about-page-routing.module.ts b/apps/client/src/app/pages/about/about-page-routing.module.ts index a7312001f..d8d70a2da 100644 --- a/apps/client/src/app/pages/about/about-page-routing.module.ts +++ b/apps/client/src/app/pages/about/about-page-routing.module.ts @@ -1,5 +1,5 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; -import { paths } from '@ghostfolio/client/core/paths'; +import { paths } from '@ghostfolio/common/paths'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -18,7 +18,7 @@ const routes: Routes = [ ) }, { - path: 'changelog', + path: paths.changelog, loadChildren: () => import('./changelog/changelog-page.module').then( (m) => m.ChangelogPageModule @@ -32,7 +32,7 @@ const routes: Routes = [ ) }, { - path: 'oss-friends', + path: paths.ossFriends, loadChildren: () => import('./oss-friends/oss-friends-page.module').then( (m) => m.OpenSourceSoftwareFriendsPageModule diff --git a/apps/client/src/app/pages/about/about-page.component.ts b/apps/client/src/app/pages/about/about-page.component.ts index 46a080383..deeffa166 100644 --- a/apps/client/src/app/pages/about/about-page.component.ts +++ b/apps/client/src/app/pages/about/about-page.component.ts @@ -1,6 +1,7 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; @@ -43,17 +44,17 @@ export class AboutPageComponent implements OnDestroy, OnInit { { iconName: 'information-circle-outline', label: $localize`About`, - path: ['/' + $localize`about`] + path: ['/' + paths.about] }, { iconName: 'sparkles-outline', label: $localize`Changelog`, - path: ['/' + $localize`about`, 'changelog'] + path: ['/' + paths.about, paths.changelog] }, { iconName: 'ribbon-outline', label: $localize`License`, - path: ['/' + $localize`about`, $localize`license`], + path: ['/' + paths.about, paths.license], showCondition: !this.hasPermissionForSubscription } ]; @@ -62,14 +63,14 @@ export class AboutPageComponent implements OnDestroy, OnInit { this.tabs.push({ iconName: 'shield-checkmark-outline', label: $localize`Privacy Policy`, - path: ['/' + $localize`about`, $localize`privacy-policy`], + path: ['/' + paths.about, paths.privacyPolicy], showCondition: this.hasPermissionForSubscription }); this.tabs.push({ iconName: 'document-text-outline', label: $localize`Terms of Service`, - path: ['/' + $localize`about`, $localize`terms-of-service`], + path: ['/' + paths.about, paths.termsOfService], showCondition: this.hasPermissionForSubscription }); @@ -81,7 +82,7 @@ export class AboutPageComponent implements OnDestroy, OnInit { this.tabs.push({ iconName: 'happy-outline', label: 'OSS Friends', - path: ['/' + $localize`about`, 'oss-friends'] + path: ['/' + paths.about, paths.ossFriends] }); }); } 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 9dae545fa..5ec30a32e 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 @@ -1,6 +1,7 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; @@ -17,8 +18,8 @@ export class AboutOverviewPageComponent implements OnDestroy, OnInit { public hasPermissionForStatistics: boolean; public hasPermissionForSubscription: boolean; public isLoggedIn: boolean; - public routerLinkFaq = ['/' + $localize`:snake-case:faq`]; - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; + public routerLinkFaq = ['/' + paths.faq]; + public routerLinkFeatures = ['/' + paths.features]; public user: User; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/admin/admin-page-routing.module.ts b/apps/client/src/app/pages/admin/admin-page-routing.module.ts index a6a69641c..d22c754bb 100644 --- a/apps/client/src/app/pages/admin/admin-page-routing.module.ts +++ b/apps/client/src/app/pages/admin/admin-page-routing.module.ts @@ -4,6 +4,7 @@ import { AdminOverviewComponent } from '@ghostfolio/client/components/admin-over import { AdminSettingsComponent } from '@ghostfolio/client/components/admin-settings/admin-settings.component'; import { AdminUsersComponent } from '@ghostfolio/client/components/admin-users/admin-users.component'; import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { paths } from '@ghostfolio/common/paths'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -20,22 +21,22 @@ const routes: Routes = [ title: $localize`Admin Control` }, { - path: 'jobs', + path: paths.jobs, component: AdminJobsComponent, title: $localize`Job Queue` }, { - path: 'market-data', + path: paths.marketData, component: AdminMarketDataComponent, title: $localize`Market Data` }, { - path: 'settings', + path: paths.settings, component: AdminSettingsComponent, title: $localize`Settings` }, { - path: 'users', + path: paths.users, component: AdminUsersComponent, title: $localize`Users` } 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 5896a18d7..8328b7aba 100644 --- a/apps/client/src/app/pages/admin/admin-page.component.ts +++ b/apps/client/src/app/pages/admin/admin-page.component.ts @@ -1,4 +1,5 @@ import { TabConfiguration } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { Component, OnDestroy, OnInit } from '@angular/core'; import { DeviceDetectorService } from 'ngx-device-detector'; @@ -26,27 +27,27 @@ export class AdminPageComponent implements OnDestroy, OnInit { { iconName: 'reader-outline', label: $localize`Overview`, - path: ['/admin'] + path: ['/' + paths.admin] }, { iconName: 'settings-outline', label: $localize`Settings`, - path: ['/admin', 'settings'] + path: ['/' + paths.admin, paths.settings] }, { iconName: 'server-outline', label: $localize`Market Data`, - path: ['/admin', 'market-data'] + path: ['/' + paths.admin, paths.marketData] }, { iconName: 'flash-outline', label: $localize`Job Queue`, - path: ['/admin', 'jobs'] + path: ['/' + paths.admin, paths.jobs] }, { iconName: 'people-outline', label: $localize`Users`, - path: ['/admin', 'users'] + path: ['/' + paths.admin, paths.users] } ]; } diff --git a/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts b/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts index 2e346bf40..5dcb6e359 100644 --- a/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts +++ b/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; @@ -9,6 +11,6 @@ import { RouterModule } from '@angular/router'; templateUrl: './hallo-ghostfolio-page.html' }) export class HalloGhostfolioPageComponent { - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; - public routerLinkResources = ['/' + $localize`:snake-case:resources`]; + public routerLinkPricing = ['/' + paths.pricing]; + public routerLinkResources = ['/' + paths.resources]; } diff --git a/apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts b/apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts index 7c5554b79..7a795f5d7 100644 --- a/apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts +++ b/apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; @@ -9,6 +11,6 @@ import { RouterModule } from '@angular/router'; templateUrl: './hello-ghostfolio-page.html' }) export class HelloGhostfolioPageComponent { - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; - public routerLinkResources = ['/' + $localize`:snake-case:resources`]; + public routerLinkPricing = ['/' + paths.pricing]; + public routerLinkResources = ['/' + paths.resources]; } diff --git a/apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts b/apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts index f4391ed86..85f2f5720 100644 --- a/apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts +++ b/apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; @@ -9,5 +11,5 @@ import { RouterModule } from '@angular/router'; templateUrl: './first-months-in-open-source-page.html' }) export class FirstMonthsInOpenSourcePageComponent { - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; + public routerLinkPricing = ['/' + paths.pricing]; } diff --git a/apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts b/apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts index e9ebb38a2..f51002647 100644 --- a/apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts +++ b/apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; @@ -9,5 +11,5 @@ import { RouterModule } from '@angular/router'; templateUrl: './how-do-i-get-my-finances-in-order-page.html' }) export class HowDoIGetMyFinancesInOrderPageComponent { - public routerLinkResources = ['/' + $localize`:snake-case:resources`]; + public routerLinkResources = ['/' + paths.resources]; } diff --git a/apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts b/apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts index 6cd71ad01..f10cf6878 100644 --- a/apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts +++ b/apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; @@ -9,6 +11,6 @@ import { RouterModule } from '@angular/router'; templateUrl: './500-stars-on-github-page.html' }) export class FiveHundredStarsOnGitHubPageComponent { - public routerLinkMarkets = ['/' + $localize`:snake-case:markets`]; - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; + public routerLinkMarkets = ['/' + paths.markets]; + public routerLinkPricing = ['/' + paths.pricing]; } diff --git a/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts b/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts index 9696806d4..558922d6a 100644 --- a/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts +++ b/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -1,3 +1,4 @@ +import { paths } from '@ghostfolio/common/paths'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; import { Component } from '@angular/core'; @@ -11,6 +12,6 @@ import { RouterModule } from '@angular/router'; templateUrl: './black-friday-2022-page.html' }) export class BlackFriday2022PageComponent { - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; + public routerLinkFeatures = ['/' + paths.features]; + public routerLinkPricing = ['/' + paths.pricing]; } diff --git a/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts index ba20ce35c..959f63806 100644 --- a/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; @@ -9,6 +11,6 @@ import { RouterModule } from '@angular/router'; templateUrl: './1000-stars-on-github-page.html' }) export class ThousandStarsOnGitHubPageComponent { - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; + public routerLinkFeatures = ['/' + paths.features]; + public routerLinkPricing = ['/' + paths.pricing]; } diff --git a/apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts b/apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts index a401c74ea..f488a45ea 100644 --- a/apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; @@ -9,6 +11,6 @@ import { RouterModule } from '@angular/router'; templateUrl: './unlock-your-financial-potential-with-ghostfolio-page.html' }) export class UnlockYourFinancialPotentialWithGhostfolioPageComponent { - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; - public routerLinkResources = ['/' + $localize`:snake-case:resources`]; + public routerLinkFeatures = ['/' + paths.features]; + public routerLinkResources = ['/' + paths.resources]; } diff --git a/apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts b/apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts index 6cf8dfe25..753ddb9f1 100644 --- a/apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; @@ -9,5 +11,5 @@ import { RouterModule } from '@angular/router'; templateUrl: './exploring-the-path-to-fire-page.html' }) export class ExploringThePathToFirePageComponent { - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; + public routerLinkFeatures = ['/' + paths.features]; } diff --git a/apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts b/apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts index 2f2f6275a..674469763 100644 --- a/apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; @@ -9,8 +11,5 @@ import { RouterModule } from '@angular/router'; templateUrl: './ghostfolio-joins-oss-friends-page.html' }) export class GhostfolioJoinsOssFriendsPageComponent { - public routerLinkAboutOssFriends = [ - '/' + $localize`:snake-case:about`, - 'oss-friends' - ]; + public routerLinkAboutOssFriends = ['/' + paths.about, paths.ossFriends]; } diff --git a/apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts b/apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts index 80f9f08fd..3918c5145 100644 --- a/apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; @@ -9,11 +11,8 @@ import { RouterModule } from '@angular/router'; templateUrl: './ghostfolio-2-page.html' }) export class Ghostfolio2PageComponent { - public routerLinkAbout = ['/' + $localize`:snake-case:about`]; - public routerLinkAboutChangelog = [ - '/' + $localize`:snake-case:about`, - 'changelog' - ]; - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; - public routerLinkMarkets = ['/' + $localize`:snake-case:markets`]; + public routerLinkAbout = ['/' + paths.about]; + public routerLinkAboutChangelog = ['/' + paths.about, paths.changelog]; + public routerLinkFeatures = ['/' + paths.features]; + public routerLinkMarkets = ['/' + paths.markets]; } 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 8e38d00c7..ef25da8e6 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 @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; @@ -9,5 +11,5 @@ import { RouterModule } from '@angular/router'; templateUrl: './hacktoberfest-2023-page.html' }) export class Hacktoberfest2023PageComponent { - public routerLinkAbout = ['/' + $localize`:snake-case:about`]; + public routerLinkAbout = ['/' + paths.about]; } diff --git a/apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts b/apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts index c47a545f2..ce746c275 100644 --- a/apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts @@ -1,3 +1,4 @@ +import { paths } from '@ghostfolio/common/paths'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; import { Component } from '@angular/core'; @@ -11,6 +12,6 @@ import { RouterModule } from '@angular/router'; templateUrl: './black-week-2023-page.html' }) export class BlackWeek2023PageComponent { - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; + public routerLinkFeatures = ['/' + paths.features]; + public routerLinkPricing = ['/' + paths.pricing]; } diff --git a/apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts b/apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts index 758e94c18..7046d401c 100644 --- a/apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; @@ -9,6 +11,6 @@ import { RouterModule } from '@angular/router'; templateUrl: './hacktoberfest-2023-debriefing-page.html' }) export class Hacktoberfest2023DebriefingPageComponent { - public routerLinkAbout = ['/' + $localize`:snake-case:about`]; - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; + public routerLinkAbout = ['/' + paths.about]; + public routerLinkFeatures = ['/' + paths.features]; } 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 4b983ba7f..960f5504e 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 @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; @@ -9,5 +11,5 @@ import { RouterModule } from '@angular/router'; templateUrl: './hacktoberfest-2024-page.html' }) export class Hacktoberfest2024PageComponent { - public routerLinkAbout = ['/' + $localize`:snake-case:about`]; + public routerLinkAbout = ['/' + paths.about]; } diff --git a/apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts b/apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts index 1fe81ef0c..3b45488c6 100644 --- a/apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts +++ b/apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts @@ -1,3 +1,4 @@ +import { paths } from '@ghostfolio/common/paths'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; import { Component } from '@angular/core'; @@ -11,6 +12,6 @@ import { RouterModule } from '@angular/router'; templateUrl: './black-weeks-2024-page.html' }) export class BlackWeeks2024PageComponent { - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; + public routerLinkFeatures = ['/' + paths.features]; + public routerLinkPricing = ['/' + paths.pricing]; } diff --git a/apps/client/src/app/pages/faq/faq-page-routing.module.ts b/apps/client/src/app/pages/faq/faq-page-routing.module.ts index 17c087834..3ebf1912a 100644 --- a/apps/client/src/app/pages/faq/faq-page-routing.module.ts +++ b/apps/client/src/app/pages/faq/faq-page-routing.module.ts @@ -1,4 +1,5 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { paths } from '@ghostfolio/common/paths'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -17,12 +18,12 @@ const routes: Routes = [ ) }, { - path: 'saas', + path: paths.saas, loadChildren: () => import('./saas/saas-page.module').then((m) => m.SaasPageModule) }, { - path: 'self-hosting', + path: paths.selfHosting, loadChildren: () => import('./self-hosting/self-hosting-page.module').then( (m) => m.SelfHostingPageModule diff --git a/apps/client/src/app/pages/faq/faq-page.component.ts b/apps/client/src/app/pages/faq/faq-page.component.ts index caed1dd69..270719cf3 100644 --- a/apps/client/src/app/pages/faq/faq-page.component.ts +++ b/apps/client/src/app/pages/faq/faq-page.component.ts @@ -1,5 +1,6 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { TabConfiguration } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { Component, OnDestroy, OnInit } from '@angular/core'; @@ -35,18 +36,18 @@ export class FaqPageComponent implements OnDestroy, OnInit { { iconName: 'reader-outline', label: $localize`General`, - path: ['/' + $localize`faq`] + path: ['/' + paths.faq] }, { iconName: 'cloudy-outline', label: $localize`Cloud` + ' (SaaS)', - path: ['/' + $localize`faq`, 'saas'], + path: ['/' + paths.faq, paths.saas], showCondition: this.hasPermissionForSubscription }, { iconName: 'server-outline', label: $localize`Self-Hosting`, - path: ['/' + $localize`faq`, $localize`self-hosting`] + path: ['/' + paths.faq, paths.selfHosting] } ]; } diff --git a/apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts b/apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts index ddafa5730..4e5ed76b9 100644 --- a/apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts +++ b/apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts @@ -1,5 +1,6 @@ import { UserService } from '@ghostfolio/client/services/user/user.service'; import { User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { ChangeDetectorRef, Component, OnDestroy } from '@angular/core'; import { Subject, takeUntil } from 'rxjs'; @@ -12,10 +13,8 @@ import { Subject, takeUntil } from 'rxjs'; standalone: false }) export class FaqOverviewPageComponent implements OnDestroy { - public pricingUrl = - `https://ghostfol.io/${document.documentElement.lang}/` + - $localize`:snake-case:pricing`; - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; + public pricingUrl = `https://ghostfol.io/${document.documentElement.lang}/${paths.pricing}`; + public routerLinkFeatures = ['/' + paths.features]; public user: User; private unsubscribeSubject = new Subject(); 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 d7ea6cd82..75983c108 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 @@ -1,5 +1,6 @@ import { UserService } from '@ghostfolio/client/services/user/user.service'; import { User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { ChangeDetectorRef, Component, OnDestroy } from '@angular/core'; import { Subject, takeUntil } from 'rxjs'; @@ -12,11 +13,9 @@ import { Subject, takeUntil } from 'rxjs'; standalone: false }) export class SaasPageComponent implements OnDestroy { - public pricingUrl = - `https://ghostfol.io/${document.documentElement.lang}/` + - $localize`:snake-case:pricing`; - public routerLinkMarkets = ['/' + $localize`:snake-case:markets`]; - public routerLinkRegister = ['/' + $localize`:snake-case:register`]; + public pricingUrl = `https://ghostfol.io/${document.documentElement.lang}/${paths.pricing}`; + public routerLinkMarkets = ['/' + paths.markets]; + public routerLinkRegister = ['/' + paths.register]; public user: User; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts index f0ff7dbc3..1b7836755 100644 --- a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts +++ b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component, OnDestroy } from '@angular/core'; import { Subject } from 'rxjs'; @@ -9,9 +11,7 @@ import { Subject } from 'rxjs'; standalone: false }) export class SelfHostingPageComponent implements OnDestroy { - public pricingUrl = - `https://ghostfol.io/${document.documentElement.lang}/` + - $localize`:snake-case:pricing`; + public pricingUrl = `https://ghostfol.io/${document.documentElement.lang}/${paths.pricing}`; 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 c33f1e99b..1057516bd 100644 --- a/apps/client/src/app/pages/features/features-page.component.ts +++ b/apps/client/src/app/pages/features/features-page.component.ts @@ -1,6 +1,7 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { InfoItem, User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; @@ -25,8 +26,8 @@ import { Subject, takeUntil } from 'rxjs'; export class GfFeaturesPageComponent implements OnDestroy { public hasPermissionForSubscription: boolean; public info: InfoItem; - public routerLinkRegister = ['/' + $localize`:snake-case:register`]; - public routerLinkResources = ['/' + $localize`:snake-case:resources`]; + public routerLinkRegister = ['/' + paths.register]; + public routerLinkResources = ['/' + paths.resources]; public user: User; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/home/home-page-routing.module.ts b/apps/client/src/app/pages/home/home-page-routing.module.ts index 9a915f0b3..a28ea864f 100644 --- a/apps/client/src/app/pages/home/home-page-routing.module.ts +++ b/apps/client/src/app/pages/home/home-page-routing.module.ts @@ -4,6 +4,7 @@ import { HomeOverviewComponent } from '@ghostfolio/client/components/home-overvi import { HomeSummaryComponent } from '@ghostfolio/client/components/home-summary/home-summary.component'; import { HomeWatchlistComponent } from '@ghostfolio/client/components/home-watchlist/home-watchlist.component'; import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { paths } from '@ghostfolio/common/paths'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -19,27 +20,22 @@ const routes: Routes = [ component: HomeOverviewComponent }, { - path: 'holdings', + path: paths.holdings, component: HomeHoldingsComponent, title: $localize`Holdings` }, { - path: 'holdings', - component: HomeHoldingsComponent, - title: $localize`Holdings` - }, - { - path: 'summary', + path: paths.summary, component: HomeSummaryComponent, title: $localize`Summary` }, { - path: 'market', + path: paths.market, component: HomeMarketComponent, title: $localize`Markets` }, { - path: 'watchlist', + path: paths.watchlist, component: HomeWatchlistComponent, title: $localize`Watchlist` } diff --git a/apps/client/src/app/pages/home/home-page.component.ts b/apps/client/src/app/pages/home/home-page.component.ts index ec49143a8..ecb8ff0be 100644 --- a/apps/client/src/app/pages/home/home-page.component.ts +++ b/apps/client/src/app/pages/home/home-page.component.ts @@ -1,6 +1,7 @@ import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { DeviceDetectorService } from 'ngx-device-detector'; @@ -36,27 +37,27 @@ export class HomePageComponent implements OnDestroy, OnInit { { iconName: 'analytics-outline', label: $localize`Overview`, - path: ['/home'] + path: ['/' + paths.home] }, { iconName: 'wallet-outline', label: $localize`Holdings`, - path: ['/home', 'holdings'] + path: ['/' + paths.home, paths.holdings] }, { iconName: 'reader-outline', label: $localize`Summary`, - path: ['/home', 'summary'] + path: ['/' + paths.home, paths.summary] }, { iconName: 'bookmark-outline', label: $localize`Watchlist`, - path: ['/home', 'watchlist'] + path: ['/' + paths.home, paths.watchlist] }, { iconName: 'newspaper-outline', label: $localize`Markets`, - path: ['/home', 'market'] + path: ['/' + paths.home, paths.market] } ]; 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 4adcbe00a..5f4a5d512 100644 --- a/apps/client/src/app/pages/landing/landing-page.component.ts +++ b/apps/client/src/app/pages/landing/landing-page.component.ts @@ -1,5 +1,6 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { Statistics } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { Component, OnDestroy, OnInit } from '@angular/core'; @@ -24,8 +25,8 @@ export class LandingPageComponent implements OnDestroy, OnInit { public hasPermissionForStatistics: boolean; public hasPermissionForSubscription: boolean; public hasPermissionToCreateUser: boolean; - public routerLinkAbout = ['/' + $localize`:snake-case:about`]; - public routerLinkRegister = ['/' + $localize`:snake-case:register`]; + public routerLinkAbout = ['/' + paths.about]; + public routerLinkRegister = ['/' + paths.register]; public statistics: Statistics; public testimonials = [ { diff --git a/apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts b/apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts index 20de6f8fa..84499573a 100644 --- a/apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts +++ b/apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts @@ -1,4 +1,5 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { paths } from '@ghostfolio/common/paths'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -17,26 +18,26 @@ const routes: Routes = [ ) }, { - path: 'activities', + path: paths.activities, loadChildren: () => import('./activities/activities-page.module').then( (m) => m.ActivitiesPageModule ) }, { - path: 'allocations', + path: paths.allocations, loadChildren: () => import('./allocations/allocations-page.module').then( (m) => m.AllocationsPageModule ) }, { - path: 'fire', + path: paths.fire, loadChildren: () => import('./fire/fire-page.module').then((m) => m.FirePageModule) }, { - path: 'x-ray', + path: paths.xRay, loadChildren: () => import('./x-ray/x-ray-page.module').then((m) => m.XRayPageModule) } diff --git a/apps/client/src/app/pages/portfolio/portfolio-page.component.ts b/apps/client/src/app/pages/portfolio/portfolio-page.component.ts index 3393b7404..926ec7a8b 100644 --- a/apps/client/src/app/pages/portfolio/portfolio-page.component.ts +++ b/apps/client/src/app/pages/portfolio/portfolio-page.component.ts @@ -1,5 +1,6 @@ import { UserService } from '@ghostfolio/client/services/user/user.service'; import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { DeviceDetectorService } from 'ngx-device-detector'; @@ -33,27 +34,27 @@ export class PortfolioPageComponent implements OnDestroy, OnInit { { iconName: 'analytics-outline', label: $localize`Analysis`, - path: ['/portfolio'] + path: ['/' + paths.portfolio] }, { iconName: 'swap-vertical-outline', label: $localize`Activities`, - path: ['/portfolio', 'activities'] + path: ['/' + paths.portfolio, paths.activities] }, { iconName: 'pie-chart-outline', label: $localize`Allocations`, - path: ['/portfolio', 'allocations'] + path: ['/' + paths.portfolio, paths.allocations] }, { iconName: 'calculator-outline', label: 'FIRE ', - path: ['/portfolio', 'fire'] + path: ['/' + paths.portfolio, paths.fire] }, { iconName: 'scan-outline', label: 'X-ray', - path: ['/portfolio', 'x-ray'] + path: ['/' + paths.portfolio, paths.xRay] } ]; this.user = state.user; 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 cadc3a48c..68573dde5 100644 --- a/apps/client/src/app/pages/pricing/pricing-page.component.ts +++ b/apps/client/src/app/pages/pricing/pricing-page.component.ts @@ -2,6 +2,7 @@ import { NotificationService } from '@ghostfolio/client/core/notification/notifi import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { translate } from '@ghostfolio/ui/i18n'; @@ -40,8 +41,8 @@ export class PricingPageComponent implements OnDestroy, OnInit { public professionalDataProviderTooltipPremium = translate( 'PROFESSIONAL_DATA_PROVIDER_TOOLTIP_PREMIUM' ); - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; - public routerLinkRegister = ['/' + $localize`:snake-case:register`]; + public routerLinkFeatures = ['/' + paths.features]; + public routerLinkRegister = ['/' + paths.register]; public user: User; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts index 6dd15045b..5b7de607d 100644 --- a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts +++ b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts @@ -1,4 +1,5 @@ import { DataService } from '@ghostfolio/client/services/data.service'; +import { paths } from '@ghostfolio/common/paths'; import { ChangeDetectionStrategy, @@ -30,8 +31,8 @@ export class ShowAccessTokenDialog { public isDisclaimerChecked = false; public role: string; public routerLinkAboutTermsOfService = [ - '/' + $localize`:snake-case:about`, - $localize`:snake-case:terms-of-service` + '/' + paths.about, + paths.termsOfService ]; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts b/apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts index b6749b5cd..2734707d1 100644 --- a/apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts +++ b/apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts @@ -1,5 +1,6 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { InfoItem } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { Component, OnInit } from '@angular/core'; @@ -14,8 +15,8 @@ export class ResourcesGlossaryPageComponent implements OnInit { public hasPermissionForSubscription: boolean; public info: InfoItem; public routerLinkResourcesPersonalFinanceTools = [ - '/' + $localize`:snake-case:resources`, - 'personal-finance-tools' + '/' + paths.resources, + paths.personalFinanceTools ]; public constructor(private dataService: DataService) { diff --git a/apps/client/src/app/pages/resources/overview/resources-overview.component.ts b/apps/client/src/app/pages/resources/overview/resources-overview.component.ts index f95e78a26..cca9aa9bf 100644 --- a/apps/client/src/app/pages/resources/overview/resources-overview.component.ts +++ b/apps/client/src/app/pages/resources/overview/resources-overview.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component } from '@angular/core'; @Component({ @@ -12,34 +14,25 @@ export class ResourcesOverviewComponent { title: 'Frequently Asked Questions (FAQ)', description: 'Find quick answers to commonly asked questions about Ghostfolio in our Frequently Asked Questions (FAQ) section.', - link: ['/' + $localize`:snake-case:faq`] + link: ['/' + paths.faq] }, { title: 'Guides', description: 'Explore our guides to help you get started with investing and managing your finances.', - link: [ - '/' + $localize`:snake-case:resources`, - $localize`:snake-case:guides` - ] + link: ['/' + paths.resources, paths.guides] }, { title: 'Markets', description: 'Access various market resources and tools to stay informed about financial markets.', - link: [ - '/' + $localize`:snake-case:resources`, - $localize`:snake-case:markets` - ] + link: ['/' + paths.resources, paths.markets] }, { title: 'Glossary', description: 'Learn key financial terms and concepts in our comprehensive glossary.', - link: [ - '/' + $localize`:snake-case:resources`, - $localize`:snake-case:glossary` - ] + link: ['/' + paths.resources, paths.glossary] } ]; } diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts index 01d920460..2b5146d89 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts @@ -1,4 +1,5 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { paths } from '@ghostfolio/common/paths'; import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; import { NgModule } from '@angular/core'; @@ -23,7 +24,7 @@ const routes: Routes = [ return GfProductPageComponent; } ), - path: $localize`open-source-alternative-to` + `-${alias ?? key}`, + path: `${paths.openSourceAlternativeTo}-${alias ?? key}`, title: $localize`Open Source Alternative to ${name}` }; }) diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts index c9c0aa044..f2b6a6541 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts @@ -1,3 +1,4 @@ +import { paths } from '@ghostfolio/common/paths'; import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; import { Component, OnDestroy } from '@angular/core'; @@ -11,12 +12,12 @@ import { Subject } from 'rxjs'; standalone: false }) export class PersonalFinanceToolsPageComponent implements OnDestroy { - public pathAlternativeTo = $localize`open-source-alternative-to` + '-'; - public pathResources = '/' + $localize`resources`; + public pathAlternativeTo = paths.openSourceAlternativeTo + '-'; + public pathResources = '/' + paths.resources; public personalFinanceTools = personalFinanceTools.sort((a, b) => { return a.name.localeCompare(b.name, undefined, { sensitivity: 'base' }); }); - public routerLinkAbout = ['/' + $localize`:snake-case:about`]; + public routerLinkAbout = ['/' + paths.about]; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts index bee5cb642..6c3e8b551 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -1,5 +1,6 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { Product } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; import { translate } from '@ghostfolio/ui/i18n'; @@ -19,11 +20,11 @@ export class GfProductPageComponent implements OnInit { public price: number; public product1: Product; public product2: Product; - public routerLinkAbout = ['/' + $localize`:snake-case:about`]; - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; + public routerLinkAbout = ['/' + paths.about]; + public routerLinkFeatures = ['/' + paths.features]; public routerLinkResourcesPersonalFinanceTools = [ - '/' + $localize`:snake-case:resources`, - 'personal-finance-tools' + '/' + paths.resources, + paths.personalFinanceTools ]; public tags: string[]; diff --git a/apps/client/src/app/pages/resources/resources-page-routing.module.ts b/apps/client/src/app/pages/resources/resources-page-routing.module.ts index bcbe1bad5..b7c1734be 100644 --- a/apps/client/src/app/pages/resources/resources-page-routing.module.ts +++ b/apps/client/src/app/pages/resources/resources-page-routing.module.ts @@ -1,4 +1,5 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { paths } from '@ghostfolio/common/paths'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -18,27 +19,27 @@ const routes: Routes = [ ) }, { - path: $localize`:snake-case:glossary`, + path: paths.glossary, loadChildren: () => import('./glossary/resources-glossary.module').then( (m) => m.ResourcesGlossaryPageModule ) }, { - path: $localize`:snake-case:guides`, + path: paths.guides, loadChildren: () => import('./guides/resources-guides.module').then( (m) => m.ResourcesGuidesModule ) }, { - path: $localize`:snake-case:markets`, + path: paths.markets, loadChildren: () => import('./markets/resources-markets.module').then( (m) => m.ResourcesMarketsModule ) }, - ...['personal-finance-tools'].map((path) => ({ + ...[paths.personalFinanceTools].map((path) => ({ path, loadChildren: () => import( diff --git a/apps/client/src/app/pages/resources/resources-page.component.ts b/apps/client/src/app/pages/resources/resources-page.component.ts index d0534417d..ba38fac18 100644 --- a/apps/client/src/app/pages/resources/resources-page.component.ts +++ b/apps/client/src/app/pages/resources/resources-page.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { Component, OnInit } from '@angular/core'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; @@ -18,17 +20,17 @@ export class ResourcesPageComponent implements OnInit { iconName: 'reader-outline' }, { - path: 'guides', + path: paths.guides, label: $localize`Guides`, iconName: 'book-outline' }, { - path: 'markets', + path: paths.markets, label: $localize`Markets`, iconName: 'newspaper-outline' }, { - path: 'glossary', + path: paths.glossary, label: $localize`Glossary`, iconName: 'library-outline' } diff --git a/apps/client/src/app/pages/user-account/user-account-page-routing.module.ts b/apps/client/src/app/pages/user-account/user-account-page-routing.module.ts index ae8002d7f..003d0df75 100644 --- a/apps/client/src/app/pages/user-account/user-account-page-routing.module.ts +++ b/apps/client/src/app/pages/user-account/user-account-page-routing.module.ts @@ -2,6 +2,7 @@ import { UserAccountAccessComponent } from '@ghostfolio/client/components/user-a import { UserAccountMembershipComponent } from '@ghostfolio/client/components/user-account-membership/user-account-membership.component'; import { UserAccountSettingsComponent } from '@ghostfolio/client/components/user-account-settings/user-account-settings.component'; import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { paths } from '@ghostfolio/common/paths'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -18,12 +19,12 @@ const routes: Routes = [ title: $localize`Settings` }, { - path: 'membership', + path: paths.membership, component: UserAccountMembershipComponent, title: $localize`Membership` }, { - path: 'access', + path: paths.access, component: UserAccountAccessComponent, title: $localize`Access` } diff --git a/apps/client/src/app/pages/user-account/user-account-page.component.ts b/apps/client/src/app/pages/user-account/user-account-page.component.ts index d53465faa..c18598910 100644 --- a/apps/client/src/app/pages/user-account/user-account-page.component.ts +++ b/apps/client/src/app/pages/user-account/user-account-page.component.ts @@ -1,5 +1,6 @@ import { UserService } from '@ghostfolio/client/services/user/user.service'; import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { DeviceDetectorService } from 'ngx-device-detector'; @@ -34,18 +35,18 @@ export class UserAccountPageComponent implements OnDestroy, OnInit { { iconName: 'settings-outline', label: $localize`Settings`, - path: ['/account'] + path: ['/' + paths.account] }, { iconName: 'diamond-outline', label: $localize`Membership`, - path: ['/account/membership'], + path: ['/' + paths.account, paths.membership], showCondition: !!this.user?.subscription }, { iconName: 'key-outline', label: $localize`Access`, - path: ['/account', 'access'] + path: ['/' + paths.account, paths.access] } ]; diff --git a/apps/client/src/app/pages/zen/zen-page-routing.module.ts b/apps/client/src/app/pages/zen/zen-page-routing.module.ts index 96eedadde..819f39f7e 100644 --- a/apps/client/src/app/pages/zen/zen-page-routing.module.ts +++ b/apps/client/src/app/pages/zen/zen-page-routing.module.ts @@ -1,6 +1,7 @@ import { HomeHoldingsComponent } from '@ghostfolio/client/components/home-holdings/home-holdings.component'; import { HomeOverviewComponent } from '@ghostfolio/client/components/home-overview/home-overview.component'; import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { paths } from '@ghostfolio/common/paths'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -12,7 +13,7 @@ const routes: Routes = [ canActivate: [AuthGuard], children: [ { path: '', component: HomeOverviewComponent }, - { path: 'holdings', component: HomeHoldingsComponent } + { path: paths.holdings, component: HomeHoldingsComponent } ], component: ZenPageComponent, path: '', diff --git a/apps/client/src/app/pages/zen/zen-page.component.ts b/apps/client/src/app/pages/zen/zen-page.component.ts index c39cecccd..cad969bd5 100644 --- a/apps/client/src/app/pages/zen/zen-page.component.ts +++ b/apps/client/src/app/pages/zen/zen-page.component.ts @@ -1,5 +1,6 @@ import { UserService } from '@ghostfolio/client/services/user/user.service'; import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { DeviceDetectorService } from 'ngx-device-detector'; @@ -33,12 +34,12 @@ export class ZenPageComponent implements OnDestroy, OnInit { { iconName: 'analytics-outline', label: $localize`Overview`, - path: ['/zen'] + path: ['/' + paths.zen] }, { iconName: 'wallet-outline', label: $localize`Holdings`, - path: ['/zen', 'holdings'] + path: ['/' + paths.zen, paths.holdings] } ]; this.user = state.user; diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index fc7e685bc..df7e4c973 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 - 231 + 232 @@ -370,100 +370,8 @@ sobre snake-case - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/app.component.ts - 75 - - - apps/client/src/app/app.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 46 - - - apps/client/src/app/pages/about/about-page.component.ts - 51 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/about/about-page.component.ts - 84 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + libs/common/src/lib/paths.ts + 37 @@ -471,16 +379,8 @@ llicències snake-case - apps/client/src/app/app.component.ts - 72 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/paths.ts + 43 @@ -488,16 +388,8 @@ política de privacitat snake-case - apps/client/src/app/app.component.ts - 76 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 + libs/common/src/lib/paths.ts + 48 @@ -505,333 +397,53 @@ faq snake-case - apps/client/src/app/app.component.ts - 82 - - - apps/client/src/app/core/paths.ts - 3 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 38 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 43 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 49 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 - - - - features - característiques - snake-case - - apps/client/src/app/app.component.ts - 83 - - - apps/client/src/app/components/header/header.component.ts - 83 - - - apps/client/src/app/components/header/header.component.ts - 88 - - - apps/client/src/app/core/paths.ts - 4 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 - - - - markets - mercats - snake-case - - apps/client/src/app/app.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 89 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 - - - - pricing - preu - snake-case - - apps/client/src/app/app.component.ts - 85 - - - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/header/header.component.ts - 90 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + libs/common/src/lib/paths.ts 39 + + + features + característiques + snake-case - apps/client/src/app/core/http-response.interceptor.ts - 77 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 - - - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 - - - - register - registrar-se - snake-case - - apps/client/src/app/app.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 91 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 - - - apps/client/src/app/pages/features/features-page.component.ts - 28 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 28 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 - - - - resources - recursos - snake-case - - apps/client/src/app/app.component.ts - 87 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 92 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/features/features-page.component.ts - 29 - - - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + libs/common/src/lib/paths.ts + 40 + + + markets + mercats + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + libs/common/src/lib/paths.ts + 44 + + + pricing + preu + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + libs/common/src/lib/paths.ts + 47 + + + register + registrar-se + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + libs/common/src/lib/paths.ts + 49 + + + resources + recursos + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + libs/common/src/lib/paths.ts + 50 @@ -911,7 +523,7 @@ Realment vol revocar aquest accés? apps/client/src/app/components/access-table/access-table.component.ts - 79 + 80 @@ -2335,11 +1947,11 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + 47 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 94 @@ -2495,7 +2107,7 @@ Oooh! El testimoni de seguretat és incorrecte. apps/client/src/app/components/header/header.component.ts - 246 + 247 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -3307,7 +2919,7 @@ Introduïu el vostre codi de cupó. apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -3315,7 +2927,7 @@ No s’ha pogut bescanviar el codi de cupó apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -3323,7 +2935,7 @@ El codi del cupó s’ha bescanviat apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -3331,7 +2943,7 @@ Torna a carregar apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -3575,7 +3187,7 @@ Aquesta funció no està disponible actualment. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -3583,11 +3195,11 @@ Si us plau, torna-ho a provar més tard. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3599,7 +3211,7 @@ Aquesta acció no està permesa. apps/client/src/app/core/http-response.interceptor.ts - 64 + 65 @@ -3607,7 +3219,7 @@ Vaja! Alguna cosa va fallar. apps/client/src/app/core/http-response.interceptor.ts - 83 + 84 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3619,11 +3231,11 @@ D’acord apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 87 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3635,7 +3247,7 @@ Ups! Sembla que esteu fent massa sol·licituds. Si us plau, aneu una mica més lent. apps/client/src/app/core/http-response.interceptor.ts - 103 + 104 @@ -3647,7 +3259,7 @@ apps/client/src/app/pages/about/about-page.component.ts - 45 + 46 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -3659,7 +3271,7 @@ Registre de canvis apps/client/src/app/pages/about/about-page.component.ts - 50 + 51 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -3671,7 +3283,7 @@ llicència apps/client/src/app/pages/about/about-page.component.ts - 55 + 56 apps/client/src/app/pages/about/license/license-page-routing.module.ts @@ -3683,7 +3295,7 @@ Política de privadesa apps/client/src/app/pages/about/about-page.component.ts - 64 + 65 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -3783,7 +3395,7 @@ Control d’administració apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + 21 @@ -3791,11 +3403,11 @@ Cua de treball apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + 26 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 44 @@ -3803,11 +3415,11 @@ Dades de mercat apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + 31 apps/client/src/app/pages/admin/admin-page.component.ts - 38 + 39 @@ -3815,19 +3427,19 @@ Configuració apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 + 36 apps/client/src/app/pages/admin/admin-page.component.ts - 33 + 34 apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + 19 apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + 37 @@ -3835,11 +3447,11 @@ Usuaris apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 + 41 apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 49 @@ -3847,23 +3459,23 @@ Visió general apps/client/src/app/pages/admin/admin-page.component.ts - 28 + 29 apps/client/src/app/pages/home/home-page.component.ts - 38 + 39 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 19 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 20 apps/client/src/app/pages/zen/zen-page.component.ts - 35 + 36 @@ -3895,7 +3507,7 @@ Preguntes freqüents (FAQ) apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 + 35 apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts @@ -3907,7 +3519,7 @@ General apps/client/src/app/pages/faq/faq-page.component.ts - 37 + 38 @@ -3915,7 +3527,7 @@ Núvol apps/client/src/app/pages/faq/faq-page.component.ts - 42 + 43 apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts @@ -3927,7 +3539,7 @@ Autoallotjament apps/client/src/app/pages/faq/faq-page.component.ts - 48 + 49 apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts @@ -3937,9 +3549,10 @@ self-hosting autoallotjament + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 51 @@ -4099,19 +3712,15 @@ Explotacions apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 + 25 apps/client/src/app/pages/home/home-page.component.ts - 43 + 44 apps/client/src/app/pages/zen/zen-page.component.ts - 40 + 41 @@ -4119,11 +3728,11 @@ Resum apps/client/src/app/pages/home/home-page-routing.module.ts - 34 + 30 apps/client/src/app/pages/home/home-page.component.ts - 48 + 49 @@ -4131,11 +3740,11 @@ Mercats apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + 35 apps/client/src/app/pages/home/home-page.component.ts - 58 + 59 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -4147,7 +3756,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 27 + 29 @@ -4599,7 +4208,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + 41 @@ -4839,7 +4448,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + 46 @@ -5031,7 +4640,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + 36 @@ -5059,7 +4668,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + 88 @@ -5499,19 +5108,16 @@ Personal Finance Tools apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + 15 open-source-alternative-to open-source-alternative-to + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + libs/common/src/lib/paths.ts + 45 @@ -5519,7 +5125,7 @@ Open Source Alternative to apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + 28 @@ -5559,7 +5165,7 @@ Switzerland apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + 59 libs/ui/src/lib/i18n.ts @@ -5571,7 +5177,7 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 60 libs/ui/src/lib/i18n.ts @@ -5823,7 +5429,7 @@ Resources apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + 51 @@ -5847,11 +5453,11 @@ Membership apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + 24 apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + 42 @@ -5859,11 +5465,11 @@ Access apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + 29 apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + 48 @@ -5871,7 +5477,7 @@ My Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -6719,7 +6325,7 @@ Alternative apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + 82 @@ -6727,7 +6333,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 83 @@ -6735,7 +6341,7 @@ Budgeting apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 84 @@ -6743,7 +6349,7 @@ Community apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 85 @@ -6751,7 +6357,7 @@ Family Office apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 86 @@ -6759,7 +6365,7 @@ Investor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 89 @@ -6767,7 +6373,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 90 @@ -6775,7 +6381,7 @@ Personal Finance apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + 92 @@ -6783,7 +6389,7 @@ Privacy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 93 @@ -6791,7 +6397,7 @@ Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 95 @@ -6799,7 +6405,7 @@ Tool apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 96 @@ -6807,7 +6413,7 @@ User Experience apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 97 @@ -6815,7 +6421,7 @@ Wealth apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 98 @@ -6823,7 +6429,7 @@ Wealth Management apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 99 @@ -7323,7 +6929,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 32 + 34 @@ -7335,7 +6941,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 22 + 24 @@ -7343,12 +6949,8 @@ guides snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + libs/common/src/lib/paths.ts + 42 @@ -7356,13 +6958,9 @@ glossary snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts + libs/common/src/lib/paths.ts 41 - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 - Threshold range @@ -7417,7 +7015,7 @@ Do you really want to delete the API key? apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + 102 @@ -7449,7 +7047,7 @@ Could not generate an API key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + 128 @@ -7457,7 +7055,7 @@ Set this API key in your self-hosted environment: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + 143 @@ -7465,7 +7063,7 @@ Ghostfolio Premium Data Provider API Key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + 146 @@ -7473,7 +7071,7 @@ Do you really want to generate a new API key? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + 151 @@ -7569,7 +7167,7 @@ Link has been copied to the clipboard apps/client/src/app/components/access-table/access-table.component.ts - 65 + 66 @@ -7821,20 +7419,8 @@ terms-of-service snake-case - apps/client/src/app/app.component.ts - 80 - - - apps/client/src/app/core/paths.ts - 11 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + libs/common/src/lib/paths.ts + 52 @@ -7842,7 +7428,7 @@ Terms of Service apps/client/src/app/pages/about/about-page.component.ts - 71 + 72 apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts @@ -7970,11 +7556,11 @@ Watchlist apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + 40 apps/client/src/app/pages/home/home-page.component.ts - 53 + 54 @@ -8009,6 +7595,24 @@ 41 + + changelog + changelog + snake-case + + libs/common/src/lib/paths.ts + 38 + + + + oss-friends + oss-friends + snake-case + + libs/common/src/lib/paths.ts + 46 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index b37c6254e..e022165c8 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -78,7 +78,7 @@ Möchtest du diese Zugangsberechtigung wirklich widerrufen? apps/client/src/app/components/access-table/access-table.component.ts - 79 + 80
@@ -1026,7 +1026,7 @@ apps/client/src/app/components/header/header.component.ts - 231 + 232 @@ -1034,7 +1034,7 @@ Ups! Falsches Sicherheits-Token. apps/client/src/app/components/header/header.component.ts - 246 + 247 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1458,11 +1458,11 @@ Okay apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 87 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1478,7 +1478,7 @@ apps/client/src/app/pages/about/about-page.component.ts - 45 + 46 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -1622,7 +1622,7 @@ Datenschutzbestimmungen apps/client/src/app/pages/about/about-page.component.ts - 64 + 65 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -1634,7 +1634,7 @@ Mein Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -1642,7 +1642,7 @@ Bitte gebe deinen Gutscheincode ein. apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -1650,7 +1650,7 @@ Gutscheincode konnte nicht eingelöst werden apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -1658,7 +1658,7 @@ Gutscheincode wurde eingelöst apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -1666,7 +1666,7 @@ Neu laden apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -1930,7 +1930,7 @@ Administration apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + 21 @@ -1954,7 +1954,7 @@ Häufig gestellte Fragen (FAQ) apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 + 35 apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts @@ -1974,23 +1974,23 @@ Übersicht apps/client/src/app/pages/admin/admin-page.component.ts - 28 + 29 apps/client/src/app/pages/home/home-page.component.ts - 38 + 39 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 19 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 20 apps/client/src/app/pages/zen/zen-page.component.ts - 35 + 36 @@ -1998,11 +1998,11 @@ Märkte apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + 35 apps/client/src/app/pages/home/home-page.component.ts - 58 + 59 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -2014,7 +2014,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 27 + 29 @@ -2026,7 +2026,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + 46 @@ -2114,7 +2114,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + 36 @@ -2178,19 +2178,15 @@ Positionen apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 + 25 apps/client/src/app/pages/home/home-page.component.ts - 43 + 44 apps/client/src/app/pages/zen/zen-page.component.ts - 40 + 41 @@ -2354,7 +2350,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + 41 @@ -2390,11 +2386,11 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + 47 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 94 @@ -2458,7 +2454,7 @@ Ressourcen apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + 51 @@ -2602,7 +2598,7 @@ Diese Funktion ist derzeit nicht verfügbar. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -2610,11 +2606,11 @@ Bitte versuche es später noch einmal. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2626,7 +2622,7 @@ Ups! Es ist etwas schief gelaufen. apps/client/src/app/core/http-response.interceptor.ts - 83 + 84 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3338,11 +3334,11 @@ Marktdaten apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + 31 apps/client/src/app/pages/admin/admin-page.component.ts - 38 + 39 @@ -3350,11 +3346,11 @@ Benutzer apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 + 41 apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 49 @@ -3362,11 +3358,11 @@ Zusammenfassung apps/client/src/app/pages/home/home-page-routing.module.ts - 34 + 30 apps/client/src/app/pages/home/home-page.component.ts - 48 + 49 @@ -4018,19 +4014,19 @@ Einstellungen apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 + 36 apps/client/src/app/pages/admin/admin-page.component.ts - 33 + 34 apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + 19 apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + 37 @@ -4198,7 +4194,7 @@ Changelog apps/client/src/app/pages/about/about-page.component.ts - 50 + 51 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -4210,7 +4206,7 @@ Lizenz apps/client/src/app/pages/about/about-page.component.ts - 55 + 56 apps/client/src/app/pages/about/license/license-page-routing.module.ts @@ -4350,7 +4346,7 @@ Tools für persönliche Finanzen apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + 15 @@ -5178,580 +5174,189 @@ haeufig-gestellte-fragen snake-case - apps/client/src/app/app.component.ts - 82 + libs/common/src/lib/paths.ts + 39 + + + features + features + snake-case - apps/client/src/app/core/paths.ts - 3 + libs/common/src/lib/paths.ts + 40 + + + about + ueber-uns + snake-case - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + libs/common/src/lib/paths.ts + 37 + + + privacy-policy + datenschutzbestimmungen + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/paths.ts + 48 + + + license + lizenz + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts + libs/common/src/lib/paths.ts 43 + + + markets + maerkte + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 44 + + + pricing + preise + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/paths.ts + 47 - - features - features + + register + registrierung snake-case - apps/client/src/app/app.component.ts - 83 + libs/common/src/lib/paths.ts + 49 + + + resources + ressourcen + snake-case - apps/client/src/app/components/header/header.component.ts - 83 + libs/common/src/lib/paths.ts + 50 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Diese Übersichtsseite zeigt eine Auswahl an Tools zur Verwaltung der persönliche Finanzen im Vergleich zur Open Source Alternative Ghostfolio. Wenn du Wert auf Transparenz, Datenschutz und die gemeinschaftliche Zusammenarbeit der Open Source Community legst, bietet dir Ghostfolio eine ausgezeichnete Möglichkeit, die Kontrolle über dein Finanzmanagement zu übernehmen. - apps/client/src/app/components/header/header.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Über die Links unten kannst du eine Reihe an Tools mit Ghostfolio vergleichen. - apps/client/src/app/core/paths.ts - 4 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Open Source Alternative zu - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + Open Source Alternative to + Open Source Alternative zu - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 28 + + + The Open Source Alternative to + Die Open Source Alternative zu - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Suchst du nach einer Open Source Alternative zu ? Ghostfolio ist ein leistungsstarkes Portfolio Management Tool, das Privatpersonen eine umfassende Plattform bietet, um ihre Investitionen zu verfolgen, zu analysieren und zu optimieren. Egal, ob du ein erfahrener Investor bist oder gerade erst anfängst, Ghostfolio bietet eine intuitive Benutzeroberfläche und eine Vielzahl an Funktionen, die dir dabei helfen, fundierte Entscheidungen zu treffen und die Kontrolle über deine finanzielle Zukunft zu übernehmen. - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio ist eine Open Source Software (OSS), die eine kostengünstige Alternative zu darstellt und sich besonders für Personen mit knappem Budget eignet, wie z.B. für diejenigen, die finanzielle Unabhängigkeit und einen frühen Ruhestand anstreben (FIRE). Ghostfolio nutzt die gemeinsamen Aktivitäten einer Community von Entwicklern und Finanzenthusiasten, um seine Funktionalität, Sicherheit und Benutzerfreundlichkeit kontinuierlich zu verbessern. - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Wir möchten uns in der untenstehenden Ghostfolio vs Vergleichstabelle ein detailliertes Bild davon machen, wie Ghostfolio im Vergleich zu positioniert ist. Wir werden dabei verschiedene Aspekte wie Funktionen, Datenschutz, Preise und weiteres untersuchen, damit du eine gut informierte Entscheidung für deine persönlichen Anforderungen treffen kannst. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + open-source-alternative-to + open-source-alternative-zu + snake-case - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + libs/common/src/lib/paths.ts + 45 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Bitte beachte, dass die bereitgestellten Ghostfolio vs Informationen auf unserer unabhängigen Recherche und Analyse beruhen. Diese Webseite steht in keiner Verbindung zu oder einem anderen im Vergleich erwähnten Produkt. Da sich die Landschaft der Personal Finance Tools ständig weiterentwickelt, ist es wichtig, alle spezifischen Details oder Änderungen direkt auf der jeweiligen Produktseite zu überprüfen. Brauchen die Daten eine Auffrischung? Unterstütze uns bei der Pflege der aktuellen Daten auf GitHub. - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 + + + Ready to take your investments to the next level? + Bereit, deine Investitionen auf ein neues Levelzu bringen? - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 + + + Get Started + Jetzt loslegen - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 + + + Switzerland + Schweiz - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 59 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 - - - - about - ueber-uns - snake-case - - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/app.component.ts - 75 - - - apps/client/src/app/app.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 46 - - - apps/client/src/app/pages/about/about-page.component.ts - 51 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/about/about-page.component.ts - 84 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 - - - - privacy-policy - datenschutzbestimmungen - snake-case - - apps/client/src/app/app.component.ts - 76 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - - license - lizenz - snake-case - - apps/client/src/app/app.component.ts - 72 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - - markets - maerkte - snake-case - - apps/client/src/app/app.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 89 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 - - - - pricing - preise - snake-case - - apps/client/src/app/app.component.ts - 85 - - - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/header/header.component.ts - 90 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 - - - apps/client/src/app/core/http-response.interceptor.ts - 77 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 - - - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 - - - - register - registrierung - snake-case - - apps/client/src/app/app.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 91 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 - - - apps/client/src/app/pages/features/features-page.component.ts - 28 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 28 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 - - - - resources - ressourcen - snake-case - - apps/client/src/app/app.component.ts - 87 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 92 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/features/features-page.component.ts - 29 - - - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - Diese Übersichtsseite zeigt eine Auswahl an Tools zur Verwaltung der persönliche Finanzen im Vergleich zur Open Source Alternative Ghostfolio. Wenn du Wert auf Transparenz, Datenschutz und die gemeinschaftliche Zusammenarbeit der Open Source Community legst, bietet dir Ghostfolio eine ausgezeichnete Möglichkeit, die Kontrolle über dein Finanzmanagement zu übernehmen. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Über die Links unten kannst du eine Reihe an Tools mit Ghostfolio vergleichen. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - Open Source Alternative zu - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 - - - - Open Source Alternative to - Open Source Alternative zu - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 - - - - The Open Source Alternative to - Die Open Source Alternative zu - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Suchst du nach einer Open Source Alternative zu ? Ghostfolio ist ein leistungsstarkes Portfolio Management Tool, das Privatpersonen eine umfassende Plattform bietet, um ihre Investitionen zu verfolgen, zu analysieren und zu optimieren. Egal, ob du ein erfahrener Investor bist oder gerade erst anfängst, Ghostfolio bietet eine intuitive Benutzeroberfläche und eine Vielzahl an Funktionen, die dir dabei helfen, fundierte Entscheidungen zu treffen und die Kontrolle über deine finanzielle Zukunft zu übernehmen. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio ist eine Open Source Software (OSS), die eine kostengünstige Alternative zu darstellt und sich besonders für Personen mit knappem Budget eignet, wie z.B. für diejenigen, die finanzielle Unabhängigkeit und einen frühen Ruhestand anstreben (FIRE). Ghostfolio nutzt die gemeinsamen Aktivitäten einer Community von Entwicklern und Finanzenthusiasten, um seine Funktionalität, Sicherheit und Benutzerfreundlichkeit kontinuierlich zu verbessern. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Wir möchten uns in der untenstehenden Ghostfolio vs Vergleichstabelle ein detailliertes Bild davon machen, wie Ghostfolio im Vergleich zu positioniert ist. Wir werden dabei verschiedene Aspekte wie Funktionen, Datenschutz, Preise und weiteres untersuchen, damit du eine gut informierte Entscheidung für deine persönlichen Anforderungen treffen kannst. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 - - - - open-source-alternative-to - open-source-alternative-zu - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 - - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - Bitte beachte, dass die bereitgestellten Ghostfolio vs Informationen auf unserer unabhängigen Recherche und Analyse beruhen. Diese Webseite steht in keiner Verbindung zu oder einem anderen im Vergleich erwähnten Produkt. Da sich die Landschaft der Personal Finance Tools ständig weiterentwickelt, ist es wichtig, alle spezifischen Details oder Änderungen direkt auf der jeweiligen Produktseite zu überprüfen. Brauchen die Daten eine Auffrischung? Unterstütze uns bei der Pflege der aktuellen Daten auf GitHub. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 - - - - Ready to take your investments to the next level? - Bereit, deine Investitionen auf ein neues Levelzu bringen? - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 - - - - Get Started - Jetzt loslegen - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 - - - - Switzerland - Schweiz - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 - - - libs/ui/src/lib/i18n.ts - 93 + libs/ui/src/lib/i18n.ts + 93 @@ -5759,7 +5364,7 @@ Weltweit apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 60 libs/ui/src/lib/i18n.ts @@ -5963,11 +5568,11 @@ Mitgliedschaft apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + 24 apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + 42 @@ -5975,11 +5580,11 @@ Zugang apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + 29 apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + 48 @@ -6263,11 +5868,11 @@ Job Warteschlange apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + 26 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 44 @@ -6291,7 +5896,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + 88 @@ -6459,7 +6064,7 @@ Allgemein apps/client/src/app/pages/faq/faq-page.component.ts - 37 + 38 @@ -6467,7 +6072,7 @@ Cloud apps/client/src/app/pages/faq/faq-page.component.ts - 42 + 43 apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts @@ -6479,7 +6084,7 @@ Self-Hosting apps/client/src/app/pages/faq/faq-page.component.ts - 48 + 49 apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts @@ -6489,9 +6094,10 @@ self-hosting self-hosting + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 51 @@ -6511,7 +6117,7 @@ Ups! Es sieht so aus, als würdest du zu viele Anfragen senden. Bitte geh es ein bisschen langsamer an. apps/client/src/app/core/http-response.interceptor.ts - 103 + 104 @@ -6575,7 +6181,7 @@ Diese Aktion ist nicht zulässig. apps/client/src/app/core/http-response.interceptor.ts - 64 + 65 @@ -6743,7 +6349,7 @@ Alternative apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + 82 @@ -6751,7 +6357,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 83 @@ -6759,7 +6365,7 @@ Budgetierung apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 84 @@ -6767,7 +6373,7 @@ Community apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 85 @@ -6775,7 +6381,7 @@ Family Office apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 86 @@ -6783,7 +6389,7 @@ Investor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 89 @@ -6791,7 +6397,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 90 @@ -6799,7 +6405,7 @@ Persönliche Finanzen apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + 92 @@ -6807,7 +6413,7 @@ Datenschutz apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 93 @@ -6815,7 +6421,7 @@ Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 95 @@ -6823,7 +6429,7 @@ Tool apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 96 @@ -6831,7 +6437,7 @@ User Experience apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 97 @@ -6839,7 +6445,7 @@ Vermögen apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 98 @@ -6847,7 +6453,7 @@ Vermögensverwaltung apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 99 @@ -7347,7 +6953,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 32 + 34 @@ -7359,7 +6965,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 22 + 24 @@ -7367,12 +6973,8 @@ ratgeber snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + libs/common/src/lib/paths.ts + 42 @@ -7380,13 +6982,9 @@ lexikon snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts + libs/common/src/lib/paths.ts 41 - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 - Threshold range @@ -7441,7 +7039,7 @@ Möchtest du den API-Schlüssel wirklich löschen? apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + 102 @@ -7473,7 +7071,7 @@ API-Schlüssel konnte nicht erstellt werden apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + 128 @@ -7481,7 +7079,7 @@ Setze diesen API-Schlüssel in deiner selbst gehosteten Umgebung: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + 143 @@ -7489,7 +7087,7 @@ API-Schlüssel für den Ghostfolio Premium Datenanbieter apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + 146 @@ -7497,7 +7095,7 @@ Möchtest du wirklich einen neuen API-Schlüssel erstellen? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + 151 @@ -7593,7 +7191,7 @@ Link wurde in die Zwischenablage kopiert apps/client/src/app/components/access-table/access-table.component.ts - 65 + 66 @@ -7845,20 +7443,8 @@ allgemeine-geschaeftsbedingungen snake-case - apps/client/src/app/app.component.ts - 80 - - - apps/client/src/app/core/paths.ts - 11 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + libs/common/src/lib/paths.ts + 52 @@ -7866,7 +7452,7 @@ Allgemeine Geschäftsbedingungen apps/client/src/app/pages/about/about-page.component.ts - 71 + 72 apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts @@ -7970,11 +7556,11 @@ Beobachtungsliste apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + 40 apps/client/src/app/pages/home/home-page.component.ts - 53 + 54 @@ -8009,6 +7595,24 @@ 41 + + changelog + changelog + snake-case + + libs/common/src/lib/paths.ts + 38 + + + + oss-friends + oss-friends + snake-case + + libs/common/src/lib/paths.ts + 46 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index d172d7857..0b0ed1fc1 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -79,7 +79,7 @@ ¿Quieres revocar el acceso concedido? apps/client/src/app/components/access-table/access-table.component.ts - 79 + 80 @@ -1011,7 +1011,7 @@ apps/client/src/app/components/header/header.component.ts - 231 + 232 @@ -1019,7 +1019,7 @@ Vaya! Token de seguridad incorrecto. apps/client/src/app/components/header/header.component.ts - 246 + 247 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1443,11 +1443,11 @@ De acuerdo apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 87 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1463,7 +1463,7 @@ apps/client/src/app/pages/about/about-page.component.ts - 45 + 46 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -1607,7 +1607,7 @@ Política de privacidad apps/client/src/app/pages/about/about-page.component.ts - 64 + 65 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -1619,7 +1619,7 @@ Mi Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -1627,7 +1627,7 @@ Por favor, ingresa tu código de cupón: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -1635,7 +1635,7 @@ No se puede canjear este código de cupón apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -1643,7 +1643,7 @@ El codigo de cupón ha sido canjeado apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -1651,7 +1651,7 @@ Refrescar apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -1915,7 +1915,7 @@ Control de administrador apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + 21 @@ -1939,7 +1939,7 @@ Preguntas más frecuentes (FAQ) apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 + 35 apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts @@ -1959,23 +1959,23 @@ Visión general apps/client/src/app/pages/admin/admin-page.component.ts - 28 + 29 apps/client/src/app/pages/home/home-page.component.ts - 38 + 39 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 19 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 20 apps/client/src/app/pages/zen/zen-page.component.ts - 35 + 36 @@ -1983,11 +1983,11 @@ Mercados apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + 35 apps/client/src/app/pages/home/home-page.component.ts - 58 + 59 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -1999,7 +1999,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 27 + 29 @@ -2011,7 +2011,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + 46 @@ -2099,7 +2099,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + 36 @@ -2163,19 +2163,15 @@ Participaciones apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 + 25 apps/client/src/app/pages/home/home-page.component.ts - 43 + 44 apps/client/src/app/pages/zen/zen-page.component.ts - 40 + 41 @@ -2339,7 +2335,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + 41 @@ -2375,11 +2371,11 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + 47 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 94 @@ -2443,7 +2439,7 @@ Recursos apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + 51 @@ -2587,7 +2583,7 @@ Esta funcionalidad no está disponible actualmente. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -2595,7 +2591,7 @@ Vaya! Algo no funcionó bien. apps/client/src/app/core/http-response.interceptor.ts - 83 + 84 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2607,11 +2603,11 @@ Por favor, prueba más tarde. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3323,11 +3319,11 @@ Datos del mercado apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + 31 apps/client/src/app/pages/admin/admin-page.component.ts - 38 + 39 @@ -3335,11 +3331,11 @@ Usuarios apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 + 41 apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 49 @@ -3347,11 +3343,11 @@ Resumen apps/client/src/app/pages/home/home-page-routing.module.ts - 34 + 30 apps/client/src/app/pages/home/home-page.component.ts - 48 + 49 @@ -3995,19 +3991,19 @@ Configuraciones apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 + 36 apps/client/src/app/pages/admin/admin-page.component.ts - 33 + 34 apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + 19 apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + 37 @@ -4175,7 +4171,7 @@ Registro de cambios apps/client/src/app/pages/about/about-page.component.ts - 50 + 51 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -4187,7 +4183,7 @@ Licencia apps/client/src/app/pages/about/about-page.component.ts - 55 + 56 apps/client/src/app/pages/about/license/license-page-routing.module.ts @@ -4327,7 +4323,7 @@ Herramientas de finanzas personales apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + 15 @@ -5155,580 +5151,189 @@ preguntas-mas-frecuentes snake-case - apps/client/src/app/app.component.ts - 82 + libs/common/src/lib/paths.ts + 39 + + + features + funcionalidades + snake-case - apps/client/src/app/core/paths.ts - 3 + libs/common/src/lib/paths.ts + 40 + + + about + sobre + snake-case - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + libs/common/src/lib/paths.ts + 37 + + + privacy-policy + politica-de-privacidad + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/paths.ts + 48 + + + license + licencia + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts + libs/common/src/lib/paths.ts 43 + + + markets + mercados + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 44 + + + pricing + precios + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/paths.ts + 47 - - features - funcionalidades + + register + registro snake-case - apps/client/src/app/app.component.ts - 83 + libs/common/src/lib/paths.ts + 49 + + + resources + recursos + snake-case - apps/client/src/app/components/header/header.component.ts - 83 + libs/common/src/lib/paths.ts + 50 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - apps/client/src/app/components/header/header.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Explore the links below to compare a variety of personal finance tools with Ghostfolio. - apps/client/src/app/core/paths.ts - 4 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Alternativa de software libre a - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + Open Source Alternative to + Alternativa de software libre a - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 28 + + + The Open Source Alternative to + La alternativa de software libre a - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + open-source-alternative-to + alternativa-de-software-libre-a + snake-case - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + libs/common/src/lib/paths.ts + 45 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 + + + Ready to take your investments to the next level? + ¿Listo para llevar sus inversiones al siguiente nivel? - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 + + + Get Started + Get Started - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 + + + Switzerland + Switzerland - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 59 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 - - - - about - sobre - snake-case - - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/app.component.ts - 75 - - - apps/client/src/app/app.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 46 - - - apps/client/src/app/pages/about/about-page.component.ts - 51 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/about/about-page.component.ts - 84 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 - - - - privacy-policy - politica-de-privacidad - snake-case - - apps/client/src/app/app.component.ts - 76 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - - license - licencia - snake-case - - apps/client/src/app/app.component.ts - 72 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - - markets - mercados - snake-case - - apps/client/src/app/app.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 89 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 - - - - pricing - precios - snake-case - - apps/client/src/app/app.component.ts - 85 - - - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/header/header.component.ts - 90 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 - - - apps/client/src/app/core/http-response.interceptor.ts - 77 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 - - - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 - - - - register - registro - snake-case - - apps/client/src/app/app.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 91 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 - - - apps/client/src/app/pages/features/features-page.component.ts - 28 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 28 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 - - - - resources - recursos - snake-case - - apps/client/src/app/app.component.ts - 87 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 92 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/features/features-page.component.ts - 29 - - - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - Alternativa de software libre a - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 - - - - Open Source Alternative to - Alternativa de software libre a - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 - - - - The Open Source Alternative to - La alternativa de software libre a - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 - - - - open-source-alternative-to - alternativa-de-software-libre-a - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 - - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 - - - - Ready to take your investments to the next level? - ¿Listo para llevar sus inversiones al siguiente nivel? - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 - - - - Get Started - Get Started - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 - - - - Switzerland - Switzerland - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 - - - libs/ui/src/lib/i18n.ts - 93 + libs/ui/src/lib/i18n.ts + 93 @@ -5736,7 +5341,7 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 60 libs/ui/src/lib/i18n.ts @@ -5940,11 +5545,11 @@ Membership apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + 24 apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + 42 @@ -5952,11 +5557,11 @@ Access apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + 29 apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + 48 @@ -6240,11 +5845,11 @@ Job Queue apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + 26 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 44 @@ -6268,7 +5873,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + 88 @@ -6436,7 +6041,7 @@ General apps/client/src/app/pages/faq/faq-page.component.ts - 37 + 38 @@ -6444,7 +6049,7 @@ Nube apps/client/src/app/pages/faq/faq-page.component.ts - 42 + 43 apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts @@ -6456,7 +6061,7 @@ Self-Hosting apps/client/src/app/pages/faq/faq-page.component.ts - 48 + 49 apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts @@ -6466,9 +6071,10 @@ self-hosting auto alojado + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 51 @@ -6488,7 +6094,7 @@ Oops! It looks like you’re making too many requests. Please slow down a bit. apps/client/src/app/core/http-response.interceptor.ts - 103 + 104 @@ -6552,7 +6158,7 @@ This action is not allowed. apps/client/src/app/core/http-response.interceptor.ts - 64 + 65 @@ -6720,7 +6326,7 @@ Alternative apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + 82 @@ -6728,7 +6334,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 83 @@ -6736,7 +6342,7 @@ Budgeting apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 84 @@ -6744,7 +6350,7 @@ Community apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 85 @@ -6752,7 +6358,7 @@ Family Office apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 86 @@ -6760,7 +6366,7 @@ Investor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 89 @@ -6768,7 +6374,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 90 @@ -6776,7 +6382,7 @@ Personal Finance apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + 92 @@ -6784,7 +6390,7 @@ Privacy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 93 @@ -6792,7 +6398,7 @@ Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 95 @@ -6800,7 +6406,7 @@ Tool apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 96 @@ -6808,7 +6414,7 @@ User Experience apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 97 @@ -6816,7 +6422,7 @@ Wealth apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 98 @@ -6824,7 +6430,7 @@ Wealth Management apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 99 @@ -7324,7 +6930,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 32 + 34 @@ -7336,7 +6942,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 22 + 24 @@ -7344,12 +6950,8 @@ guides snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + libs/common/src/lib/paths.ts + 42 @@ -7357,13 +6959,9 @@ glossary snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts + libs/common/src/lib/paths.ts 41 - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 - Threshold range @@ -7418,7 +7016,7 @@ Do you really want to delete the API key? apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + 102 @@ -7450,7 +7048,7 @@ Could not generate an API key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + 128 @@ -7458,7 +7056,7 @@ Set this API key in your self-hosted environment: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + 143 @@ -7466,7 +7064,7 @@ Ghostfolio Premium Data Provider API Key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + 146 @@ -7474,7 +7072,7 @@ Do you really want to generate a new API key? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + 151 @@ -7570,7 +7168,7 @@ Link has been copied to the clipboard apps/client/src/app/components/access-table/access-table.component.ts - 65 + 66 @@ -7822,20 +7420,8 @@ terms-of-service snake-case - apps/client/src/app/app.component.ts - 80 - - - apps/client/src/app/core/paths.ts - 11 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + libs/common/src/lib/paths.ts + 52 @@ -7843,7 +7429,7 @@ Terms of Service apps/client/src/app/pages/about/about-page.component.ts - 71 + 72 apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts @@ -7971,11 +7557,11 @@ Watchlist apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + 40 apps/client/src/app/pages/home/home-page.component.ts - 53 + 54 @@ -8010,6 +7596,24 @@ 41 + + changelog + changelog + snake-case + + libs/common/src/lib/paths.ts + 38 + + + + oss-friends + oss-friends + snake-case + + libs/common/src/lib/paths.ts + 46 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 36098ab94..f7646113a 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -70,7 +70,7 @@ Voulez-vous vraiment révoquer cet accès ? apps/client/src/app/components/access-table/access-table.component.ts - 79 + 80 @@ -1110,11 +1110,11 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + 47 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 94 @@ -1322,7 +1322,7 @@ apps/client/src/app/components/header/header.component.ts - 231 + 232 @@ -1330,7 +1330,7 @@ Oups! Jeton de Sécurité Incorrect. apps/client/src/app/components/header/header.component.ts - 246 + 247 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1750,7 +1750,7 @@ Cette fonctionnalité est momentanément indisponible. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -1758,11 +1758,11 @@ Veuillez réessayer plus tard. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1774,7 +1774,7 @@ Oups! Quelque chose s’est mal passé. apps/client/src/app/core/http-response.interceptor.ts - 83 + 84 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1786,11 +1786,11 @@ D’accord apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 87 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1806,7 +1806,7 @@ apps/client/src/app/pages/about/about-page.component.ts - 45 + 46 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -1842,7 +1842,7 @@ Politique de Vie Privée apps/client/src/app/pages/about/about-page.component.ts - 64 + 65 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -1866,7 +1866,7 @@ Mon Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -1882,7 +1882,7 @@ Veuillez entrer votre code promotionnel. apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -1890,7 +1890,7 @@ Le code promotionnel n’a pas pu être appliqué apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -1898,7 +1898,7 @@ Le code promotionnel a été appliqué apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -1906,7 +1906,7 @@ Rafraîchir apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -2206,11 +2206,11 @@ Données du marché apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + 31 apps/client/src/app/pages/admin/admin-page.component.ts - 38 + 39 @@ -2218,7 +2218,7 @@ Contrôle Admin apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + 21 @@ -2226,11 +2226,11 @@ Utilisateurs apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 + 41 apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 49 @@ -2350,7 +2350,7 @@ Questions Fréquentes (FAQ) apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 + 35 apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts @@ -2370,19 +2370,15 @@ Positions apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 + 25 apps/client/src/app/pages/home/home-page.component.ts - 43 + 44 apps/client/src/app/pages/zen/zen-page.component.ts - 40 + 41 @@ -2390,11 +2386,11 @@ Résumé apps/client/src/app/pages/home/home-page-routing.module.ts - 34 + 30 apps/client/src/app/pages/home/home-page.component.ts - 48 + 49 @@ -2402,11 +2398,11 @@ Marchés apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + 35 apps/client/src/app/pages/home/home-page.component.ts - 58 + 59 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -2418,7 +2414,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 27 + 29 @@ -2430,7 +2426,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + 41 @@ -2574,7 +2570,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + 46 @@ -2706,7 +2702,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + 36 @@ -2938,7 +2934,7 @@ Ressources apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + 51 @@ -2970,23 +2966,23 @@ Aperçu apps/client/src/app/pages/admin/admin-page.component.ts - 28 + 29 apps/client/src/app/pages/home/home-page.component.ts - 38 + 39 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 19 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 20 apps/client/src/app/pages/zen/zen-page.component.ts - 35 + 36 @@ -3994,19 +3990,19 @@ Paramètres apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 + 36 apps/client/src/app/pages/admin/admin-page.component.ts - 33 + 34 apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + 19 apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + 37 @@ -4174,7 +4170,7 @@ Historique des modifications apps/client/src/app/pages/about/about-page.component.ts - 50 + 51 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -4186,7 +4182,7 @@ Licence apps/client/src/app/pages/about/about-page.component.ts - 55 + 56 apps/client/src/app/pages/about/license/license-page-routing.module.ts @@ -4326,7 +4322,7 @@ Outils de Gestion de Patrimoine apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + 15 @@ -5154,580 +5150,189 @@ foire-aux-questions snake-case - apps/client/src/app/app.component.ts - 82 + libs/common/src/lib/paths.ts + 39 + + + features + fonctionnalites + snake-case - apps/client/src/app/core/paths.ts - 3 + libs/common/src/lib/paths.ts + 40 + + + about + a-propos + snake-case - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + libs/common/src/lib/paths.ts + 37 + + + privacy-policy + politique-de-confidentialite + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/paths.ts + 48 + + + license + licence + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts + libs/common/src/lib/paths.ts 43 + + + markets + marches + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 44 + + + pricing + prix + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/paths.ts + 47 - - features - fonctionnalites + + register + enregistrement snake-case - apps/client/src/app/app.component.ts - 83 + libs/common/src/lib/paths.ts + 49 + + + resources + ressources + snake-case - apps/client/src/app/components/header/header.component.ts - 83 + libs/common/src/lib/paths.ts + 50 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Cette page d’aperçu présente une collection d’outils de finances personnelles comparés à la solution open source alternative Ghostfolio. Si vous accordez de l’importance à la transparence, à la confidentialité des données et à la collaboration communautaire, Ghostfolio vous offre une excellente occasion de prendre le contrôle de votre gestion financière. - apps/client/src/app/components/header/header.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Explorez les liens ci-dessous pour comparer une variété d’outils de finances personnelles avec Ghostfolio. - apps/client/src/app/core/paths.ts - 4 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Solutions open source alternatives à - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + Open Source Alternative to + Solutions open source alternatives à - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 28 + + + The Open Source Alternative to + L’alternative open source à - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Cherchez-vous des alternatives open source à ? Ghostfolio est un outil de gestion de portefeuille puissant offrant aux particuliers une plateforme complète pour suivre, analyser et optimiser ses investissements. Que vous soyez un investisseur expérimenté ou que vous débutiez, Ghostfolio offre une interface utilisateur intuitive et une large gamme de fonctionnalités pour vous aider à prendre des décisions éclairées et à prendre le contrôle de votre avenir financier. - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio est un logiciel open source (OSS), offrant une alternative économique, le rendant particulièrement adaptée aux personnes disposant d’un budget serré, telles que celles qui cherchent à atteindre le mouvement Financial Independence, Retire Early (FIRE). En s’appuyant sur les efforts collectifs d’une communauté de développeurs et de passionnés de finances personnelles, Ghostfolio améliore continuellement ses fonctionnalités, sa sécurité et son expérience utilisateur. - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Regardons plus en détails ce que proposent Ghostfolio vs via la table de comparaison ci-dessous pour comprendre comment Ghostfolio se positionne par rapport à . Nous examinerons divers aspects tels que les fonctionnalités, la confidentialité des données, le prix, etc., afin de vous permettre de faire un choix éclairé en fonction de vos besoins personnels. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + open-source-alternative-to + alternative-open-source-a + snake-case - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + libs/common/src/lib/paths.ts + 45 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Veuillez noter que les informations fournies dans le Ghostfolio vs via la table de comparaison se basent de nos recherches et analyses indépendantes. Ce site n’est pas affilié à ou tout autre produit mentionné dans la comparaison. Le paysage des outils de finances personnelles évoluant, il est essentiel de vérifier tout détail ou changement spécifique directement sur la page du produit concerné. Certaines données doivent être mises à jour ? Aidez-nous à maintenir les données exactes sur GitHub. - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 + + + Ready to take your investments to the next level? + Prêt à prendre vos investissements au niveau supérieur? - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 + + + Get Started + Démarrer - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 + + + Switzerland + Suisse - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 59 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 - - - - about - a-propos - snake-case - - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/app.component.ts - 75 - - - apps/client/src/app/app.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 46 - - - apps/client/src/app/pages/about/about-page.component.ts - 51 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/about/about-page.component.ts - 84 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 - - - - privacy-policy - politique-de-confidentialite - snake-case - - apps/client/src/app/app.component.ts - 76 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - - license - licence - snake-case - - apps/client/src/app/app.component.ts - 72 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - - markets - marches - snake-case - - apps/client/src/app/app.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 89 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 - - - - pricing - prix - snake-case - - apps/client/src/app/app.component.ts - 85 - - - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/header/header.component.ts - 90 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 - - - apps/client/src/app/core/http-response.interceptor.ts - 77 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 - - - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 - - - - register - enregistrement - snake-case - - apps/client/src/app/app.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 91 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 - - - apps/client/src/app/pages/features/features-page.component.ts - 28 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 28 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 - - - - resources - ressources - snake-case - - apps/client/src/app/app.component.ts - 87 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 92 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/features/features-page.component.ts - 29 - - - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - Cette page d’aperçu présente une collection d’outils de finances personnelles comparés à la solution open source alternative Ghostfolio. Si vous accordez de l’importance à la transparence, à la confidentialité des données et à la collaboration communautaire, Ghostfolio vous offre une excellente occasion de prendre le contrôle de votre gestion financière. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Explorez les liens ci-dessous pour comparer une variété d’outils de finances personnelles avec Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - Solutions open source alternatives à - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 - - - - Open Source Alternative to - Solutions open source alternatives à - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 - - - - The Open Source Alternative to - L’alternative open source à - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Cherchez-vous des alternatives open source à ? Ghostfolio est un outil de gestion de portefeuille puissant offrant aux particuliers une plateforme complète pour suivre, analyser et optimiser ses investissements. Que vous soyez un investisseur expérimenté ou que vous débutiez, Ghostfolio offre une interface utilisateur intuitive et une large gamme de fonctionnalités pour vous aider à prendre des décisions éclairées et à prendre le contrôle de votre avenir financier. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio est un logiciel open source (OSS), offrant une alternative économique, le rendant particulièrement adaptée aux personnes disposant d’un budget serré, telles que celles qui cherchent à atteindre le mouvement Financial Independence, Retire Early (FIRE). En s’appuyant sur les efforts collectifs d’une communauté de développeurs et de passionnés de finances personnelles, Ghostfolio améliore continuellement ses fonctionnalités, sa sécurité et son expérience utilisateur. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Regardons plus en détails ce que proposent Ghostfolio vs via la table de comparaison ci-dessous pour comprendre comment Ghostfolio se positionne par rapport à . Nous examinerons divers aspects tels que les fonctionnalités, la confidentialité des données, le prix, etc., afin de vous permettre de faire un choix éclairé en fonction de vos besoins personnels. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 - - - - open-source-alternative-to - alternative-open-source-a - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 - - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - Veuillez noter que les informations fournies dans le Ghostfolio vs via la table de comparaison se basent de nos recherches et analyses indépendantes. Ce site n’est pas affilié à ou tout autre produit mentionné dans la comparaison. Le paysage des outils de finances personnelles évoluant, il est essentiel de vérifier tout détail ou changement spécifique directement sur la page du produit concerné. Certaines données doivent être mises à jour ? Aidez-nous à maintenir les données exactes sur GitHub. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 - - - - Ready to take your investments to the next level? - Prêt à prendre vos investissements au niveau supérieur? - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 - - - - Get Started - Démarrer - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 - - - - Switzerland - Suisse - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 - - - libs/ui/src/lib/i18n.ts - 93 + libs/ui/src/lib/i18n.ts + 93 @@ -5735,7 +5340,7 @@ Mondial apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 60 libs/ui/src/lib/i18n.ts @@ -5939,11 +5544,11 @@ Statut apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + 24 apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + 42 @@ -5951,11 +5556,11 @@ Accès apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + 29 apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + 48 @@ -6239,11 +5844,11 @@ File d’attente apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + 26 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 44 @@ -6267,7 +5872,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + 88 @@ -6435,7 +6040,7 @@ Général apps/client/src/app/pages/faq/faq-page.component.ts - 37 + 38 @@ -6443,7 +6048,7 @@ Cloud apps/client/src/app/pages/faq/faq-page.component.ts - 42 + 43 apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts @@ -6455,7 +6060,7 @@ Self-Hosting apps/client/src/app/pages/faq/faq-page.component.ts - 48 + 49 apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts @@ -6465,9 +6070,10 @@ self-hosting self-hosting + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 51 @@ -6487,7 +6093,7 @@ Oops! Il semble que vous fassiez trop de requêtes. Veuillez ralentir un peu. apps/client/src/app/core/http-response.interceptor.ts - 103 + 104 @@ -6551,7 +6157,7 @@ Cette action n’est pas autorisée. apps/client/src/app/core/http-response.interceptor.ts - 64 + 65 @@ -6719,7 +6325,7 @@ Alternative apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + 82 @@ -6727,7 +6333,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 83 @@ -6735,7 +6341,7 @@ Budget apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 84 @@ -6743,7 +6349,7 @@ Communauté apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 85 @@ -6751,7 +6357,7 @@ Family Office apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 86 @@ -6759,7 +6365,7 @@ Investisseur apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 89 @@ -6767,7 +6373,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 90 @@ -6775,7 +6381,7 @@ Gestion de Patrimoine apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + 92 @@ -6783,7 +6389,7 @@ Confidentialité apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 93 @@ -6791,7 +6397,7 @@ Logiciels apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 95 @@ -6799,7 +6405,7 @@ Outils apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 96 @@ -6807,7 +6413,7 @@ Expérience Utilisateur apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 97 @@ -6815,7 +6421,7 @@ Patrimoine apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 98 @@ -6823,7 +6429,7 @@ Gestion de Patrimoine apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 99 @@ -7323,7 +6929,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 32 + 34 @@ -7335,7 +6941,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 22 + 24 @@ -7343,12 +6949,8 @@ guides snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + libs/common/src/lib/paths.ts + 42 @@ -7356,13 +6958,9 @@ glossaire snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts + libs/common/src/lib/paths.ts 41 - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 - Threshold range @@ -7417,7 +7015,7 @@ Voulez-vous vraiment supprimer la clé API? apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + 102 @@ -7449,7 +7047,7 @@ Impossible de générer une clé API apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + 128 @@ -7457,7 +7055,7 @@ Définissez cette clé API dans votre environnement auto-hébergé : apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + 143 @@ -7465,7 +7063,7 @@ Clé API du fournisseur de données Ghostfolio Premium apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + 146 @@ -7473,7 +7071,7 @@ Voulez-vous vraiment générer une nouvelle clé API ? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + 151 @@ -7569,7 +7167,7 @@ Le lien a été copié dans le presse-papiers apps/client/src/app/components/access-table/access-table.component.ts - 65 + 66 @@ -7821,20 +7419,8 @@ conditions-d-utilisation snake-case - apps/client/src/app/app.component.ts - 80 - - - apps/client/src/app/core/paths.ts - 11 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + libs/common/src/lib/paths.ts + 52 @@ -7842,7 +7428,7 @@ Conditions d’utilisation apps/client/src/app/pages/about/about-page.component.ts - 71 + 72 apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts @@ -7970,11 +7556,11 @@ Liste de suivi apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + 40 apps/client/src/app/pages/home/home-page.component.ts - 53 + 54 @@ -8009,6 +7595,24 @@ 41 + + changelog + changelog + snake-case + + libs/common/src/lib/paths.ts + 38 + + + + oss-friends + oss-friends + snake-case + + libs/common/src/lib/paths.ts + 46 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 98539f12a..2320780b4 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -79,7 +79,7 @@ Vuoi davvero revocare l’accesso concesso? apps/client/src/app/components/access-table/access-table.component.ts - 79 + 80 @@ -1011,7 +1011,7 @@ apps/client/src/app/components/header/header.component.ts - 231 + 232 @@ -1019,7 +1019,7 @@ Ops! Token di sicurezza errato. apps/client/src/app/components/header/header.component.ts - 246 + 247 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1443,11 +1443,11 @@ Bene apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 87 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1463,7 +1463,7 @@ apps/client/src/app/pages/about/about-page.component.ts - 45 + 46 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -1607,7 +1607,7 @@ Informativa sulla privacy apps/client/src/app/pages/about/about-page.component.ts - 64 + 65 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -1619,7 +1619,7 @@ Il mio Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -1627,7 +1627,7 @@ Inserisci il tuo codice del buono: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -1635,7 +1635,7 @@ Impossibile riscattare il codice del buono apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -1643,7 +1643,7 @@ Il codice del buono è stato riscattato apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -1651,7 +1651,7 @@ Ricarica apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -1915,7 +1915,7 @@ Controllo amministrativo apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + 21 @@ -1939,7 +1939,7 @@ Domande più frequenti (FAQ) apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 + 35 apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts @@ -1959,23 +1959,23 @@ Panoramica apps/client/src/app/pages/admin/admin-page.component.ts - 28 + 29 apps/client/src/app/pages/home/home-page.component.ts - 38 + 39 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 19 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 20 apps/client/src/app/pages/zen/zen-page.component.ts - 35 + 36 @@ -1983,11 +1983,11 @@ Mercati apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + 35 apps/client/src/app/pages/home/home-page.component.ts - 58 + 59 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -1999,7 +1999,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 27 + 29 @@ -2011,7 +2011,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + 46 @@ -2099,7 +2099,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + 36 @@ -2163,19 +2163,15 @@ Partecipazioni apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 + 25 apps/client/src/app/pages/home/home-page.component.ts - 43 + 44 apps/client/src/app/pages/zen/zen-page.component.ts - 40 + 41 @@ -2339,7 +2335,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + 41 @@ -2375,11 +2371,11 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + 47 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 94 @@ -2443,7 +2439,7 @@ Risorse apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + 51 @@ -2587,7 +2583,7 @@ Questa funzionalità non è attualmente disponibile. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -2595,7 +2591,7 @@ Ops! Qualcosa è andato storto. apps/client/src/app/core/http-response.interceptor.ts - 83 + 84 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2607,11 +2603,11 @@ Riprova più tardi. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3323,11 +3319,11 @@ Dati del mercato apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + 31 apps/client/src/app/pages/admin/admin-page.component.ts - 38 + 39 @@ -3335,11 +3331,11 @@ Utenti apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 + 41 apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 49 @@ -3347,11 +3343,11 @@ Summario apps/client/src/app/pages/home/home-page-routing.module.ts - 34 + 30 apps/client/src/app/pages/home/home-page.component.ts - 48 + 49 @@ -3995,19 +3991,19 @@ Impostazioni apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 + 36 apps/client/src/app/pages/admin/admin-page.component.ts - 33 + 34 apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + 19 apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + 37 @@ -4175,7 +4171,7 @@ Changelog apps/client/src/app/pages/about/about-page.component.ts - 50 + 51 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -4187,7 +4183,7 @@ Licenza apps/client/src/app/pages/about/about-page.component.ts - 55 + 56 apps/client/src/app/pages/about/license/license-page-routing.module.ts @@ -4327,7 +4323,7 @@ Strumenti di finanza personale apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + 15 @@ -5155,580 +5151,189 @@ domande-piu-frequenti snake-case - apps/client/src/app/app.component.ts - 82 + libs/common/src/lib/paths.ts + 39 + + + features + funzionalita + snake-case - apps/client/src/app/core/paths.ts - 3 + libs/common/src/lib/paths.ts + 40 + + + about + informazioni-su + snake-case - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + libs/common/src/lib/paths.ts + 37 + + + privacy-policy + informativa-sulla-privacy + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/paths.ts + 48 + + + license + licenza + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts + libs/common/src/lib/paths.ts 43 + + + markets + mercati + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 44 + + + pricing + prezzi + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/paths.ts + 47 - - features - funzionalita + + register + iscrizione snake-case - apps/client/src/app/app.component.ts - 83 + libs/common/src/lib/paths.ts + 49 + + + resources + risorse + snake-case - apps/client/src/app/components/header/header.component.ts - 83 + libs/common/src/lib/paths.ts + 50 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Questa pagina panoramica presenta una raccolta curata di strumenti di finanza personale confrontati con l’alternativa open source Ghostfolio. Se apprezzi la trasparenza, la privacy dei dati e la collaborazione con la comunità, Ghostfolio ti offre un’ottima opportunità per prendere il controllo della tua gestione finanziaria. - apps/client/src/app/components/header/header.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Esplora i link qui sotto per confrontare una serie di strumenti di finanza personale con Ghostfolio. - apps/client/src/app/core/paths.ts - 4 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + L’alternativa open source a - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + Open Source Alternative to + L’alternativa open source a - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 28 + + + The Open Source Alternative to + L’alternativa open source a - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Stai cercando un’alternativa open source a ? Ghostfolio è un potente strumento di gestione del portafoglio che fornisce alle persone una piattaforma completa per monitorare, analizzare e ottimizzare i propri investimenti. Che tu sia un investitore esperto o alle prime armi, Ghostfolio offre un’interfaccia utente intuitiva e un’ampia gamma di funzionalità per aiutarti a prendere decisioni informate e il controllo del tuo futuro finanziario. - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio è un software open source (OSS) che offre un’alternativa economicamente vantaggiosa a particolarmente adatta a persone con un budget limitato, come quelle che perseguono l’indipendenza finanziaria e il pensionamento anticipato (FIRE). Grazie agli sforzi collettivi di una comunità di sviluppatori e di appassionati di finanza personale, Ghostfolio migliora continuamente le sue capacità, la sua sicurezza e la sua esperienza utente. - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Analizziamo nel dettaglio la tabella di confronto qui sotto per comprendere a fondo come Ghostfolio si posiziona rispetto a . Esploreremo vari aspetti come le caratteristiche, la privacy dei dati, il prezzo e altro ancora, permettendoti di fare una scelta ben informata per le tue esigenze personali. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + open-source-alternative-to + alternativa-open-source-a + snake-case - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + libs/common/src/lib/paths.ts + 45 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Nota bene: le informazioni fornite si basano sulle nostre ricerche e analisi indipendenti. Questo sito web non è affiliato con o a qualsiasi altro prodotto citato nel confronto. Poiché il panorama degli strumenti di finanza personale si evolve, è essenziale verificare qualsiasi dettaglio o modifica specifica direttamente nella pagina del prodotto in questione. I dati hanno bisogno di essere aggiornati? Aiutaci a mantenere i dati accurati su GitHub. - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 + + + Ready to take your investments to the next level? + Sei pronto a portare il tuo investimento al livello successivo? - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 + + + Get Started + Inizia - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 + + + Switzerland + Svizzera - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 59 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 - - - - about - informazioni-su - snake-case - - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/app.component.ts - 75 - - - apps/client/src/app/app.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 46 - - - apps/client/src/app/pages/about/about-page.component.ts - 51 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/about/about-page.component.ts - 84 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 - - - - privacy-policy - informativa-sulla-privacy - snake-case - - apps/client/src/app/app.component.ts - 76 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - - license - licenza - snake-case - - apps/client/src/app/app.component.ts - 72 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - - markets - mercati - snake-case - - apps/client/src/app/app.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 89 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 - - - - pricing - prezzi - snake-case - - apps/client/src/app/app.component.ts - 85 - - - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/header/header.component.ts - 90 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 - - - apps/client/src/app/core/http-response.interceptor.ts - 77 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 - - - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 - - - - register - iscrizione - snake-case - - apps/client/src/app/app.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 91 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 - - - apps/client/src/app/pages/features/features-page.component.ts - 28 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 28 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 - - - - resources - risorse - snake-case - - apps/client/src/app/app.component.ts - 87 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 92 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/features/features-page.component.ts - 29 - - - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - Questa pagina panoramica presenta una raccolta curata di strumenti di finanza personale confrontati con l’alternativa open source Ghostfolio. Se apprezzi la trasparenza, la privacy dei dati e la collaborazione con la comunità, Ghostfolio ti offre un’ottima opportunità per prendere il controllo della tua gestione finanziaria. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Esplora i link qui sotto per confrontare una serie di strumenti di finanza personale con Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - L’alternativa open source a - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 - - - - Open Source Alternative to - L’alternativa open source a - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 - - - - The Open Source Alternative to - L’alternativa open source a - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Stai cercando un’alternativa open source a ? Ghostfolio è un potente strumento di gestione del portafoglio che fornisce alle persone una piattaforma completa per monitorare, analizzare e ottimizzare i propri investimenti. Che tu sia un investitore esperto o alle prime armi, Ghostfolio offre un’interfaccia utente intuitiva e un’ampia gamma di funzionalità per aiutarti a prendere decisioni informate e il controllo del tuo futuro finanziario. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio è un software open source (OSS) che offre un’alternativa economicamente vantaggiosa a particolarmente adatta a persone con un budget limitato, come quelle che perseguono l’indipendenza finanziaria e il pensionamento anticipato (FIRE). Grazie agli sforzi collettivi di una comunità di sviluppatori e di appassionati di finanza personale, Ghostfolio migliora continuamente le sue capacità, la sua sicurezza e la sua esperienza utente. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Analizziamo nel dettaglio la tabella di confronto qui sotto per comprendere a fondo come Ghostfolio si posiziona rispetto a . Esploreremo vari aspetti come le caratteristiche, la privacy dei dati, il prezzo e altro ancora, permettendoti di fare una scelta ben informata per le tue esigenze personali. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 - - - - open-source-alternative-to - alternativa-open-source-a - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 - - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - Nota bene: le informazioni fornite si basano sulle nostre ricerche e analisi indipendenti. Questo sito web non è affiliato con o a qualsiasi altro prodotto citato nel confronto. Poiché il panorama degli strumenti di finanza personale si evolve, è essenziale verificare qualsiasi dettaglio o modifica specifica direttamente nella pagina del prodotto in questione. I dati hanno bisogno di essere aggiornati? Aiutaci a mantenere i dati accurati su GitHub. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 - - - - Ready to take your investments to the next level? - Sei pronto a portare il tuo investimento al livello successivo? - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 - - - - Get Started - Inizia - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 - - - - Switzerland - Svizzera - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 - - - libs/ui/src/lib/i18n.ts - 93 + libs/ui/src/lib/i18n.ts + 93 @@ -5736,7 +5341,7 @@ Globale apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 60 libs/ui/src/lib/i18n.ts @@ -5940,11 +5545,11 @@ Iscrizione apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + 24 apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + 42 @@ -5952,11 +5557,11 @@ Accesso apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + 29 apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + 48 @@ -6240,11 +5845,11 @@ Coda Lavori apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + 26 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 44 @@ -6268,7 +5873,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + 88 @@ -6436,7 +6041,7 @@ Generale apps/client/src/app/pages/faq/faq-page.component.ts - 37 + 38 @@ -6444,7 +6049,7 @@ Cloud apps/client/src/app/pages/faq/faq-page.component.ts - 42 + 43 apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts @@ -6456,7 +6061,7 @@ Self-Hosting apps/client/src/app/pages/faq/faq-page.component.ts - 48 + 49 apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts @@ -6466,9 +6071,10 @@ self-hosting self-hosting + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 51 @@ -6488,7 +6094,7 @@ Ops! Sembra tu stia facendo troppe richieste. Rallenta un po’ per favore. apps/client/src/app/core/http-response.interceptor.ts - 103 + 104 @@ -6552,7 +6158,7 @@ Questa azione non è permessa. apps/client/src/app/core/http-response.interceptor.ts - 64 + 65 @@ -6720,7 +6326,7 @@ Alternativa apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + 82 @@ -6728,7 +6334,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 83 @@ -6736,7 +6342,7 @@ Budgeting apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 84 @@ -6744,7 +6350,7 @@ Comunità apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 85 @@ -6752,7 +6358,7 @@ Ufficio familiare apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 86 @@ -6760,7 +6366,7 @@ Investitore apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 89 @@ -6768,7 +6374,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 90 @@ -6776,7 +6382,7 @@ Finanza Personale apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + 92 @@ -6784,7 +6390,7 @@ Privacy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 93 @@ -6792,7 +6398,7 @@ Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 95 @@ -6800,7 +6406,7 @@ Strumento apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 96 @@ -6808,7 +6414,7 @@ Esperienza Utente apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 97 @@ -6816,7 +6422,7 @@ Ricchezza apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 98 @@ -6824,7 +6430,7 @@ Gestione Patrimoniale apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 99 @@ -7324,7 +6930,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 32 + 34 @@ -7336,7 +6942,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 22 + 24 @@ -7344,12 +6950,8 @@ guide snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + libs/common/src/lib/paths.ts + 42 @@ -7357,13 +6959,9 @@ glossario snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts + libs/common/src/lib/paths.ts 41 - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 - Threshold range @@ -7418,7 +7016,7 @@ Vuoi davvero eliminare l’API key? apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + 102 @@ -7450,7 +7048,7 @@ Non è stato possibile generare un API key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + 128 @@ -7458,7 +7056,7 @@ Imposta questa API key nel tuo ambiente self-hosted: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + 143 @@ -7466,7 +7064,7 @@ API Key for Ghostfolio Premium Data Provider apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + 146 @@ -7474,7 +7072,7 @@ Vuoi davvero generare una nuova API key? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + 151 @@ -7570,7 +7168,7 @@ Il link è stato copiato negli appunti apps/client/src/app/components/access-table/access-table.component.ts - 65 + 66 @@ -7822,20 +7420,8 @@ termini-e-condizioni snake-case - apps/client/src/app/app.component.ts - 80 - - - apps/client/src/app/core/paths.ts - 11 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + libs/common/src/lib/paths.ts + 52 @@ -7843,7 +7429,7 @@ Termini e condizioni apps/client/src/app/pages/about/about-page.component.ts - 71 + 72 apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts @@ -7971,11 +7557,11 @@ Watchlist apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + 40 apps/client/src/app/pages/home/home-page.component.ts - 53 + 54 @@ -8010,6 +7596,24 @@ 41 + + changelog + changelog + snake-case + + libs/common/src/lib/paths.ts + 38 + + + + oss-friends + oss-friends + snake-case + + libs/common/src/lib/paths.ts + 46 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 2d4920df4..704b359e5 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -78,7 +78,7 @@ Wil je deze verleende toegang echt intrekken? apps/client/src/app/components/access-table/access-table.component.ts - 79 + 80 @@ -1010,7 +1010,7 @@ apps/client/src/app/components/header/header.component.ts - 231 + 232 @@ -1018,7 +1018,7 @@ Oeps! Onjuiste beveiligingstoken. apps/client/src/app/components/header/header.component.ts - 246 + 247 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1442,11 +1442,11 @@ Oké apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 87 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1462,7 +1462,7 @@ apps/client/src/app/pages/about/about-page.component.ts - 45 + 46 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -1606,7 +1606,7 @@ Privacybeleid apps/client/src/app/pages/about/about-page.component.ts - 64 + 65 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -1618,7 +1618,7 @@ Mijn Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -1626,7 +1626,7 @@ Voer je couponcode in: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -1634,7 +1634,7 @@ Kon je kortingscode niet inwisselen apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -1642,7 +1642,7 @@ Je couponcode is ingewisseld apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -1650,7 +1650,7 @@ Herladen apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -1914,7 +1914,7 @@ Beheer apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + 21 @@ -1938,7 +1938,7 @@ Veelgestelde vragen apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 + 35 apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts @@ -1958,23 +1958,23 @@ Overzicht apps/client/src/app/pages/admin/admin-page.component.ts - 28 + 29 apps/client/src/app/pages/home/home-page.component.ts - 38 + 39 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 19 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 20 apps/client/src/app/pages/zen/zen-page.component.ts - 35 + 36 @@ -1982,11 +1982,11 @@ Markten apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + 35 apps/client/src/app/pages/home/home-page.component.ts - 58 + 59 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -1998,7 +1998,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 27 + 29 @@ -2010,7 +2010,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + 46 @@ -2098,7 +2098,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + 36 @@ -2162,19 +2162,15 @@ Posities apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 + 25 apps/client/src/app/pages/home/home-page.component.ts - 43 + 44 apps/client/src/app/pages/zen/zen-page.component.ts - 40 + 41 @@ -2338,7 +2334,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + 41 @@ -2374,11 +2370,11 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + 47 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 94 @@ -2442,7 +2438,7 @@ Bronnen apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + 51 @@ -2586,7 +2582,7 @@ Deze functie is momenteel niet beschikbaar. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -2594,7 +2590,7 @@ Oeps! Er ging iets mis. apps/client/src/app/core/http-response.interceptor.ts - 83 + 84 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2606,11 +2602,11 @@ Probeer het later nog eens. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3322,11 +3318,11 @@ Marktgegevens apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + 31 apps/client/src/app/pages/admin/admin-page.component.ts - 38 + 39 @@ -3334,11 +3330,11 @@ Gebruikers apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 + 41 apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 49 @@ -3346,11 +3342,11 @@ Samenvatting apps/client/src/app/pages/home/home-page-routing.module.ts - 34 + 30 apps/client/src/app/pages/home/home-page.component.ts - 48 + 49 @@ -3994,19 +3990,19 @@ Instellingen apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 + 36 apps/client/src/app/pages/admin/admin-page.component.ts - 33 + 34 apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + 19 apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + 37 @@ -4174,7 +4170,7 @@ Changelog apps/client/src/app/pages/about/about-page.component.ts - 50 + 51 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -4186,7 +4182,7 @@ Licentie apps/client/src/app/pages/about/about-page.component.ts - 55 + 56 apps/client/src/app/pages/about/license/license-page-routing.module.ts @@ -4326,7 +4322,7 @@ Tools voor persoonlijke financiën apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + 15 @@ -5154,580 +5150,189 @@ veelgestelde-vragen snake-case - apps/client/src/app/app.component.ts - 82 + libs/common/src/lib/paths.ts + 39 + + + features + functionaliteiten + snake-case - apps/client/src/app/core/paths.ts - 3 + libs/common/src/lib/paths.ts + 40 + + + about + over + snake-case - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + libs/common/src/lib/paths.ts + 37 + + + privacy-policy + privacybeleid + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/paths.ts + 48 + + + license + licentie + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts + libs/common/src/lib/paths.ts 43 + + + markets + markten + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 44 + + + pricing + prijzen + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/paths.ts + 47 - - features - functionaliteiten + + register + registratie snake-case - apps/client/src/app/app.component.ts - 83 + libs/common/src/lib/paths.ts + 49 + + + resources + bronnen + snake-case - apps/client/src/app/components/header/header.component.ts - 83 + libs/common/src/lib/paths.ts + 50 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Deze overzichtspagina bevat een verzameling tools voor persoonlijke financiën vergeleken met het open source alternatief Ghostfolio. Als je waarde hecht aan transparantie, gegevensprivacy en samenwerking binnen een gemeenschap, biedt Ghostfolio een uitstekende mogelijkheid om je financieel beheer in eigen hand te nemen. - apps/client/src/app/components/header/header.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Bekijk de links hieronder om verschillende persoonlijke financiële tools met Ghostfolio te vergelijken. - apps/client/src/app/core/paths.ts - 4 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Open Source alternatief voor - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + Open Source Alternative to + Open Source alternatief voor - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 28 + + + The Open Source Alternative to + Open Source alternatief voor - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Ben je op zoek naar een open source alternatief voor ? Ghostfolio is een krachtige tool voor portefeuillebeheer die particulieren een uitgebreid platform biedt om hun beleggingen bij te houden, te analyseren en te optimaliseren. Of je nu een ervaren belegger bent of net begint, Ghostfolio biedt een intuïtieve gebruikersinterface en uitgebreide functionaliteiten om je te helpen weloverwogen beslissingen te nemen en je financiële toekomst in eigen handen te nemen. - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio is open source software (OSS) en biedt een kosteneffectief alternatief voor waardoor het bijzonder geschikt is voor mensen met een krap budget, zoals degenen Financiële onafhankelijkheid nastreven, vroeg met pensioen gaan (FIRE). Door gebruik te maken van de collectieve inspanningen van een gemeenschap van ontwikkelaars en liefhebbers van persoonlijke financiën, verbetert Ghostfolio voortdurend de mogelijkheden, veiligheid en gebruikerservaring. - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Laten we eens dieper duiken in de gedetailleerde vergelijkingstabel hieronder om een beter begrip te krijgen hoe Ghostfolio zichzelf positioneert ten opzichte van . We gaan in op verschillende aspecten zoals functies, gegevensprivacy, prijzen en meer, zodat je een weloverwogen keuze kunt maken voor jouw persoonlijke behoeften. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + open-source-alternative-to + open-source-alternatief-voor + snake-case - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + libs/common/src/lib/paths.ts + 45 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Houd er rekening mee dat de verstrekte informatie in deze Ghostfolio vs is gebaseerd op ons onafhankelijk onderzoek en analyse. Deze website is niet gelieerd aan of een ander product dat in de vergelijking wordt genoemd. Aangezien het landschap van tools voor persoonlijke financiën evolueert, is het essentieel om specifieke details of wijzigingen rechtstreeks op de betreffende productpagina te controleren. Hebben je gegevens een opfrisbeurt nodig? Help ons de gegevens nauwkeurig te houden op GitHub. - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 + + + Ready to take your investments to the next level? + Klaar om je investeringen naar een hoger niveau te brengen? - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 + + + Get Started + Aan de slag - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 + + + Switzerland + Zwitserland - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 59 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 - - - - about - over - snake-case - - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/app.component.ts - 75 - - - apps/client/src/app/app.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 46 - - - apps/client/src/app/pages/about/about-page.component.ts - 51 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/about/about-page.component.ts - 84 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 - - - - privacy-policy - privacybeleid - snake-case - - apps/client/src/app/app.component.ts - 76 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - - license - licentie - snake-case - - apps/client/src/app/app.component.ts - 72 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - - markets - markten - snake-case - - apps/client/src/app/app.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 89 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 - - - - pricing - prijzen - snake-case - - apps/client/src/app/app.component.ts - 85 - - - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/header/header.component.ts - 90 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 - - - apps/client/src/app/core/http-response.interceptor.ts - 77 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 - - - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 - - - - register - registratie - snake-case - - apps/client/src/app/app.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 91 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 - - - apps/client/src/app/pages/features/features-page.component.ts - 28 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 28 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 - - - - resources - bronnen - snake-case - - apps/client/src/app/app.component.ts - 87 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 92 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/features/features-page.component.ts - 29 - - - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - Deze overzichtspagina bevat een verzameling tools voor persoonlijke financiën vergeleken met het open source alternatief Ghostfolio. Als je waarde hecht aan transparantie, gegevensprivacy en samenwerking binnen een gemeenschap, biedt Ghostfolio een uitstekende mogelijkheid om je financieel beheer in eigen hand te nemen. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Bekijk de links hieronder om verschillende persoonlijke financiële tools met Ghostfolio te vergelijken. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - Open Source alternatief voor - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 - - - - Open Source Alternative to - Open Source alternatief voor - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 - - - - The Open Source Alternative to - Open Source alternatief voor - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Ben je op zoek naar een open source alternatief voor ? Ghostfolio is een krachtige tool voor portefeuillebeheer die particulieren een uitgebreid platform biedt om hun beleggingen bij te houden, te analyseren en te optimaliseren. Of je nu een ervaren belegger bent of net begint, Ghostfolio biedt een intuïtieve gebruikersinterface en uitgebreide functionaliteiten om je te helpen weloverwogen beslissingen te nemen en je financiële toekomst in eigen handen te nemen. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio is open source software (OSS) en biedt een kosteneffectief alternatief voor waardoor het bijzonder geschikt is voor mensen met een krap budget, zoals degenen Financiële onafhankelijkheid nastreven, vroeg met pensioen gaan (FIRE). Door gebruik te maken van de collectieve inspanningen van een gemeenschap van ontwikkelaars en liefhebbers van persoonlijke financiën, verbetert Ghostfolio voortdurend de mogelijkheden, veiligheid en gebruikerservaring. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Laten we eens dieper duiken in de gedetailleerde vergelijkingstabel hieronder om een beter begrip te krijgen hoe Ghostfolio zichzelf positioneert ten opzichte van . We gaan in op verschillende aspecten zoals functies, gegevensprivacy, prijzen en meer, zodat je een weloverwogen keuze kunt maken voor jouw persoonlijke behoeften. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 - - - - open-source-alternative-to - open-source-alternatief-voor - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 - - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - Houd er rekening mee dat de verstrekte informatie in deze Ghostfolio vs is gebaseerd op ons onafhankelijk onderzoek en analyse. Deze website is niet gelieerd aan of een ander product dat in de vergelijking wordt genoemd. Aangezien het landschap van tools voor persoonlijke financiën evolueert, is het essentieel om specifieke details of wijzigingen rechtstreeks op de betreffende productpagina te controleren. Hebben je gegevens een opfrisbeurt nodig? Help ons de gegevens nauwkeurig te houden op GitHub. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 - - - - Ready to take your investments to the next level? - Klaar om je investeringen naar een hoger niveau te brengen? - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 - - - - Get Started - Aan de slag - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 - - - - Switzerland - Zwitserland - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 - - - libs/ui/src/lib/i18n.ts - 93 + libs/ui/src/lib/i18n.ts + 93 @@ -5735,7 +5340,7 @@ Wereldwijd apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 60 libs/ui/src/lib/i18n.ts @@ -5939,11 +5544,11 @@ Lidmaatschap apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + 24 apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + 42 @@ -5951,11 +5556,11 @@ Toegang apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + 29 apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + 48 @@ -6239,11 +5844,11 @@ Opdracht Wachtrij apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + 26 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 44 @@ -6267,7 +5872,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + 88 @@ -6435,7 +6040,7 @@ Algemeen apps/client/src/app/pages/faq/faq-page.component.ts - 37 + 38 @@ -6443,7 +6048,7 @@ Cloud apps/client/src/app/pages/faq/faq-page.component.ts - 42 + 43 apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts @@ -6455,7 +6060,7 @@ Zelf Hosten apps/client/src/app/pages/faq/faq-page.component.ts - 48 + 49 apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts @@ -6465,9 +6070,10 @@ self-hosting zelf hosten + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 51 @@ -6487,7 +6093,7 @@ Oeps! Het lijkt er op dat u te veel verzoeken indient. Doe het iets rustiger aan alstublieft. apps/client/src/app/core/http-response.interceptor.ts - 103 + 104 @@ -6551,7 +6157,7 @@ Deze actie is niet toegestaan. apps/client/src/app/core/http-response.interceptor.ts - 64 + 65 @@ -6719,7 +6325,7 @@ Alternatief apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + 82 @@ -6727,7 +6333,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 83 @@ -6735,7 +6341,7 @@ Budgetteren apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 84 @@ -6743,7 +6349,7 @@ Gemeenschap apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 85 @@ -6751,7 +6357,7 @@ Familiekantoor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 86 @@ -6759,7 +6365,7 @@ Investeerder apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 89 @@ -6767,7 +6373,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 90 @@ -6775,7 +6381,7 @@ Persoonlijke Financiën apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + 92 @@ -6783,7 +6389,7 @@ Privacy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 93 @@ -6791,7 +6397,7 @@ Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 95 @@ -6799,7 +6405,7 @@ Hulpmiddel apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 96 @@ -6807,7 +6413,7 @@ Gebruikers Ervaring apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 97 @@ -6815,7 +6421,7 @@ Vermogen apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 98 @@ -6823,7 +6429,7 @@ Vermogensbeheer apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 99 @@ -7323,7 +6929,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 32 + 34 @@ -7335,7 +6941,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 22 + 24 @@ -7343,12 +6949,8 @@ gidsen snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + libs/common/src/lib/paths.ts + 42 @@ -7356,13 +6958,9 @@ woordenlijst snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts + libs/common/src/lib/paths.ts 41 - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 - Threshold range @@ -7417,7 +7015,7 @@ Wilt u de API-sleutel echt verwijderen? apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + 102 @@ -7449,7 +7047,7 @@ Er kon geen API-sleutel worden gegenereerd apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + 128 @@ -7457,7 +7055,7 @@ Stel deze API-sleutel in uw zelf-gehoste omgeving in: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + 143 @@ -7465,7 +7063,7 @@ Ghostfolio Premium Gegevensleverancier API-sleutel apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + 146 @@ -7473,7 +7071,7 @@ Wilt u echt een nieuwe API-sleutel genereren? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + 151 @@ -7569,7 +7167,7 @@ Link is gekopieerd naar klemboord apps/client/src/app/components/access-table/access-table.component.ts - 65 + 66 @@ -7821,20 +7419,8 @@ servicevoorwaarden snake-case - apps/client/src/app/app.component.ts - 80 - - - apps/client/src/app/core/paths.ts - 11 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + libs/common/src/lib/paths.ts + 52 @@ -7842,7 +7428,7 @@ Servicevoorwaarden apps/client/src/app/pages/about/about-page.component.ts - 71 + 72 apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts @@ -7970,11 +7556,11 @@ Volglijst apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + 40 apps/client/src/app/pages/home/home-page.component.ts - 53 + 54 @@ -8009,6 +7595,24 @@ 41 + + changelog + changelog + snake-case + + libs/common/src/lib/paths.ts + 38 + + + + oss-friends + oss-friends + snake-case + + libs/common/src/lib/paths.ts + 46 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 5b399a06b..18cbcf7d0 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -6,100 +6,8 @@ o-ghostfolio snake-case - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/app.component.ts - 75 - - - apps/client/src/app/app.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 46 - - - apps/client/src/app/pages/about/about-page.component.ts - 51 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/about/about-page.component.ts - 84 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + libs/common/src/lib/paths.ts + 37 @@ -107,32 +15,8 @@ faq snake-case - apps/client/src/app/app.component.ts - 82 - - - apps/client/src/app/core/paths.ts - 3 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 38 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 43 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 49 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/paths.ts + 39 @@ -140,68 +24,8 @@ funkcje snake-case - apps/client/src/app/app.component.ts - 83 - - - apps/client/src/app/components/header/header.component.ts - 83 - - - apps/client/src/app/components/header/header.component.ts - 88 - - - apps/client/src/app/core/paths.ts - 4 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + libs/common/src/lib/paths.ts + 40 @@ -209,265 +33,53 @@ licencja snake-case - apps/client/src/app/app.component.ts - 72 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/paths.ts + 43 - markets - rynki - snake-case - - apps/client/src/app/app.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 89 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 - - - - pricing - cennik - snake-case - - apps/client/src/app/app.component.ts - 85 - - - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/header/header.component.ts - 90 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 - - - apps/client/src/app/core/http-response.interceptor.ts - 77 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 - - - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 - - - - privacy-policy - polityka-prywatnosci - snake-case - - apps/client/src/app/app.component.ts - 76 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - - register - zarejestruj - snake-case - - apps/client/src/app/app.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 91 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 - - - apps/client/src/app/pages/features/features-page.component.ts - 28 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 28 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 - - - - resources - zasoby - snake-case - - apps/client/src/app/app.component.ts - 87 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 92 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/features/features-page.component.ts - 29 - - - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 - + markets + rynki + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + libs/common/src/lib/paths.ts + 44 + + + pricing + cennik + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + libs/common/src/lib/paths.ts + 47 + + + privacy-policy + polityka-prywatnosci + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + libs/common/src/lib/paths.ts + 48 + + + register + zarejestruj + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + libs/common/src/lib/paths.ts + 49 + + + resources + zasoby + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + libs/common/src/lib/paths.ts + 50 @@ -867,7 +479,7 @@ Czy na pewno chcesz cofnąć przyznany dostęp? apps/client/src/app/components/access-table/access-table.component.ts - 79 + 80 @@ -2167,11 +1779,11 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + 47 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 94 @@ -2295,7 +1907,7 @@ apps/client/src/app/components/header/header.component.ts - 231 + 232 @@ -2303,7 +1915,7 @@ Ups! Nieprawidłowy token bezpieczeństwa. apps/client/src/app/components/header/header.component.ts - 246 + 247 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -3035,7 +2647,7 @@ Wpisz kod kuponu: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -3043,7 +2655,7 @@ Nie udało się zrealizować kodu kuponu apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -3051,7 +2663,7 @@ Kupon został zrealizowany apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -3059,7 +2671,7 @@ Odśwież apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -3275,7 +2887,7 @@ Ta funkcja jest obecnie niedostępna. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -3283,11 +2895,11 @@ Spróbuj ponownie później. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3299,7 +2911,7 @@ Ups! Coś poszło nie tak. apps/client/src/app/core/http-response.interceptor.ts - 83 + 84 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3311,11 +2923,11 @@ Okej apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 87 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3331,7 +2943,7 @@ apps/client/src/app/pages/about/about-page.component.ts - 45 + 46 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -3343,7 +2955,7 @@ Changelog apps/client/src/app/pages/about/about-page.component.ts - 50 + 51 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -3355,7 +2967,7 @@ Licencja apps/client/src/app/pages/about/about-page.component.ts - 55 + 56 apps/client/src/app/pages/about/license/license-page-routing.module.ts @@ -3367,7 +2979,7 @@ Polityka Prywatności apps/client/src/app/pages/about/about-page.component.ts - 64 + 65 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -3467,7 +3079,7 @@ Panel Administratora apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + 21 @@ -3475,11 +3087,11 @@ Dane Rynkowe apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + 31 apps/client/src/app/pages/admin/admin-page.component.ts - 38 + 39 @@ -3487,19 +3099,19 @@ Ustawienia apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 + 36 apps/client/src/app/pages/admin/admin-page.component.ts - 33 + 34 apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + 19 apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + 37 @@ -3507,11 +3119,11 @@ Użytkownicy apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 + 41 apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 49 @@ -3519,23 +3131,23 @@ Przegląd apps/client/src/app/pages/admin/admin-page.component.ts - 28 + 29 apps/client/src/app/pages/home/home-page.component.ts - 38 + 39 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 19 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 20 apps/client/src/app/pages/zen/zen-page.component.ts - 35 + 36 @@ -3567,7 +3179,7 @@ Często zadawane pytania (FAQ) apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 + 35 apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts @@ -3727,19 +3339,15 @@ Inwestycje apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 + 25 apps/client/src/app/pages/home/home-page.component.ts - 43 + 44 apps/client/src/app/pages/zen/zen-page.component.ts - 40 + 41 @@ -3747,11 +3355,11 @@ Podsumowanie apps/client/src/app/pages/home/home-page-routing.module.ts - 34 + 30 apps/client/src/app/pages/home/home-page.component.ts - 48 + 49 @@ -3759,11 +3367,11 @@ Rynki apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + 35 apps/client/src/app/pages/home/home-page.component.ts - 58 + 59 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -3775,7 +3383,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 27 + 29 @@ -4203,7 +3811,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + 41 @@ -4451,7 +4059,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + 46 @@ -4627,7 +4235,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + 36 @@ -5067,19 +4675,16 @@ Narzędzia finansów osobistych apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + 15 open-source-alternative-to open-source-alternative-to + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + libs/common/src/lib/paths.ts + 45 @@ -5087,7 +4692,7 @@ Alternatywa Open Source dla apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + 28 @@ -5343,7 +4948,7 @@ Szwajcaria apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + 59 libs/ui/src/lib/i18n.ts @@ -5355,7 +4960,7 @@ Globalny apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 60 libs/ui/src/lib/i18n.ts @@ -5367,7 +4972,7 @@ Zasoby apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + 51 @@ -5391,11 +4996,11 @@ Członkostwo apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + 24 apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + 42 @@ -5403,11 +5008,11 @@ Dostęp apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + 29 apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + 48 @@ -5415,7 +5020,7 @@ Moje Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -6239,11 +5844,11 @@ Kolejka Zadań apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + 26 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 44 @@ -6267,7 +5872,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + 88 @@ -6435,7 +6040,7 @@ Informacje Ogólne apps/client/src/app/pages/faq/faq-page.component.ts - 37 + 38 @@ -6443,7 +6048,7 @@ Rozwiązanie w Chmurze apps/client/src/app/pages/faq/faq-page.component.ts - 42 + 43 apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts @@ -6455,7 +6060,7 @@ Własny Hosting apps/client/src/app/pages/faq/faq-page.component.ts - 48 + 49 apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts @@ -6465,9 +6070,10 @@ self-hosting self-hosting + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 51 @@ -6487,7 +6093,7 @@ Ups! Wygląda na to, że wykonujesz zbyt wiele zapytań. Proszę, zwolnij trochę. apps/client/src/app/core/http-response.interceptor.ts - 103 + 104 @@ -6551,7 +6157,7 @@ To działanie jest niedozwolone. apps/client/src/app/core/http-response.interceptor.ts - 64 + 65 @@ -6719,7 +6325,7 @@ Alternatywa apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + 82 @@ -6727,7 +6333,7 @@ Aplikacja apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 83 @@ -6735,7 +6341,7 @@ Budżetowanie apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 84 @@ -6743,7 +6349,7 @@ Społeczność apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 85 @@ -6751,7 +6357,7 @@ Biuro Rodzinne apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 86 @@ -6759,7 +6365,7 @@ Inwestor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 89 @@ -6767,7 +6373,7 @@ Otwarty Kod Źródłowy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 90 @@ -6775,7 +6381,7 @@ Finanse Osobiste apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + 92 @@ -6783,7 +6389,7 @@ Prywatność apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 93 @@ -6791,7 +6397,7 @@ Oprogramowanie apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 95 @@ -6799,7 +6405,7 @@ Narzędzie apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 96 @@ -6807,7 +6413,7 @@ Doświadczenie Użytkownika apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 97 @@ -6815,7 +6421,7 @@ Majątek apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 98 @@ -6823,7 +6429,7 @@ Zarządzanie Majątkiem apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 99 @@ -7323,7 +6929,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 32 + 34 @@ -7335,7 +6941,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 22 + 24 @@ -7343,12 +6949,8 @@ poradniki snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + libs/common/src/lib/paths.ts + 42 @@ -7356,13 +6958,9 @@ slowniczek snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts + libs/common/src/lib/paths.ts 41 - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 - Threshold range @@ -7417,7 +7015,7 @@ Czy na pewno chcesz usunąć klucz API?? apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + 102 @@ -7449,7 +7047,7 @@ Nie udało się wygenerować klucza API apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + 128 @@ -7457,7 +7055,7 @@ Ustaw ten klucz API w samodzielnie hostowanym środowisku: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + 143 @@ -7465,7 +7063,7 @@ Klucz API dostawcy danych Premium Ghostfolio apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + 146 @@ -7473,7 +7071,7 @@ Czy na pewno chcesz wygenerować nowy klucz API? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + 151 @@ -7569,7 +7167,7 @@ Link został skopiowany do schowka apps/client/src/app/components/access-table/access-table.component.ts - 65 + 66 @@ -7821,20 +7419,8 @@ warunki-świadczenia-usług snake-case - apps/client/src/app/app.component.ts - 80 - - - apps/client/src/app/core/paths.ts - 11 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + libs/common/src/lib/paths.ts + 52 @@ -7842,7 +7428,7 @@ Warunki świadczenia usług apps/client/src/app/pages/about/about-page.component.ts - 71 + 72 apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts @@ -7970,11 +7556,11 @@ Watchlist apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + 40 apps/client/src/app/pages/home/home-page.component.ts - 53 + 54 @@ -8009,6 +7595,24 @@ 41 + + changelog + changelog + snake-case + + libs/common/src/lib/paths.ts + 38 + + + + oss-friends + oss-friends + snake-case + + libs/common/src/lib/paths.ts + 46 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index d99926cc0..57304a273 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -70,7 +70,7 @@ Pretende realmente revogar este acesso concedido? apps/client/src/app/components/access-table/access-table.component.ts - 79 + 80
@@ -982,11 +982,11 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + 47 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 94 @@ -1194,7 +1194,7 @@ apps/client/src/app/components/header/header.component.ts - 231 + 232 @@ -1202,7 +1202,7 @@ Oops! Token de Segurança Incorreto. apps/client/src/app/components/header/header.component.ts - 246 + 247 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1734,7 +1734,7 @@ Esta funcionalidade está atualmente indisponível. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -1742,11 +1742,11 @@ Por favor tente novamente mais tarde. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1758,7 +1758,7 @@ Oops! Ocorreu um erro. apps/client/src/app/core/http-response.interceptor.ts - 83 + 84 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1770,11 +1770,11 @@ OK apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 87 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1790,7 +1790,7 @@ apps/client/src/app/pages/about/about-page.component.ts - 45 + 46 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -1826,7 +1826,7 @@ Política de Privacidade apps/client/src/app/pages/about/about-page.component.ts - 64 + 65 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -1850,7 +1850,7 @@ O meu Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -1866,7 +1866,7 @@ Por favor, insira o seu código de cupão: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -1874,7 +1874,7 @@ Não foi possível resgatar o código de cupão apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -1882,7 +1882,7 @@ Código de cupão foi resgatado apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -1890,7 +1890,7 @@ Atualizar apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -1982,11 +1982,11 @@ Utilizadores apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 + 41 apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 49 @@ -2150,7 +2150,7 @@ Controlo Administrativo apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + 21 @@ -2270,7 +2270,7 @@ FAQ apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 + 35 apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts @@ -2290,23 +2290,23 @@ Visão geral apps/client/src/app/pages/admin/admin-page.component.ts - 28 + 29 apps/client/src/app/pages/home/home-page.component.ts - 38 + 39 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 19 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 20 apps/client/src/app/pages/zen/zen-page.component.ts - 35 + 36 @@ -2314,11 +2314,11 @@ Mercados apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + 35 apps/client/src/app/pages/home/home-page.component.ts - 58 + 59 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -2330,7 +2330,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 27 + 29 @@ -2342,7 +2342,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + 41 @@ -2478,7 +2478,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + 46 @@ -2610,7 +2610,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + 36 @@ -2690,19 +2690,15 @@ Posições apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 + 25 apps/client/src/app/pages/home/home-page.component.ts - 43 + 44 apps/client/src/app/pages/zen/zen-page.component.ts - 40 + 41 @@ -2834,7 +2830,7 @@ Recursos apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + 51 @@ -3282,11 +3278,11 @@ Dados de Mercado apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + 31 apps/client/src/app/pages/admin/admin-page.component.ts - 38 + 39 @@ -3294,11 +3290,11 @@ Sumário apps/client/src/app/pages/home/home-page-routing.module.ts - 34 + 30 apps/client/src/app/pages/home/home-page.component.ts - 48 + 49 @@ -3994,19 +3990,19 @@ Definições apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 + 36 apps/client/src/app/pages/admin/admin-page.component.ts - 33 + 34 apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + 19 apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + 37 @@ -4174,7 +4170,7 @@ Registo de alterações apps/client/src/app/pages/about/about-page.component.ts - 50 + 51 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -4186,7 +4182,7 @@ Licença apps/client/src/app/pages/about/about-page.component.ts - 55 + 56 apps/client/src/app/pages/about/license/license-page-routing.module.ts @@ -4326,7 +4322,7 @@ Ferramentas de finanças pessoais apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + 15 @@ -5154,580 +5150,189 @@ perguntas-mais-frequentes snake-case - apps/client/src/app/app.component.ts - 82 + libs/common/src/lib/paths.ts + 39 + + + features + funcionalidades + snake-case - apps/client/src/app/core/paths.ts - 3 + libs/common/src/lib/paths.ts + 40 + + + about + sobre + snake-case - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + libs/common/src/lib/paths.ts + 37 + + + privacy-policy + politica-de-privacidade + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/paths.ts + 48 + + + license + licenca + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts + libs/common/src/lib/paths.ts 43 + + + markets + mercados + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 44 + + + pricing + precos + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/paths.ts + 47 - - features - funcionalidades + + register + registo snake-case - apps/client/src/app/app.component.ts - 83 + libs/common/src/lib/paths.ts + 49 + + + resources + recursos + snake-case - apps/client/src/app/components/header/header.component.ts - 83 + libs/common/src/lib/paths.ts + 50 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - apps/client/src/app/components/header/header.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Explore os links abaixo para comparar uma variedade de ferramentas de finanças pessoais com o Ghostfolio. - apps/client/src/app/core/paths.ts - 4 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Alternativa de software livre ao - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + Open Source Alternative to + Alternativa de software livre ao - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 28 + + + The Open Source Alternative to + A alternativa de software livre ao - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Você está procurando uma alternativa de código aberto para ? Ghostfolio é uma poderosa ferramenta de gestão de portfólio que oferece aos investidores uma plataforma abrangente para monitorar, analisar e otimizar seus investimentos. Seja você um investidor experiente ou iniciante, o Ghostfolio oferece uma interface de usuário intuitiva e um ampla gama de funcionalidades para ajudá-lo a tomar decisões informadas e assumir o controle do seu futuro financeiro. - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio é um software de código aberto (OSS), que oferece uma alternativa econômica para tornando-o particularmente adequado para indivíduos com orçamento apertado, como aqueles buscando Independência Financeira, Aposentadoria Antecipada (FIRE). Ao aproveitar os esforços coletivos de uma comunidade de desenvolvedores e entusiastas de finanças pessoais, o Ghostfolio aprimora continuamente seus recursos, segurança e experiência do usuário. - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Vamos nos aprofundar nos detalhes do Ghostfolio vs tabela de comparação abaixo para obter uma compreensão completa de como o Ghostfolio se posiciona em relação a . Exploraremos vários aspectos, como recursos, privacidade de dados, preços e muito mais, permitindo que você faça uma escolha bem informada para suas necessidades pessoais. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + open-source-alternative-to + alternativa-de-software-livre-ao + snake-case - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + libs/common/src/lib/paths.ts + 45 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Observe que as informações fornecidas no Ghostfolio vs. A tabela de comparação é baseada em nossa pesquisa e análise independentes. Este site não é afiliado a ou qualquer outro produto mencionado na comparação. À medida que o cenário das ferramentas de finanças pessoais evolui, é essencial verificar quaisquer detalhes ou alterações específicas diretamente na página do produto correspondente. Os dados precisam de uma atualização? Ajude-nos a manter dados precisos sobre GitHub. - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 + + + Ready to take your investments to the next level? + Pronto para levar o seu investimentos para o próximo nível? - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 + + + Get Started + Começar - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 + + + Switzerland + Suíça - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 59 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 - - - - about - sobre - snake-case - - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/app.component.ts - 75 - - - apps/client/src/app/app.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 46 - - - apps/client/src/app/pages/about/about-page.component.ts - 51 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/about/about-page.component.ts - 84 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 - - - - privacy-policy - politica-de-privacidade - snake-case - - apps/client/src/app/app.component.ts - 76 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - - license - licenca - snake-case - - apps/client/src/app/app.component.ts - 72 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - - markets - mercados - snake-case - - apps/client/src/app/app.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 89 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 - - - - pricing - precos - snake-case - - apps/client/src/app/app.component.ts - 85 - - - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/header/header.component.ts - 90 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 - - - apps/client/src/app/core/http-response.interceptor.ts - 77 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 - - - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 - - - - register - registo - snake-case - - apps/client/src/app/app.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 91 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 - - - apps/client/src/app/pages/features/features-page.component.ts - 28 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 28 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 - - - - resources - recursos - snake-case - - apps/client/src/app/app.component.ts - 87 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 92 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/features/features-page.component.ts - 29 - - - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Explore os links abaixo para comparar uma variedade de ferramentas de finanças pessoais com o Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - Alternativa de software livre ao - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 - - - - Open Source Alternative to - Alternativa de software livre ao - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 - - - - The Open Source Alternative to - A alternativa de software livre ao - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Você está procurando uma alternativa de código aberto para ? Ghostfolio é uma poderosa ferramenta de gestão de portfólio que oferece aos investidores uma plataforma abrangente para monitorar, analisar e otimizar seus investimentos. Seja você um investidor experiente ou iniciante, o Ghostfolio oferece uma interface de usuário intuitiva e um ampla gama de funcionalidades para ajudá-lo a tomar decisões informadas e assumir o controle do seu futuro financeiro. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio é um software de código aberto (OSS), que oferece uma alternativa econômica para tornando-o particularmente adequado para indivíduos com orçamento apertado, como aqueles buscando Independência Financeira, Aposentadoria Antecipada (FIRE). Ao aproveitar os esforços coletivos de uma comunidade de desenvolvedores e entusiastas de finanças pessoais, o Ghostfolio aprimora continuamente seus recursos, segurança e experiência do usuário. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Vamos nos aprofundar nos detalhes do Ghostfolio vs tabela de comparação abaixo para obter uma compreensão completa de como o Ghostfolio se posiciona em relação a . Exploraremos vários aspectos, como recursos, privacidade de dados, preços e muito mais, permitindo que você faça uma escolha bem informada para suas necessidades pessoais. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 - - - - open-source-alternative-to - alternativa-de-software-livre-ao - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 - - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - Observe que as informações fornecidas no Ghostfolio vs. A tabela de comparação é baseada em nossa pesquisa e análise independentes. Este site não é afiliado a ou qualquer outro produto mencionado na comparação. À medida que o cenário das ferramentas de finanças pessoais evolui, é essencial verificar quaisquer detalhes ou alterações específicas diretamente na página do produto correspondente. Os dados precisam de uma atualização? Ajude-nos a manter dados precisos sobre GitHub. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 - - - - Ready to take your investments to the next level? - Pronto para levar o seu investimentos para o próximo nível? - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 - - - - Get Started - Começar - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 - - - - Switzerland - Suíça - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 - - - libs/ui/src/lib/i18n.ts - 93 + libs/ui/src/lib/i18n.ts + 93 @@ -5735,7 +5340,7 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 60 libs/ui/src/lib/i18n.ts @@ -5939,11 +5544,11 @@ Associação apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + 24 apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + 42 @@ -5951,11 +5556,11 @@ Acesso apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + 29 apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + 48 @@ -6239,11 +5844,11 @@ Job Queue apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + 26 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 44 @@ -6267,7 +5872,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + 88 @@ -6435,7 +6040,7 @@ General apps/client/src/app/pages/faq/faq-page.component.ts - 37 + 38 @@ -6443,7 +6048,7 @@ Cloud apps/client/src/app/pages/faq/faq-page.component.ts - 42 + 43 apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts @@ -6455,7 +6060,7 @@ Self-Hosting apps/client/src/app/pages/faq/faq-page.component.ts - 48 + 49 apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts @@ -6465,9 +6070,10 @@ self-hosting self-hosting + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 51 @@ -6487,7 +6093,7 @@ Oops! It looks like you’re making too many requests. Please slow down a bit. apps/client/src/app/core/http-response.interceptor.ts - 103 + 104 @@ -6551,7 +6157,7 @@ This action is not allowed. apps/client/src/app/core/http-response.interceptor.ts - 64 + 65 @@ -6719,7 +6325,7 @@ Alternative apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + 82 @@ -6727,7 +6333,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 83 @@ -6735,7 +6341,7 @@ Budgeting apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 84 @@ -6743,7 +6349,7 @@ Community apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 85 @@ -6751,7 +6357,7 @@ Family Office apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 86 @@ -6759,7 +6365,7 @@ Investor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 89 @@ -6767,7 +6373,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 90 @@ -6775,7 +6381,7 @@ Personal Finance apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + 92 @@ -6783,7 +6389,7 @@ Privacy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 93 @@ -6791,7 +6397,7 @@ Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 95 @@ -6799,7 +6405,7 @@ Tool apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 96 @@ -6807,7 +6413,7 @@ User Experience apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 97 @@ -6815,7 +6421,7 @@ Wealth apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 98 @@ -6823,7 +6429,7 @@ Wealth Management apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 99 @@ -7323,7 +6929,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 32 + 34 @@ -7335,7 +6941,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 22 + 24 @@ -7343,12 +6949,8 @@ guides snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + libs/common/src/lib/paths.ts + 42 @@ -7356,13 +6958,9 @@ glossary snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts + libs/common/src/lib/paths.ts 41 - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 - Threshold range @@ -7417,7 +7015,7 @@ Do you really want to delete the API key? apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + 102 @@ -7449,7 +7047,7 @@ Could not generate an API key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + 128 @@ -7457,7 +7055,7 @@ Set this API key in your self-hosted environment: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + 143 @@ -7465,7 +7063,7 @@ Ghostfolio Premium Data Provider API Key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + 146 @@ -7473,7 +7071,7 @@ Do you really want to generate a new API key? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + 151 @@ -7569,7 +7167,7 @@ Link has been copied to the clipboard apps/client/src/app/components/access-table/access-table.component.ts - 65 + 66 @@ -7821,20 +7419,8 @@ terms-of-service snake-case - apps/client/src/app/app.component.ts - 80 - - - apps/client/src/app/core/paths.ts - 11 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + libs/common/src/lib/paths.ts + 52 @@ -7842,7 +7428,7 @@ Terms of Service apps/client/src/app/pages/about/about-page.component.ts - 71 + 72 apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts @@ -7970,11 +7556,11 @@ Watchlist apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + 40 apps/client/src/app/pages/home/home-page.component.ts - 53 + 54 @@ -8009,6 +7595,24 @@ 41 + + changelog + changelog + snake-case + + libs/common/src/lib/paths.ts + 38 + + + + oss-friends + oss-friends + snake-case + + libs/common/src/lib/paths.ts + 46 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 7ad178a25..a74e6cdb5 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -6,100 +6,8 @@ hakkinda snake-case - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/app.component.ts - 75 - - - apps/client/src/app/app.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 46 - - - apps/client/src/app/pages/about/about-page.component.ts - 51 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/about/about-page.component.ts - 84 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + libs/common/src/lib/paths.ts + 37 @@ -107,32 +15,8 @@ sss snake-case - apps/client/src/app/app.component.ts - 82 - - - apps/client/src/app/core/paths.ts - 3 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 38 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 43 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 49 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/paths.ts + 39 @@ -140,68 +24,8 @@ oezellikler snake-case - apps/client/src/app/app.component.ts - 83 - - - apps/client/src/app/components/header/header.component.ts - 83 - - - apps/client/src/app/components/header/header.component.ts - 88 - - - apps/client/src/app/core/paths.ts - 4 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + libs/common/src/lib/paths.ts + 40 @@ -209,265 +33,53 @@ lisans snake-case - apps/client/src/app/app.component.ts - 72 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/paths.ts + 43 - markets - piyasalar - snake-case - - apps/client/src/app/app.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 89 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 - - - - pricing - fiyatlandirma - snake-case - - apps/client/src/app/app.component.ts - 85 - - - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/header/header.component.ts - 90 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 - - - apps/client/src/app/core/http-response.interceptor.ts - 77 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 - - - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 - - - - privacy-policy - gizlilik-politikasi - snake-case - - apps/client/src/app/app.component.ts - 76 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - - register - kayit-ol - snake-case - - apps/client/src/app/app.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 91 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 - - - apps/client/src/app/pages/features/features-page.component.ts - 28 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 28 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 - - - - resources - kaynaklar - snake-case - - apps/client/src/app/app.component.ts - 87 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 92 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/features/features-page.component.ts - 29 - - - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 - + markets + piyasalar + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + libs/common/src/lib/paths.ts + 44 + + + pricing + fiyatlandirma + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + libs/common/src/lib/paths.ts + 47 + + + privacy-policy + gizlilik-politikasi + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + libs/common/src/lib/paths.ts + 48 + + + register + kayit-ol + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + libs/common/src/lib/paths.ts + 49 + + + resources + kaynaklar + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + libs/common/src/lib/paths.ts + 50 @@ -839,7 +451,7 @@ Bu erişim iznini geri almayı gerçekten istiyor musunuz? apps/client/src/app/components/access-table/access-table.component.ts - 79 + 80 @@ -2031,11 +1643,11 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + 47 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 94 @@ -2147,7 +1759,7 @@ apps/client/src/app/components/header/header.component.ts - 231 + 232 @@ -2155,7 +1767,7 @@ Hay Allah! Güvenlik anahtarı yanlış. apps/client/src/app/components/header/header.component.ts - 246 + 247 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -2855,7 +2467,7 @@ Bu özellik şu an için mevcut değil. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -2863,11 +2475,11 @@ Daha sonra tekrar deneyiniz. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2879,7 +2491,7 @@ Hay Allah! Bir şeyler yanlış gitti. apps/client/src/app/core/http-response.interceptor.ts - 83 + 84 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2891,11 +2503,11 @@ Tamam apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 87 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2911,7 +2523,7 @@ apps/client/src/app/pages/about/about-page.component.ts - 45 + 46 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -2923,7 +2535,7 @@ Değişiklik Günlüğü apps/client/src/app/pages/about/about-page.component.ts - 50 + 51 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -2935,7 +2547,7 @@ Lisans apps/client/src/app/pages/about/about-page.component.ts - 55 + 56 apps/client/src/app/pages/about/license/license-page-routing.module.ts @@ -2947,7 +2559,7 @@ Gizlilik Politikası apps/client/src/app/pages/about/about-page.component.ts - 64 + 65 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -3015,7 +2627,7 @@ Yönetici Denetimleri apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + 21 @@ -3023,11 +2635,11 @@ Piyasa Verileri apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + 31 apps/client/src/app/pages/admin/admin-page.component.ts - 38 + 39 @@ -3035,19 +2647,19 @@ Ayarlar apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 + 36 apps/client/src/app/pages/admin/admin-page.component.ts - 33 + 34 apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + 19 apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + 37 @@ -3055,11 +2667,11 @@ Kullanıcılar apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 + 41 apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 49 @@ -3067,23 +2679,23 @@ Özet apps/client/src/app/pages/admin/admin-page.component.ts - 28 + 29 apps/client/src/app/pages/home/home-page.component.ts - 38 + 39 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 19 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 20 apps/client/src/app/pages/zen/zen-page.component.ts - 35 + 36 @@ -3115,7 +2727,7 @@ Sıkça Sorulan Sorular (SSS) apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 + 35 apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts @@ -3287,19 +2899,15 @@ Varlıklar apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 + 25 apps/client/src/app/pages/home/home-page.component.ts - 43 + 44 apps/client/src/app/pages/zen/zen-page.component.ts - 40 + 41 @@ -3307,11 +2915,11 @@ Özet apps/client/src/app/pages/home/home-page-routing.module.ts - 34 + 30 apps/client/src/app/pages/home/home-page.component.ts - 48 + 49 @@ -3319,11 +2927,11 @@ Piyasalar apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + 35 apps/client/src/app/pages/home/home-page.component.ts - 58 + 59 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -3335,7 +2943,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 27 + 29 @@ -3711,7 +3319,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + 41 @@ -3943,7 +3551,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + 46 @@ -4119,7 +3727,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + 36 @@ -4563,19 +4171,16 @@ Kişisel Finans Araçları apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + 15 open-source-alternative-to Açık kaynak alternatif + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + libs/common/src/lib/paths.ts + 45 @@ -4583,7 +4188,7 @@ için Açık Kaynak Alternatif apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + 28 @@ -4831,7 +4436,7 @@ İsviçre apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + 59 libs/ui/src/lib/i18n.ts @@ -4843,7 +4448,7 @@ Küresel apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 60 libs/ui/src/lib/i18n.ts @@ -4855,7 +4460,7 @@ Kaynaklar apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + 51 @@ -4895,7 +4500,7 @@ Benim Ghostfolio’m apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -4911,7 +4516,7 @@ Lütfen kupon kodunuzu girin: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -4919,7 +4524,7 @@ Kupon kodu kullanılamadı apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -4927,7 +4532,7 @@ Kupon kodu kullanıldı apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -4935,7 +4540,7 @@ Yeniden Yükle apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -5939,11 +5544,11 @@ Üyelik apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + 24 apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + 42 @@ -5951,11 +5556,11 @@ Erişim apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + 29 apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + 48 @@ -6239,11 +5844,11 @@ İş Kuyruğu apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + 26 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 44 @@ -6267,7 +5872,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + 88 @@ -6435,7 +6040,7 @@ Genel apps/client/src/app/pages/faq/faq-page.component.ts - 37 + 38 @@ -6443,7 +6048,7 @@ Bulut apps/client/src/app/pages/faq/faq-page.component.ts - 42 + 43 apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts @@ -6455,7 +6060,7 @@ Kendini Barındırma apps/client/src/app/pages/faq/faq-page.component.ts - 48 + 49 apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts @@ -6465,9 +6070,10 @@ self-hosting Kendini-Barındırma + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 51 @@ -6487,7 +6093,7 @@ Oops! Görünüşe göre çok fazla istekte bulunuyorsunuz. Lütfen biraz yavaşlayın. apps/client/src/app/core/http-response.interceptor.ts - 103 + 104 @@ -6551,7 +6157,7 @@ Bu işlem izin verilmiyor. apps/client/src/app/core/http-response.interceptor.ts - 64 + 65 @@ -6719,7 +6325,7 @@ Alternatif apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + 82 @@ -6727,7 +6333,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 83 @@ -6735,7 +6341,7 @@ Bütçeleme apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 84 @@ -6743,7 +6349,7 @@ Topluluk apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 85 @@ -6751,7 +6357,7 @@ Aile Ofisi apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 86 @@ -6759,7 +6365,7 @@ Yatırımcı apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 89 @@ -6767,7 +6373,7 @@ Açık Kaynak apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 90 @@ -6775,7 +6381,7 @@ Kişisel Finans apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + 92 @@ -6783,7 +6389,7 @@ Gizlilik apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 93 @@ -6791,7 +6397,7 @@ Yazılım apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 95 @@ -6799,7 +6405,7 @@ Araç apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 96 @@ -6807,7 +6413,7 @@ Kullanıcı Deneyimi apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 97 @@ -6815,7 +6421,7 @@ Zenginlik apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 98 @@ -6823,7 +6429,7 @@ Zenginlik Yönetimi apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 99 @@ -7323,7 +6929,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 32 + 34 @@ -7335,7 +6941,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 22 + 24 @@ -7343,12 +6949,8 @@ kılavuzlar snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + libs/common/src/lib/paths.ts + 42 @@ -7356,13 +6958,9 @@ sözlük snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts + libs/common/src/lib/paths.ts 41 - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 - Threshold range @@ -7417,7 +7015,7 @@ API anahtarını silmek istediğinize emin misiniz? apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + 102 @@ -7449,7 +7047,7 @@ API anahtarı oluşturulamadı apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + 128 @@ -7457,7 +7055,7 @@ Bu API anahtarını kendi barındırılan ortamınıza ayarlayın: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + 143 @@ -7465,7 +7063,7 @@ Ghostfolio Premium Veri Sağlayıcı API Anahtarı apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + 146 @@ -7473,7 +7071,7 @@ Yeni bir API anahtarı oluşturmak istediğinize emin misiniz? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + 151 @@ -7569,7 +7167,7 @@ Bağlantı panoya kopyalandı apps/client/src/app/components/access-table/access-table.component.ts - 65 + 66 @@ -7821,20 +7419,8 @@ Hizmet Koşulları snake-case - apps/client/src/app/app.component.ts - 80 - - - apps/client/src/app/core/paths.ts - 11 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + libs/common/src/lib/paths.ts + 52 @@ -7842,7 +7428,7 @@ Hizmet Koşulları apps/client/src/app/pages/about/about-page.component.ts - 71 + 72 apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts @@ -7970,11 +7556,11 @@ İzleme Listesi apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + 40 apps/client/src/app/pages/home/home-page.component.ts - 53 + 54 @@ -8009,6 +7595,24 @@ 41 + + changelog + changelog + snake-case + + libs/common/src/lib/paths.ts + 38 + + + + oss-friends + oss-friends + snake-case + + libs/common/src/lib/paths.ts + 46 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 8bb56f080..9fc5d32fc 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 - 231 + 232
@@ -370,100 +370,8 @@ about snake-case - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/app.component.ts - 75 - - - apps/client/src/app/app.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 46 - - - apps/client/src/app/pages/about/about-page.component.ts - 51 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/about/about-page.component.ts - 84 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + libs/common/src/lib/paths.ts + 37 @@ -471,16 +379,8 @@ license snake-case - apps/client/src/app/app.component.ts - 72 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/paths.ts + 43 @@ -488,16 +388,8 @@ privacy-policy snake-case - apps/client/src/app/app.component.ts - 76 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 + libs/common/src/lib/paths.ts + 48 @@ -505,333 +397,53 @@ faq snake-case - apps/client/src/app/app.component.ts - 82 - - - apps/client/src/app/core/paths.ts - 3 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 38 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 43 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 49 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 - - - - features - features - snake-case - - apps/client/src/app/app.component.ts - 83 - - - apps/client/src/app/components/header/header.component.ts - 83 - - - apps/client/src/app/components/header/header.component.ts - 88 - - - apps/client/src/app/core/paths.ts - 4 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 - - - - markets - markets - snake-case - - apps/client/src/app/app.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 89 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 - - - - pricing - pricing - snake-case - - apps/client/src/app/app.component.ts - 85 - - - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/header/header.component.ts - 90 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + libs/common/src/lib/paths.ts 39 + + + features + features + snake-case - apps/client/src/app/core/http-response.interceptor.ts - 77 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 - - - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 - - - - register - register - snake-case - - apps/client/src/app/app.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 91 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 - - - apps/client/src/app/pages/features/features-page.component.ts - 28 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 28 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 - - - - resources - resources - snake-case - - apps/client/src/app/app.component.ts - 87 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 92 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/features/features-page.component.ts - 29 - - - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + libs/common/src/lib/paths.ts + 40 + + + markets + markets + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + libs/common/src/lib/paths.ts + 44 + + + pricing + pricing + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + libs/common/src/lib/paths.ts + 47 + + + register + register + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + libs/common/src/lib/paths.ts + 49 + + + resources + resources + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + libs/common/src/lib/paths.ts + 50 @@ -919,7 +531,7 @@ Посилання скопійовано в буфер обміну apps/client/src/app/components/access-table/access-table.component.ts - 65 + 66 @@ -927,7 +539,7 @@ Ви дійсно хочете відкликати цей наданий доступ? apps/client/src/app/components/access-table/access-table.component.ts - 79 + 80 @@ -2255,7 +1867,7 @@ Ви дійсно хочете видалити ключ API? apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + 102 @@ -2451,11 +2063,11 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + 47 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 94 @@ -2599,7 +2211,7 @@ Упс! Неправильний Секретний Токен. apps/client/src/app/components/header/header.component.ts - 246 + 247 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -3475,7 +3087,7 @@ Не вдалося згенерувати ключ API apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + 128 @@ -3483,11 +3095,11 @@ ОК apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 87 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3499,7 +3111,7 @@ Встановіть цей ключ API у вашому self-hosted середовищі: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + 143 @@ -3507,7 +3119,7 @@ Ключ API Ghostfolio Premium Data Provider apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + 146 @@ -3515,7 +3127,7 @@ Ви дійсно хочете згенерувати новий ключ API? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + 151 @@ -3523,7 +3135,7 @@ Не вдалося обміняти код купона apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -3531,7 +3143,7 @@ Код купона був обміняний apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -3539,7 +3151,7 @@ Перезавантажити apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -3547,7 +3159,7 @@ Будь ласка, введіть ваш код купона. apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -3799,7 +3411,7 @@ Ця функція наразі недоступна. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -3807,11 +3419,11 @@ Спробуйте ще раз пізніше. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3823,7 +3435,7 @@ Ця дія заборонена. apps/client/src/app/core/http-response.interceptor.ts - 64 + 65 @@ -3831,7 +3443,7 @@ Упс! Щось пішло не так. apps/client/src/app/core/http-response.interceptor.ts - 83 + 84 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3843,7 +3455,7 @@ Упс! Здається, ви робите занадто багато запитів. Будь ласка, пригальмуй трохи. apps/client/src/app/core/http-response.interceptor.ts - 103 + 104 @@ -3855,7 +3467,7 @@ apps/client/src/app/pages/about/about-page.component.ts - 45 + 46 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -3867,7 +3479,7 @@ Журнал змін apps/client/src/app/pages/about/about-page.component.ts - 50 + 51 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -3879,7 +3491,7 @@ Ліцензія apps/client/src/app/pages/about/about-page.component.ts - 55 + 56 apps/client/src/app/pages/about/license/license-page-routing.module.ts @@ -3891,7 +3503,7 @@ Політика конфіденційності apps/client/src/app/pages/about/about-page.component.ts - 64 + 65 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -3991,7 +3603,7 @@ Управління адміністратором apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + 21 @@ -3999,11 +3611,11 @@ Черга завдань apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + 26 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 44 @@ -4011,11 +3623,11 @@ Ринкові дані apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + 31 apps/client/src/app/pages/admin/admin-page.component.ts - 38 + 39 @@ -4023,19 +3635,19 @@ Налаштування apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 + 36 apps/client/src/app/pages/admin/admin-page.component.ts - 33 + 34 apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + 19 apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + 37 @@ -4043,11 +3655,11 @@ Користувачі apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 + 41 apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 49 @@ -4055,23 +3667,23 @@ Огляд apps/client/src/app/pages/admin/admin-page.component.ts - 28 + 29 apps/client/src/app/pages/home/home-page.component.ts - 38 + 39 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 19 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 20 apps/client/src/app/pages/zen/zen-page.component.ts - 35 + 36 @@ -4111,7 +3723,7 @@ Часто задавані питання (FAQ) apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 + 35 apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts @@ -4123,7 +3735,7 @@ Загальні apps/client/src/app/pages/faq/faq-page.component.ts - 37 + 38 @@ -4131,7 +3743,7 @@ Хмара apps/client/src/app/pages/faq/faq-page.component.ts - 42 + 43 apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts @@ -4143,7 +3755,7 @@ Самохостинг apps/client/src/app/pages/faq/faq-page.component.ts - 48 + 49 apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts @@ -4153,9 +3765,10 @@ self-hosting самохостинг + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 51 @@ -4315,19 +3928,15 @@ Активи apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 + 25 apps/client/src/app/pages/home/home-page.component.ts - 43 + 44 apps/client/src/app/pages/zen/zen-page.component.ts - 40 + 41 @@ -4335,11 +3944,11 @@ Зведення apps/client/src/app/pages/home/home-page-routing.module.ts - 34 + 30 apps/client/src/app/pages/home/home-page.component.ts - 48 + 49 @@ -4347,11 +3956,11 @@ Ринки apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + 35 apps/client/src/app/pages/home/home-page.component.ts - 58 + 59 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -4363,7 +3972,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 27 + 29 @@ -4815,7 +4424,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + 41 @@ -5091,7 +4700,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + 46 @@ -5283,7 +4892,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + 36 @@ -5311,7 +4920,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + 88 @@ -5827,7 +5436,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 32 + 34 @@ -5847,7 +5456,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 22 + 24 @@ -5863,12 +5472,8 @@ guides snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + libs/common/src/lib/paths.ts + 42 @@ -5876,32 +5481,25 @@ glossary snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts + libs/common/src/lib/paths.ts 41 - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 - Personal Finance Tools Інструменти особистих фінансів apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + 15 open-source-alternative-to відкритий-альтернативний-для + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + libs/common/src/lib/paths.ts + 45 @@ -5909,7 +5507,7 @@ Альтернатива з відкритим кодом для apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + 28 @@ -5949,7 +5547,7 @@ Швейцарія apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + 59 libs/ui/src/lib/i18n.ts @@ -5961,7 +5559,7 @@ Глобальний apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 60 libs/ui/src/lib/i18n.ts @@ -5973,7 +5571,7 @@ Альтернатива apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + 82 @@ -5981,7 +5579,7 @@ Додаток apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 83 @@ -5989,7 +5587,7 @@ Бюджетування apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 84 @@ -5997,7 +5595,7 @@ Спільнота apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 85 @@ -6005,7 +5603,7 @@ Сімейний офіс apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 86 @@ -6013,7 +5611,7 @@ Інвестор apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 89 @@ -6021,7 +5619,7 @@ Відкритий код apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 90 @@ -6029,7 +5627,7 @@ Особисті фінанси apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + 92 @@ -6037,7 +5635,7 @@ Конфіденційність apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 93 @@ -6045,7 +5643,7 @@ Програмне забезпечення apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 95 @@ -6053,7 +5651,7 @@ Інструмент apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 96 @@ -6061,7 +5659,7 @@ Користувацький досвід apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 97 @@ -6069,7 +5667,7 @@ Багатство apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 98 @@ -6077,7 +5675,7 @@ Управління багатством apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 99 @@ -6461,7 +6059,7 @@ Ресурси apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + 51 @@ -6469,11 +6067,11 @@ Членство apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + 24 apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + 42 @@ -6481,11 +6079,11 @@ Доступ apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + 29 apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + 48 @@ -6493,7 +6091,7 @@ Мій Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -7821,20 +7419,8 @@ terms-of-service snake-case - apps/client/src/app/app.component.ts - 80 - - - apps/client/src/app/core/paths.ts - 11 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + libs/common/src/lib/paths.ts + 52 @@ -7842,7 +7428,7 @@ Terms of Service apps/client/src/app/pages/about/about-page.component.ts - 71 + 72 apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts @@ -7970,11 +7556,11 @@ Watchlist apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + 40 apps/client/src/app/pages/home/home-page.component.ts - 53 + 54 @@ -8009,6 +7595,24 @@ 41 + + changelog + changelog + snake-case + + libs/common/src/lib/paths.ts + 38 + + + + oss-friends + oss-friends + snake-case + + libs/common/src/lib/paths.ts + 46 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 0eaf12d05..c1914d395 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -6,460 +6,72 @@ about snake-case - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/app.component.ts - 75 - - - apps/client/src/app/app.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 46 - - - apps/client/src/app/pages/about/about-page.component.ts - 51 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/about/about-page.component.ts - 84 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + libs/common/src/lib/paths.ts + 37
faq snake-case - apps/client/src/app/app.component.ts - 82 - - - apps/client/src/app/core/paths.ts - 3 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 38 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 43 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 49 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/paths.ts + 39 features snake-case - apps/client/src/app/app.component.ts - 83 - - - apps/client/src/app/components/header/header.component.ts - 83 - - - apps/client/src/app/components/header/header.component.ts - 88 - - - apps/client/src/app/core/paths.ts - 4 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + libs/common/src/lib/paths.ts + 40 license - snake-case - - apps/client/src/app/app.component.ts - 72 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - - markets - snake-case - - apps/client/src/app/app.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 89 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 - - - - pricing - snake-case - - apps/client/src/app/app.component.ts - 85 - - - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/header/header.component.ts - 90 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 - - - apps/client/src/app/core/http-response.interceptor.ts - 77 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 - - - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 - - - - privacy-policy - snake-case - - apps/client/src/app/app.component.ts - 76 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - - register - snake-case - - apps/client/src/app/app.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 91 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 - - - apps/client/src/app/pages/features/features-page.component.ts - 28 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 28 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 - - - - resources - snake-case - - apps/client/src/app/app.component.ts - 87 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 92 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/features/features-page.component.ts - 29 - + snake-case - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 + libs/common/src/lib/paths.ts + 43 + + + markets + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + libs/common/src/lib/paths.ts + 44 + + + pricing + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + libs/common/src/lib/paths.ts + 47 + + + privacy-policy + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + libs/common/src/lib/paths.ts + 48 + + + register + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + libs/common/src/lib/paths.ts + 49 + + + resources + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + libs/common/src/lib/paths.ts + 50 @@ -838,7 +450,7 @@ Do you really want to revoke this granted access? apps/client/src/app/components/access-table/access-table.component.ts - 79 + 80 @@ -2069,11 +1681,11 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + 47 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 94 @@ -2185,14 +1797,14 @@ apps/client/src/app/components/header/header.component.ts - 231 + 232 Oops! Incorrect Security Token. apps/client/src/app/components/header/header.component.ts - 246 + 247 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -2855,28 +2467,28 @@ Please enter your coupon code. apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 Could not redeem coupon code apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 Coupon code has been redeemed apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 Reload apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -3067,18 +2679,18 @@ This feature is currently unavailable. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 Please try again later. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3089,7 +2701,7 @@ Oops! Something went wrong. apps/client/src/app/core/http-response.interceptor.ts - 83 + 84 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3100,11 +2712,11 @@ Okay apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 87 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3119,7 +2731,7 @@ apps/client/src/app/pages/about/about-page.component.ts - 45 + 46 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -3130,7 +2742,7 @@ Changelog apps/client/src/app/pages/about/about-page.component.ts - 50 + 51 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -3141,7 +2753,7 @@ License apps/client/src/app/pages/about/about-page.component.ts - 55 + 56 apps/client/src/app/pages/about/license/license-page-routing.module.ts @@ -3152,7 +2764,7 @@ Privacy Policy apps/client/src/app/pages/about/about-page.component.ts - 64 + 65 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -3240,71 +2852,71 @@ Admin Control apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + 21 Market Data apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + 31 apps/client/src/app/pages/admin/admin-page.component.ts - 38 + 39 Settings apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 + 36 apps/client/src/app/pages/admin/admin-page.component.ts - 33 + 34 apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + 19 apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + 37 Users apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 + 41 apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 49 Overview apps/client/src/app/pages/admin/admin-page.component.ts - 28 + 29 apps/client/src/app/pages/home/home-page.component.ts - 38 + 39 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 19 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 20 apps/client/src/app/pages/zen/zen-page.component.ts - 35 + 36 @@ -3332,7 +2944,7 @@ Frequently Asked Questions (FAQ) apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 + 35 apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts @@ -3474,41 +3086,37 @@ Holdings apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 + 25 apps/client/src/app/pages/home/home-page.component.ts - 43 + 44 apps/client/src/app/pages/zen/zen-page.component.ts - 40 + 41 Summary apps/client/src/app/pages/home/home-page-routing.module.ts - 34 + 30 apps/client/src/app/pages/home/home-page.component.ts - 48 + 49 Markets apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + 35 apps/client/src/app/pages/home/home-page.component.ts - 58 + 59 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -3520,7 +3128,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 27 + 29 @@ -3898,7 +3506,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + 41 @@ -4119,7 +3727,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + 46 @@ -4277,7 +3885,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + 36 @@ -4670,25 +4278,22 @@ Personal Finance Tools apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + 15 open-source-alternative-to + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + libs/common/src/lib/paths.ts + 45 Open Source Alternative to apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + 28 @@ -4941,7 +4546,7 @@ Switzerland apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + 59 libs/ui/src/lib/i18n.ts @@ -4952,7 +4557,7 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 60 libs/ui/src/lib/i18n.ts @@ -4963,7 +4568,7 @@ Resources apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + 51 @@ -4984,29 +4589,29 @@ Membership apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + 24 apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + 42 Access apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + 29 apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + 48 My Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -5706,11 +5311,11 @@ Job Queue apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + 26 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 44 @@ -5753,7 +5358,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + 88 @@ -5867,9 +5472,10 @@ self-hosting + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 51 @@ -5887,7 +5493,7 @@ Self-Hosting apps/client/src/app/pages/faq/faq-page.component.ts - 48 + 49 apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts @@ -5909,14 +5515,14 @@ General apps/client/src/app/pages/faq/faq-page.component.ts - 37 + 38 Cloud apps/client/src/app/pages/faq/faq-page.component.ts - 42 + 43 apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts @@ -5927,7 +5533,7 @@ Oops! It looks like you’re making too many requests. Please slow down a bit. apps/client/src/app/core/http-response.interceptor.ts - 103 + 104 @@ -5976,7 +5582,7 @@ This action is not allowed. apps/client/src/app/core/http-response.interceptor.ts - 64 + 65 @@ -6130,14 +5736,14 @@ Wealth apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 98 Community apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 85 @@ -6179,35 +5785,35 @@ User Experience apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 97 App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 83 Tool apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 96 Investor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 89 Wealth Management apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 99 @@ -6235,28 +5841,28 @@ Alternative apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + 82 Family Office apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 86 Personal Finance apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + 92 Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 95 @@ -6284,7 +5890,7 @@ Budgeting apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 84 @@ -6298,7 +5904,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 90 @@ -6333,7 +5939,7 @@ Privacy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 93 @@ -6659,20 +6265,16 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 32 + 34 glossary snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts + libs/common/src/lib/paths.ts 41 - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 - Guides @@ -6682,19 +6284,15 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 22 + 24 guides snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + libs/common/src/lib/paths.ts + 42 @@ -6736,7 +6334,7 @@ Do you really want to delete the API key? apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + 102 @@ -6792,28 +6390,28 @@ Could not generate an API key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + 128 Do you really want to generate a new API key? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + 151 Ghostfolio Premium Data Provider API Key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + 146 Set this API key in your self-hosted environment: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + 143 @@ -6876,7 +6474,7 @@ Link has been copied to the clipboard apps/client/src/app/components/access-table/access-table.component.ts - 65 + 66 @@ -7090,7 +6688,7 @@ Terms of Service apps/client/src/app/pages/about/about-page.component.ts - 71 + 72 apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts @@ -7101,20 +6699,8 @@ terms-of-service snake-case - apps/client/src/app/app.component.ts - 80 - - - apps/client/src/app/core/paths.ts - 11 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + libs/common/src/lib/paths.ts + 52 @@ -7198,11 +6784,11 @@ Watchlist apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + 40 apps/client/src/app/pages/home/home-page.component.ts - 53 + 54 @@ -7244,6 +6830,22 @@ 41 + + oss-friends + snake-case + + libs/common/src/lib/paths.ts + 46 + + + + changelog + snake-case + + libs/common/src/lib/paths.ts + 38 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 3b6410a4f..4e236965e 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -7,100 +7,8 @@ 关于 snake-case - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/app.component.ts - 75 - - - apps/client/src/app/app.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 46 - - - apps/client/src/app/pages/about/about-page.component.ts - 51 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/about/about-page.component.ts - 84 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + libs/common/src/lib/paths.ts + 37
@@ -108,32 +16,8 @@ 常见问题 snake-case - apps/client/src/app/app.component.ts - 82 - - - apps/client/src/app/core/paths.ts - 3 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 38 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 43 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 49 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/paths.ts + 39 @@ -141,68 +25,8 @@ 功能 snake-case - apps/client/src/app/app.component.ts - 83 - - - apps/client/src/app/components/header/header.component.ts - 83 - - - apps/client/src/app/components/header/header.component.ts - 88 - - - apps/client/src/app/core/paths.ts - 4 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + libs/common/src/lib/paths.ts + 40 @@ -210,265 +34,53 @@ 许可证 snake-case - apps/client/src/app/app.component.ts - 72 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/paths.ts + 43 markets - 市场 - snake-case - - apps/client/src/app/app.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 89 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 - - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 - - - - pricing - 价钱 - snake-case - - apps/client/src/app/app.component.ts - 85 - - - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/header/header.component.ts - 90 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 - - - apps/client/src/app/core/http-response.interceptor.ts - 77 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 - - - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 - - - - privacy-policy - 隐私政策 - snake-case - - apps/client/src/app/app.component.ts - 76 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 65 - - - - register - 注册 - snake-case - - apps/client/src/app/app.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 91 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 - - - apps/client/src/app/pages/features/features-page.component.ts - 28 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 28 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 - - - - resources - 资源 - snake-case - - apps/client/src/app/app.component.ts - 87 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/components/header/header.component.ts - 92 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/features/features-page.component.ts - 29 - - - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 - + 市场 + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + libs/common/src/lib/paths.ts + 44 + + + pricing + 价钱 + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + libs/common/src/lib/paths.ts + 47 + + + privacy-policy + 隐私政策 + snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + libs/common/src/lib/paths.ts + 48 + + + register + 注册 + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + libs/common/src/lib/paths.ts + 49 + + + resources + 资源 + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + libs/common/src/lib/paths.ts + 50 @@ -868,7 +480,7 @@ 您真的要撤销此授予的访问权限吗? apps/client/src/app/components/access-table/access-table.component.ts - 79 + 80 @@ -2176,11 +1788,11 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + 47 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 94 @@ -2304,7 +1916,7 @@ apps/client/src/app/components/header/header.component.ts - 231 + 232 @@ -2312,7 +1924,7 @@ 哎呀!安全令牌不正确。 apps/client/src/app/components/header/header.component.ts - 246 + 247 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -3044,7 +2656,7 @@ 请输入您的优惠券代码。 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -3052,7 +2664,7 @@ 无法兑换优惠券代码 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -3060,7 +2672,7 @@ 优惠券代码已兑换 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -3068,7 +2680,7 @@ 重新加载 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -3284,7 +2896,7 @@ 此功能目前无法使用。 apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -3292,11 +2904,11 @@ 请稍后再试。 apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3308,7 +2920,7 @@ 哎呀!出了些问题。 apps/client/src/app/core/http-response.interceptor.ts - 83 + 84 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3320,11 +2932,11 @@ 好的 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 87 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3340,7 +2952,7 @@ apps/client/src/app/pages/about/about-page.component.ts - 45 + 46 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -3352,7 +2964,7 @@ 更新日志 apps/client/src/app/pages/about/about-page.component.ts - 50 + 51 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -3364,7 +2976,7 @@ 许可证 apps/client/src/app/pages/about/about-page.component.ts - 55 + 56 apps/client/src/app/pages/about/license/license-page-routing.module.ts @@ -3376,7 +2988,7 @@ 隐私政策 apps/client/src/app/pages/about/about-page.component.ts - 64 + 65 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -3476,7 +3088,7 @@ 管理控制 apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + 21 @@ -3484,11 +3096,11 @@ 市场数据 apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + 31 apps/client/src/app/pages/admin/admin-page.component.ts - 38 + 39 @@ -3496,19 +3108,19 @@ 设置 apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 + 36 apps/client/src/app/pages/admin/admin-page.component.ts - 33 + 34 apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + 19 apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + 37 @@ -3516,11 +3128,11 @@ 用户 apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 + 41 apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 49 @@ -3528,23 +3140,23 @@ 概述 apps/client/src/app/pages/admin/admin-page.component.ts - 28 + 29 apps/client/src/app/pages/home/home-page.component.ts - 38 + 39 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 19 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 20 apps/client/src/app/pages/zen/zen-page.component.ts - 35 + 36 @@ -3576,7 +3188,7 @@ 常见问题 (FAQ) apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 + 35 apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts @@ -3736,19 +3348,15 @@ 持仓 apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 + 25 apps/client/src/app/pages/home/home-page.component.ts - 43 + 44 apps/client/src/app/pages/zen/zen-page.component.ts - 40 + 41 @@ -3756,11 +3364,11 @@ 汇总 apps/client/src/app/pages/home/home-page-routing.module.ts - 34 + 30 apps/client/src/app/pages/home/home-page.component.ts - 48 + 49 @@ -3768,11 +3376,11 @@ 市场 apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + 35 apps/client/src/app/pages/home/home-page.component.ts - 58 + 59 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -3784,7 +3392,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 27 + 29 @@ -4212,7 +3820,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + 41 @@ -4460,7 +4068,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + 46 @@ -4636,7 +4244,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + 36 @@ -5076,27 +4684,24 @@ 个人理财工具 apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + 15 open-source-alternative-to 开源替代方案 + snake-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + libs/common/src/lib/paths.ts + 45 Open Source Alternative to - 开源替代方案 + 的开源替代品 apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + 28 @@ -5125,7 +4730,7 @@ Open Source Alternative to - 开源替代品 + 的开源替代品 apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 42 @@ -5376,7 +4981,7 @@ 瑞士 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + 59 libs/ui/src/lib/i18n.ts @@ -5388,7 +4993,7 @@ 全球的 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 60 libs/ui/src/lib/i18n.ts @@ -5400,7 +5005,7 @@ 资源 apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + 51 @@ -5424,11 +5029,11 @@ 会员资格 apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + 24 apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + 42 @@ -5436,11 +5041,11 @@ 使用权 apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + 29 apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + 48 @@ -5448,7 +5053,7 @@ 我的 Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -6240,11 +5845,11 @@ 作业队列 apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + 26 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 44 @@ -6292,7 +5897,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + 88 @@ -6422,9 +6027,10 @@ self-hosting 自托管 + snake-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/paths.ts + 51 @@ -6444,7 +6050,7 @@ 自托管 apps/client/src/app/pages/faq/faq-page.component.ts - 48 + 49 apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts @@ -6468,7 +6074,7 @@ 一般的 apps/client/src/app/pages/faq/faq-page.component.ts - 37 + 38 @@ -6476,7 +6082,7 @@ apps/client/src/app/pages/faq/faq-page.component.ts - 42 + 43 apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts @@ -6488,7 +6094,7 @@ 哎呀!看来您提出了太多要求。请慢一点。 apps/client/src/app/core/http-response.interceptor.ts - 103 + 104 @@ -6552,7 +6158,7 @@ 不允许执行此操作。 apps/client/src/app/core/http-response.interceptor.ts - 64 + 65 @@ -6720,7 +6326,7 @@ 另类 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + 82 @@ -6728,7 +6334,7 @@ 应用 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 83 @@ -6736,7 +6342,7 @@ 预算管理 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 84 @@ -6744,7 +6350,7 @@ 社区 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 85 @@ -6752,7 +6358,7 @@ 家族办公室 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 86 @@ -6760,7 +6366,7 @@ 投资者 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 89 @@ -6768,7 +6374,7 @@ 开源 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 90 @@ -6776,7 +6382,7 @@ 个人理财 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + 92 @@ -6784,7 +6390,7 @@ 隐私 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 93 @@ -6792,7 +6398,7 @@ 软件 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 95 @@ -6800,7 +6406,7 @@ 工具 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 96 @@ -6808,7 +6414,7 @@ 用户体验 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 97 @@ -6816,7 +6422,7 @@ 财富 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 98 @@ -6824,7 +6430,7 @@ 财富管理 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 99 @@ -7324,7 +6930,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 32 + 34 @@ -7336,7 +6942,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 22 + 24 @@ -7344,12 +6950,8 @@ 指南 snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 - - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + libs/common/src/lib/paths.ts + 42 @@ -7357,13 +6959,9 @@ 词汇表 snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts + libs/common/src/lib/paths.ts 41 - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 - Threshold range @@ -7418,7 +7016,7 @@ 您确定要删除此 API 密钥吗? apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + 102 @@ -7450,7 +7048,7 @@ 无法生成 API 密钥 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + 128 @@ -7458,7 +7056,7 @@ 在您的自托管环境中设置此 API 密钥: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + 143 @@ -7466,7 +7064,7 @@ Ghostfolio Premium 数据提供者 API 密钥 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + 146 @@ -7474,7 +7072,7 @@ 您确定要生成新的 API 密钥吗? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + 151 @@ -7570,7 +7168,7 @@ 链接已复制到剪贴板 apps/client/src/app/components/access-table/access-table.component.ts - 65 + 66 @@ -7822,20 +7420,8 @@ 服务条款 snake-case - apps/client/src/app/app.component.ts - 80 - - - apps/client/src/app/core/paths.ts - 11 - - - apps/client/src/app/pages/about/about-page.component.ts - 72 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + libs/common/src/lib/paths.ts + 52 @@ -7843,7 +7429,7 @@ 服务条款 apps/client/src/app/pages/about/about-page.component.ts - 71 + 72 apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts @@ -7971,11 +7557,11 @@ 关注列表 apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + 40 apps/client/src/app/pages/home/home-page.component.ts - 53 + 54 @@ -8004,12 +7590,30 @@ Calculations are based on delayed market data and may not be displayed in real-time. - Calculations are based on delayed market data and may not be displayed in real-time. + 计算基于延迟的市场数据,可能无法实时显示。 apps/client/src/app/components/home-market/home-market.html 41 + + changelog + 变更日志 + snake-case + + libs/common/src/lib/paths.ts + 38 + + + + oss-friends + 开源朋友 + snake-case + + libs/common/src/lib/paths.ts + 46 + + diff --git a/libs/common/src/lib/paths.ts b/libs/common/src/lib/paths.ts new file mode 100644 index 000000000..6b5c8bb6c --- /dev/null +++ b/libs/common/src/lib/paths.ts @@ -0,0 +1,53 @@ +import '@angular/localize/init'; + +export const paths = { + access: 'access', + account: 'account', + accounts: 'accounts', + activities: 'activities', + admin: 'admin', + allocations: 'allocations', + api: 'api', + auth: 'auth', + blog: 'blog', + demo: 'demo', + fire: 'fire', + holdings: 'holdings', + home: 'home', + i18n: 'i18n', + jobs: 'jobs', + market: 'market', + marketData: 'market-data', + membership: 'membership', + open: 'open', + personalFinanceTools: 'personal-finance-tools', + portfolio: 'portfolio', + public: 'p', + saas: 'saas', + settings: 'settings', + start: 'start', + summary: 'summary', + users: 'users', + watchlist: 'watchlist', + webauthn: 'webauthn', + xRay: 'x-ray', + zen: 'zen', + + // Localized paths (public-facing pages) + about: $localize`:snake-case:about`, + changelog: $localize`:snake-case:changelog`, + faq: $localize`:snake-case:faq`, + features: $localize`:snake-case:features`, + glossary: $localize`:snake-case:glossary`, + guides: $localize`:snake-case:guides`, + license: $localize`:snake-case:license`, + markets: $localize`:snake-case:markets`, + openSourceAlternativeTo: $localize`:snake-case:open-source-alternative-to`, + ossFriends: $localize`:snake-case:oss-friends`, + pricing: $localize`:snake-case:pricing`, + privacyPolicy: $localize`:snake-case:privacy-policy`, + register: $localize`:snake-case:register`, + resources: $localize`:snake-case:resources`, + selfHosting: $localize`:snake-case:self-hosting`, + termsOfService: $localize`:snake-case:terms-of-service` +}; diff --git a/libs/ui/src/lib/membership-card/membership-card.component.ts b/libs/ui/src/lib/membership-card/membership-card.component.ts index d40031b18..fd2986e18 100644 --- a/libs/ui/src/lib/membership-card/membership-card.component.ts +++ b/libs/ui/src/lib/membership-card/membership-card.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, @@ -27,7 +29,7 @@ export class GfMembershipCardComponent { @Output() generateApiKeyClicked = new EventEmitter(); - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; + public routerLinkPricing = ['/' + paths.pricing]; public onGenerateApiKey(event: MouseEvent) { event.preventDefault(); diff --git a/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts b/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts index b4e871342..90198fed6 100644 --- a/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts +++ b/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts @@ -1,3 +1,5 @@ +import { paths } from '@ghostfolio/common/paths'; + import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, @@ -18,5 +20,5 @@ import { RouterModule } from '@angular/router'; export class GfPremiumIndicatorComponent { @Input() enableLink = true; - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; + public routerLinkPricing = ['/' + paths.pricing]; } From df11615b2f654fc93e7064b5f2be456e0d45bac7 Mon Sep 17 00:00:00 2001 From: Lukas Bauer Date: Sat, 24 May 2025 02:08:28 +0600 Subject: [PATCH 023/294] Feature/improve language localization for PL 20250522 (#4732) * Improve language localization for PL * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.pl.xlf | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 799555808..29615b57c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for French (`fr`) - Improved the language localization for German (`de`) - Improved the language localization for Italian (`it`) +- Improved the language localization for Polish (`pl`) - Improved the language localization for Portuguese (`pt`) - Upgraded `countup.js` from version `2.8.0` to `2.8.2` - Upgraded `nestjs` from version `10.4.15` to `11.0.12` diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 18cbcf7d0..aa69a96a5 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -2644,7 +2644,7 @@ Please enter your coupon code. - Wpisz kod kuponu: + Wpisz kod kuponu: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts 202 @@ -4608,7 +4608,7 @@ Hello, has shared a Portfolio with you! - Witaj, udostępnił Ci Portfel + Witaj, udostępnił Ci Portfel apps/client/src/app/pages/public/public-page.html 4 @@ -4680,7 +4680,7 @@ open-source-alternative-to - open-source-alternative-to + alternatywa-open-source-dla snake-case libs/common/src/lib/paths.ts @@ -5341,7 +5341,7 @@ Grant - Grant + Dotacja libs/ui/src/lib/i18n.ts 17 @@ -5409,7 +5409,7 @@ Preset - Preset + Wstępnie ustawione libs/ui/src/lib/i18n.ts 25 @@ -6069,7 +6069,7 @@ self-hosting - self-hosting + wlasny-hosting snake-case libs/common/src/lib/paths.ts @@ -6650,7 +6650,7 @@ Change with currency effect Change - Change with currency effect Change + Zmiana z efektem walutowym Zmiana apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 50 @@ -6658,7 +6658,7 @@ Performance with currency effect Performance - Performance with currency effect Performance + Wydajność z efektem walutowym Wydajność apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 69 @@ -6898,7 +6898,7 @@ Get access to 80’000+ tickers from over 50 exchanges - Uzyskaj dostęp do ponad 100 000 pasków notowań giełdowych z ponad 50 giełd + Uzyskaj dostęp do ponad 100 000 pasków notowań giełdowych z ponad 50 giełd libs/ui/src/lib/i18n.ts 24 @@ -7180,7 +7180,7 @@ Regional Market Cluster Risks - Regional Market Cluster Risks + Ryzyka klastrów regionalnych rynków apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 189 @@ -7188,7 +7188,7 @@ Lazy - Lazy + Leniwy apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 138 @@ -7196,7 +7196,7 @@ Instant - Instant + Natychmiastowy apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 142 From b5bd2bd997b0f6b6572023b3468e06e29060a896 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 24 May 2025 09:36:47 +0100 Subject: [PATCH 024/294] Bugfix/rename snake-case hint to kebab-case in paths (#4737) * Rename snake-case to kebab-case --- apps/client/src/locales/messages.ca.xlf | 32 ++++++++++++------------- apps/client/src/locales/messages.de.xlf | 32 ++++++++++++------------- apps/client/src/locales/messages.es.xlf | 32 ++++++++++++------------- apps/client/src/locales/messages.fr.xlf | 32 ++++++++++++------------- apps/client/src/locales/messages.it.xlf | 32 ++++++++++++------------- apps/client/src/locales/messages.nl.xlf | 32 ++++++++++++------------- apps/client/src/locales/messages.pl.xlf | 32 ++++++++++++------------- apps/client/src/locales/messages.pt.xlf | 32 ++++++++++++------------- apps/client/src/locales/messages.tr.xlf | 32 ++++++++++++------------- apps/client/src/locales/messages.uk.xlf | 32 ++++++++++++------------- apps/client/src/locales/messages.xlf | 32 ++++++++++++------------- apps/client/src/locales/messages.zh.xlf | 32 ++++++++++++------------- libs/common/src/lib/paths.ts | 32 ++++++++++++------------- 13 files changed, 208 insertions(+), 208 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index df7e4c973..3e9f54a44 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -368,7 +368,7 @@ about sobre - snake-case + kebab-case libs/common/src/lib/paths.ts 37 @@ -377,7 +377,7 @@ license llicències - snake-case + kebab-case libs/common/src/lib/paths.ts 43 @@ -386,7 +386,7 @@ privacy-policy política de privacitat - snake-case + kebab-case libs/common/src/lib/paths.ts 48 @@ -395,7 +395,7 @@ faq faq - snake-case + kebab-case libs/common/src/lib/paths.ts 39 @@ -404,7 +404,7 @@ features característiques - snake-case + kebab-case libs/common/src/lib/paths.ts 40 @@ -413,7 +413,7 @@ markets mercats - snake-case + kebab-case libs/common/src/lib/paths.ts 44 @@ -422,7 +422,7 @@ pricing preu - snake-case + kebab-case libs/common/src/lib/paths.ts 47 @@ -431,7 +431,7 @@ register registrar-se - snake-case + kebab-case libs/common/src/lib/paths.ts 49 @@ -440,7 +440,7 @@ resources recursos - snake-case + kebab-case libs/common/src/lib/paths.ts 50 @@ -3549,7 +3549,7 @@ self-hosting autoallotjament - snake-case + kebab-case libs/common/src/lib/paths.ts 51 @@ -5114,7 +5114,7 @@ open-source-alternative-to open-source-alternative-to - snake-case + kebab-case libs/common/src/lib/paths.ts 45 @@ -6947,7 +6947,7 @@ guides guides - snake-case + kebab-case libs/common/src/lib/paths.ts 42 @@ -6956,7 +6956,7 @@ glossary glossary - snake-case + kebab-case libs/common/src/lib/paths.ts 41 @@ -7417,7 +7417,7 @@ terms-of-service terms-of-service - snake-case + kebab-case libs/common/src/lib/paths.ts 52 @@ -7598,7 +7598,7 @@ changelog changelog - snake-case + kebab-case libs/common/src/lib/paths.ts 38 @@ -7607,7 +7607,7 @@ oss-friends oss-friends - snake-case + kebab-case libs/common/src/lib/paths.ts 46 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index e022165c8..8a66411bf 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -5172,7 +5172,7 @@ faq haeufig-gestellte-fragen - snake-case + kebab-case libs/common/src/lib/paths.ts 39 @@ -5181,7 +5181,7 @@ features features - snake-case + kebab-case libs/common/src/lib/paths.ts 40 @@ -5190,7 +5190,7 @@ about ueber-uns - snake-case + kebab-case libs/common/src/lib/paths.ts 37 @@ -5199,7 +5199,7 @@ privacy-policy datenschutzbestimmungen - snake-case + kebab-case libs/common/src/lib/paths.ts 48 @@ -5208,7 +5208,7 @@ license lizenz - snake-case + kebab-case libs/common/src/lib/paths.ts 43 @@ -5217,7 +5217,7 @@ markets maerkte - snake-case + kebab-case libs/common/src/lib/paths.ts 44 @@ -5226,7 +5226,7 @@ pricing preise - snake-case + kebab-case libs/common/src/lib/paths.ts 47 @@ -5235,7 +5235,7 @@ register registrierung - snake-case + kebab-case libs/common/src/lib/paths.ts 49 @@ -5244,7 +5244,7 @@ resources ressourcen - snake-case + kebab-case libs/common/src/lib/paths.ts 50 @@ -5317,7 +5317,7 @@ open-source-alternative-to open-source-alternative-zu - snake-case + kebab-case libs/common/src/lib/paths.ts 45 @@ -6094,7 +6094,7 @@ self-hosting self-hosting - snake-case + kebab-case libs/common/src/lib/paths.ts 51 @@ -6971,7 +6971,7 @@ guides ratgeber - snake-case + kebab-case libs/common/src/lib/paths.ts 42 @@ -6980,7 +6980,7 @@ glossary lexikon - snake-case + kebab-case libs/common/src/lib/paths.ts 41 @@ -7441,7 +7441,7 @@ terms-of-service allgemeine-geschaeftsbedingungen - snake-case + kebab-case libs/common/src/lib/paths.ts 52 @@ -7598,7 +7598,7 @@ changelog changelog - snake-case + kebab-case libs/common/src/lib/paths.ts 38 @@ -7607,7 +7607,7 @@ oss-friends oss-friends - snake-case + kebab-case libs/common/src/lib/paths.ts 46 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 0b0ed1fc1..13c588812 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -5149,7 +5149,7 @@ faq preguntas-mas-frecuentes - snake-case + kebab-case libs/common/src/lib/paths.ts 39 @@ -5158,7 +5158,7 @@ features funcionalidades - snake-case + kebab-case libs/common/src/lib/paths.ts 40 @@ -5167,7 +5167,7 @@ about sobre - snake-case + kebab-case libs/common/src/lib/paths.ts 37 @@ -5176,7 +5176,7 @@ privacy-policy politica-de-privacidad - snake-case + kebab-case libs/common/src/lib/paths.ts 48 @@ -5185,7 +5185,7 @@ license licencia - snake-case + kebab-case libs/common/src/lib/paths.ts 43 @@ -5194,7 +5194,7 @@ markets mercados - snake-case + kebab-case libs/common/src/lib/paths.ts 44 @@ -5203,7 +5203,7 @@ pricing precios - snake-case + kebab-case libs/common/src/lib/paths.ts 47 @@ -5212,7 +5212,7 @@ register registro - snake-case + kebab-case libs/common/src/lib/paths.ts 49 @@ -5221,7 +5221,7 @@ resources recursos - snake-case + kebab-case libs/common/src/lib/paths.ts 50 @@ -5294,7 +5294,7 @@ open-source-alternative-to alternativa-de-software-libre-a - snake-case + kebab-case libs/common/src/lib/paths.ts 45 @@ -6071,7 +6071,7 @@ self-hosting auto alojado - snake-case + kebab-case libs/common/src/lib/paths.ts 51 @@ -6948,7 +6948,7 @@ guides guides - snake-case + kebab-case libs/common/src/lib/paths.ts 42 @@ -6957,7 +6957,7 @@ glossary glossary - snake-case + kebab-case libs/common/src/lib/paths.ts 41 @@ -7418,7 +7418,7 @@ terms-of-service terms-of-service - snake-case + kebab-case libs/common/src/lib/paths.ts 52 @@ -7599,7 +7599,7 @@ changelog changelog - snake-case + kebab-case libs/common/src/lib/paths.ts 38 @@ -7608,7 +7608,7 @@ oss-friends oss-friends - snake-case + kebab-case libs/common/src/lib/paths.ts 46 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index f7646113a..a09e1c1ac 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -5148,7 +5148,7 @@ faq foire-aux-questions - snake-case + kebab-case libs/common/src/lib/paths.ts 39 @@ -5157,7 +5157,7 @@ features fonctionnalites - snake-case + kebab-case libs/common/src/lib/paths.ts 40 @@ -5166,7 +5166,7 @@ about a-propos - snake-case + kebab-case libs/common/src/lib/paths.ts 37 @@ -5175,7 +5175,7 @@ privacy-policy politique-de-confidentialite - snake-case + kebab-case libs/common/src/lib/paths.ts 48 @@ -5184,7 +5184,7 @@ license licence - snake-case + kebab-case libs/common/src/lib/paths.ts 43 @@ -5193,7 +5193,7 @@ markets marches - snake-case + kebab-case libs/common/src/lib/paths.ts 44 @@ -5202,7 +5202,7 @@ pricing prix - snake-case + kebab-case libs/common/src/lib/paths.ts 47 @@ -5211,7 +5211,7 @@ register enregistrement - snake-case + kebab-case libs/common/src/lib/paths.ts 49 @@ -5220,7 +5220,7 @@ resources ressources - snake-case + kebab-case libs/common/src/lib/paths.ts 50 @@ -5293,7 +5293,7 @@ open-source-alternative-to alternative-open-source-a - snake-case + kebab-case libs/common/src/lib/paths.ts 45 @@ -6070,7 +6070,7 @@ self-hosting self-hosting - snake-case + kebab-case libs/common/src/lib/paths.ts 51 @@ -6947,7 +6947,7 @@ guides guides - snake-case + kebab-case libs/common/src/lib/paths.ts 42 @@ -6956,7 +6956,7 @@ glossary glossaire - snake-case + kebab-case libs/common/src/lib/paths.ts 41 @@ -7417,7 +7417,7 @@ terms-of-service conditions-d-utilisation - snake-case + kebab-case libs/common/src/lib/paths.ts 52 @@ -7598,7 +7598,7 @@ changelog changelog - snake-case + kebab-case libs/common/src/lib/paths.ts 38 @@ -7607,7 +7607,7 @@ oss-friends oss-friends - snake-case + kebab-case libs/common/src/lib/paths.ts 46 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 2320780b4..2ff8a2e58 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -5149,7 +5149,7 @@ faq domande-piu-frequenti - snake-case + kebab-case libs/common/src/lib/paths.ts 39 @@ -5158,7 +5158,7 @@ features funzionalita - snake-case + kebab-case libs/common/src/lib/paths.ts 40 @@ -5167,7 +5167,7 @@ about informazioni-su - snake-case + kebab-case libs/common/src/lib/paths.ts 37 @@ -5176,7 +5176,7 @@ privacy-policy informativa-sulla-privacy - snake-case + kebab-case libs/common/src/lib/paths.ts 48 @@ -5185,7 +5185,7 @@ license licenza - snake-case + kebab-case libs/common/src/lib/paths.ts 43 @@ -5194,7 +5194,7 @@ markets mercati - snake-case + kebab-case libs/common/src/lib/paths.ts 44 @@ -5203,7 +5203,7 @@ pricing prezzi - snake-case + kebab-case libs/common/src/lib/paths.ts 47 @@ -5212,7 +5212,7 @@ register iscrizione - snake-case + kebab-case libs/common/src/lib/paths.ts 49 @@ -5221,7 +5221,7 @@ resources risorse - snake-case + kebab-case libs/common/src/lib/paths.ts 50 @@ -5294,7 +5294,7 @@ open-source-alternative-to alternativa-open-source-a - snake-case + kebab-case libs/common/src/lib/paths.ts 45 @@ -6071,7 +6071,7 @@ self-hosting self-hosting - snake-case + kebab-case libs/common/src/lib/paths.ts 51 @@ -6948,7 +6948,7 @@ guides guide - snake-case + kebab-case libs/common/src/lib/paths.ts 42 @@ -6957,7 +6957,7 @@ glossary glossario - snake-case + kebab-case libs/common/src/lib/paths.ts 41 @@ -7418,7 +7418,7 @@ terms-of-service termini-e-condizioni - snake-case + kebab-case libs/common/src/lib/paths.ts 52 @@ -7599,7 +7599,7 @@ changelog changelog - snake-case + kebab-case libs/common/src/lib/paths.ts 38 @@ -7608,7 +7608,7 @@ oss-friends oss-friends - snake-case + kebab-case libs/common/src/lib/paths.ts 46 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 704b359e5..6215add4e 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -5148,7 +5148,7 @@ faq veelgestelde-vragen - snake-case + kebab-case libs/common/src/lib/paths.ts 39 @@ -5157,7 +5157,7 @@ features functionaliteiten - snake-case + kebab-case libs/common/src/lib/paths.ts 40 @@ -5166,7 +5166,7 @@ about over - snake-case + kebab-case libs/common/src/lib/paths.ts 37 @@ -5175,7 +5175,7 @@ privacy-policy privacybeleid - snake-case + kebab-case libs/common/src/lib/paths.ts 48 @@ -5184,7 +5184,7 @@ license licentie - snake-case + kebab-case libs/common/src/lib/paths.ts 43 @@ -5193,7 +5193,7 @@ markets markten - snake-case + kebab-case libs/common/src/lib/paths.ts 44 @@ -5202,7 +5202,7 @@ pricing prijzen - snake-case + kebab-case libs/common/src/lib/paths.ts 47 @@ -5211,7 +5211,7 @@ register registratie - snake-case + kebab-case libs/common/src/lib/paths.ts 49 @@ -5220,7 +5220,7 @@ resources bronnen - snake-case + kebab-case libs/common/src/lib/paths.ts 50 @@ -5293,7 +5293,7 @@ open-source-alternative-to open-source-alternatief-voor - snake-case + kebab-case libs/common/src/lib/paths.ts 45 @@ -6070,7 +6070,7 @@ self-hosting zelf hosten - snake-case + kebab-case libs/common/src/lib/paths.ts 51 @@ -6947,7 +6947,7 @@ guides gidsen - snake-case + kebab-case libs/common/src/lib/paths.ts 42 @@ -6956,7 +6956,7 @@ glossary woordenlijst - snake-case + kebab-case libs/common/src/lib/paths.ts 41 @@ -7417,7 +7417,7 @@ terms-of-service servicevoorwaarden - snake-case + kebab-case libs/common/src/lib/paths.ts 52 @@ -7598,7 +7598,7 @@ changelog changelog - snake-case + kebab-case libs/common/src/lib/paths.ts 38 @@ -7607,7 +7607,7 @@ oss-friends oss-friends - snake-case + kebab-case libs/common/src/lib/paths.ts 46 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index aa69a96a5..fb89d82aa 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -4,7 +4,7 @@ about o-ghostfolio - snake-case + kebab-case libs/common/src/lib/paths.ts 37 @@ -13,7 +13,7 @@ faq faq - snake-case + kebab-case libs/common/src/lib/paths.ts 39 @@ -22,7 +22,7 @@ features funkcje - snake-case + kebab-case libs/common/src/lib/paths.ts 40 @@ -31,7 +31,7 @@ license licencja - snake-case + kebab-case libs/common/src/lib/paths.ts 43 @@ -40,7 +40,7 @@ markets rynki - snake-case + kebab-case libs/common/src/lib/paths.ts 44 @@ -49,7 +49,7 @@ pricing cennik - snake-case + kebab-case libs/common/src/lib/paths.ts 47 @@ -58,7 +58,7 @@ privacy-policy polityka-prywatnosci - snake-case + kebab-case libs/common/src/lib/paths.ts 48 @@ -67,7 +67,7 @@ register zarejestruj - snake-case + kebab-case libs/common/src/lib/paths.ts 49 @@ -76,7 +76,7 @@ resources zasoby - snake-case + kebab-case libs/common/src/lib/paths.ts 50 @@ -4681,7 +4681,7 @@ open-source-alternative-to alternatywa-open-source-dla - snake-case + kebab-case libs/common/src/lib/paths.ts 45 @@ -6070,7 +6070,7 @@ self-hosting wlasny-hosting - snake-case + kebab-case libs/common/src/lib/paths.ts 51 @@ -6947,7 +6947,7 @@ guides poradniki - snake-case + kebab-case libs/common/src/lib/paths.ts 42 @@ -6956,7 +6956,7 @@ glossary slowniczek - snake-case + kebab-case libs/common/src/lib/paths.ts 41 @@ -7417,7 +7417,7 @@ terms-of-service warunki-świadczenia-usług - snake-case + kebab-case libs/common/src/lib/paths.ts 52 @@ -7598,7 +7598,7 @@ changelog changelog - snake-case + kebab-case libs/common/src/lib/paths.ts 38 @@ -7607,7 +7607,7 @@ oss-friends oss-friends - snake-case + kebab-case libs/common/src/lib/paths.ts 46 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 57304a273..e24817e4c 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -5148,7 +5148,7 @@ faq perguntas-mais-frequentes - snake-case + kebab-case libs/common/src/lib/paths.ts 39 @@ -5157,7 +5157,7 @@ features funcionalidades - snake-case + kebab-case libs/common/src/lib/paths.ts 40 @@ -5166,7 +5166,7 @@ about sobre - snake-case + kebab-case libs/common/src/lib/paths.ts 37 @@ -5175,7 +5175,7 @@ privacy-policy politica-de-privacidade - snake-case + kebab-case libs/common/src/lib/paths.ts 48 @@ -5184,7 +5184,7 @@ license licenca - snake-case + kebab-case libs/common/src/lib/paths.ts 43 @@ -5193,7 +5193,7 @@ markets mercados - snake-case + kebab-case libs/common/src/lib/paths.ts 44 @@ -5202,7 +5202,7 @@ pricing precos - snake-case + kebab-case libs/common/src/lib/paths.ts 47 @@ -5211,7 +5211,7 @@ register registo - snake-case + kebab-case libs/common/src/lib/paths.ts 49 @@ -5220,7 +5220,7 @@ resources recursos - snake-case + kebab-case libs/common/src/lib/paths.ts 50 @@ -5293,7 +5293,7 @@ open-source-alternative-to alternativa-de-software-livre-ao - snake-case + kebab-case libs/common/src/lib/paths.ts 45 @@ -6070,7 +6070,7 @@ self-hosting self-hosting - snake-case + kebab-case libs/common/src/lib/paths.ts 51 @@ -6947,7 +6947,7 @@ guides guides - snake-case + kebab-case libs/common/src/lib/paths.ts 42 @@ -6956,7 +6956,7 @@ glossary glossary - snake-case + kebab-case libs/common/src/lib/paths.ts 41 @@ -7417,7 +7417,7 @@ terms-of-service terms-of-service - snake-case + kebab-case libs/common/src/lib/paths.ts 52 @@ -7598,7 +7598,7 @@ changelog changelog - snake-case + kebab-case libs/common/src/lib/paths.ts 38 @@ -7607,7 +7607,7 @@ oss-friends oss-friends - snake-case + kebab-case libs/common/src/lib/paths.ts 46 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index a74e6cdb5..a955eab69 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -4,7 +4,7 @@ about hakkinda - snake-case + kebab-case libs/common/src/lib/paths.ts 37 @@ -13,7 +13,7 @@ faq sss - snake-case + kebab-case libs/common/src/lib/paths.ts 39 @@ -22,7 +22,7 @@ features oezellikler - snake-case + kebab-case libs/common/src/lib/paths.ts 40 @@ -31,7 +31,7 @@ license lisans - snake-case + kebab-case libs/common/src/lib/paths.ts 43 @@ -40,7 +40,7 @@ markets piyasalar - snake-case + kebab-case libs/common/src/lib/paths.ts 44 @@ -49,7 +49,7 @@ pricing fiyatlandirma - snake-case + kebab-case libs/common/src/lib/paths.ts 47 @@ -58,7 +58,7 @@ privacy-policy gizlilik-politikasi - snake-case + kebab-case libs/common/src/lib/paths.ts 48 @@ -67,7 +67,7 @@ register kayit-ol - snake-case + kebab-case libs/common/src/lib/paths.ts 49 @@ -76,7 +76,7 @@ resources kaynaklar - snake-case + kebab-case libs/common/src/lib/paths.ts 50 @@ -4177,7 +4177,7 @@ open-source-alternative-to Açık kaynak alternatif - snake-case + kebab-case libs/common/src/lib/paths.ts 45 @@ -6070,7 +6070,7 @@ self-hosting Kendini-Barındırma - snake-case + kebab-case libs/common/src/lib/paths.ts 51 @@ -6947,7 +6947,7 @@ guides kılavuzlar - snake-case + kebab-case libs/common/src/lib/paths.ts 42 @@ -6956,7 +6956,7 @@ glossary sözlük - snake-case + kebab-case libs/common/src/lib/paths.ts 41 @@ -7417,7 +7417,7 @@ terms-of-service Hizmet Koşulları - snake-case + kebab-case libs/common/src/lib/paths.ts 52 @@ -7598,7 +7598,7 @@ changelog changelog - snake-case + kebab-case libs/common/src/lib/paths.ts 38 @@ -7607,7 +7607,7 @@ oss-friends oss-friends - snake-case + kebab-case libs/common/src/lib/paths.ts 46 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 9fc5d32fc..910a2313b 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -368,7 +368,7 @@ about about - snake-case + kebab-case libs/common/src/lib/paths.ts 37 @@ -377,7 +377,7 @@ license license - snake-case + kebab-case libs/common/src/lib/paths.ts 43 @@ -386,7 +386,7 @@ privacy-policy privacy-policy - snake-case + kebab-case libs/common/src/lib/paths.ts 48 @@ -395,7 +395,7 @@ faq faq - snake-case + kebab-case libs/common/src/lib/paths.ts 39 @@ -404,7 +404,7 @@ features features - snake-case + kebab-case libs/common/src/lib/paths.ts 40 @@ -413,7 +413,7 @@ markets markets - snake-case + kebab-case libs/common/src/lib/paths.ts 44 @@ -422,7 +422,7 @@ pricing pricing - snake-case + kebab-case libs/common/src/lib/paths.ts 47 @@ -431,7 +431,7 @@ register register - snake-case + kebab-case libs/common/src/lib/paths.ts 49 @@ -440,7 +440,7 @@ resources resources - snake-case + kebab-case libs/common/src/lib/paths.ts 50 @@ -3765,7 +3765,7 @@ self-hosting самохостинг - snake-case + kebab-case libs/common/src/lib/paths.ts 51 @@ -5470,7 +5470,7 @@ guides guides - snake-case + kebab-case libs/common/src/lib/paths.ts 42 @@ -5479,7 +5479,7 @@ glossary glossary - snake-case + kebab-case libs/common/src/lib/paths.ts 41 @@ -5496,7 +5496,7 @@ open-source-alternative-to відкритий-альтернативний-для - snake-case + kebab-case libs/common/src/lib/paths.ts 45 @@ -7417,7 +7417,7 @@ terms-of-service terms-of-service - snake-case + kebab-case libs/common/src/lib/paths.ts 52 @@ -7598,7 +7598,7 @@ changelog changelog - snake-case + kebab-case libs/common/src/lib/paths.ts 38 @@ -7607,7 +7607,7 @@ oss-friends oss-friends - snake-case + kebab-case libs/common/src/lib/paths.ts 46 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index c1914d395..e52e7915f 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -4,7 +4,7 @@ about - snake-case + kebab-case libs/common/src/lib/paths.ts 37 @@ -12,7 +12,7 @@ faq - snake-case + kebab-case libs/common/src/lib/paths.ts 39 @@ -20,7 +20,7 @@ features - snake-case + kebab-case libs/common/src/lib/paths.ts 40 @@ -28,7 +28,7 @@ license - snake-case + kebab-case libs/common/src/lib/paths.ts 43 @@ -36,7 +36,7 @@ markets - snake-case + kebab-case libs/common/src/lib/paths.ts 44 @@ -44,7 +44,7 @@ pricing - snake-case + kebab-case libs/common/src/lib/paths.ts 47 @@ -52,7 +52,7 @@ privacy-policy - snake-case + kebab-case libs/common/src/lib/paths.ts 48 @@ -60,7 +60,7 @@ register - snake-case + kebab-case libs/common/src/lib/paths.ts 49 @@ -68,7 +68,7 @@ resources - snake-case + kebab-case libs/common/src/lib/paths.ts 50 @@ -4283,7 +4283,7 @@ open-source-alternative-to - snake-case + kebab-case libs/common/src/lib/paths.ts 45 @@ -5472,7 +5472,7 @@ self-hosting - snake-case + kebab-case libs/common/src/lib/paths.ts 51 @@ -6270,7 +6270,7 @@ glossary - snake-case + kebab-case libs/common/src/lib/paths.ts 41 @@ -6289,7 +6289,7 @@ guides - snake-case + kebab-case libs/common/src/lib/paths.ts 42 @@ -6697,7 +6697,7 @@ terms-of-service - snake-case + kebab-case libs/common/src/lib/paths.ts 52 @@ -6832,7 +6832,7 @@ oss-friends - snake-case + kebab-case libs/common/src/lib/paths.ts 46 @@ -6840,7 +6840,7 @@ changelog - snake-case + kebab-case libs/common/src/lib/paths.ts 38 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 4e236965e..185a86007 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -5,7 +5,7 @@ about 关于 - snake-case + kebab-case libs/common/src/lib/paths.ts 37 @@ -14,7 +14,7 @@ faq 常见问题 - snake-case + kebab-case libs/common/src/lib/paths.ts 39 @@ -23,7 +23,7 @@ features 功能 - snake-case + kebab-case libs/common/src/lib/paths.ts 40 @@ -32,7 +32,7 @@ license 许可证 - snake-case + kebab-case libs/common/src/lib/paths.ts 43 @@ -41,7 +41,7 @@ markets 市场 - snake-case + kebab-case libs/common/src/lib/paths.ts 44 @@ -50,7 +50,7 @@ pricing 价钱 - snake-case + kebab-case libs/common/src/lib/paths.ts 47 @@ -59,7 +59,7 @@ privacy-policy 隐私政策 - snake-case + kebab-case libs/common/src/lib/paths.ts 48 @@ -68,7 +68,7 @@ register 注册 - snake-case + kebab-case libs/common/src/lib/paths.ts 49 @@ -77,7 +77,7 @@ resources 资源 - snake-case + kebab-case libs/common/src/lib/paths.ts 50 @@ -4690,7 +4690,7 @@ open-source-alternative-to 开源替代方案 - snake-case + kebab-case libs/common/src/lib/paths.ts 45 @@ -6027,7 +6027,7 @@ self-hosting 自托管 - snake-case + kebab-case libs/common/src/lib/paths.ts 51 @@ -6948,7 +6948,7 @@ guides 指南 - snake-case + kebab-case libs/common/src/lib/paths.ts 42 @@ -6957,7 +6957,7 @@ glossary 词汇表 - snake-case + kebab-case libs/common/src/lib/paths.ts 41 @@ -7418,7 +7418,7 @@ terms-of-service 服务条款 - snake-case + kebab-case libs/common/src/lib/paths.ts 52 @@ -7599,7 +7599,7 @@ changelog 变更日志 - snake-case + kebab-case libs/common/src/lib/paths.ts 38 @@ -7608,7 +7608,7 @@ oss-friends 开源朋友 - snake-case + kebab-case libs/common/src/lib/paths.ts 46 diff --git a/libs/common/src/lib/paths.ts b/libs/common/src/lib/paths.ts index 6b5c8bb6c..ea7d0eb58 100644 --- a/libs/common/src/lib/paths.ts +++ b/libs/common/src/lib/paths.ts @@ -34,20 +34,20 @@ export const paths = { zen: 'zen', // Localized paths (public-facing pages) - about: $localize`:snake-case:about`, - changelog: $localize`:snake-case:changelog`, - faq: $localize`:snake-case:faq`, - features: $localize`:snake-case:features`, - glossary: $localize`:snake-case:glossary`, - guides: $localize`:snake-case:guides`, - license: $localize`:snake-case:license`, - markets: $localize`:snake-case:markets`, - openSourceAlternativeTo: $localize`:snake-case:open-source-alternative-to`, - ossFriends: $localize`:snake-case:oss-friends`, - pricing: $localize`:snake-case:pricing`, - privacyPolicy: $localize`:snake-case:privacy-policy`, - register: $localize`:snake-case:register`, - resources: $localize`:snake-case:resources`, - selfHosting: $localize`:snake-case:self-hosting`, - termsOfService: $localize`:snake-case:terms-of-service` + about: $localize`:kebab-case:about`, + changelog: $localize`:kebab-case:changelog`, + faq: $localize`:kebab-case:faq`, + features: $localize`:kebab-case:features`, + glossary: $localize`:kebab-case:glossary`, + guides: $localize`:kebab-case:guides`, + license: $localize`:kebab-case:license`, + markets: $localize`:kebab-case:markets`, + openSourceAlternativeTo: $localize`:kebab-case:open-source-alternative-to`, + ossFriends: $localize`:kebab-case:oss-friends`, + pricing: $localize`:kebab-case:pricing`, + privacyPolicy: $localize`:kebab-case:privacy-policy`, + register: $localize`:kebab-case:register`, + resources: $localize`:kebab-case:resources`, + selfHosting: $localize`:kebab-case:self-hosting`, + termsOfService: $localize`:kebab-case:terms-of-service` }; From 6bdf7b185f6a24eb1f7481c592446350bf76890d Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 24 May 2025 12:23:14 +0100 Subject: [PATCH 025/294] Bugfix/text alignment in top holdings component (#4734) * Fix text alignment of allocation column * Update changelog --- CHANGELOG.md | 1 + libs/ui/src/lib/top-holdings/top-holdings.component.html | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29615b57c..36df0aa6e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Displayed the button to fetch the current market price only if the activity is not in a custom currency - Fixed an issue in the watchlist endpoint (`POST`) related to the `HasPermissionGuard` +- Improved the text alignment of the allocations by ETF holding on the allocations page (experimental) ## 2.161.0 - 2025-05-06 diff --git a/libs/ui/src/lib/top-holdings/top-holdings.component.html b/libs/ui/src/lib/top-holdings/top-holdings.component.html index d42d742b2..7a2a84126 100644 --- a/libs/ui/src/lib/top-holdings/top-holdings.component.html +++ b/libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -36,7 +36,7 @@
- + Allocation % From a1786c95a123fe263f9ee8b9ed784b139a0ffa99 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 24 May 2025 12:29:05 +0100 Subject: [PATCH 026/294] Feature/upgrade prisma to version 6.8.2 (#4740) * Upgrade prisma to version 6.8.2 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 96 ++++++++++++++++++++++++++--------------------- package.json | 4 +- 3 files changed, 56 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36df0aa6e..34d84a3cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for Portuguese (`pt`) - Upgraded `countup.js` from version `2.8.0` to `2.8.2` - Upgraded `nestjs` from version `10.4.15` to `11.0.12` +- Upgraded `prisma` from version `6.7.0` to `6.8.2` - Upgraded `twitter-api-v2` from version `1.14.2` to `1.23.0` - Upgraded `yahoo-finance2` from version `2.11.3` to `3.3.3` diff --git a/package-lock.json b/package-lock.json index 380e117e0..edbc636b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "@nestjs/platform-express": "11.1.0", "@nestjs/schedule": "6.0.0", "@nestjs/serve-static": "5.0.3", - "@prisma/client": "6.7.0", + "@prisma/client": "6.8.2", "@simplewebauthn/browser": "13.1.0", "@simplewebauthn/server": "13.1.1", "@stripe/stripe-js": "5.4.0", @@ -148,7 +148,7 @@ "nx": "20.8.1", "prettier": "3.5.3", "prettier-plugin-organize-attributes": "1.0.0", - "prisma": "6.7.0", + "prisma": "6.8.2", "react": "18.2.0", "react-dom": "18.2.0", "replace-in-file": "8.3.0", @@ -10127,82 +10127,95 @@ "license": "MIT" }, "node_modules/@prisma/client": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.7.0.tgz", - "integrity": "sha512-+k61zZn1XHjbZul8q6TdQLpuI/cvyfil87zqK2zpreNIXyXtpUv3+H/oM69hcsFcZXaokHJIzPAt5Z8C8eK2QA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.8.2.tgz", + "integrity": "sha512-5II+vbyzv4si6Yunwgkj0qT/iY0zyspttoDrL3R4BYgLdp42/d2C8xdi9vqkrYtKt9H32oFIukvyw3Koz5JoDg==", "hasInstallScript": true, "license": "Apache-2.0", "engines": { "node": ">=18.18" }, "peerDependencies": { - "prisma": "*" + "prisma": "*", + "typescript": ">=5.1.0" }, "peerDependenciesMeta": { "prisma": { "optional": true + }, + "typescript": { + "optional": true } } }, "node_modules/@prisma/config": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.7.0.tgz", - "integrity": "sha512-di8QDdvSz7DLUi3OOcCHSwxRNeW7jtGRUD2+Z3SdNE3A+pPiNT8WgUJoUyOwJmUr5t+JA2W15P78C/N+8RXrOA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.8.2.tgz", + "integrity": "sha512-ZJY1fF4qRBPdLQ/60wxNtX+eu89c3AkYEcP7L3jkp0IPXCNphCYxikTg55kPJLDOG6P0X+QG5tCv6CmsBRZWFQ==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "esbuild": ">=0.12 <1", - "esbuild-register": "3.6.0" + "jiti": "2.4.2" + } + }, + "node_modules/@prisma/config/node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "devOptional": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" } }, "node_modules/@prisma/debug": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.7.0.tgz", - "integrity": "sha512-RabHn9emKoYFsv99RLxvfG2GHzWk2ZI1BuVzqYtmMSIcuGboHY5uFt3Q3boOREM9de6z5s3bQoyKeWnq8Fz22w==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.8.2.tgz", + "integrity": "sha512-4muBSSUwJJ9BYth5N8tqts8JtiLT8QI/RSAzEogwEfpbYGFo9mYsInsVo8dqXdPO2+Rm5OG5q0qWDDE3nyUbVg==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.7.0.tgz", - "integrity": "sha512-3wDMesnOxPrOsq++e5oKV9LmIiEazFTRFZrlULDQ8fxdub5w4NgRBoxtWbvXmj2nJVCnzuz6eFix3OhIqsZ1jw==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.8.2.tgz", + "integrity": "sha512-XqAJ//LXjqYRQ1RRabs79KOY4+v6gZOGzbcwDQl0D6n9WBKjV7qdrbd042CwSK0v0lM9MSHsbcFnU2Yn7z8Zlw==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.7.0", - "@prisma/engines-version": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed", - "@prisma/fetch-engine": "6.7.0", - "@prisma/get-platform": "6.7.0" + "@prisma/debug": "6.8.2", + "@prisma/engines-version": "6.8.0-43.2060c79ba17c6bb9f5823312b6f6b7f4a845738e", + "@prisma/fetch-engine": "6.8.2", + "@prisma/get-platform": "6.8.2" } }, "node_modules/@prisma/engines-version": { - "version": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed.tgz", - "integrity": "sha512-EvpOFEWf1KkJpDsBCrih0kg3HdHuaCnXmMn7XFPObpFTzagK1N0Q0FMnYPsEhvARfANP5Ok11QyoTIRA2hgJTA==", + "version": "6.8.0-43.2060c79ba17c6bb9f5823312b6f6b7f4a845738e", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.8.0-43.2060c79ba17c6bb9f5823312b6f6b7f4a845738e.tgz", + "integrity": "sha512-Rkik9lMyHpFNGaLpPF3H5q5TQTkm/aE7DsGM5m92FZTvWQsvmi6Va8On3pWvqLHOt5aPUvFb/FeZTmphI4CPiQ==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/fetch-engine": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.7.0.tgz", - "integrity": "sha512-zLlAGnrkmioPKJR4Yf7NfW3hftcvqeNNEHleMZK9yX7RZSkhmxacAYyfGsCcqRt47jiZ7RKdgE0Wh2fWnm7WsQ==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.8.2.tgz", + "integrity": "sha512-lCvikWOgaLOfqXGacEKSNeenvj0n3qR5QvZUOmPE2e1Eh8cMYSobxonCg9rqM6FSdTfbpqp9xwhSAOYfNqSW0g==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.7.0", - "@prisma/engines-version": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed", - "@prisma/get-platform": "6.7.0" + "@prisma/debug": "6.8.2", + "@prisma/engines-version": "6.8.0-43.2060c79ba17c6bb9f5823312b6f6b7f4a845738e", + "@prisma/get-platform": "6.8.2" } }, "node_modules/@prisma/get-platform": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.7.0.tgz", - "integrity": "sha512-i9IH5lO4fQwnMLvQLYNdgVh9TK3PuWBfQd7QLk/YurnAIg+VeADcZDbmhAi4XBBDD+hDif9hrKyASu0hbjwabw==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.8.2.tgz", + "integrity": "sha512-vXSxyUgX3vm1Q70QwzwkjeYfRryIvKno1SXbIqwSptKwqKzskINnDUcx85oX+ys6ooN2ATGSD0xN2UTfg6Zcow==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.7.0" + "@prisma/debug": "6.8.2" } }, "node_modules/@redis/bloom": { @@ -19115,7 +19128,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.3.4" @@ -29673,15 +29686,15 @@ } }, "node_modules/prisma": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.7.0.tgz", - "integrity": "sha512-vArg+4UqnQ13CVhc2WUosemwh6hr6cr6FY2uzDvCIFwH8pu8BXVv38PktoMLVjtX7sbYThxbnZF5YiR8sN2clw==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.8.2.tgz", + "integrity": "sha512-JNricTXQxzDtRS7lCGGOB4g5DJ91eg3nozdubXze3LpcMl1oWwcFddrj++Up3jnRE6X/3gB/xz3V+ecBk/eEGA==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/config": "6.7.0", - "@prisma/engines": "6.7.0" + "@prisma/config": "6.8.2", + "@prisma/engines": "6.8.2" }, "bin": { "prisma": "build/index.js" @@ -29689,9 +29702,6 @@ "engines": { "node": ">=18.18" }, - "optionalDependencies": { - "fsevents": "2.3.3" - }, "peerDependencies": { "typescript": ">=5.1.0" }, diff --git a/package.json b/package.json index 3cef37604..2eadc43f6 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "@nestjs/platform-express": "11.1.0", "@nestjs/schedule": "6.0.0", "@nestjs/serve-static": "5.0.3", - "@prisma/client": "6.7.0", + "@prisma/client": "6.8.2", "@simplewebauthn/browser": "13.1.0", "@simplewebauthn/server": "13.1.1", "@stripe/stripe-js": "5.4.0", @@ -194,7 +194,7 @@ "nx": "20.8.1", "prettier": "3.5.3", "prettier-plugin-organize-attributes": "1.0.0", - "prisma": "6.7.0", + "prisma": "6.8.2", "react": "18.2.0", "react-dom": "18.2.0", "replace-in-file": "8.3.0", From a8a31c141dddcffec25ff68048b0076fdf0c7ff2 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 24 May 2025 15:15:51 +0100 Subject: [PATCH 027/294] Bugfix/fix TransformDataSourceInRequestInterceptor after upgrade to NestJS 11 (#4741) * Fix TransformDataSourceInRequestInterceptor for Express 5 --- .../transform-data-source-in-request.interceptor.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts b/apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts index b24fb8404..1600bd137 100644 --- a/apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts +++ b/apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts @@ -43,7 +43,16 @@ export class TransformDataSourceInRequestInterceptor const dataSourceValue = request[type]?.dataSource; if (dataSourceValue && !DataSource[dataSourceValue]) { - request[type].dataSource = decodeDataSource(dataSourceValue); + // In Express 5, request.query is read-only, so request[type].dataSource cannot be directly modified + Object.defineProperty(request, type, { + configurable: true, + enumerable: true, + value: { + ...request[type], + dataSource: decodeDataSource(dataSourceValue) + }, + writable: true + }); } } } From 90385157d7ec2c61c227d2e627327e92baee4947 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 24 May 2025 19:18:46 +0100 Subject: [PATCH 028/294] Feature/improve Ghostfolio data provider integration (#4743) * Improve Ghostfolio data provider integration --- apps/api/src/app/admin/admin.service.ts | 5 ++++- apps/api/src/services/data-provider/data-provider.service.ts | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 35b4ea73d..258d8556f 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -135,7 +135,10 @@ export class AdminService { } public async get({ user }: { user: UserWithSettings }): Promise { - const dataSources = await this.dataProviderService.getDataSources({ user }); + const dataSources = await this.dataProviderService.getDataSources({ + user, + includeGhostfolio: true + }); const [settings, transactionCount, userCount] = await Promise.all([ this.propertyService.get(), diff --git a/apps/api/src/services/data-provider/data-provider.service.ts b/apps/api/src/services/data-provider/data-provider.service.ts index 8b578a54e..348935101 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -163,8 +163,10 @@ export class DataProviderService { } public async getDataSources({ + includeGhostfolio = false, user }: { + includeGhostfolio?: boolean; user: UserWithSettings; }): Promise { let dataSourcesKey: 'DATA_SOURCES' | 'DATA_SOURCES_LEGACY' = 'DATA_SOURCES'; @@ -187,7 +189,7 @@ export class DataProviderService { PROPERTY_API_KEY_GHOSTFOLIO )) as string; - if (ghostfolioApiKey || hasRole(user, 'ADMIN')) { + if (includeGhostfolio || ghostfolioApiKey) { dataSources.push('GHOSTFOLIO'); } From 1a247d6e97dccbe9ff4365c5c7d8ef735eb20d59 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 24 May 2025 19:51:45 +0100 Subject: [PATCH 029/294] Feature/improve handling of schema validation errors in search of Yahoo Finance service (#4744) * Improve handling of schema validation errors * Update changelog --- CHANGELOG.md | 1 + .../yahoo-finance/yahoo-finance.service.ts | 25 +++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34d84a3cc..7d2570eb5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Increased the robustness of the search in the _Yahoo Finance_ service by catching schema validation errors - Improved the symbol lookup results by removing the currency from the name of cryptocurrencies (experimental) - Harmonized the data providers management style of the admin control panel - Extended the data providers management of the admin control panel by the asset profile count diff --git a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts index d5a132b41..06e4674fb 100644 --- a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts @@ -30,8 +30,11 @@ import { HistoricalDividendsResult, HistoricalHistoryResult } from 'yahoo-finance2/esm/src/modules/historical'; -import { Quote } from 'yahoo-finance2/esm/src/modules/quote'; -import { SearchQuoteNonYahoo } from 'yahoo-finance2/script/src/modules/search'; +import { + Quote, + QuoteResponseArray +} from 'yahoo-finance2/esm/src/modules/quote'; +import { SearchQuoteNonYahoo } from 'yahoo-finance2/esm/src/modules/search'; @Injectable() export class YahooFinanceService implements DataProviderInterface { @@ -281,11 +284,19 @@ export class YahooFinanceService implements DataProviderInterface { return true; }); - const marketData = await this.yahooFinance.quote( - quotes.map(({ symbol }) => { - return symbol; - }) - ); + let marketData: QuoteResponseArray = []; + + try { + marketData = await this.yahooFinance.quote( + quotes.map(({ symbol }) => { + return symbol; + }) + ); + } catch (error) { + if (error?.result?.length > 0) { + marketData = error.result; + } + } for (const marketDataItem of marketData) { const quote = quotes.find((currentQuote) => { From d96a346b70c700e7fd7d505e0fbcd63fa6be20d7 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 24 May 2025 20:06:50 +0100 Subject: [PATCH 030/294] Release 2.162.0 (#4746) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d2570eb5..fe43f38cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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.162.0 - 2025-05-24 ### Added diff --git a/package-lock.json b/package-lock.json index edbc636b6..adf192a4d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.161.0", + "version": "2.162.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.161.0", + "version": "2.162.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index 2eadc43f6..b449a762b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.161.0", + "version": "2.162.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 9a75e7d25790664e99fe9c91b070cf65ff8c1f55 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 24 May 2025 20:58:51 +0100 Subject: [PATCH 031/294] Bugfix/fix Redis cache health check (#4748) * Fix Redis cache health check --- apps/api/src/app/redis-cache/redis-cache.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 97d71ae61..e6e98d622 100644 --- a/apps/api/src/app/redis-cache/redis-cache.service.ts +++ b/apps/api/src/app/redis-cache/redis-cache.service.ts @@ -80,7 +80,7 @@ export class RedisCacheService { public async isHealthy() { try { - const isHealthy = await Promise.race([ + await Promise.race([ this.getKeys(), new Promise((_, reject) => setTimeout( @@ -90,7 +90,7 @@ export class RedisCacheService { ) ]); - return isHealthy === 'PONG'; + return true; } catch (error) { return false; } From 692147f629063b78b7aaaf45d9fadc9ec5156dc8 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 24 May 2025 21:00:12 +0100 Subject: [PATCH 032/294] Release 2.162.1 (#4749) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe43f38cb..76f6d85b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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). -## 2.162.0 - 2025-05-24 +## 2.162.1 - 2025-05-24 ### Added diff --git a/package-lock.json b/package-lock.json index adf192a4d..de83071c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.162.0", + "version": "2.162.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.162.0", + "version": "2.162.1", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index b449a762b..d25c42642 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.162.0", + "version": "2.162.1", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 13b544c67df19cbe286641cd6c59e3081d062e4b Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 25 May 2025 19:14:04 +0100 Subject: [PATCH 033/294] Feature/refactor router links (#4752) * Refactor router links --- apps/client/src/app/app-routing.module.ts | 4 +- apps/client/src/app/app.component.html | 4 +- apps/client/src/app/app.component.ts | 2 + .../benchmark-comparator.component.html | 2 +- .../benchmark-comparator.component.ts | 5 +++ .../components/header/header.component.html | 42 ++++++++++--------- .../app/components/header/header.component.ts | 5 +++ .../home-holdings/home-holdings.component.ts | 5 +++ .../home-holdings/home-holdings.html | 2 +- .../home-overview/home-overview.component.ts | 7 ++++ .../home-overview/home-overview.html | 14 ++++--- apps/client/src/app/core/auth.guard.ts | 2 +- .../overview/about-overview-page.component.ts | 2 + .../about/overview/about-overview-page.html | 6 ++- .../app/pages/admin/admin-page.component.ts | 10 ++--- .../hallo-ghostfolio-page.component.ts | 1 + .../hallo-ghostfolio-page.html | 2 +- .../hello-ghostfolio-page.component.ts | 1 + .../hello-ghostfolio-page.html | 2 +- ...st-months-in-open-source-page.component.ts | 1 + .../first-months-in-open-source-page.html | 2 +- ...-meets-internet-identity-page.component.ts | 6 ++- ...ostfolio-meets-internet-identity-page.html | 2 +- ...get-my-finances-in-order-page.component.ts | 1 + ...ow-do-i-get-my-finances-in-order-page.html | 2 +- .../500-stars-on-github-page.component.ts | 1 + .../500-stars-on-github-page.html | 2 +- .../hacktoberfest-2022-page.component.ts | 6 ++- .../hacktoberfest-2022-page.html | 2 +- .../black-friday-2022-page.component.ts | 1 + .../black-friday-2022-page.html | 2 +- ...g-your-personal-finances-page.component.ts | 6 ++- ...-tracking-your-personal-finances-page.html | 2 +- ...auf-sackgeld-vorgestellt-page.component.ts | 6 ++- ...stfolio-auf-sackgeld-vorgestellt-page.html | 2 +- .../ghostfolio-meets-umbrel-page.component.ts | 6 ++- .../ghostfolio-meets-umbrel-page.html | 2 +- .../1000-stars-on-github-page.component.ts | 1 + .../1000-stars-on-github-page.html | 2 +- ...otential-with-ghostfolio-page.component.ts | 1 + ...ancial-potential-with-ghostfolio-page.html | 2 +- ...ploring-the-path-to-fire-page.component.ts | 1 + .../exploring-the-path-to-fire-page.html | 2 +- ...tfolio-joins-oss-friends-page.component.ts | 1 + .../ghostfolio-joins-oss-friends-page.html | 2 +- .../ghostfolio-2-page.component.ts | 1 + .../09/ghostfolio-2/ghostfolio-2-page.html | 2 +- .../hacktoberfest-2023-page.component.ts | 2 + .../hacktoberfest-2023-page.html | 12 +++--- .../black-week-2023-page.component.ts | 1 + .../black-week-2023/black-week-2023-page.html | 2 +- ...oberfest-2023-debriefing-page.component.ts | 1 + .../hacktoberfest-2023-debriefing-page.html | 2 +- .../hacktoberfest-2024-page.component.ts | 2 + .../hacktoberfest-2024-page.html | 12 +++--- .../black-weeks-2024-page.component.ts | 1 + .../black-weeks-2024-page.html | 2 +- .../app/pages/faq/saas/saas-page.component.ts | 2 + .../src/app/pages/faq/saas/saas-page.html | 4 +- .../pages/landing/landing-page.component.ts | 2 + .../src/app/pages/landing/landing-page.html | 12 +++--- libs/common/src/lib/paths.ts | 4 +- .../no-transactions-info.component.html | 2 +- .../no-transactions-info.component.ts | 7 ++++ 64 files changed, 172 insertions(+), 83 deletions(-) diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts index 1d62f5f13..b3be70bb2 100644 --- a/apps/client/src/app/app-routing.module.ts +++ b/apps/client/src/app/app-routing.module.ts @@ -28,7 +28,7 @@ const routes: Routes = [ ) }, { - path: paths.admin, + path: paths.adminControl, loadChildren: () => import('./pages/admin/admin-page.module').then((m) => m.AdminPageModule) }, @@ -95,7 +95,7 @@ const routes: Routes = [ ) }, { - path: paths.open, + path: paths.openStartup, loadChildren: () => import('./pages/open/open-page.module').then((m) => m.OpenPageModule) }, diff --git a/apps/client/src/app/app.component.html b/apps/client/src/app/app.component.html index d5e56b517..a04e457ba 100644 --- a/apps/client/src/app/app.component.html +++ b/apps/client/src/app/app.component.html @@ -70,7 +70,7 @@
  • About
  • @if (hasPermissionForSubscription) {
  • - Blog + Blog
  • }
  • @@ -91,7 +91,7 @@ } @if (hasPermissionForStatistics) {
  • - Open Startup + Open Startup
  • } @if (hasPermissionForSubscription) { diff --git a/apps/client/src/app/app.component.ts b/apps/client/src/app/app.component.ts index 02db9fea0..5d198580e 100644 --- a/apps/client/src/app/app.component.ts +++ b/apps/client/src/app/app.component.ts @@ -74,9 +74,11 @@ export class AppComponent implements OnDestroy, OnInit { '/' + paths.about, paths.termsOfService ]; + public routerLinkBlog = ['/' + paths.blog]; public routerLinkFaq = ['/' + paths.faq]; public routerLinkFeatures = ['/' + paths.features]; public routerLinkMarkets = ['/' + paths.markets]; + public routerLinkOpenStartup = ['/' + paths.openStartup]; public routerLinkPricing = ['/' + paths.pricing]; public routerLinkRegister = ['/' + paths.register]; public routerLinkResources = ['/' + paths.resources]; diff --git a/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html b/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html index eab89f53d..21d68984a 100644 --- a/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html +++ b/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html @@ -29,7 +29,7 @@ }} } @if (hasPermissionToAccessAdminControl) { - +
    Manage Benchmarks diff --git a/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts b/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts index afcb561f6..c98f01fb7 100644 --- a/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts +++ b/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -12,6 +12,7 @@ import { parseDate } from '@ghostfolio/common/helper'; import { LineChartItem, User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { ColorScheme } from '@ghostfolio/common/types'; @@ -63,6 +64,10 @@ export class BenchmarkComparatorComponent implements OnChanges, OnDestroy { public chart: Chart<'line'>; public hasPermissionToAccessAdminControl: boolean; + public routerLinkAdminControlMarketData = [ + '/' + paths.adminControl, + paths.marketData + ]; public constructor() { Chart.register( diff --git a/apps/client/src/app/components/header/header.component.html b/apps/client/src/app/components/header/header.component.html index b14d142f4..74737ca05 100644 --- a/apps/client/src/app/components/header/header.component.html +++ b/apps/client/src/app/components/header/header.component.html @@ -20,9 +20,9 @@ mat-flat-button [ngClass]="{ 'font-weight-bold': - currentRoute === 'home' || currentRoute === 'zen', + currentRoute === paths.home || currentRoute === paths.zen, 'text-decoration-underline': - currentRoute === 'home' || currentRoute === 'zen' + currentRoute === paths.home || currentRoute === paths.zen }" [routerLink]="['/']" >OverviewPortfolio @@ -47,10 +47,10 @@ i18n mat-flat-button [ngClass]="{ - 'font-weight-bold': currentRoute === 'accounts', - 'text-decoration-underline': currentRoute === 'accounts' + 'font-weight-bold': currentRoute === paths.accounts, + 'text-decoration-underline': currentRoute === paths.accounts }" - [routerLink]="['/accounts']" + [routerLink]="routerLinkAccounts" >Accounts @@ -61,10 +61,10 @@ i18n mat-flat-button [ngClass]="{ - 'font-weight-bold': currentRoute === 'admin', - 'text-decoration-underline': currentRoute === 'admin' + 'font-weight-bold': currentRoute === paths.adminControl, + 'text-decoration-underline': currentRoute === paths.adminControl }" - [routerLink]="['/admin']" + [routerLink]="routerLinkAdminControl" >Admin Control @@ -235,7 +235,7 @@ mat-menu-item [ngClass]="{ 'font-weight-bold': - currentRoute === 'home' || currentRoute === 'zen' + currentRoute === paths.home || currentRoute === paths.zen }" [routerLink]="['/']" >OverviewPortfolio Accounts My Ghostfolio @if (hasPermissionToAccessAdminControl) { @@ -270,8 +270,10 @@ class="d-flex d-sm-none" i18n mat-menu-item - [ngClass]="{ 'font-weight-bold': currentRoute === 'admin' }" - [routerLink]="['/admin']" + [ngClass]="{ + 'font-weight-bold': currentRoute === paths.adminControl + }" + [routerLink]="routerLinkAdminControl" >Admin Control } diff --git a/apps/client/src/app/components/header/header.component.ts b/apps/client/src/app/components/header/header.component.ts index a0fbe8c84..52418bcb7 100644 --- a/apps/client/src/app/components/header/header.component.ts +++ b/apps/client/src/app/components/header/header.component.ts @@ -80,14 +80,19 @@ export class HeaderComponent implements OnChanges { public hasPermissionToCreateUser: boolean; public impersonationId: string; public isMenuOpen: boolean; + public paths = paths; public routeAbout = paths.about; public routeFeatures = paths.features; public routeMarkets = paths.markets; public routePricing = paths.pricing; public routeResources = paths.resources; public routerLinkAbout = ['/' + paths.about]; + public routerLinkAccount = ['/' + paths.account]; + public routerLinkAccounts = ['/' + paths.accounts]; + public routerLinkAdminControl = ['/' + paths.adminControl]; public routerLinkFeatures = ['/' + paths.features]; public routerLinkMarkets = ['/' + paths.markets]; + public routerLinkPortfolio = ['/' + paths.portfolio]; public routerLinkPricing = ['/' + paths.pricing]; public routerLinkRegister = ['/' + paths.register]; public routerLinkResources = ['/' + paths.resources]; diff --git a/apps/client/src/app/components/home-holdings/home-holdings.component.ts b/apps/client/src/app/components/home-holdings/home-holdings.component.ts index dd411f6cc..9f772a3e4 100644 --- a/apps/client/src/app/components/home-holdings/home-holdings.component.ts +++ b/apps/client/src/app/components/home-holdings/home-holdings.component.ts @@ -7,6 +7,7 @@ import { ToggleOption, User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { HoldingType, HoldingsViewMode } from '@ghostfolio/common/types'; @@ -36,6 +37,10 @@ export class HomeHoldingsComponent implements OnDestroy, OnInit { { label: $localize`Active`, value: 'ACTIVE' }, { label: $localize`Closed`, value: 'CLOSED' } ]; + public routerLinkPortfolioActivities = [ + '/' + paths.portfolio, + paths.activities + ]; public user: User; public viewModeFormControl = new FormControl( HomeHoldingsComponent.DEFAULT_HOLDINGS_VIEW_MODE diff --git a/apps/client/src/app/components/home-holdings/home-holdings.html b/apps/client/src/app/components/home-holdings/home-holdings.html index f981e50a1..6040ffe2a 100644 --- a/apps/client/src/app/components/home-holdings/home-holdings.html +++ b/apps/client/src/app/components/home-holdings/home-holdings.html @@ -58,7 +58,7 @@ class="mt-3" i18n mat-stroked-button - [routerLink]="['/portfolio', 'activities']" + [routerLink]="routerLinkPortfolioActivities" >Manage Activities
    diff --git a/apps/client/src/app/components/home-overview/home-overview.component.ts b/apps/client/src/app/components/home-overview/home-overview.component.ts index b0e7be320..783b7d1b9 100644 --- a/apps/client/src/app/components/home-overview/home-overview.component.ts +++ b/apps/client/src/app/components/home-overview/home-overview.component.ts @@ -10,6 +10,7 @@ import { PortfolioPerformance, User } from '@ghostfolio/common/interfaces'; +import { paths } from '@ghostfolio/common/paths'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; @@ -36,6 +37,12 @@ export class HomeOverviewComponent implements OnDestroy, OnInit { public isLoadingPerformance = true; public performance: PortfolioPerformance; public precision = 2; + public routerLinkAccounts = ['/' + paths.accounts]; + public routerLinkPortfolio = ['/' + paths.portfolio]; + public routerLinkPortfolioActivities = [ + '/' + paths.portfolio, + paths.activities + ]; public showDetails = false; public unit: string; public user: User; diff --git a/apps/client/src/app/components/home-overview/home-overview.html b/apps/client/src/app/components/home-overview/home-overview.html index c13c8f043..04b47277f 100644 --- a/apps/client/src/app/components/home-overview/home-overview.html +++ b/apps/client/src/app/components/home-overview/home-overview.html @@ -11,7 +11,7 @@ class="mb-2" [ngClass]="{ 'text-muted': user?.accounts?.length > 1 }" > - Setup your accounts
    Get a comprehensive financial overview by adding your bank and @@ -20,7 +20,7 @@ >
  • - + Capture your activities
    Record your investment activities to keep your portfolio up to @@ -29,7 +29,7 @@ >
  • - + Monitor and analyze your portfolio
    Track your progress in real-time with comprehensive analysis @@ -40,14 +40,18 @@
    @if (user?.accounts?.length === 1) { - + Setup accounts } @else if (user?.accounts?.length > 1) { Add activity diff --git a/apps/client/src/app/core/auth.guard.ts b/apps/client/src/app/core/auth.guard.ts index 16851b4e0..87ef23d60 100644 --- a/apps/client/src/app/core/auth.guard.ts +++ b/apps/client/src/app/core/auth.guard.ts @@ -21,7 +21,7 @@ export class AuthGuard { `/${paths.faq}`, `/${paths.features}`, `/${paths.markets}`, - `/${paths.open}`, + `/${paths.openStartup}`, `/${paths.pricing}`, `/${paths.public}`, `/${paths.register}`, 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 5ec30a32e..ec135e4d3 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 @@ -18,8 +18,10 @@ export class AboutOverviewPageComponent implements OnDestroy, OnInit { public hasPermissionForStatistics: boolean; public hasPermissionForSubscription: boolean; public isLoggedIn: boolean; + public routerLinkBlog = ['/' + paths.blog]; public routerLinkFaq = ['/' + paths.faq]; public routerLinkFeatures = ['/' + paths.features]; + public routerLinkOpenStartup = ['/' + paths.openStartup]; public user: User; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.html b/apps/client/src/app/pages/about/overview/about-overview-page.html index 3891f929d..9a7dd142e 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.html +++ b/apps/client/src/app/pages/about/overview/about-overview-page.html @@ -23,7 +23,9 @@ > @if (hasPermissionForStatistics) { and we share aggregated - key metrics + key metrics of the platform’s performance } . The project has been initiated by @@ -160,7 +162,7 @@ class="py-4 w-100" color="primary" mat-flat-button - [routerLink]="['/blog']" + [routerLink]="routerLinkBlog" >Blog
    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 8328b7aba..e787cb0fc 100644 --- a/apps/client/src/app/pages/admin/admin-page.component.ts +++ b/apps/client/src/app/pages/admin/admin-page.component.ts @@ -27,27 +27,27 @@ export class AdminPageComponent implements OnDestroy, OnInit { { iconName: 'reader-outline', label: $localize`Overview`, - path: ['/' + paths.admin] + path: ['/' + paths.adminControl] }, { iconName: 'settings-outline', label: $localize`Settings`, - path: ['/' + paths.admin, paths.settings] + path: ['/' + paths.adminControl, paths.settings] }, { iconName: 'server-outline', label: $localize`Market Data`, - path: ['/' + paths.admin, paths.marketData] + path: ['/' + paths.adminControl, paths.marketData] }, { iconName: 'flash-outline', label: $localize`Job Queue`, - path: ['/' + paths.admin, paths.jobs] + path: ['/' + paths.adminControl, paths.jobs] }, { iconName: 'people-outline', label: $localize`Users`, - path: ['/' + paths.admin, paths.users] + path: ['/' + paths.adminControl, paths.users] } ]; } diff --git a/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts b/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts index 5dcb6e359..222a79648 100644 --- a/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts +++ b/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -11,6 +11,7 @@ import { RouterModule } from '@angular/router'; templateUrl: './hallo-ghostfolio-page.html' }) export class HalloGhostfolioPageComponent { + public routerLinkBlog = ['/' + paths.blog]; public routerLinkPricing = ['/' + paths.pricing]; public routerLinkResources = ['/' + paths.resources]; } diff --git a/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html b/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html index e0364f747..28e30d16b 100644 --- a/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html +++ b/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -201,7 +201,7 @@