Browse Source

Merge branch 'main' into refactor/portfolio-filter-component

pull/5618/head
Thomas Kaul 1 month ago
committed by GitHub
parent
commit
c617156187
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 41
      CHANGELOG.md
  2. 2
      apps/api/src/app/endpoints/sitemap/sitemap.service.ts
  3. 1
      apps/api/src/app/portfolio/portfolio.controller.ts
  4. 10
      apps/api/src/app/portfolio/portfolio.service.ts
  5. 4
      apps/api/src/app/user/update-user-setting.dto.ts
  6. 5
      apps/api/src/app/user/user.service.ts
  7. 7
      apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts
  8. 2
      apps/client/src/app/app-routing.module.ts
  9. 10
      apps/client/src/app/components/admin-jobs/admin-jobs.component.ts
  10. 58
      apps/client/src/app/components/admin-jobs/admin-jobs.html
  11. 4
      apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
  12. 9
      apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts
  13. 9
      apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
  14. 2
      apps/client/src/app/components/home-market/home-market.component.ts
  15. 4
      apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.component.ts
  16. 8
      apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html
  17. 23
      apps/client/src/app/components/home-watchlist/home-watchlist.component.ts
  18. 4
      apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts
  19. 4
      apps/client/src/app/components/user-account-access/user-account-access.component.ts
  20. 9
      apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html
  21. 8
      apps/client/src/app/pages/home/home-page.routes.ts
  22. 4
      apps/client/src/app/pages/markets/markets-page.component.ts
  23. 22
      apps/client/src/app/pages/open/open-page-routing.module.ts
  24. 20
      apps/client/src/app/pages/open/open-page.component.ts
  25. 20
      apps/client/src/app/pages/open/open-page.module.ts
  26. 15
      apps/client/src/app/pages/open/open-page.routes.ts
  27. 72
      apps/client/src/app/pages/portfolio/activities/activities-page.component.ts
  28. 4
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts
  29. 8
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
  30. 26
      apps/client/src/app/pages/portfolio/fire/fire-page.component.ts
  31. 43
      apps/client/src/app/pages/portfolio/fire/fire-page.html
  32. 9
      apps/client/src/app/pipes/symbol/symbol.module.ts
  33. 5
      apps/client/src/app/pipes/symbol/symbol.pipe.ts
  34. 84
      apps/client/src/app/services/data.service.ts
  35. 122
      apps/client/src/locales/messages.ca.xlf
  36. 122
      apps/client/src/locales/messages.de.xlf
  37. 122
      apps/client/src/locales/messages.es.xlf
  38. 122
      apps/client/src/locales/messages.fr.xlf
  39. 122
      apps/client/src/locales/messages.it.xlf
  40. 122
      apps/client/src/locales/messages.nl.xlf
  41. 122
      apps/client/src/locales/messages.pl.xlf
  42. 122
      apps/client/src/locales/messages.pt.xlf
  43. 122
      apps/client/src/locales/messages.tr.xlf
  44. 122
      apps/client/src/locales/messages.uk.xlf
  45. 114
      apps/client/src/locales/messages.xlf
  46. 122
      apps/client/src/locales/messages.zh.xlf
  47. 6
      apps/client/src/styles/table.scss
  48. 6
      libs/common/src/lib/chart-helper.ts
  49. 3
      libs/common/src/lib/interfaces/fire-wealth.interface.ts
  50. 2
      libs/common/src/lib/interfaces/index.ts
  51. 3
      libs/common/src/lib/interfaces/portfolio-summary.interface.ts
  52. 1
      libs/common/src/lib/interfaces/user-settings.interface.ts
  53. 10
      libs/ui/src/lib/accounts-table/accounts-table.component.scss
  54. 4
      libs/ui/src/lib/activities-filter/activities-filter.component.ts
  55. 4
      libs/ui/src/lib/activities-table/activities-table.component.html
  56. 4
      libs/ui/src/lib/activities-table/activities-table.component.ts
  57. 4
      libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.component.ts
  58. 5
      libs/ui/src/lib/assistant/assistant.component.ts
  59. 10
      libs/ui/src/lib/benchmark/benchmark.component.scss
  60. 1
      libs/ui/src/lib/fire-calculator/fire-calculator.component.html
  61. 2
      libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
  62. 10
      libs/ui/src/lib/holdings-table/holdings-table.component.scss
  63. 4
      libs/ui/src/lib/holdings-table/holdings-table.component.ts
  64. 5
      libs/ui/src/lib/line-chart/line-chart.component.ts
  65. 4
      libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts
  66. 4
      libs/ui/src/lib/top-holdings/top-holdings.component.ts
  67. 104
      package-lock.json
  68. 8
      package.json

41
CHANGELOG.md

@ -7,8 +7,49 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
### Changed
- Improved the usability of the _Cancel_ / _Close_ buttons in the create watchlist item dialog
- Refactored the `fireWealth` from `number` type to a structured object in the summary of the portfolio details endpoint
- Refactored the _Open Startup_ (`/open`) page to standalone
- Refactored the symbol pipe to standalone
### Fixed
- Handled an exception in the get asset profile functionality of the _Financial Modeling Prep_ service
## 2.205.0 - 2025-10-01
### Changed
- Restricted the selection of the retirement date picker in the _FIRE_ calculator to a future date
- Improved the support for mutual funds in the _Financial Modeling Prep_ service (get asset profiles)
- Improved the language localization for German (`de`)
- Upgraded `prisma` from version `6.16.1` to `6.16.3`
## 2.204.0 - 2025-09-30
### Added
- Added the safe withdrawal rate to the user settings (experimental)
### Changed
- Improved the number formatting of the y-axis labels in the investment chart component
- Localized the number formatting of the y-axis labels in the line chart component
- Improved the wording of the 4% rule in the _FIRE_ section
- Improved the usability of the create asset profile dialog in the market data section of the admin control panel
- Improved the language localization for German (`de`)
### Fixed
- Improved the table headers’ alignment of the activities table
## 2.203.0 - 2025-09-27
### Added
- Added support for column sorting to the queue jobs table in the admin control panel
- Added a blog post: _Hacktoberfest 2025_
### Changed

2
apps/api/src/app/endpoints/sitemap/sitemap.service.ts

@ -124,7 +124,7 @@ export class SitemapService {
languageCode,
rootUrl,
route: {
routerLink: ['blog', ...routerLink],
routerLink: [publicRoutes.blog.path, ...routerLink],
path: undefined
}
});

1
apps/api/src/app/portfolio/portfolio.controller.ts

@ -195,7 +195,6 @@ export class PortfolioController {
'excludedAccountsAndActivities',
'fees',
'filteredValueInBaseCurrency',
'fireWealth',
'grossPerformance',
'grossPerformanceWithCurrencyEffect',
'interest',

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

@ -2092,9 +2092,13 @@ export class PortfolioService {
filteredValueInPercentage: netWorth
? filteredValueInBaseCurrency.div(netWorth).toNumber()
: undefined,
fireWealth: new Big(currentValueInBaseCurrency)
.minus(emergencyFundHoldingsValueInBaseCurrency)
.toNumber(),
fireWealth: {
today: {
valueInBaseCurrency: new Big(currentValueInBaseCurrency)
.minus(emergencyFundHoldingsValueInBaseCurrency)
.toNumber()
}
},
grossPerformance: new Big(netPerformance).plus(fees).toNumber(),
grossPerformanceWithCurrencyEffect: new Big(
netPerformanceWithCurrencyEffect

4
apps/api/src/app/user/update-user-setting.dto.ts

@ -104,6 +104,10 @@ export class UpdateUserSettingDto {
@IsOptional()
retirementDate?: string;
@IsNumber()
@IsOptional()
safeWithdrawalRate?: number;
@IsNumber()
@IsOptional()
savingsRate?: number;

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

@ -265,6 +265,11 @@ export class UserService {
PerformanceCalculationType.ROAI;
}
// Set default value for safe withdrawal rate
if (!(user.settings.settings as UserSettings)?.safeWithdrawalRate) {
(user.settings.settings as UserSettings).safeWithdrawalRate = 0.04;
}
// Set default value for view mode
if (!(user.settings.settings as UserSettings).viewMode) {
(user.settings.settings as UserSettings).viewMode = 'DEFAULT';

7
apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts

@ -106,7 +106,10 @@ export class FinancialModelingPrepService implements DataProviderInterface {
response.assetClass = assetClass;
response.assetSubClass = assetSubClass;
if (assetSubClass === AssetSubClass.ETF) {
if (
assetSubClass === AssetSubClass.ETF ||
assetSubClass === AssetSubClass.MUTUALFUND
) {
const etfCountryWeightings = await fetch(
`${this.getUrl({ version: 'stable' })}/etf/country-weightings?symbol=${symbol}&apikey=${this.apiKey}`,
{
@ -158,7 +161,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
}
).then((res) => res.json());
if (etfInformation.website) {
if (etfInformation?.website) {
response.url = etfInformation.website;
}

2
apps/client/src/app/app-routing.module.ts

@ -94,7 +94,7 @@ const routes: Routes = [
{
path: publicRoutes.openStartup.path,
loadChildren: () =>
import('./pages/open/open-page.module').then((m) => m.OpenPageModule)
import('./pages/open/open-page.routes').then((m) => m.routes)
},
{
path: internalRoutes.portfolio.path,

10
apps/client/src/app/components/admin-jobs/admin-jobs.component.ts

@ -16,7 +16,8 @@ import {
ChangeDetectorRef,
Component,
OnDestroy,
OnInit
OnInit,
ViewChild
} from '@angular/core';
import {
FormBuilder,
@ -27,6 +28,7 @@ import {
import { MatButtonModule } from '@angular/material/button';
import { MatMenuModule } from '@angular/material/menu';
import { MatSelectModule } from '@angular/material/select';
import { MatSort, MatSortModule } from '@angular/material/sort';
import { MatTableDataSource, MatTableModule } from '@angular/material/table';
import { IonIcon } from '@ionic/angular/standalone';
import { JobStatus } from 'bull';
@ -44,6 +46,7 @@ import {
removeCircleOutline,
timeOutline
} from 'ionicons/icons';
import { get } from 'lodash';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
@ -57,6 +60,7 @@ import { takeUntil } from 'rxjs/operators';
MatButtonModule,
MatMenuModule,
MatSelectModule,
MatSortModule,
MatTableModule,
NgxSkeletonLoaderModule,
ReactiveFormsModule
@ -66,6 +70,8 @@ import { takeUntil } from 'rxjs/operators';
templateUrl: './admin-jobs.html'
})
export class GfAdminJobsComponent implements OnDestroy, OnInit {
@ViewChild(MatSort) sort: MatSort;
public DATA_GATHERING_QUEUE_PRIORITY_LOW = DATA_GATHERING_QUEUE_PRIORITY_LOW;
public DATA_GATHERING_QUEUE_PRIORITY_HIGH =
DATA_GATHERING_QUEUE_PRIORITY_HIGH;
@ -196,6 +202,8 @@ export class GfAdminJobsComponent implements OnDestroy, OnInit {
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe(({ jobs }) => {
this.dataSource = new MatTableDataSource(jobs);
this.dataSource.sort = this.sort;
this.dataSource.sortingDataAccessor = get;
this.isLoading = false;

58
apps/client/src/app/components/admin-jobs/admin-jobs.html

@ -16,9 +16,21 @@
</mat-select>
</mat-form-field>
</form>
<table class="gf-table w-100" mat-table [dataSource]="dataSource">
<table
class="gf-table w-100"
mat-table
matSort
matSortActive="created"
matSortDirection="desc"
[dataSource]="dataSource"
>
<ng-container matColumnDef="index">
<th *matHeaderCellDef class="px-1 py-2 text-right" mat-header-cell>
<th
*matHeaderCellDef
class="px-1 py-2 text-right"
mat-header-cell
mat-sort-header="id"
>
<ng-container i18n>Job ID</ng-container>
</th>
<td *matCellDef="let element" class="px-1 py-2 text-right" mat-cell>
@ -27,7 +39,12 @@
</ng-container>
<ng-container matColumnDef="type">
<th *matHeaderCellDef class="px-1 py-2" mat-header-cell>
<th
*matHeaderCellDef
class="px-1 py-2"
mat-header-cell
mat-sort-header="name"
>
<ng-container i18n>Type</ng-container>
</th>
<td *matCellDef="let element" class="px-1 py-2" mat-cell>
@ -42,7 +59,12 @@
</ng-container>
<ng-container matColumnDef="symbol">
<th *matHeaderCellDef class="px-1 py-2" mat-header-cell>
<th
*matHeaderCellDef
class="px-1 py-2"
mat-header-cell
mat-sort-header="data.symbol"
>
<ng-container i18n>Symbol</ng-container>
</th>
<td *matCellDef="let element" class="px-1 py-2" mat-cell>
@ -51,7 +73,12 @@
</ng-container>
<ng-container matColumnDef="dataSource">
<th *matHeaderCellDef class="px-1 py-2" mat-header-cell>
<th
*matHeaderCellDef
class="px-1 py-2"
mat-header-cell
mat-sort-header="data.dataSource"
>
<ng-container i18n>Data Source</ng-container>
</th>
<td *matCellDef="let element" class="px-1 py-2" mat-cell>
@ -60,7 +87,12 @@
</ng-container>
<ng-container matColumnDef="priority">
<th *matHeaderCellDef class="px-1 py-2" mat-header-cell>
<th
*matHeaderCellDef
class="px-1 py-2"
mat-header-cell
mat-sort-header="opts.priority"
>
<ng-container i18n>Priority</ng-container>
</th>
<td *matCellDef="let element" class="px-1 py-2" mat-cell>
@ -79,7 +111,12 @@
</ng-container>
<ng-container matColumnDef="attempts">
<th *matHeaderCellDef class="px-1 py-2 text-right" mat-header-cell>
<th
*matHeaderCellDef
class="px-1 py-2 text-right"
mat-header-cell
mat-sort-header="attemptsMade"
>
<ng-container i18n>Attempts</ng-container>
</th>
<td *matCellDef="let element" class="px-1 py-2 text-right" mat-cell>
@ -88,7 +125,12 @@
</ng-container>
<ng-container matColumnDef="created">
<th *matHeaderCellDef class="px-1 py-2" mat-header-cell>
<th
*matHeaderCellDef
class="px-1 py-2"
mat-header-cell
mat-sort-header="timestamp"
>
<ng-container i18n>Created</ng-container>
</th>
<td *matCellDef="let element" class="px-1 py-2" mat-cell>

4
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts

@ -1,4 +1,4 @@
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
import { GfSymbolPipe } from '@ghostfolio/client/pipes/symbol/symbol.pipe';
import { AdminService } from '@ghostfolio/client/services/admin.service';
import { DataService } from '@ghostfolio/client/services/data.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
@ -79,7 +79,7 @@ import { CreateAssetProfileDialogParams } from './create-asset-profile-dialog/in
CommonModule,
GfActivitiesFilterComponent,
GfPremiumIndicatorComponent,
GfSymbolModule,
GfSymbolPipe,
GfValueComponent,
IonIcon,
MatButtonModule,

9
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts

@ -55,6 +55,7 @@ import { CreateAssetProfileDialogMode } from './interfaces/interfaces';
})
export class GfCreateAssetProfileDialogComponent implements OnInit, OnDestroy {
public createAssetProfileForm: FormGroup;
public ghostfolioPrefix = `${ghostfolioPrefix}_`;
public mode: CreateAssetProfileDialogMode;
private customCurrencies: string[];
@ -77,9 +78,7 @@ export class GfCreateAssetProfileDialogComponent implements OnInit, OnDestroy {
addCurrency: new FormControl(null, [
this.iso4217CurrencyCodeValidator()
]),
addSymbol: new FormControl(`${ghostfolioPrefix}_`, [
Validators.required
]),
addSymbol: new FormControl(null, [Validators.required]),
searchSymbol: new FormControl(null, [Validators.required])
},
{
@ -95,6 +94,8 @@ export class GfCreateAssetProfileDialogComponent implements OnInit, OnDestroy {
}
public onRadioChange(mode: CreateAssetProfileDialogMode) {
this.createAssetProfileForm.reset();
this.mode = mode;
}
@ -133,7 +134,7 @@ export class GfCreateAssetProfileDialogComponent implements OnInit, OnDestroy {
} else if (this.mode === 'manual') {
this.dialogRef.close({
dataSource: 'MANUAL',
symbol: this.createAssetProfileForm.get('addSymbol').value
symbol: `${this.ghostfolioPrefix}${this.createAssetProfileForm.get('addSymbol').value}`
});
}
}

9
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html

@ -38,6 +38,7 @@
<mat-form-field appearance="outline" class="w-100">
<mat-label i18n>Symbol</mat-label>
<input formControlName="addSymbol" matInput />
<span matTextPrefix>{{ ghostfolioPrefix }}</span>
</mat-form-field>
</div>
} @else if (mode === 'currency') {
@ -53,7 +54,13 @@
}
</div>
<div class="d-flex justify-content-end" mat-dialog-actions>
<button i18n mat-button type="button" (click)="onCancel()">Cancel</button>
<button mat-button type="button" (click)="onCancel()">
@if (createAssetProfileForm.dirty) {
<ng-container i18n>Cancel</ng-container>
} @else {
<ng-container i18n>Close</ng-container>
}
</button>
<button
color="primary"
mat-flat-button

2
apps/client/src/app/components/home-market/home-market.component.ts

@ -35,7 +35,7 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['./home-market.scss'],
templateUrl: './home-market.html'
})
export class HomeMarketComponent implements OnDestroy, OnInit {
export class GfHomeMarketComponent implements OnDestroy, OnInit {
public benchmarks: Benchmark[];
public deviceType: string;
public fearAndGreedIndex: number;

4
apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.component.ts

@ -36,13 +36,13 @@ import { Subject } from 'rxjs';
styleUrls: ['./create-watchlist-item-dialog.component.scss'],
templateUrl: 'create-watchlist-item-dialog.html'
})
export class CreateWatchlistItemDialogComponent implements OnInit, OnDestroy {
export class GfCreateWatchlistItemDialogComponent implements OnInit, OnDestroy {
public createWatchlistItemForm: FormGroup;
private unsubscribeSubject = new Subject<void>();
public constructor(
public readonly dialogRef: MatDialogRef<CreateWatchlistItemDialogComponent>,
public readonly dialogRef: MatDialogRef<GfCreateWatchlistItemDialogComponent>,
public readonly formBuilder: FormBuilder
) {}

8
apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html

@ -12,7 +12,13 @@
</mat-form-field>
</div>
<div class="d-flex justify-content-end" mat-dialog-actions>
<button i18n mat-button type="button" (click)="onCancel()">Cancel</button>
<button mat-button type="button" (click)="onCancel()">
@if (createWatchlistItemForm.dirty) {
<ng-container i18n>Cancel</ng-container>
} @else {
<ng-container i18n>Close</ng-container>
}
</button>
<button
color="primary"
mat-flat-button

23
apps/client/src/app/components/home-watchlist/home-watchlist.component.ts

@ -28,7 +28,7 @@ import { DeviceDetectorService } from 'ngx-device-detector';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { CreateWatchlistItemDialogComponent } from './create-watchlist-item-dialog/create-watchlist-item-dialog.component';
import { GfCreateWatchlistItemDialogComponent } from './create-watchlist-item-dialog/create-watchlist-item-dialog.component';
import { CreateWatchlistItemDialogParams } from './create-watchlist-item-dialog/interfaces/interfaces';
@Component({
@ -45,7 +45,7 @@ import { CreateWatchlistItemDialogParams } from './create-watchlist-item-dialog/
styleUrls: ['./home-watchlist.scss'],
templateUrl: './home-watchlist.html'
})
export class HomeWatchlistComponent implements OnDestroy, OnInit {
export class GfHomeWatchlistComponent implements OnDestroy, OnInit {
public deviceType: string;
public hasImpersonationId: boolean;
public hasPermissionToCreateWatchlistItem: boolean;
@ -149,14 +149,17 @@ export class HomeWatchlistComponent implements OnDestroy, OnInit {
.subscribe((user) => {
this.user = user;
const dialogRef = this.dialog.open(CreateWatchlistItemDialogComponent, {
autoFocus: false,
data: {
deviceType: this.deviceType,
locale: this.user?.settings?.locale
} as CreateWatchlistItemDialogParams,
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
});
const dialogRef = this.dialog.open(
GfCreateWatchlistItemDialogComponent,
{
autoFocus: false,
data: {
deviceType: this.deviceType,
locale: this.user?.settings?.locale
} as CreateWatchlistItemDialogParams,
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}
);
dialogRef
.afterClosed()

4
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts

@ -47,7 +47,7 @@ import { CreateOrUpdateAccessDialogParams } from './interfaces/interfaces';
styleUrls: ['./create-or-update-access-dialog.scss'],
templateUrl: 'create-or-update-access-dialog.html'
})
export class GfCreateOrUpdateAccessDialog implements OnDestroy {
export class GfCreateOrUpdateAccessDialogComponent implements OnDestroy {
public accessForm: FormGroup;
private unsubscribeSubject = new Subject<void>();
@ -55,7 +55,7 @@ export class GfCreateOrUpdateAccessDialog implements OnDestroy {
public constructor(
private changeDetectorRef: ChangeDetectorRef,
@Inject(MAT_DIALOG_DATA) private data: CreateOrUpdateAccessDialogParams,
public dialogRef: MatDialogRef<GfCreateOrUpdateAccessDialog>,
public dialogRef: MatDialogRef<GfCreateOrUpdateAccessDialogComponent>,
private dataService: DataService,
private formBuilder: FormBuilder,
private notificationService: NotificationService

4
apps/client/src/app/components/user-account-access/user-account-access.component.ts

@ -30,7 +30,7 @@ import { DeviceDetectorService } from 'ngx-device-detector';
import { EMPTY, Subject } from 'rxjs';
import { catchError, takeUntil } from 'rxjs/operators';
import { GfCreateOrUpdateAccessDialog } from './create-or-update-access-dialog/create-or-update-access-dialog.component';
import { GfCreateOrUpdateAccessDialogComponent } from './create-or-update-access-dialog/create-or-update-access-dialog.component';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
@ -179,7 +179,7 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
}
private openCreateAccessDialog() {
const dialogRef = this.dialog.open(GfCreateOrUpdateAccessDialog, {
const dialogRef = this.dialog.open(GfCreateOrUpdateAccessDialogComponent, {
data: {
access: {
alias: '',

9
apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html

@ -19,10 +19,9 @@
time and <a [routerLink]="routerLinkAbout">we</a> are looking
forward to meeting new open-source contributors along the way. Every
year in October, Hacktoberfest celebrates open source by
highlighting projects, maintainers, and contributors worldwide. Open
source maintainers around the globe dedicate extra time to support
new contributors while guiding them through their first pull
requests on
highlighting projects, maintainers, and contributors from around the
globe. Open source maintainers dedicate extra time to support new
contributors while guiding them through their first pull requests on
<a href="https://github.com/ghostfolio/ghostfolio">GitHub</a>.
</p>
</section>
@ -50,7 +49,7 @@
<p>
With over 200 contributors, the OSS project is used daily by a
growing global community. Ghostfolio counts more than
<a [routerLink]="routerLinkOpenStartup">6’600 stars on GitHub</a>
<a [routerLink]="routerLinkOpenStartup">6’500 stars on GitHub</a>
and
<a [routerLink]="routerLinkOpenStartup"
>1’600’000+ pulls on Docker Hub</a

8
apps/client/src/app/pages/home/home-page.routes.ts

@ -1,8 +1,8 @@
import { GfHomeHoldingsComponent } from '@ghostfolio/client/components/home-holdings/home-holdings.component';
import { HomeMarketComponent } from '@ghostfolio/client/components/home-market/home-market.component';
import { GfHomeMarketComponent } from '@ghostfolio/client/components/home-market/home-market.component';
import { GfHomeOverviewComponent } from '@ghostfolio/client/components/home-overview/home-overview.component';
import { GfHomeSummaryComponent } from '@ghostfolio/client/components/home-summary/home-summary.component';
import { HomeWatchlistComponent } from '@ghostfolio/client/components/home-watchlist/home-watchlist.component';
import { GfHomeWatchlistComponent } from '@ghostfolio/client/components/home-watchlist/home-watchlist.component';
import { MarketsComponent } from '@ghostfolio/client/components/markets/markets.component';
import { AuthGuard } from '@ghostfolio/client/core/auth.guard';
import { internalRoutes } from '@ghostfolio/common/routes/routes';
@ -31,7 +31,7 @@ export const routes: Routes = [
},
{
path: internalRoutes.home.subRoutes.markets.path,
component: HomeMarketComponent,
component: GfHomeMarketComponent,
title: internalRoutes.home.subRoutes.markets.title
},
{
@ -41,7 +41,7 @@ export const routes: Routes = [
},
{
path: internalRoutes.home.subRoutes.watchlist.path,
component: HomeWatchlistComponent,
component: GfHomeWatchlistComponent,
title: internalRoutes.home.subRoutes.watchlist.title
}
],

4
apps/client/src/app/pages/markets/markets-page.component.ts

@ -1,4 +1,4 @@
import { HomeMarketComponent } from '@ghostfolio/client/components/home-market/home-market.component';
import { GfHomeMarketComponent } from '@ghostfolio/client/components/home-market/home-market.component';
import { CommonModule } from '@angular/common';
import { Component, OnDestroy } from '@angular/core';
@ -6,7 +6,7 @@ import { Subject } from 'rxjs';
@Component({
host: { class: 'page' },
imports: [CommonModule, HomeMarketComponent],
imports: [CommonModule, GfHomeMarketComponent],
selector: 'gf-markets-page',
styleUrls: ['./markets-page.scss'],
templateUrl: './markets-page.html'

22
apps/client/src/app/pages/open/open-page-routing.module.ts

@ -1,22 +0,0 @@
import { AuthGuard } from '@ghostfolio/client/core/auth.guard';
import { publicRoutes } from '@ghostfolio/common/routes/routes';
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { OpenPageComponent } from './open-page.component';
const routes: Routes = [
{
canActivate: [AuthGuard],
component: OpenPageComponent,
path: '',
title: publicRoutes.openStartup.title
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class OpenPageRoutingModule {}

20
apps/client/src/app/pages/open/open-page.component.ts

@ -1,18 +1,28 @@
import { DataService } from '@ghostfolio/client/services/data.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import { Statistics, User } from '@ghostfolio/common/interfaces';
import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';
import { GfValueComponent } from '@ghostfolio/ui/value';
import { CommonModule } from '@angular/common';
import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
OnDestroy,
OnInit
} from '@angular/core';
import { MatCardModule } from '@angular/material/card';
import { Subject, takeUntil } from 'rxjs';
@Component({
host: { class: 'page' },
imports: [CommonModule, GfValueComponent, MatCardModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
selector: 'gf-open-page',
styleUrls: ['./open-page.scss'],
templateUrl: './open-page.html',
standalone: false
templateUrl: './open-page.html'
})
export class OpenPageComponent implements OnDestroy, OnInit {
export class GfOpenPageComponent implements OnDestroy, OnInit {
public statistics: Statistics;
public user: User;

20
apps/client/src/app/pages/open/open-page.module.ts

@ -1,20 +0,0 @@
import { GfValueComponent } from '@ghostfolio/ui/value';
import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { MatCardModule } from '@angular/material/card';
import { OpenPageRoutingModule } from './open-page-routing.module';
import { OpenPageComponent } from './open-page.component';
@NgModule({
declarations: [OpenPageComponent],
imports: [
CommonModule,
GfValueComponent,
MatCardModule,
OpenPageRoutingModule
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class OpenPageModule {}

15
apps/client/src/app/pages/open/open-page.routes.ts

@ -0,0 +1,15 @@
import { AuthGuard } from '@ghostfolio/client/core/auth.guard';
import { publicRoutes } from '@ghostfolio/common/routes/routes';
import { Routes } from '@angular/router';
import { GfOpenPageComponent } from './open-page.component';
export const routes: Routes = [
{
canActivate: [AuthGuard],
component: GfOpenPageComponent,
path: '',
title: publicRoutes.openStartup.title
}
];

72
apps/client/src/app/pages/portfolio/activities/activities-page.component.ts

@ -27,8 +27,8 @@ import { DeviceDetectorService } from 'ngx-device-detector';
import { Subject, Subscription } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { GfCreateOrUpdateActivityDialog } from './create-or-update-activity-dialog/create-or-update-activity-dialog.component';
import { GfImportActivitiesDialog } from './import-activities-dialog/import-activities-dialog.component';
import { GfCreateOrUpdateActivityDialogComponent } from './create-or-update-activity-dialog/create-or-update-activity-dialog.component';
import { GfImportActivitiesDialogComponent } from './import-activities-dialog/import-activities-dialog.component';
import { ImportActivitiesDialogParams } from './import-activities-dialog/interfaces/interfaces';
@Component({
@ -245,7 +245,7 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
}
public onImport() {
const dialogRef = this.dialog.open(GfImportActivitiesDialog, {
const dialogRef = this.dialog.open(GfImportActivitiesDialogComponent, {
data: {
deviceType: this.deviceType,
user: this.user
@ -268,7 +268,7 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
}
public onImportDividends() {
const dialogRef = this.dialog.open(GfImportActivitiesDialog, {
const dialogRef = this.dialog.open(GfImportActivitiesDialogComponent, {
data: {
activityTypes: ['DIVIDEND'],
deviceType: this.deviceType,
@ -305,24 +305,27 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
});
}
public openUpdateActivityDialog(activity: Activity) {
const dialogRef = this.dialog.open(GfCreateOrUpdateActivityDialog, {
data: {
activity,
accounts: this.user?.accounts,
user: this.user
},
height: this.deviceType === 'mobile' ? '98vh' : '80vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
});
public openUpdateActivityDialog(aActivity: Activity) {
const dialogRef = this.dialog.open(
GfCreateOrUpdateActivityDialogComponent,
{
data: {
activity: aActivity,
accounts: this.user?.accounts,
user: this.user
},
height: this.deviceType === 'mobile' ? '98vh' : '80vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}
);
dialogRef
.afterClosed()
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe((transaction: UpdateOrderDto | null) => {
if (transaction) {
.subscribe((activity: UpdateOrderDto) => {
if (activity) {
this.dataService
.putOrder(transaction)
.putOrder(activity)
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe({
next: () => {
@ -347,23 +350,26 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
.subscribe((user) => {
this.updateUser(user);
const dialogRef = this.dialog.open(GfCreateOrUpdateActivityDialog, {
data: {
accounts: this.user?.accounts,
activity: {
...aActivity,
accountId: aActivity?.accountId,
date: new Date(),
id: null,
fee: 0,
type: aActivity?.type ?? 'BUY',
unitPrice: null
const dialogRef = this.dialog.open(
GfCreateOrUpdateActivityDialogComponent,
{
data: {
accounts: this.user?.accounts,
activity: {
...aActivity,
accountId: aActivity?.accountId,
date: new Date(),
id: null,
fee: 0,
type: aActivity?.type ?? 'BUY',
unitPrice: null
},
user: this.user
},
user: this.user
},
height: this.deviceType === 'mobile' ? '98vh' : '80vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
});
height: this.deviceType === 'mobile' ? '98vh' : '80vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}
);
dialogRef
.afterClosed()

4
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts

@ -76,7 +76,7 @@ import { ActivityType } from './types/activity-type.type';
styleUrls: ['./create-or-update-activity-dialog.scss'],
templateUrl: 'create-or-update-activity-dialog.html'
})
export class GfCreateOrUpdateActivityDialog implements OnDestroy {
export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
public activityForm: FormGroup;
public assetClassOptions: AssetClassSelectorOption[] = Object.keys(AssetClass)
@ -110,7 +110,7 @@ export class GfCreateOrUpdateActivityDialog implements OnDestroy {
@Inject(MAT_DIALOG_DATA) public data: CreateOrUpdateActivityDialogParams,
private dataService: DataService,
private dateAdapter: DateAdapter<any>,
public dialogRef: MatDialogRef<GfCreateOrUpdateActivityDialog>,
public dialogRef: MatDialogRef<GfCreateOrUpdateActivityDialogComponent>,
private formBuilder: FormBuilder,
@Inject(MAT_DATE_LOCALE) private locale: string,
private userService: UserService

8
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts

@ -5,7 +5,7 @@ import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interf
import { GfDialogFooterComponent } from '@ghostfolio/client/components/dialog-footer/dialog-footer.component';
import { GfDialogHeaderComponent } from '@ghostfolio/client/components/dialog-header/dialog-header.component';
import { GfFileDropModule } from '@ghostfolio/client/directives/file-drop/file-drop.module';
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
import { GfSymbolPipe } from '@ghostfolio/client/pipes/symbol/symbol.pipe';
import { DataService } from '@ghostfolio/client/services/data.service';
import { ImportActivitiesService } from '@ghostfolio/client/services/import-activities.service';
import { PortfolioPosition } from '@ghostfolio/common/interfaces';
@ -63,7 +63,7 @@ import { ImportActivitiesDialogParams } from './interfaces/interfaces';
GfDialogFooterComponent,
GfDialogHeaderComponent,
GfFileDropModule,
GfSymbolModule,
GfSymbolPipe,
IonIcon,
MatButtonModule,
MatDialogModule,
@ -78,7 +78,7 @@ import { ImportActivitiesDialogParams } from './interfaces/interfaces';
styleUrls: ['./import-activities-dialog.scss'],
templateUrl: 'import-activities-dialog.html'
})
export class GfImportActivitiesDialog implements OnDestroy {
export class GfImportActivitiesDialogComponent implements OnDestroy {
public accounts: CreateAccountWithBalancesDto[] = [];
public activities: Activity[] = [];
public assetProfileForm: FormGroup;
@ -109,7 +109,7 @@ export class GfImportActivitiesDialog implements OnDestroy {
private dataService: DataService,
private deviceService: DeviceDetectorService,
private formBuilder: FormBuilder,
public dialogRef: MatDialogRef<GfImportActivitiesDialog>,
public dialogRef: MatDialogRef<GfImportActivitiesDialogComponent>,
private importActivitiesService: ImportActivitiesService,
private snackBar: MatSnackBar
) {

26
apps/client/src/app/pages/portfolio/fire/fire-page.component.ts

@ -1,7 +1,7 @@
import { DataService } from '@ghostfolio/client/services/data.service';
import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import { User } from '@ghostfolio/common/interfaces';
import { FireWealth, User } from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { GfFireCalculatorComponent } from '@ghostfolio/ui/fire-calculator';
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
@ -29,7 +29,7 @@ import { takeUntil } from 'rxjs/operators';
})
export class GfFirePageComponent implements OnDestroy, OnInit {
public deviceType: string;
public fireWealth: Big;
public fireWealth: FireWealth;
public hasImpersonationId: boolean;
public hasPermissionToUpdateUserSettings: boolean;
public isLoading = false;
@ -55,15 +55,25 @@ export class GfFirePageComponent implements OnDestroy, OnInit {
.fetchPortfolioDetails()
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe(({ summary }) => {
this.fireWealth = summary.fireWealth
? new Big(summary.fireWealth)
: new Big(0);
this.fireWealth = {
today: {
valueInBaseCurrency: summary.fireWealth
? summary.fireWealth.today.valueInBaseCurrency
: 0
}
};
if (this.user.subscription?.type === 'Basic') {
this.fireWealth = new Big(10000);
this.fireWealth = {
today: {
valueInBaseCurrency: 10000
}
};
}
this.withdrawalRatePerYear = this.fireWealth.mul(4).div(100);
this.withdrawalRatePerYear = Big(
this.fireWealth.today.valueInBaseCurrency
).mul(this.user.settings.safeWithdrawalRate);
this.withdrawalRatePerMonth = this.withdrawalRatePerYear.div(12);
this.isLoading = false;

43
apps/client/src/app/pages/portfolio/fire/fire-page.html

@ -14,7 +14,7 @@
[colorScheme]="user?.settings?.colorScheme"
[currency]="user?.settings?.baseCurrency"
[deviceType]="deviceType"
[fireWealth]="fireWealth?.toNumber()"
[fireWealth]="fireWealth?.today.valueInBaseCurrency"
[hasPermissionToUpdateUserSettings]="
!hasImpersonationId && hasPermissionToUpdateUserSettings
"
@ -37,7 +37,7 @@
</div>
<div>
<h4 class="align-items-center d-flex">
<span i18n>4% Rule</span>
<span i18n>Sustainable retirement income</span>
@if (user?.subscription?.type === 'Basic') {
<gf-premium-indicator class="ml-1" />
}
@ -61,11 +61,11 @@
/>
</div>
} @else {
<div
i18n
[ngClass]="{ 'text-muted': user?.subscription?.type === 'Basic' }"
>
If you retire today, you would be able to withdraw
<div [ngClass]="{ 'text-muted': user?.subscription?.type === 'Basic' }">
<ng-container i18n
>If you retire today, you would be able to withdraw</ng-container
>
<ng-container>&nbsp;</ng-container>
<span class="font-weight-bold"
><gf-value
class="d-inline-block"
@ -74,9 +74,12 @@
[unit]="user?.settings?.baseCurrency"
[value]="withdrawalRatePerYear?.toNumber()"
/>
per year</span
<ng-container>&nbsp;</ng-container>
<ng-container i18n>per year</ng-container></span
>
or
<ng-container>&nbsp;</ng-container>
<ng-container i18n>or</ng-container>
<ng-container>&nbsp;</ng-container>
<span class="font-weight-bold"
><gf-value
class="d-inline-block"
@ -85,18 +88,32 @@
[unit]="user?.settings?.baseCurrency"
[value]="withdrawalRatePerMonth?.toNumber()"
/>
per month</span
>, based on your total assets of
<ng-container>&nbsp;</ng-container>
<ng-container i18n>per month</ng-container></span
><ng-container i18n>,</ng-container>
<ng-container>&nbsp;</ng-container>
<ng-container i18n>based on your total assets of</ng-container>
<ng-container>&nbsp;</ng-container>
<span class="font-weight-bold"
><gf-value
class="d-inline-block"
[isCurrency]="true"
[locale]="user?.settings?.locale"
[unit]="user?.settings?.baseCurrency"
[value]="fireWealth?.toNumber()"
[value]="fireWealth?.today.valueInBaseCurrency"
/>
</span>
and a withdrawal rate of 4%.
<ng-container>&nbsp;</ng-container>
<ng-container i18n>and a safe withdrawal rate (SWR) of</ng-container>
<ng-container>&nbsp;</ng-container>
<span class="font-weight-bold"
><gf-value
class="d-inline-block"
[isPercent]="true"
[locale]="user?.settings?.locale"
[precision]="1"
[value]="user?.settings?.safeWithdrawalRate" /></span
>.
</div>
}
</div>

9
apps/client/src/app/pipes/symbol/symbol.module.ts

@ -1,9 +0,0 @@
import { NgModule } from '@angular/core';
import { SymbolPipe } from './symbol.pipe';
@NgModule({
declarations: [SymbolPipe],
exports: [SymbolPipe]
})
export class GfSymbolModule {}

5
apps/client/src/app/pipes/symbol/symbol.pipe.ts

@ -3,10 +3,9 @@ import { prettifySymbol } from '@ghostfolio/common/helper';
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'gfSymbol',
standalone: false
name: 'gfSymbol'
})
export class SymbolPipe implements PipeTransform {
export class GfSymbolPipe implements PipeTransform {
public transform(aSymbol: string) {
return prettifySymbol(aSymbol);
}

84
apps/client/src/app/services/data.service.ts

@ -512,48 +512,6 @@ export class DataService {
);
}
public fetchSymbolItem({
dataSource,
includeHistoricalData,
symbol
}: {
dataSource: DataSource | string;
includeHistoricalData?: number;
symbol: string;
}) {
let params = new HttpParams();
if (includeHistoricalData) {
params = params.append('includeHistoricalData', includeHistoricalData);
}
return this.http.get<SymbolItem>(`/api/v1/symbol/${dataSource}/${symbol}`, {
params
});
}
public fetchSymbols({
includeIndices = false,
query
}: {
includeIndices?: boolean;
query: string;
}) {
let params = new HttpParams().set('query', query);
if (includeIndices) {
params = params.append('includeIndices', includeIndices);
}
return this.http
.get<LookupResponse>('/api/v1/symbol/lookup', { params })
.pipe(
map(({ items }) => {
return items;
})
);
}
public fetchPortfolioDetails({
filters,
withMarkets = false
@ -725,6 +683,48 @@ export class DataService {
);
}
public fetchSymbolItem({
dataSource,
includeHistoricalData,
symbol
}: {
dataSource: DataSource | string;
includeHistoricalData?: number;
symbol: string;
}) {
let params = new HttpParams();
if (includeHistoricalData) {
params = params.append('includeHistoricalData', includeHistoricalData);
}
return this.http.get<SymbolItem>(`/api/v1/symbol/${dataSource}/${symbol}`, {
params
});
}
public fetchSymbols({
includeIndices = false,
query
}: {
includeIndices?: boolean;
query: string;
}) {
let params = new HttpParams().set('query', query);
if (includeIndices) {
params = params.append('includeIndices', includeIndices);
}
return this.http
.get<LookupResponse>('/api/v1/symbol/lookup', { params })
.pipe(
map(({ items }) => {
return items;
})
);
}
public fetchTags() {
return this.http.get<Tag[]>('/api/v1/tags');
}

122
apps/client/src/locales/messages.ca.xlf

@ -647,7 +647,7 @@
<target state="translated">Tipus</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html</context>
@ -667,7 +667,7 @@
<target state="translated">Perfil d’Actiu</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">52</context>
</context-group>
</trans-unit>
<trans-unit id="8530249987193962636" datatype="html">
@ -675,7 +675,7 @@
<target state="translated">Dades Històriques de Mercat</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">37</context>
<context context-type="linenumber">54</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html</context>
@ -687,7 +687,7 @@
<target state="translated">Origen de les Dades</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">55</context>
<context context-type="linenumber">82</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -711,7 +711,7 @@
<target state="translated">Prioritat</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">64</context>
<context context-type="linenumber">96</context>
</context-group>
</trans-unit>
<trans-unit id="4467730511941715714" datatype="html">
@ -719,7 +719,7 @@
<target state="translated">Intents</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">83</context>
<context context-type="linenumber">120</context>
</context-group>
</trans-unit>
<trans-unit id="4207916966377787111" datatype="html">
@ -727,7 +727,7 @@
<target state="translated">Creat</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="340430316261570792" datatype="html">
@ -735,7 +735,7 @@
<target state="translated">Finalitzat</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">101</context>
<context context-type="linenumber">143</context>
</context-group>
</trans-unit>
<trans-unit id="5611592591303869712" datatype="html">
@ -743,7 +743,7 @@
<target state="translated">Estat</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">152</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
@ -763,7 +763,7 @@
<target state="translated">Aturar Processos</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">151</context>
<context context-type="linenumber">193</context>
</context-group>
</trans-unit>
<trans-unit id="2505231537574917205" datatype="html">
@ -771,7 +771,7 @@
<target state="translated">Veure les Dades</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">166</context>
<context context-type="linenumber">208</context>
</context-group>
</trans-unit>
<trans-unit id="267346373699222750" datatype="html">
@ -779,7 +779,7 @@
<target state="translated">Veure Stacktrace</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">173</context>
<context context-type="linenumber">215</context>
</context-group>
</trans-unit>
<trans-unit id="8871342657187208008" datatype="html">
@ -787,7 +787,7 @@
<target state="translated">Executar Procés</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">176</context>
<context context-type="linenumber">218</context>
</context-group>
</trans-unit>
<trans-unit id="8746056757774292739" datatype="html">
@ -795,7 +795,7 @@
<target state="translated">Suprimir Procés</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">222</context>
</context-group>
</trans-unit>
<trans-unit id="6293078117617468574" datatype="html">
@ -1965,6 +1965,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
<context context-type="linenumber">97</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">81</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">31</context>
@ -2405,6 +2409,10 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-membership/user-account-membership.html</context>
<context context-type="linenumber">32</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">283</context>
@ -3065,6 +3073,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html</context>
<context context-type="linenumber">168</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html</context>
<context context-type="linenumber">189</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context>
@ -3755,6 +3767,14 @@
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="70768492340592330" datatype="html">
<source>and a safe withdrawal rate (SWR) of</source>
<target state="new">and a safe withdrawal rate (SWR) of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="6099700884541852399" datatype="html">
<source>New Users</source>
<target state="translated">Usuaris nous</target>
@ -3776,7 +3796,7 @@
<target state="new">Job ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="364346912677324803" datatype="html">
@ -4463,22 +4483,6 @@
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="194226838811208599" datatype="html">
<source>4% Rule</source>
<target state="translated">4% Regla</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="637740912956205466" datatype="html">
<source>If you retire today, you would be able to withdraw <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per year<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> or <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per month<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, based on your total assets of <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> and a withdrawal rate of 4%.</source>
<target state="new">If you retire today, you would be able to withdraw <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per year<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> or <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per month<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, based on your total assets of <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> and a withdrawal rate of 4%.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="5080775557941296581" datatype="html">
<source>Pricing</source>
<target state="translated">Preus</target>
@ -4711,6 +4715,14 @@
<context context-type="linenumber">234</context>
</context-group>
</trans-unit>
<trans-unit id="2003818202621229370" datatype="html">
<source>Sustainable retirement income</source>
<target state="new">Sustainable retirement income</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="201073452973037511" datatype="html">
<source>Ghostfolio empowers you to keep track of your wealth.</source>
<target state="translated">Ghostfolio us permet fer un seguiment de la vostra riquesa.</target>
@ -4868,6 +4880,14 @@
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="4905798562247431262" datatype="html">
<source>per month</source>
<target state="new">per month</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="4909535316439940790" datatype="html">
<source>Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> comparison table</source>
<target state="translated">Taula comparativa Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/></target>
@ -5328,6 +5348,14 @@
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="3302046820145091217" datatype="html">
<source>,</source>
<target state="new">,</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">93</context>
</context-group>
</trans-unit>
<trans-unit id="3305717385545135104" datatype="html">
<source>Last All Time High</source>
<target state="translated">Darrer tot el temps</target>
@ -5697,7 +5725,7 @@
<target state="translated">Símbol</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">68</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -5781,7 +5809,7 @@
<target state="translated">Valuós</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">41</context>
<context context-type="linenumber">43</context>
</context-group>
</trans-unit>
<trans-unit id="4230401090765872563" datatype="html">
@ -5789,7 +5817,7 @@
<target state="translated">Passiu</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="4881880242577556" datatype="html">
@ -5801,7 +5829,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">43</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="787798817533231355" datatype="html">
@ -5948,6 +5976,14 @@
<context context-type="linenumber">72</context>
</context-group>
</trans-unit>
<trans-unit id="3227075298129844075" datatype="html">
<source>If you retire today, you would be able to withdraw</source>
<target state="new">If you retire today, you would be able to withdraw</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">66</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
<source>Oceania</source>
<target state="translated">Oceania</target>
@ -6380,6 +6416,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="184247710717595241" datatype="html">
<source>based on your total assets of</source>
<target state="new">based on your total assets of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">95</context>
</context-group>
</trans-unit>
<trans-unit id="1859131936150262113" datatype="html">
<source>Inactive</source>
<target state="new">Inactive</target>
@ -6429,7 +6473,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">346</context>
<context context-type="linenumber">345</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html</context>
@ -6473,7 +6517,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">347</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -6509,7 +6553,7 @@
<target state="new">Portfolio Snapshot</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">56</context>
</context-group>
</trans-unit>
<trans-unit id="8375528527939577247" datatype="html">
@ -6979,7 +7023,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">357</context>
<context context-type="linenumber">356</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>

122
apps/client/src/locales/messages.de.xlf

@ -42,7 +42,7 @@
<target state="translated">Typ</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html</context>
@ -286,7 +286,7 @@
<target state="translated">Jobs löschen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">151</context>
<context context-type="linenumber">193</context>
</context-group>
</trans-unit>
<trans-unit id="1107354728956440783" datatype="html">
@ -294,7 +294,7 @@
<target state="translated">Datenquelle</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">55</context>
<context context-type="linenumber">82</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -318,7 +318,7 @@
<target state="translated">Versuche</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">83</context>
<context context-type="linenumber">120</context>
</context-group>
</trans-unit>
<trans-unit id="4207916966377787111" datatype="html">
@ -326,7 +326,7 @@
<target state="translated">Erstellt</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="340430316261570792" datatype="html">
@ -334,7 +334,7 @@
<target state="translated">Abgeschlossen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">101</context>
<context context-type="linenumber">143</context>
</context-group>
</trans-unit>
<trans-unit id="5611592591303869712" datatype="html">
@ -342,7 +342,7 @@
<target state="translated">Status</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">152</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
@ -370,7 +370,7 @@
<target state="translated">Historische Marktdaten</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">37</context>
<context context-type="linenumber">54</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html</context>
@ -382,7 +382,7 @@
<target state="translated">Daten anzeigen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">166</context>
<context context-type="linenumber">208</context>
</context-group>
</trans-unit>
<trans-unit id="267346373699222750" datatype="html">
@ -390,7 +390,7 @@
<target state="translated">Stacktrace anzeigen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">173</context>
<context context-type="linenumber">215</context>
</context-group>
</trans-unit>
<trans-unit id="8746056757774292739" datatype="html">
@ -398,7 +398,7 @@
<target state="translated">Job löschen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">222</context>
</context-group>
</trans-unit>
<trans-unit id="6293078117617468574" datatype="html">
@ -800,6 +800,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
<context context-type="linenumber">97</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">81</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">31</context>
@ -1152,6 +1156,10 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-membership/user-account-membership.html</context>
<context context-type="linenumber">32</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">283</context>
@ -1492,6 +1500,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html</context>
<context context-type="linenumber">168</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html</context>
<context context-type="linenumber">189</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context>
@ -1761,14 +1773,6 @@
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="194226838811208599" datatype="html">
<source>4% Rule</source>
<target state="translated">4% Regel</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="803941175683258052" datatype="html">
<source>Holdings</source>
<target state="translated">Positionen</target>
@ -1830,7 +1834,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">43</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="2691619717359603230" datatype="html">
@ -2033,6 +2037,14 @@
<context context-type="linenumber">132</context>
</context-group>
</trans-unit>
<trans-unit id="2003818202621229370" datatype="html">
<source>Sustainable retirement income</source>
<target state="translated">Nachhaltiges Einkommen im Ruhestand</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="201073452973037511" datatype="html">
<source>Ghostfolio empowers you to keep track of your wealth.</source>
<target state="translated">Ghostfolio verschafft dir den Überblick über dein Vermögen.</target>
@ -2670,7 +2682,7 @@
<target state="translated">Symbol</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">68</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -2897,6 +2909,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="3227075298129844075" datatype="html">
<source>If you retire today, you would be able to withdraw</source>
<target state="translated">Wenn du heute in den Ruhestand gehen würdest, könntest du</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">66</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
<source>Oceania</source>
<target state="translated">Ozeanien</target>
@ -4038,7 +4058,7 @@
<target state="translated">Verbindlichkeit</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="577204259483334667" datatype="html">
@ -4282,7 +4302,7 @@
<target state="translated">Wertsache</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">41</context>
<context context-type="linenumber">43</context>
</context-group>
</trans-unit>
<trans-unit id="1806977783783486873" datatype="html">
@ -4470,7 +4490,7 @@
<target state="translated">Job ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="364346912677324803" datatype="html">
@ -5163,6 +5183,14 @@
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="70768492340592330" datatype="html">
<source>and a safe withdrawal rate (SWR) of</source>
<target state="translated">und einer sicheren Entnahmerate (SWR) von</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="6081912257037692210" datatype="html">
<source>(Last 90 days)</source>
<target state="translated">(Letzte 90 Tage)</target>
@ -5328,7 +5356,7 @@
<target state="translated">Anlageprofil</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">52</context>
</context-group>
</trans-unit>
<trans-unit id="6786981261778452561" datatype="html">
@ -5363,6 +5391,14 @@
<context context-type="linenumber">5</context>
</context-group>
</trans-unit>
<trans-unit id="3302046820145091217" datatype="html">
<source>,</source>
<target state="translated"> entnehmen,</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">93</context>
</context-group>
</trans-unit>
<trans-unit id="3305717385545135104" datatype="html">
<source>Last All Time High</source>
<target state="translated">Letztes Allzeithoch</target>
@ -5379,6 +5415,14 @@
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="4905798562247431262" datatype="html">
<source>per month</source>
<target state="translated">pro Monat</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="4909535316439940790" datatype="html">
<source>Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> comparison table</source>
<target state="translated">Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> Vergleichstabelle</target>
@ -5723,14 +5767,6 @@
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="637740912956205466" datatype="html">
<source>If you retire today, you would be able to withdraw <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per year<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> or <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per month<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, based on your total assets of <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> and a withdrawal rate of 4%.</source>
<target state="translated">Wenn du heute in den Ruhestand gehen würdest, könnest du <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> pro Jahr<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> oder <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> pro Monat<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> entnehmen, bezogen auf dein Gesamtanlagevermögen von <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> und einer Entnahmerate von 4%.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="6978234364807213493" datatype="html">
<source>Reset Filters</source>
<target state="translated">Filter zurücksetzen</target>
@ -5889,7 +5925,7 @@
<target state="translated">Job ausführen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">176</context>
<context context-type="linenumber">218</context>
</context-group>
</trans-unit>
<trans-unit id="2734022681675842051" datatype="html">
@ -5897,7 +5933,7 @@
<target state="translated">Priorität</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">64</context>
<context context-type="linenumber">96</context>
</context-group>
</trans-unit>
<trans-unit id="8236987838684066590" datatype="html">
@ -6404,6 +6440,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="184247710717595241" datatype="html">
<source>based on your total assets of</source>
<target state="translated">bezogen auf dein Gesamtanlagevermögen von</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">95</context>
</context-group>
</trans-unit>
<trans-unit id="1859131936150262113" datatype="html">
<source>Inactive</source>
<target state="translated">Inaktiv</target>
@ -6453,7 +6497,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">346</context>
<context context-type="linenumber">345</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html</context>
@ -6497,7 +6541,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">347</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -6533,7 +6577,7 @@
<target state="translated">Portfolio Snapshot</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">56</context>
</context-group>
</trans-unit>
<trans-unit id="8375528527939577247" datatype="html">
@ -7003,7 +7047,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">357</context>
<context context-type="linenumber">356</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>

122
apps/client/src/locales/messages.es.xlf

@ -43,7 +43,7 @@
<target state="translated">Tipo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html</context>
@ -287,7 +287,7 @@
<target state="translated">Elimina los trabajos</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">151</context>
<context context-type="linenumber">193</context>
</context-group>
</trans-unit>
<trans-unit id="1107354728956440783" datatype="html">
@ -295,7 +295,7 @@
<target state="translated">Fuente de datos</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">55</context>
<context context-type="linenumber">82</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -319,7 +319,7 @@
<target state="translated">Intentos</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">83</context>
<context context-type="linenumber">120</context>
</context-group>
</trans-unit>
<trans-unit id="4207916966377787111" datatype="html">
@ -327,7 +327,7 @@
<target state="translated">Creado</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="340430316261570792" datatype="html">
@ -335,7 +335,7 @@
<target state="translated">Finalizado</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">101</context>
<context context-type="linenumber">143</context>
</context-group>
</trans-unit>
<trans-unit id="5611592591303869712" datatype="html">
@ -343,7 +343,7 @@
<target state="translated">Estado</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">152</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
@ -371,7 +371,7 @@
<target state="translated">Datos históricos del mercado</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">37</context>
<context context-type="linenumber">54</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html</context>
@ -383,7 +383,7 @@
<target state="translated">Visualiza los datos</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">166</context>
<context context-type="linenumber">208</context>
</context-group>
</trans-unit>
<trans-unit id="267346373699222750" datatype="html">
@ -391,7 +391,7 @@
<target state="translated">Visualiza Stacktrace</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">173</context>
<context context-type="linenumber">215</context>
</context-group>
</trans-unit>
<trans-unit id="8746056757774292739" datatype="html">
@ -399,7 +399,7 @@
<target state="translated">Elimina el trabajo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">222</context>
</context-group>
</trans-unit>
<trans-unit id="6293078117617468574" datatype="html">
@ -785,6 +785,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
<context context-type="linenumber">97</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">81</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">31</context>
@ -1137,6 +1141,10 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-membership/user-account-membership.html</context>
<context context-type="linenumber">32</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">283</context>
@ -1477,6 +1485,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html</context>
<context context-type="linenumber">168</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html</context>
<context context-type="linenumber">189</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context>
@ -1746,14 +1758,6 @@
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="194226838811208599" datatype="html">
<source>4% Rule</source>
<target state="translated">Regla del 4%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="803941175683258052" datatype="html">
<source>Holdings</source>
<target state="translated">Participaciones</target>
@ -1815,7 +1819,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">43</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="2691619717359603230" datatype="html">
@ -2018,6 +2022,14 @@
<context context-type="linenumber">132</context>
</context-group>
</trans-unit>
<trans-unit id="2003818202621229370" datatype="html">
<source>Sustainable retirement income</source>
<target state="new">Sustainable retirement income</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="201073452973037511" datatype="html">
<source>Ghostfolio empowers you to keep track of your wealth.</source>
<target state="translated">Ghostfolio te permite hacer un seguimiento de tu riqueza.</target>
@ -2655,7 +2667,7 @@
<target state="translated">Símbolo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">68</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -2882,6 +2894,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="3227075298129844075" datatype="html">
<source>If you retire today, you would be able to withdraw</source>
<target state="new">If you retire today, you would be able to withdraw</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">66</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
<source>Oceania</source>
<target state="translated">Oceanía</target>
@ -4015,7 +4035,7 @@
<target state="translated">Responsabilidad</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="577204259483334667" datatype="html">
@ -4259,7 +4279,7 @@
<target state="translated">Valioso</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">41</context>
<context context-type="linenumber">43</context>
</context-group>
</trans-unit>
<trans-unit id="1806977783783486873" datatype="html">
@ -4447,7 +4467,7 @@
<target state="new">Job ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="364346912677324803" datatype="html">
@ -5140,6 +5160,14 @@
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="70768492340592330" datatype="html">
<source>and a safe withdrawal rate (SWR) of</source>
<target state="new">and a safe withdrawal rate (SWR) of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="6081912257037692210" datatype="html">
<source>(Last 90 days)</source>
<target state="translated">(Últimos 90 días)</target>
@ -5305,7 +5333,7 @@
<target state="translated">Perfil de activo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">52</context>
</context-group>
</trans-unit>
<trans-unit id="6786981261778452561" datatype="html">
@ -5340,6 +5368,14 @@
<context context-type="linenumber">5</context>
</context-group>
</trans-unit>
<trans-unit id="3302046820145091217" datatype="html">
<source>,</source>
<target state="new">,</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">93</context>
</context-group>
</trans-unit>
<trans-unit id="3305717385545135104" datatype="html">
<source>Last All Time High</source>
<target state="translated">Último máximo histórico</target>
@ -5356,6 +5392,14 @@
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="4905798562247431262" datatype="html">
<source>per month</source>
<target state="new">per month</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="4909535316439940790" datatype="html">
<source>Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> comparison table</source>
<target state="translated">Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> tabla comparativa</target>
@ -5700,14 +5744,6 @@
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="637740912956205466" datatype="html">
<source>If you retire today, you would be able to withdraw <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per year<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> or <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per month<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, based on your total assets of <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> and a withdrawal rate of 4%.</source>
<target state="translated">Si te jubilaras hoy, podrías retirar <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> por año<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> o <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> por mes<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, basado en tus activos totales de <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> y una tasa de retiro del 4%.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="6978234364807213493" datatype="html">
<source>Reset Filters</source>
<target state="translated">Reiniciar filtros</target>
@ -5866,7 +5902,7 @@
<target state="translated">Ejecutar Tarea</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">176</context>
<context context-type="linenumber">218</context>
</context-group>
</trans-unit>
<trans-unit id="2734022681675842051" datatype="html">
@ -5874,7 +5910,7 @@
<target state="translated">Prioridad</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">64</context>
<context context-type="linenumber">96</context>
</context-group>
</trans-unit>
<trans-unit id="8236987838684066590" datatype="html">
@ -6381,6 +6417,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="184247710717595241" datatype="html">
<source>based on your total assets of</source>
<target state="new">based on your total assets of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">95</context>
</context-group>
</trans-unit>
<trans-unit id="1859131936150262113" datatype="html">
<source>Inactive</source>
<target state="translated">Inactiva</target>
@ -6430,7 +6474,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">346</context>
<context context-type="linenumber">345</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html</context>
@ -6474,7 +6518,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">347</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -6510,7 +6554,7 @@
<target state="translated">Instantánea de la cartera</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">56</context>
</context-group>
</trans-unit>
<trans-unit id="8375528527939577247" datatype="html">
@ -6980,7 +7024,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">357</context>
<context context-type="linenumber">356</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>

122
apps/client/src/locales/messages.fr.xlf

@ -34,7 +34,7 @@
<target state="translated">Type</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html</context>
@ -342,7 +342,7 @@
<target state="translated">Source Données</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">55</context>
<context context-type="linenumber">82</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -366,7 +366,7 @@
<target state="translated">Tentatives</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">83</context>
<context context-type="linenumber">120</context>
</context-group>
</trans-unit>
<trans-unit id="4207916966377787111" datatype="html">
@ -374,7 +374,7 @@
<target state="translated">Créé</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="340430316261570792" datatype="html">
@ -382,7 +382,7 @@
<target state="translated">Terminé</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">101</context>
<context context-type="linenumber">143</context>
</context-group>
</trans-unit>
<trans-unit id="5611592591303869712" datatype="html">
@ -390,7 +390,7 @@
<target state="translated">Statut</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">152</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
@ -410,7 +410,7 @@
<target state="translated">Supprimer Tâches</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">151</context>
<context context-type="linenumber">193</context>
</context-group>
</trans-unit>
<trans-unit id="3060494754215793943" datatype="html">
@ -426,7 +426,7 @@
<target state="translated">Données historiques du marché</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">37</context>
<context context-type="linenumber">54</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html</context>
@ -438,7 +438,7 @@
<target state="translated">Voir Données</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">166</context>
<context context-type="linenumber">208</context>
</context-group>
</trans-unit>
<trans-unit id="267346373699222750" datatype="html">
@ -446,7 +446,7 @@
<target state="translated">Voir la Stacktrace</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">173</context>
<context context-type="linenumber">215</context>
</context-group>
</trans-unit>
<trans-unit id="8746056757774292739" datatype="html">
@ -454,7 +454,7 @@
<target state="translated">Supprimer Tâche</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">222</context>
</context-group>
</trans-unit>
<trans-unit id="6293078117617468574" datatype="html">
@ -1080,6 +1080,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
<context context-type="linenumber">97</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">81</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">31</context>
@ -1444,6 +1448,10 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-membership/user-account-membership.html</context>
<context context-type="linenumber">32</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">283</context>
@ -1780,6 +1788,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html</context>
<context context-type="linenumber">168</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html</context>
<context context-type="linenumber">189</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context>
@ -1990,7 +2002,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">43</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="2691619717359603230" datatype="html">
@ -2357,14 +2369,6 @@
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="194226838811208599" datatype="html">
<source>4% Rule</source>
<target state="translated">Règle des 4%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="8057462855421378241" datatype="html">
<source>Holdings</source>
<target state="translated">Positions</target>
@ -2421,6 +2425,14 @@
<context context-type="linenumber">132</context>
</context-group>
</trans-unit>
<trans-unit id="2003818202621229370" datatype="html">
<source>Sustainable retirement income</source>
<target state="new">Sustainable retirement income</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="201073452973037511" datatype="html">
<source>Ghostfolio empowers you to keep track of your wealth.</source>
<target state="translated">Ghostfolio vous aide à garder un aperçu de votre patrimoine.</target>
@ -2850,7 +2862,7 @@
<target state="translated">Symbole</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">68</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -3021,6 +3033,14 @@
<context context-type="linenumber">72</context>
</context-group>
</trans-unit>
<trans-unit id="3227075298129844075" datatype="html">
<source>If you retire today, you would be able to withdraw</source>
<target state="new">If you retire today, you would be able to withdraw</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">66</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
<source>Oceania</source>
<target state="translated">Océanie</target>
@ -4014,7 +4034,7 @@
<target state="translated">Dette</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="577204259483334667" datatype="html">
@ -4258,7 +4278,7 @@
<target state="translated">Actifs</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">41</context>
<context context-type="linenumber">43</context>
</context-group>
</trans-unit>
<trans-unit id="1806977783783486873" datatype="html">
@ -4446,7 +4466,7 @@
<target state="new">Job ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="364346912677324803" datatype="html">
@ -5139,6 +5159,14 @@
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="70768492340592330" datatype="html">
<source>and a safe withdrawal rate (SWR) of</source>
<target state="new">and a safe withdrawal rate (SWR) of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="6081912257037692210" datatype="html">
<source>(Last 90 days)</source>
<target state="translated">(Derniers 90 jours)</target>
@ -5304,7 +5332,7 @@
<target state="translated">Profil d’Actif</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">52</context>
</context-group>
</trans-unit>
<trans-unit id="6786981261778452561" datatype="html">
@ -5339,6 +5367,14 @@
<context context-type="linenumber">5</context>
</context-group>
</trans-unit>
<trans-unit id="3302046820145091217" datatype="html">
<source>,</source>
<target state="new">,</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">93</context>
</context-group>
</trans-unit>
<trans-unit id="3305717385545135104" datatype="html">
<source>Last All Time High</source>
<target state="translated">Dernier All Time High</target>
@ -5355,6 +5391,14 @@
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="4905798562247431262" datatype="html">
<source>per month</source>
<target state="new">per month</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="4909535316439940790" datatype="html">
<source>Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> comparison table</source>
<target state="translated">Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> tableau comparatif</target>
@ -5699,14 +5743,6 @@
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="637740912956205466" datatype="html">
<source>If you retire today, you would be able to withdraw <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per year<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> or <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per month<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, based on your total assets of <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> and a withdrawal rate of 4%.</source>
<target state="translated">Si vous prenez votre retraite aujourd’hui, vous pourrez retirer <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> par an<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> ou <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> par mois<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, sur la base de vos actifs totaux de <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> et un taux de retrait de 4 %.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="6978234364807213493" datatype="html">
<source>Reset Filters</source>
<target state="translated">Réinitialiser les Filtres</target>
@ -5865,7 +5901,7 @@
<target state="translated">Execute la tâche</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">176</context>
<context context-type="linenumber">218</context>
</context-group>
</trans-unit>
<trans-unit id="2734022681675842051" datatype="html">
@ -5873,7 +5909,7 @@
<target state="translated">Priorité</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">64</context>
<context context-type="linenumber">96</context>
</context-group>
</trans-unit>
<trans-unit id="8236987838684066590" datatype="html">
@ -6380,6 +6416,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="184247710717595241" datatype="html">
<source>based on your total assets of</source>
<target state="new">based on your total assets of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">95</context>
</context-group>
</trans-unit>
<trans-unit id="1859131936150262113" datatype="html">
<source>Inactive</source>
<target state="translated">Inactif</target>
@ -6429,7 +6473,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">346</context>
<context context-type="linenumber">345</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html</context>
@ -6473,7 +6517,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">347</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -6509,7 +6553,7 @@
<target state="translated">Résumé du portefeuille</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">56</context>
</context-group>
</trans-unit>
<trans-unit id="8375528527939577247" datatype="html">
@ -6979,7 +7023,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">357</context>
<context context-type="linenumber">356</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>

122
apps/client/src/locales/messages.it.xlf

@ -43,7 +43,7 @@
<target state="translated">Tipo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html</context>
@ -287,7 +287,7 @@
<target state="translated">Elimina i lavori</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">151</context>
<context context-type="linenumber">193</context>
</context-group>
</trans-unit>
<trans-unit id="1107354728956440783" datatype="html">
@ -295,7 +295,7 @@
<target state="translated">Sorgente dei dati</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">55</context>
<context context-type="linenumber">82</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -319,7 +319,7 @@
<target state="translated">Tentativi</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">83</context>
<context context-type="linenumber">120</context>
</context-group>
</trans-unit>
<trans-unit id="4207916966377787111" datatype="html">
@ -327,7 +327,7 @@
<target state="translated">Creato</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="340430316261570792" datatype="html">
@ -335,7 +335,7 @@
<target state="translated">Finito</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">101</context>
<context context-type="linenumber">143</context>
</context-group>
</trans-unit>
<trans-unit id="5611592591303869712" datatype="html">
@ -343,7 +343,7 @@
<target state="translated">Stato</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">152</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
@ -371,7 +371,7 @@
<target state="translated">Dati storici del mercato</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">37</context>
<context context-type="linenumber">54</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html</context>
@ -383,7 +383,7 @@
<target state="translated">Visualizza i dati</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">166</context>
<context context-type="linenumber">208</context>
</context-group>
</trans-unit>
<trans-unit id="267346373699222750" datatype="html">
@ -391,7 +391,7 @@
<target state="translated">Visualizza Stacktrace</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">173</context>
<context context-type="linenumber">215</context>
</context-group>
</trans-unit>
<trans-unit id="8746056757774292739" datatype="html">
@ -399,7 +399,7 @@
<target state="translated">Elimina il lavoro</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">222</context>
</context-group>
</trans-unit>
<trans-unit id="6293078117617468574" datatype="html">
@ -785,6 +785,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
<context context-type="linenumber">97</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">81</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">31</context>
@ -1137,6 +1141,10 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-membership/user-account-membership.html</context>
<context context-type="linenumber">32</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">283</context>
@ -1477,6 +1485,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html</context>
<context context-type="linenumber">168</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html</context>
<context context-type="linenumber">189</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context>
@ -1746,14 +1758,6 @@
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="194226838811208599" datatype="html">
<source>4% Rule</source>
<target state="translated">Regola del 4%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="803941175683258052" datatype="html">
<source>Holdings</source>
<target state="translated">Partecipazioni</target>
@ -1815,7 +1819,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">43</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="2691619717359603230" datatype="html">
@ -2018,6 +2022,14 @@
<context context-type="linenumber">132</context>
</context-group>
</trans-unit>
<trans-unit id="2003818202621229370" datatype="html">
<source>Sustainable retirement income</source>
<target state="new">Sustainable retirement income</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="201073452973037511" datatype="html">
<source>Ghostfolio empowers you to keep track of your wealth.</source>
<target state="translated">Ghostfolio ti permette di tenere traccia della tua ricchezza.</target>
@ -2655,7 +2667,7 @@
<target state="translated">Simbolo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">68</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -2882,6 +2894,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="3227075298129844075" datatype="html">
<source>If you retire today, you would be able to withdraw</source>
<target state="new">If you retire today, you would be able to withdraw</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">66</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
<source>Oceania</source>
<target state="translated">Oceania</target>
@ -4015,7 +4035,7 @@
<target state="translated">Passività</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="577204259483334667" datatype="html">
@ -4259,7 +4279,7 @@
<target state="translated">Prezioso</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">41</context>
<context context-type="linenumber">43</context>
</context-group>
</trans-unit>
<trans-unit id="1806977783783486873" datatype="html">
@ -4447,7 +4467,7 @@
<target state="new">Job ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="364346912677324803" datatype="html">
@ -5140,6 +5160,14 @@
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="70768492340592330" datatype="html">
<source>and a safe withdrawal rate (SWR) of</source>
<target state="new">and a safe withdrawal rate (SWR) of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="6081912257037692210" datatype="html">
<source>(Last 90 days)</source>
<target state="translated">(Ultimi 90 giorni)</target>
@ -5305,7 +5333,7 @@
<target state="translated">Profilo dell’asset</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">52</context>
</context-group>
</trans-unit>
<trans-unit id="6786981261778452561" datatype="html">
@ -5340,6 +5368,14 @@
<context context-type="linenumber">5</context>
</context-group>
</trans-unit>
<trans-unit id="3302046820145091217" datatype="html">
<source>,</source>
<target state="new">,</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">93</context>
</context-group>
</trans-unit>
<trans-unit id="3305717385545135104" datatype="html">
<source>Last All Time High</source>
<target state="translated">Ultimo massimo storico</target>
@ -5356,6 +5392,14 @@
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="4905798562247431262" datatype="html">
<source>per month</source>
<target state="new">per month</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="4909535316439940790" datatype="html">
<source>Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> comparison table</source>
<target state="translated">Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> tabella di comparazione</target>
@ -5700,14 +5744,6 @@
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="637740912956205466" datatype="html">
<source>If you retire today, you would be able to withdraw <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per year<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> or <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per month<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, based on your total assets of <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> and a withdrawal rate of 4%.</source>
<target state="translated">Se andassi in pensione oggi, saresti in grado di prelevare <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> all’anno<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> o <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> al mese<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, calcolato sul valore totale dei tuoi asset di <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> e un prelievo costante del 4%.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="6978234364807213493" datatype="html">
<source>Reset Filters</source>
<target state="translated">Reset Filtri</target>
@ -5866,7 +5902,7 @@
<target state="translated">Esegui il lavoro</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">176</context>
<context context-type="linenumber">218</context>
</context-group>
</trans-unit>
<trans-unit id="2734022681675842051" datatype="html">
@ -5874,7 +5910,7 @@
<target state="translated">Priorità</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">64</context>
<context context-type="linenumber">96</context>
</context-group>
</trans-unit>
<trans-unit id="8236987838684066590" datatype="html">
@ -6381,6 +6417,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="184247710717595241" datatype="html">
<source>based on your total assets of</source>
<target state="new">based on your total assets of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">95</context>
</context-group>
</trans-unit>
<trans-unit id="1859131936150262113" datatype="html">
<source>Inactive</source>
<target state="translated">Inattivo</target>
@ -6430,7 +6474,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">346</context>
<context context-type="linenumber">345</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html</context>
@ -6474,7 +6518,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">347</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -6510,7 +6554,7 @@
<target state="translated">Stato del Portfolio</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">56</context>
</context-group>
</trans-unit>
<trans-unit id="8375528527939577247" datatype="html">
@ -6980,7 +7024,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">357</context>
<context context-type="linenumber">356</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>

122
apps/client/src/locales/messages.nl.xlf

@ -42,7 +42,7 @@
<target state="translated">Type</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html</context>
@ -286,7 +286,7 @@
<target state="translated">Taken verwijderen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">151</context>
<context context-type="linenumber">193</context>
</context-group>
</trans-unit>
<trans-unit id="1107354728956440783" datatype="html">
@ -294,7 +294,7 @@
<target state="translated">Gegevensbron</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">55</context>
<context context-type="linenumber">82</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -318,7 +318,7 @@
<target state="translated">Pogingen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">83</context>
<context context-type="linenumber">120</context>
</context-group>
</trans-unit>
<trans-unit id="4207916966377787111" datatype="html">
@ -326,7 +326,7 @@
<target state="translated">Aangemaakt</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="340430316261570792" datatype="html">
@ -334,7 +334,7 @@
<target state="translated">Voltooid</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">101</context>
<context context-type="linenumber">143</context>
</context-group>
</trans-unit>
<trans-unit id="5611592591303869712" datatype="html">
@ -342,7 +342,7 @@
<target state="translated">Status</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">152</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
@ -370,7 +370,7 @@
<target state="translated">Historische marktgegevens</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">37</context>
<context context-type="linenumber">54</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html</context>
@ -382,7 +382,7 @@
<target state="translated">Bekijk gegevens</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">166</context>
<context context-type="linenumber">208</context>
</context-group>
</trans-unit>
<trans-unit id="267346373699222750" datatype="html">
@ -390,7 +390,7 @@
<target state="translated">Bekijk Stacktrace</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">173</context>
<context context-type="linenumber">215</context>
</context-group>
</trans-unit>
<trans-unit id="8746056757774292739" datatype="html">
@ -398,7 +398,7 @@
<target state="translated">Taak verwijderen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">222</context>
</context-group>
</trans-unit>
<trans-unit id="6293078117617468574" datatype="html">
@ -784,6 +784,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
<context context-type="linenumber">97</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">81</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">31</context>
@ -1136,6 +1140,10 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-membership/user-account-membership.html</context>
<context context-type="linenumber">32</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">283</context>
@ -1476,6 +1484,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html</context>
<context context-type="linenumber">168</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html</context>
<context context-type="linenumber">189</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context>
@ -1745,14 +1757,6 @@
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="194226838811208599" datatype="html">
<source>4% Rule</source>
<target state="translated">4% regel</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="803941175683258052" datatype="html">
<source>Holdings</source>
<target state="translated">Posities</target>
@ -1814,7 +1818,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">43</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="2691619717359603230" datatype="html">
@ -2017,6 +2021,14 @@
<context context-type="linenumber">132</context>
</context-group>
</trans-unit>
<trans-unit id="2003818202621229370" datatype="html">
<source>Sustainable retirement income</source>
<target state="new">Sustainable retirement income</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="201073452973037511" datatype="html">
<source>Ghostfolio empowers you to keep track of your wealth.</source>
<target state="translated">Ghostfolio stelt je in staat om je vermogen bij te houden.</target>
@ -2654,7 +2666,7 @@
<target state="translated">Symbool</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">68</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -2881,6 +2893,14 @@
<context context-type="linenumber">71</context>
</context-group>
</trans-unit>
<trans-unit id="3227075298129844075" datatype="html">
<source>If you retire today, you would be able to withdraw</source>
<target state="new">If you retire today, you would be able to withdraw</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">66</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
<source>Oceania</source>
<target state="translated">Oceanië</target>
@ -4014,7 +4034,7 @@
<target state="translated">Verplichtingen</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="577204259483334667" datatype="html">
@ -4258,7 +4278,7 @@
<target state="translated">Waardevol</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">41</context>
<context context-type="linenumber">43</context>
</context-group>
</trans-unit>
<trans-unit id="1806977783783486873" datatype="html">
@ -4446,7 +4466,7 @@
<target state="new">Job ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="364346912677324803" datatype="html">
@ -5139,6 +5159,14 @@
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="70768492340592330" datatype="html">
<source>and a safe withdrawal rate (SWR) of</source>
<target state="new">and a safe withdrawal rate (SWR) of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="6081912257037692210" datatype="html">
<source>(Last 90 days)</source>
<target state="translated">(Laatste 90 dagen)</target>
@ -5304,7 +5332,7 @@
<target state="translated">Bezittingen Profiel</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">52</context>
</context-group>
</trans-unit>
<trans-unit id="6786981261778452561" datatype="html">
@ -5339,6 +5367,14 @@
<context context-type="linenumber">5</context>
</context-group>
</trans-unit>
<trans-unit id="3302046820145091217" datatype="html">
<source>,</source>
<target state="new">,</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">93</context>
</context-group>
</trans-unit>
<trans-unit id="3305717385545135104" datatype="html">
<source>Last All Time High</source>
<target state="translated">Laatste Recordhoogte</target>
@ -5355,6 +5391,14 @@
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="4905798562247431262" datatype="html">
<source>per month</source>
<target state="new">per month</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="4909535316439940790" datatype="html">
<source>Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> comparison table</source>
<target state="translated">Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> vergelijkingstabel</target>
@ -5699,14 +5743,6 @@
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="637740912956205466" datatype="html">
<source>If you retire today, you would be able to withdraw <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per year<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> or <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per month<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, based on your total assets of <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> and a withdrawal rate of 4%.</source>
<target state="translated">Als u vandaag met pensioen zou gaan, kunt u <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per jaar<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> or <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per maand<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> opnemen, gebaseerd op uw totale vermogen van <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> en een opnamepercentage van 4%.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="6978234364807213493" datatype="html">
<source>Reset Filters</source>
<target state="translated">Filters Herstellen</target>
@ -5865,7 +5901,7 @@
<target state="translated">Opdracht Uitvoeren</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">176</context>
<context context-type="linenumber">218</context>
</context-group>
</trans-unit>
<trans-unit id="2734022681675842051" datatype="html">
@ -5873,7 +5909,7 @@
<target state="translated">Prioriteit</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">64</context>
<context context-type="linenumber">96</context>
</context-group>
</trans-unit>
<trans-unit id="8236987838684066590" datatype="html">
@ -6380,6 +6416,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="184247710717595241" datatype="html">
<source>based on your total assets of</source>
<target state="new">based on your total assets of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">95</context>
</context-group>
</trans-unit>
<trans-unit id="1859131936150262113" datatype="html">
<source>Inactive</source>
<target state="translated">Inactief</target>
@ -6429,7 +6473,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">346</context>
<context context-type="linenumber">345</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html</context>
@ -6473,7 +6517,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">347</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -6509,7 +6553,7 @@
<target state="translated">Portfolio Momentopname</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">56</context>
</context-group>
</trans-unit>
<trans-unit id="8375528527939577247" datatype="html">
@ -6979,7 +7023,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">357</context>
<context context-type="linenumber">356</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>

122
apps/client/src/locales/messages.pl.xlf

@ -243,7 +243,7 @@
<target state="translated">Typ</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html</context>
@ -563,7 +563,7 @@
<target state="translated">Profil Aktywów</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">52</context>
</context-group>
</trans-unit>
<trans-unit id="8530249987193962636" datatype="html">
@ -571,7 +571,7 @@
<target state="translated">Historyczne Dane Rynkowe</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">37</context>
<context context-type="linenumber">54</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html</context>
@ -583,7 +583,7 @@
<target state="translated">Źródło Danych</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">55</context>
<context context-type="linenumber">82</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -607,7 +607,7 @@
<target state="translated">Próby</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">83</context>
<context context-type="linenumber">120</context>
</context-group>
</trans-unit>
<trans-unit id="4207916966377787111" datatype="html">
@ -615,7 +615,7 @@
<target state="translated">Utworzono</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="340430316261570792" datatype="html">
@ -623,7 +623,7 @@
<target state="translated">Zakończono</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">101</context>
<context context-type="linenumber">143</context>
</context-group>
</trans-unit>
<trans-unit id="5611592591303869712" datatype="html">
@ -631,7 +631,7 @@
<target state="translated">Status</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">152</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
@ -651,7 +651,7 @@
<target state="translated">Usuń Zadania</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">151</context>
<context context-type="linenumber">193</context>
</context-group>
</trans-unit>
<trans-unit id="2505231537574917205" datatype="html">
@ -659,7 +659,7 @@
<target state="translated">Zobacz Dane</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">166</context>
<context context-type="linenumber">208</context>
</context-group>
</trans-unit>
<trans-unit id="267346373699222750" datatype="html">
@ -667,7 +667,7 @@
<target state="translated">Wyświetl Stos Wywołań</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">173</context>
<context context-type="linenumber">215</context>
</context-group>
</trans-unit>
<trans-unit id="8746056757774292739" datatype="html">
@ -675,7 +675,7 @@
<target state="translated">Usuń Zadanie</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">222</context>
</context-group>
</trans-unit>
<trans-unit id="6293078117617468574" datatype="html">
@ -1653,6 +1653,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
<context context-type="linenumber">97</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">81</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">31</context>
@ -2117,6 +2121,10 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-membership/user-account-membership.html</context>
<context context-type="linenumber">32</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">283</context>
@ -2725,6 +2733,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html</context>
<context context-type="linenumber">168</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html</context>
<context context-type="linenumber">189</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context>
@ -3374,6 +3386,14 @@
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="70768492340592330" datatype="html">
<source>and a safe withdrawal rate (SWR) of</source>
<target state="new">and a safe withdrawal rate (SWR) of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="6099700884541852399" datatype="html">
<source>New Users</source>
<target state="translated">Nowi Użytkownicy</target>
@ -3395,7 +3415,7 @@
<target state="new">Job ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="364346912677324803" datatype="html">
@ -4010,14 +4030,6 @@
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="194226838811208599" datatype="html">
<source>4% Rule</source>
<target state="translated">Zasada 4%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="8057462855421378241" datatype="html">
<source>Holdings</source>
<target state="translated">Inwestycje</target>
@ -4266,6 +4278,14 @@
<context context-type="linenumber">132</context>
</context-group>
</trans-unit>
<trans-unit id="2003818202621229370" datatype="html">
<source>Sustainable retirement income</source>
<target state="new">Sustainable retirement income</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="201073452973037511" datatype="html">
<source>Ghostfolio empowers you to keep track of your wealth.</source>
<target state="translated">Ghostfolio umożliwia śledzenie wartości swojego majątku.</target>
@ -4399,6 +4419,14 @@
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="4905798562247431262" datatype="html">
<source>per month</source>
<target state="new">per month</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="4909535316439940790" datatype="html">
<source>Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> comparison table</source>
<target state="translated">Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> - tabela porównawcza</target>
@ -4743,6 +4771,14 @@
<context context-type="linenumber">106</context>
</context-group>
</trans-unit>
<trans-unit id="3302046820145091217" datatype="html">
<source>,</source>
<target state="new">,</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">93</context>
</context-group>
</trans-unit>
<trans-unit id="3305717385545135104" datatype="html">
<source>Last All Time High</source>
<target state="translated">Ostatni Najwyższy Punkt w Historii</target>
@ -5096,7 +5132,7 @@
<target state="translated">Symbol</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">68</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -5180,7 +5216,7 @@
<target state="translated">Kosztowności</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">41</context>
<context context-type="linenumber">43</context>
</context-group>
</trans-unit>
<trans-unit id="4230401090765872563" datatype="html">
@ -5188,7 +5224,7 @@
<target state="translated">Zobowiązanie</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="4881880242577556" datatype="html">
@ -5200,7 +5236,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">43</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="787798817533231355" datatype="html">
@ -5339,6 +5375,14 @@
<context context-type="linenumber">72</context>
</context-group>
</trans-unit>
<trans-unit id="3227075298129844075" datatype="html">
<source>If you retire today, you would be able to withdraw</source>
<target state="new">If you retire today, you would be able to withdraw</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">66</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
<source>Oceania</source>
<target state="translated">Oceania</target>
@ -5699,14 +5743,6 @@
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="637740912956205466" datatype="html">
<source>If you retire today, you would be able to withdraw <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per year<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> or <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per month<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, based on your total assets of <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> and a withdrawal rate of 4%.</source>
<target state="translated">Jeśli przejdziesz na emeryturę dzisiaj, będziesz mógł wypłacić <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> rocznie<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> lub <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> miesięcznie<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, w oparciu o Twój łączny majątek w wysokości <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> i stopę wypłaty w wysokości 4%.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="6978234364807213493" datatype="html">
<source>Reset Filters</source>
<target state="translated">Resetuj Filtry</target>
@ -5865,7 +5901,7 @@
<target state="translated">Wykonaj Zadanie</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">176</context>
<context context-type="linenumber">218</context>
</context-group>
</trans-unit>
<trans-unit id="2734022681675842051" datatype="html">
@ -5873,7 +5909,7 @@
<target state="translated">Priorytet</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">64</context>
<context context-type="linenumber">96</context>
</context-group>
</trans-unit>
<trans-unit id="8236987838684066590" datatype="html">
@ -6380,6 +6416,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="184247710717595241" datatype="html">
<source>based on your total assets of</source>
<target state="new">based on your total assets of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">95</context>
</context-group>
</trans-unit>
<trans-unit id="1859131936150262113" datatype="html">
<source>Inactive</source>
<target state="translated">Nieaktywny</target>
@ -6429,7 +6473,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">346</context>
<context context-type="linenumber">345</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html</context>
@ -6473,7 +6517,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">347</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -6509,7 +6553,7 @@
<target state="translated">Przegląd portfela</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">56</context>
</context-group>
</trans-unit>
<trans-unit id="8375528527939577247" datatype="html">
@ -6979,7 +7023,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">357</context>
<context context-type="linenumber">356</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>

122
apps/client/src/locales/messages.pt.xlf

@ -34,7 +34,7 @@
<target state="translated">Tipo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html</context>
@ -342,7 +342,7 @@
<target state="translated">Fonte de dados</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">55</context>
<context context-type="linenumber">82</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -366,7 +366,7 @@
<target state="translated">Tentativas</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">83</context>
<context context-type="linenumber">120</context>
</context-group>
</trans-unit>
<trans-unit id="4207916966377787111" datatype="html">
@ -374,7 +374,7 @@
<target state="translated">Criado</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="340430316261570792" datatype="html">
@ -382,7 +382,7 @@
<target state="translated">Terminado</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">101</context>
<context context-type="linenumber">143</context>
</context-group>
</trans-unit>
<trans-unit id="5611592591303869712" datatype="html">
@ -390,7 +390,7 @@
<target state="translated">Estado</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">152</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
@ -410,7 +410,7 @@
<target state="translated">Eliminar Tarefas</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">151</context>
<context context-type="linenumber">193</context>
</context-group>
</trans-unit>
<trans-unit id="3060494754215793943" datatype="html">
@ -426,7 +426,7 @@
<target state="translated">Histórico de Dados de Mercado</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">37</context>
<context context-type="linenumber">54</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html</context>
@ -438,7 +438,7 @@
<target state="translated">Visualizar dados</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">166</context>
<context context-type="linenumber">208</context>
</context-group>
</trans-unit>
<trans-unit id="267346373699222750" datatype="html">
@ -446,7 +446,7 @@
<target state="translated">Ver Stacktrace</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">173</context>
<context context-type="linenumber">215</context>
</context-group>
</trans-unit>
<trans-unit id="8746056757774292739" datatype="html">
@ -454,7 +454,7 @@
<target state="translated">Apagar Tarefa</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">222</context>
</context-group>
</trans-unit>
<trans-unit id="6293078117617468574" datatype="html">
@ -960,6 +960,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
<context context-type="linenumber">97</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">81</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">31</context>
@ -1432,6 +1436,10 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-membership/user-account-membership.html</context>
<context context-type="linenumber">32</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">283</context>
@ -1756,6 +1764,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html</context>
<context context-type="linenumber">168</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html</context>
<context context-type="linenumber">189</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context>
@ -1962,7 +1974,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">43</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="2691619717359603230" datatype="html">
@ -2273,14 +2285,6 @@
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="194226838811208599" datatype="html">
<source>4% Rule</source>
<target state="translated">Regra dos 4%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="803941175683258052" datatype="html">
<source>Holdings</source>
<target state="translated">Posições</target>
@ -2361,6 +2365,14 @@
<context context-type="linenumber">132</context>
</context-group>
</trans-unit>
<trans-unit id="2003818202621229370" datatype="html">
<source>Sustainable retirement income</source>
<target state="new">Sustainable retirement income</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="201073452973037511" datatype="html">
<source>Ghostfolio empowers you to keep track of your wealth.</source>
<target state="translated">O Ghostfolio permite-lhe estar a par e gerir a sua riqueza.</target>
@ -2702,7 +2714,7 @@
<target state="translated">Símbolo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">68</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -2873,6 +2885,14 @@
<context context-type="linenumber">72</context>
</context-group>
</trans-unit>
<trans-unit id="3227075298129844075" datatype="html">
<source>If you retire today, you would be able to withdraw</source>
<target state="new">If you retire today, you would be able to withdraw</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">66</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
<source>Oceania</source>
<target state="translated">Oceânia</target>
@ -4014,7 +4034,7 @@
<target state="translated">Responsabilidade</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="577204259483334667" datatype="html">
@ -4258,7 +4278,7 @@
<target state="translated">De valor</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">41</context>
<context context-type="linenumber">43</context>
</context-group>
</trans-unit>
<trans-unit id="1806977783783486873" datatype="html">
@ -4446,7 +4466,7 @@
<target state="new">Job ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="364346912677324803" datatype="html">
@ -5139,6 +5159,14 @@
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="70768492340592330" datatype="html">
<source>and a safe withdrawal rate (SWR) of</source>
<target state="new">and a safe withdrawal rate (SWR) of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="6081912257037692210" datatype="html">
<source>(Last 90 days)</source>
<target state="translated">(Últimos 90 dias)</target>
@ -5304,7 +5332,7 @@
<target state="translated">Perfil de ativos</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">52</context>
</context-group>
</trans-unit>
<trans-unit id="6786981261778452561" datatype="html">
@ -5339,6 +5367,14 @@
<context context-type="linenumber">5</context>
</context-group>
</trans-unit>
<trans-unit id="3302046820145091217" datatype="html">
<source>,</source>
<target state="new">,</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">93</context>
</context-group>
</trans-unit>
<trans-unit id="3305717385545135104" datatype="html">
<source>Last All Time High</source>
<target state="translated">Última alta de todos os tempos</target>
@ -5355,6 +5391,14 @@
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="4905798562247431262" datatype="html">
<source>per month</source>
<target state="new">per month</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="4909535316439940790" datatype="html">
<source>Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> comparison table</source>
<target state="translated">Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> tabela de comparação</target>
@ -5699,14 +5743,6 @@
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="637740912956205466" datatype="html">
<source>If you retire today, you would be able to withdraw <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per year<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> or <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per month<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, based on your total assets of <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> and a withdrawal rate of 4%.</source>
<target state="translated">Se você se aposentar hoje, poderá sacar <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per year<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> or <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per month<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, based on your total assets of <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> and a withdrawal rate of 4%.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="6978234364807213493" datatype="html">
<source>Reset Filters</source>
<target state="translated">Redefinir filtros</target>
@ -5865,7 +5901,7 @@
<target state="translated">Executar trabalho</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">176</context>
<context context-type="linenumber">218</context>
</context-group>
</trans-unit>
<trans-unit id="2734022681675842051" datatype="html">
@ -5873,7 +5909,7 @@
<target state="translated">Prioridade</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">64</context>
<context context-type="linenumber">96</context>
</context-group>
</trans-unit>
<trans-unit id="8236987838684066590" datatype="html">
@ -6380,6 +6416,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="184247710717595241" datatype="html">
<source>based on your total assets of</source>
<target state="new">based on your total assets of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">95</context>
</context-group>
</trans-unit>
<trans-unit id="1859131936150262113" datatype="html">
<source>Inactive</source>
<target state="translated">Inativo</target>
@ -6429,7 +6473,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">346</context>
<context context-type="linenumber">345</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html</context>
@ -6473,7 +6517,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">347</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -6509,7 +6553,7 @@
<target state="translated">Visão geral do portfólio</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">56</context>
</context-group>
</trans-unit>
<trans-unit id="8375528527939577247" datatype="html">
@ -6979,7 +7023,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">357</context>
<context context-type="linenumber">356</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>

122
apps/client/src/locales/messages.tr.xlf

@ -215,7 +215,7 @@
<target state="translated">Tip</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html</context>
@ -523,7 +523,7 @@
<target state="translated">Veri Kaynağı</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">55</context>
<context context-type="linenumber">82</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -547,7 +547,7 @@
<target state="translated">Deneme</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">83</context>
<context context-type="linenumber">120</context>
</context-group>
</trans-unit>
<trans-unit id="4207916966377787111" datatype="html">
@ -555,7 +555,7 @@
<target state="translated">Oluşturuldu</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="340430316261570792" datatype="html">
@ -563,7 +563,7 @@
<target state="translated">Tamamlandı</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">101</context>
<context context-type="linenumber">143</context>
</context-group>
</trans-unit>
<trans-unit id="5611592591303869712" datatype="html">
@ -571,7 +571,7 @@
<target state="translated">Durum</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">152</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
@ -591,7 +591,7 @@
<target state="translated">İşleri Sil</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">151</context>
<context context-type="linenumber">193</context>
</context-group>
</trans-unit>
<trans-unit id="3060494754215793943" datatype="html">
@ -607,7 +607,7 @@
<target state="translated">Tarihsel Piyasa Verisi</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">37</context>
<context context-type="linenumber">54</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html</context>
@ -619,7 +619,7 @@
<target state="translated">Veri Gör</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">166</context>
<context context-type="linenumber">208</context>
</context-group>
</trans-unit>
<trans-unit id="267346373699222750" datatype="html">
@ -627,7 +627,7 @@
<target state="translated">Hata İzini Görüntüle</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">173</context>
<context context-type="linenumber">215</context>
</context-group>
</trans-unit>
<trans-unit id="8746056757774292739" datatype="html">
@ -635,7 +635,7 @@
<target state="translated">İşleri Sil</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">222</context>
</context-group>
</trans-unit>
<trans-unit id="6293078117617468574" datatype="html">
@ -1509,6 +1509,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
<context context-type="linenumber">97</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">81</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">31</context>
@ -2297,6 +2301,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html</context>
<context context-type="linenumber">168</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html</context>
<context context-type="linenumber">189</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context>
@ -2927,7 +2935,7 @@
<target state="new">Job ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="364346912677324803" datatype="html">
@ -3518,14 +3526,6 @@
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="194226838811208599" datatype="html">
<source>4% Rule</source>
<target state="translated">%4 Kuralı</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="8057462855421378241" datatype="html">
<source>Holdings</source>
<target state="translated">Varlıklar</target>
@ -3774,6 +3774,14 @@
<context context-type="linenumber">132</context>
</context-group>
</trans-unit>
<trans-unit id="2003818202621229370" datatype="html">
<source>Sustainable retirement income</source>
<target state="new">Sustainable retirement income</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="201073452973037511" datatype="html">
<source>Ghostfolio empowers you to keep track of your wealth.</source>
<target state="translated">Ghostfolio, varlıklarınızı takip etmenizi sağlar.</target>
@ -4242,6 +4250,10 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-membership/user-account-membership.html</context>
<context context-type="linenumber">32</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">283</context>
@ -4832,7 +4844,7 @@
<target state="translated">Sembol</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">68</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -4900,7 +4912,7 @@
<target state="translated">Kıymet</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">41</context>
<context context-type="linenumber">43</context>
</context-group>
</trans-unit>
<trans-unit id="4230401090765872563" datatype="html">
@ -4908,7 +4920,7 @@
<target state="translated">Yükümlülük</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="4881880242577556" datatype="html">
@ -4920,7 +4932,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">43</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="787798817533231355" datatype="html">
@ -5059,6 +5071,14 @@
<context context-type="linenumber">72</context>
</context-group>
</trans-unit>
<trans-unit id="3227075298129844075" datatype="html">
<source>If you retire today, you would be able to withdraw</source>
<target state="new">If you retire today, you would be able to withdraw</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">66</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
<source>Oceania</source>
<target state="translated">Okyanusya</target>
@ -5147,6 +5167,14 @@
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="70768492340592330" datatype="html">
<source>and a safe withdrawal rate (SWR) of</source>
<target state="new">and a safe withdrawal rate (SWR) of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="6081912257037692210" datatype="html">
<source>(Last 90 days)</source>
<target state="translated">(Son 90 gün)</target>
@ -5304,7 +5332,7 @@
<target state="translated">Varlık Profili</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">52</context>
</context-group>
</trans-unit>
<trans-unit id="6786981261778452561" datatype="html">
@ -5339,6 +5367,14 @@
<context context-type="linenumber">5</context>
</context-group>
</trans-unit>
<trans-unit id="3302046820145091217" datatype="html">
<source>,</source>
<target state="new">,</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">93</context>
</context-group>
</trans-unit>
<trans-unit id="3305717385545135104" datatype="html">
<source>Last All Time High</source>
<target state="translated">Son, ATH</target>
@ -5355,6 +5391,14 @@
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="4905798562247431262" datatype="html">
<source>per month</source>
<target state="new">per month</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="4909535316439940790" datatype="html">
<source>Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> comparison table</source>
<target state="translated">Ghostfolio ve <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> karşılatırma tablosu</target>
@ -5699,14 +5743,6 @@
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="637740912956205466" datatype="html">
<source>If you retire today, you would be able to withdraw <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per year<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> or <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per month<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, based on your total assets of <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> and a withdrawal rate of 4%.</source>
<target state="translated">Eğer bugün emekli olursanız, paranızı çekebilirsiniz <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> yıllık<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> veya <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> aylık<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, toplam varlıklarınıza göre <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> ve %4’lük bir çekilme oranı.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="6978234364807213493" datatype="html">
<source>Reset Filters</source>
<target state="translated">Filtreleri Sıfırla</target>
@ -5865,7 +5901,7 @@
<target state="translated">İşlemi Yürüt</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">176</context>
<context context-type="linenumber">218</context>
</context-group>
</trans-unit>
<trans-unit id="2734022681675842051" datatype="html">
@ -5873,7 +5909,7 @@
<target state="translated">Öncelik</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">64</context>
<context context-type="linenumber">96</context>
</context-group>
</trans-unit>
<trans-unit id="8236987838684066590" datatype="html">
@ -6380,6 +6416,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="184247710717595241" datatype="html">
<source>based on your total assets of</source>
<target state="new">based on your total assets of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">95</context>
</context-group>
</trans-unit>
<trans-unit id="1859131936150262113" datatype="html">
<source>Inactive</source>
<target state="translated">Pasif</target>
@ -6429,7 +6473,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">346</context>
<context context-type="linenumber">345</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html</context>
@ -6473,7 +6517,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">347</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -6509,7 +6553,7 @@
<target state="translated">Portföy Anlık Görüntüsü</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">56</context>
</context-group>
</trans-unit>
<trans-unit id="8375528527939577247" datatype="html">
@ -6979,7 +7023,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">357</context>
<context context-type="linenumber">356</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>

122
apps/client/src/locales/messages.uk.xlf

@ -671,7 +671,7 @@
<target state="translated">Тип</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html</context>
@ -691,7 +691,7 @@
<target state="translated">Профіль активу</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">52</context>
</context-group>
</trans-unit>
<trans-unit id="8530249987193962636" datatype="html">
@ -699,7 +699,7 @@
<target state="translated">Історичні ринкові дані</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">37</context>
<context context-type="linenumber">54</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html</context>
@ -711,7 +711,7 @@
<target state="translated">Знімок портфеля</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">56</context>
</context-group>
</trans-unit>
<trans-unit id="1107354728956440783" datatype="html">
@ -719,7 +719,7 @@
<target state="translated">Джерело даних</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">55</context>
<context context-type="linenumber">82</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -743,7 +743,7 @@
<target state="translated">Пріоритет</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">64</context>
<context context-type="linenumber">96</context>
</context-group>
</trans-unit>
<trans-unit id="4467730511941715714" datatype="html">
@ -751,7 +751,7 @@
<target state="translated">Спроби</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">83</context>
<context context-type="linenumber">120</context>
</context-group>
</trans-unit>
<trans-unit id="4207916966377787111" datatype="html">
@ -759,7 +759,7 @@
<target state="translated">Створено</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="340430316261570792" datatype="html">
@ -767,7 +767,7 @@
<target state="translated">Завершено</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">101</context>
<context context-type="linenumber">143</context>
</context-group>
</trans-unit>
<trans-unit id="5611592591303869712" datatype="html">
@ -775,7 +775,7 @@
<target state="translated">Статус</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">152</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
@ -795,7 +795,7 @@
<target state="translated">Видалити завдання</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">151</context>
<context context-type="linenumber">193</context>
</context-group>
</trans-unit>
<trans-unit id="2505231537574917205" datatype="html">
@ -803,7 +803,7 @@
<target state="translated">Переглянути дані</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">166</context>
<context context-type="linenumber">208</context>
</context-group>
</trans-unit>
<trans-unit id="267346373699222750" datatype="html">
@ -811,7 +811,7 @@
<target state="translated">Переглянути трасування</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">173</context>
<context context-type="linenumber">215</context>
</context-group>
</trans-unit>
<trans-unit id="8871342657187208008" datatype="html">
@ -819,7 +819,7 @@
<target state="translated">Виконати завдання</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">176</context>
<context context-type="linenumber">218</context>
</context-group>
</trans-unit>
<trans-unit id="8746056757774292739" datatype="html">
@ -827,7 +827,7 @@
<target state="translated">Видалити завдання</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">222</context>
</context-group>
</trans-unit>
<trans-unit id="829826868886560502" datatype="html">
@ -1497,6 +1497,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
<context context-type="linenumber">97</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">81</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">31</context>
@ -2243,7 +2247,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">357</context>
<context context-type="linenumber">356</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>
@ -2681,6 +2685,10 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-membership/user-account-membership.html</context>
<context context-type="linenumber">32</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">283</context>
@ -3341,6 +3349,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html</context>
<context context-type="linenumber">168</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html</context>
<context context-type="linenumber">189</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context>
@ -4031,6 +4043,14 @@
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="70768492340592330" datatype="html">
<source>and a safe withdrawal rate (SWR) of</source>
<target state="new">and a safe withdrawal rate (SWR) of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="6099700884541852399" datatype="html">
<source>New Users</source>
<target state="translated">Нові користувачі</target>
@ -4052,7 +4072,7 @@
<target state="new">Job ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="364346912677324803" datatype="html">
@ -4775,22 +4795,6 @@
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="194226838811208599" datatype="html">
<source>4% Rule</source>
<target state="translated">Правило 4%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="637740912956205466" datatype="html">
<source>If you retire today, you would be able to withdraw <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per year<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> or <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per month<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, based on your total assets of <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> and a withdrawal rate of 4%.</source>
<target state="translated">Якщо ви вийдете на пенсію сьогодні, ви зможете знімати <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> на рік<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> або <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> на місяць<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, виходячи з вашого загального капіталу в <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> та ставкою виведення у 4%.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="5806117524908922510" datatype="html">
<source>Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy.</source>
<target state="translated">Ghostfolio X-ray використовує статичний аналіз для виявлення потенційних проблем та ризиків у вашому портфелі. Налаштуйте правила нижче та встановіть індивідуальні пороги, щоб узгодити їх з вашою особистою інвестиційною стратегією.</target>
@ -4815,6 +4819,14 @@
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="184247710717595241" datatype="html">
<source>based on your total assets of</source>
<target state="new">based on your total assets of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">95</context>
</context-group>
</trans-unit>
<trans-unit id="1859131936150262113" datatype="html">
<source>Inactive</source>
<target state="translated">Неактивний</target>
@ -5071,6 +5083,14 @@
<context context-type="linenumber">234</context>
</context-group>
</trans-unit>
<trans-unit id="2003818202621229370" datatype="html">
<source>Sustainable retirement income</source>
<target state="new">Sustainable retirement income</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="201073452973037511" datatype="html">
<source>Ghostfolio empowers you to keep track of your wealth.</source>
<target state="translated">Ghostfolio надає можливість вам стежити за вашим багатством.</target>
@ -5462,6 +5482,14 @@
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="4905798562247431262" datatype="html">
<source>per month</source>
<target state="new">per month</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="4909535316439940790" datatype="html">
<source>Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> comparison table</source>
<target state="translated">Порівняльна таблиця Ghostfolio проти <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/></target>
@ -6026,6 +6054,14 @@
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="3302046820145091217" datatype="html">
<source>,</source>
<target state="new">,</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">93</context>
</context-group>
</trans-unit>
<trans-unit id="3305717385545135104" datatype="html">
<source>Last All Time High</source>
<target state="translated">Останній рекордний максимум</target>
@ -6307,7 +6343,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">346</context>
<context context-type="linenumber">345</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html</context>
@ -6359,7 +6395,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">347</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -6503,7 +6539,7 @@
<target state="translated">Символ</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">68</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -6595,7 +6631,7 @@
<target state="translated">Цінний</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">41</context>
<context context-type="linenumber">43</context>
</context-group>
</trans-unit>
<trans-unit id="4230401090765872563" datatype="html">
@ -6603,7 +6639,7 @@
<target state="translated">Зобов’язання</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="4881880242577556" datatype="html">
@ -6615,7 +6651,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">43</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="787798817533231355" datatype="html">
@ -6762,6 +6798,14 @@
<context context-type="linenumber">72</context>
</context-group>
</trans-unit>
<trans-unit id="3227075298129844075" datatype="html">
<source>If you retire today, you would be able to withdraw</source>
<target state="new">If you retire today, you would be able to withdraw</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">66</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
<source>Oceania</source>
<target state="translated">Океанія</target>

114
apps/client/src/locales/messages.xlf

@ -228,7 +228,7 @@
<source>Type</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html</context>
@ -540,14 +540,14 @@
<source>Asset Profile</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">52</context>
</context-group>
</trans-unit>
<trans-unit id="8530249987193962636" datatype="html">
<source>Historical Market Data</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">37</context>
<context context-type="linenumber">54</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html</context>
@ -558,7 +558,7 @@
<source>Data Source</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">55</context>
<context context-type="linenumber">82</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -581,28 +581,28 @@
<source>Attempts</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">83</context>
<context context-type="linenumber">120</context>
</context-group>
</trans-unit>
<trans-unit id="4207916966377787111" datatype="html">
<source>Created</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="340430316261570792" datatype="html">
<source>Finished</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">101</context>
<context context-type="linenumber">143</context>
</context-group>
</trans-unit>
<trans-unit id="5611592591303869712" datatype="html">
<source>Status</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">152</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
@ -620,28 +620,28 @@
<source>Delete Jobs</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">151</context>
<context context-type="linenumber">193</context>
</context-group>
</trans-unit>
<trans-unit id="2505231537574917205" datatype="html">
<source>View Data</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">166</context>
<context context-type="linenumber">208</context>
</context-group>
</trans-unit>
<trans-unit id="267346373699222750" datatype="html">
<source>View Stacktrace</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">173</context>
<context context-type="linenumber">215</context>
</context-group>
</trans-unit>
<trans-unit id="8746056757774292739" datatype="html">
<source>Delete Job</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">222</context>
</context-group>
</trans-unit>
<trans-unit id="6293078117617468574" datatype="html">
@ -1548,6 +1548,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
<context context-type="linenumber">97</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">81</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">31</context>
@ -1968,6 +1972,10 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-membership/user-account-membership.html</context>
<context context-type="linenumber">32</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">283</context>
@ -2529,6 +2537,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html</context>
<context context-type="linenumber">168</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html</context>
<context context-type="linenumber">189</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context>
@ -3112,6 +3124,13 @@
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="70768492340592330" datatype="html">
<source>and a safe withdrawal rate (SWR) of</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="6099700884541852399" datatype="html">
<source>New Users</source>
<context-group purpose="location">
@ -3130,7 +3149,7 @@
<source>Job ID</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="364346912677324803" datatype="html">
@ -3684,13 +3703,6 @@
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="194226838811208599" datatype="html">
<source>4% Rule</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="8057462855421378241" datatype="html">
<source>Holdings</source>
<context-group purpose="location">
@ -3917,6 +3929,13 @@
<context context-type="linenumber">132</context>
</context-group>
</trans-unit>
<trans-unit id="2003818202621229370" datatype="html">
<source>Sustainable retirement income</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="201073452973037511" datatype="html">
<source>Ghostfolio empowers you to keep track of your wealth.</source>
<context-group purpose="location">
@ -4035,6 +4054,13 @@
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="4905798562247431262" datatype="html">
<source>per month</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="4909535316439940790" datatype="html">
<source>Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> comparison table</source>
<context-group purpose="location">
@ -4380,6 +4406,13 @@
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="3302046820145091217" datatype="html">
<source>,</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">93</context>
</context-group>
</trans-unit>
<trans-unit id="3305717385545135104" datatype="html">
<source>Last All Time High</source>
<context-group purpose="location">
@ -4700,7 +4733,7 @@
<source>Symbol</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">68</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -4778,14 +4811,14 @@
<source>Valuable</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">41</context>
<context context-type="linenumber">43</context>
</context-group>
</trans-unit>
<trans-unit id="4230401090765872563" datatype="html">
<source>Liability</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="4881880242577556" datatype="html">
@ -4796,7 +4829,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">43</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="787798817533231355" datatype="html">
@ -4919,6 +4952,13 @@
<context context-type="linenumber">72</context>
</context-group>
</trans-unit>
<trans-unit id="3227075298129844075" datatype="html">
<source>If you retire today, you would be able to withdraw</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">66</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
<source>Oceania</source>
<context-group purpose="location">
@ -5209,13 +5249,6 @@
<context context-type="linenumber">266</context>
</context-group>
</trans-unit>
<trans-unit id="637740912956205466" datatype="html">
<source>If you retire today, you would be able to withdraw <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per year<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> or <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per month<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, based on your total assets of <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> and a withdrawal rate of 4%.</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="6479044529603381727" datatype="html">
<source>year</source>
<context-group purpose="location">
@ -5350,7 +5383,7 @@
<source>Execute Job</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">176</context>
<context context-type="linenumber">218</context>
</context-group>
</trans-unit>
<trans-unit id="8236987838684066590" datatype="html">
@ -5364,7 +5397,7 @@
<source>Priority</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">64</context>
<context context-type="linenumber">96</context>
</context-group>
</trans-unit>
<trans-unit id="67933701892581429" datatype="html">
@ -5834,7 +5867,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">346</context>
<context context-type="linenumber">345</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html</context>
@ -5856,6 +5889,13 @@
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="184247710717595241" datatype="html">
<source>based on your total assets of</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">95</context>
</context-group>
</trans-unit>
<trans-unit id="1859131936150262113" datatype="html">
<source>Inactive</source>
<context-group purpose="location">
@ -5891,7 +5931,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">347</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -5937,7 +5977,7 @@
<source>Portfolio Snapshot</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">56</context>
</context-group>
</trans-unit>
<trans-unit id="5924984423053010080" datatype="html">
@ -6353,7 +6393,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">357</context>
<context context-type="linenumber">356</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>

122
apps/client/src/locales/messages.zh.xlf

@ -244,7 +244,7 @@
<target state="translated">类型</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html</context>
@ -572,7 +572,7 @@
<target state="translated">资产概况</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">52</context>
</context-group>
</trans-unit>
<trans-unit id="8530249987193962636" datatype="html">
@ -580,7 +580,7 @@
<target state="translated">历史市场数据</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">37</context>
<context context-type="linenumber">54</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html</context>
@ -592,7 +592,7 @@
<target state="translated">数据源</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">55</context>
<context context-type="linenumber">82</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -616,7 +616,7 @@
<target state="translated">尝试次数</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">83</context>
<context context-type="linenumber">120</context>
</context-group>
</trans-unit>
<trans-unit id="4207916966377787111" datatype="html">
@ -624,7 +624,7 @@
<target state="translated">创建</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">92</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="340430316261570792" datatype="html">
@ -632,7 +632,7 @@
<target state="translated">完成</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">101</context>
<context context-type="linenumber">143</context>
</context-group>
</trans-unit>
<trans-unit id="5611592591303869712" datatype="html">
@ -640,7 +640,7 @@
<target state="translated">状态</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">152</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
@ -660,7 +660,7 @@
<target state="translated">删除任务</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">151</context>
<context context-type="linenumber">193</context>
</context-group>
</trans-unit>
<trans-unit id="2505231537574917205" datatype="html">
@ -668,7 +668,7 @@
<target state="translated">查看数据</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">166</context>
<context context-type="linenumber">208</context>
</context-group>
</trans-unit>
<trans-unit id="267346373699222750" datatype="html">
@ -676,7 +676,7 @@
<target state="translated">查看堆栈跟踪</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">173</context>
<context context-type="linenumber">215</context>
</context-group>
</trans-unit>
<trans-unit id="8746056757774292739" datatype="html">
@ -684,7 +684,7 @@
<target state="translated">删除任务</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">222</context>
</context-group>
</trans-unit>
<trans-unit id="6293078117617468574" datatype="html">
@ -1662,6 +1662,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
<context context-type="linenumber">97</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">81</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">31</context>
@ -2126,6 +2130,10 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-membership/user-account-membership.html</context>
<context context-type="linenumber">32</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">283</context>
@ -2734,6 +2742,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html</context>
<context context-type="linenumber">168</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html</context>
<context context-type="linenumber">189</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context>
@ -3383,6 +3395,14 @@
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="70768492340592330" datatype="html">
<source>and a safe withdrawal rate (SWR) of</source>
<target state="new">and a safe withdrawal rate (SWR) of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="6099700884541852399" datatype="html">
<source>New Users</source>
<target state="translated">新用户</target>
@ -3404,7 +3424,7 @@
<target state="new">Job ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">34</context>
</context-group>
</trans-unit>
<trans-unit id="364346912677324803" datatype="html">
@ -4019,14 +4039,6 @@
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="194226838811208599" datatype="html">
<source>4% Rule</source>
<target state="translated">4%规则</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="8057462855421378241" datatype="html">
<source>Holdings</source>
<target state="translated">持仓</target>
@ -4275,6 +4287,14 @@
<context context-type="linenumber">132</context>
</context-group>
</trans-unit>
<trans-unit id="2003818202621229370" datatype="html">
<source>Sustainable retirement income</source>
<target state="new">Sustainable retirement income</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="201073452973037511" datatype="html">
<source>Ghostfolio empowers you to keep track of your wealth.</source>
<target state="translated">Ghostfolio 使您能够跟踪您的财富。</target>
@ -4408,6 +4428,14 @@
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="4905798562247431262" datatype="html">
<source>per month</source>
<target state="new">per month</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="4909535316439940790" datatype="html">
<source>Ghostfolio vs <x id="INTERPOLATION" equiv-text="{{ product2.name }}"/> comparison table</source>
<target state="translated">Ghostfolio vs<x id="INTERPOLATION" equiv-text="{{ product2.name }}"/>比较表</target>
@ -4788,6 +4816,14 @@
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="3302046820145091217" datatype="html">
<source>,</source>
<target state="new">,</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">93</context>
</context-group>
</trans-unit>
<trans-unit id="3305717385545135104" datatype="html">
<source>Last All Time High</source>
<target state="translated">上次历史最高纪录</target>
@ -5141,7 +5177,7 @@
<target state="translated">代码</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">46</context>
<context context-type="linenumber">68</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.html</context>
@ -5225,7 +5261,7 @@
<target state="translated">贵重物品</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">41</context>
<context context-type="linenumber">43</context>
</context-group>
</trans-unit>
<trans-unit id="4230401090765872563" datatype="html">
@ -5233,7 +5269,7 @@
<target state="translated">负债</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="4881880242577556" datatype="html">
@ -5245,7 +5281,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">43</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="787798817533231355" datatype="html">
@ -5384,6 +5420,14 @@
<context context-type="linenumber">72</context>
</context-group>
</trans-unit>
<trans-unit id="3227075298129844075" datatype="html">
<source>If you retire today, you would be able to withdraw</source>
<target state="new">If you retire today, you would be able to withdraw</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">66</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
<source>Oceania</source>
<target state="translated">大洋洲</target>
@ -5708,14 +5752,6 @@
<context context-type="linenumber">266</context>
</context-group>
</trans-unit>
<trans-unit id="637740912956205466" datatype="html">
<source>If you retire today, you would be able to withdraw <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per year<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> or <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/> per month<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>, based on your total assets of <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/> and a withdrawal rate of 4%.</source>
<target state="translated">如果你今天退休,你可以领取<x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerYear?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/>每年<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>或者<x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_1" ctype="x-gf_value_1" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;withdrawalRatePerMonth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/>每月<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>,根据您的总资产<x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;font-weight-bold&quot; &gt;"/><x id="START_TAG_GF_VALUE_2" ctype="x-gf_value_2" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_GF_VALUE" ctype="x-gf_value" equiv-text="&lt;gf-value class=&quot;d-inline-block&quot; [isCurrency]=&quot;true&quot; [locale]=&quot;user?.settings?.locale&quot; [unit]=&quot;user?.settings?.baseCurrency&quot; [value]=&quot;fireWealth?.toNumber()&quot; /&gt;"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>提款率为4%。</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">68</context>
</context-group>
</trans-unit>
<trans-unit id="6479044529603381727" datatype="html">
<source>year</source>
<target state="translated">年</target>
@ -5866,7 +5902,7 @@
<target state="translated">执行作业</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">176</context>
<context context-type="linenumber">218</context>
</context-group>
</trans-unit>
<trans-unit id="2734022681675842051" datatype="html">
@ -5874,7 +5910,7 @@
<target state="translated">优先级</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">64</context>
<context context-type="linenumber">96</context>
</context-group>
</trans-unit>
<trans-unit id="8236987838684066590" datatype="html">
@ -6381,6 +6417,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="184247710717595241" datatype="html">
<source>based on your total assets of</source>
<target state="new">based on your total assets of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">95</context>
</context-group>
</trans-unit>
<trans-unit id="1859131936150262113" datatype="html">
<source>Inactive</source>
<target state="translated">非活跃</target>
@ -6430,7 +6474,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">346</context>
<context context-type="linenumber">345</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html</context>
@ -6474,7 +6518,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">348</context>
<context context-type="linenumber">347</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
@ -6510,7 +6554,7 @@
<target state="translated">投资组合快照</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-jobs/admin-jobs.html</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">56</context>
</context-group>
</trans-unit>
<trans-unit id="8375528527939577247" datatype="html">
@ -6980,7 +7024,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html</context>
<context context-type="linenumber">357</context>
<context context-type="linenumber">356</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html</context>

6
apps/client/src/styles/table.scss

@ -1,6 +1,12 @@
@mixin gf-table($darkTheme: false) {
--mat-table-background-color: var(--light-background);
th {
.mat-sort-header-container {
justify-content: inherit;
}
}
.mat-footer-row,
.mat-row {
.mat-cell,

6
libs/common/src/lib/chart-helper.ts

@ -132,8 +132,10 @@ export function getVerticalHoverLinePlugin(
}
export function transformTickToAbbreviation(value: number) {
if (value >= -999 && value <= 999) {
return value.toString();
if (value === 0) {
return '0';
} else if (value >= -999 && value <= 999) {
return value.toFixed(2);
} else if (value >= -999999 && value <= 999999) {
return `${value / 1000}K`;
} else {

3
libs/common/src/lib/interfaces/fire-wealth.interface.ts

@ -0,0 +1,3 @@
export interface FireWealth {
today: { valueInBaseCurrency: number };
}

2
libs/common/src/lib/interfaces/index.ts

@ -19,6 +19,7 @@ import type { EnhancedSymbolProfile } from './enhanced-symbol-profile.interface'
import type { Export } from './export.interface';
import type { FilterGroup } from './filter-group.interface';
import type { Filter } from './filter.interface';
import type { FireWealth } from './fire-wealth.interface';
import type { HistoricalDataItem } from './historical-data-item.interface';
import type { HoldingWithParents } from './holding-with-parents.interface';
import type { Holding } from './holding.interface';
@ -104,6 +105,7 @@ export {
Export,
Filter,
FilterGroup,
FireWealth,
HistoricalDataItem,
HistoricalResponse,
Holding,

3
libs/common/src/lib/interfaces/portfolio-summary.interface.ts

@ -1,3 +1,4 @@
import { FireWealth } from './fire-wealth.interface';
import { PortfolioPerformance } from './portfolio-performance.interface';
export interface PortfolioSummary extends PortfolioPerformance {
@ -16,7 +17,7 @@ export interface PortfolioSummary extends PortfolioPerformance {
fees: number;
filteredValueInBaseCurrency?: number;
filteredValueInPercentage?: number;
fireWealth: number;
fireWealth: FireWealth;
grossPerformance: number;
grossPerformanceWithCurrencyEffect: number;
interest: number;

1
libs/common/src/lib/interfaces/user-settings.interface.ts

@ -29,6 +29,7 @@ export interface UserSettings {
performanceCalculationType?: PerformanceCalculationType;
projectedTotalAmount?: number;
retirementDate?: string;
safeWithdrawalRate?: number;
savingsRate?: number;
viewMode?: ViewMode;
xRayRules?: XRayRulesSettings;

10
libs/ui/src/lib/accounts-table/accounts-table.component.scss

@ -1,13 +1,3 @@
:host {
display: block;
.gf-table {
th {
::ng-deep {
.mat-sort-header-container {
justify-content: inherit;
}
}
}
}
}

4
libs/ui/src/lib/activities-filter/activities-filter.component.ts

@ -1,4 +1,4 @@
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
import { GfSymbolPipe } from '@ghostfolio/client/pipes/symbol/symbol.pipe';
import { Filter, FilterGroup } from '@ghostfolio/common/interfaces';
import { COMMA, ENTER } from '@angular/cdk/keycodes';
@ -39,7 +39,7 @@ import { translate } from '../i18n';
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [
CommonModule,
GfSymbolModule,
GfSymbolPipe,
IonIcon,
MatAutocompleteModule,
MatButtonModule,

4
libs/ui/src/lib/activities-table/activities-table.component.html

@ -255,7 +255,7 @@
<ng-container matColumnDef="value">
<th
*matHeaderCellDef
class="d-none d-lg-table-cell justify-content-end px-1"
class="d-none d-lg-table-cell px-1 text-right"
mat-header-cell
>
<ng-container i18n>Value</ng-container>
@ -291,7 +291,7 @@
<ng-container matColumnDef="valueInBaseCurrency">
<th
*matHeaderCellDef
class="d-lg-none d-xl-none justify-content-end px-1"
class="d-lg-none d-xl-none px-1 text-right"
mat-header-cell
>
<ng-container i18n>Value</ng-container>

4
libs/ui/src/lib/activities-table/activities-table.component.ts

@ -1,7 +1,7 @@
import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface';
import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type';
import { NotificationService } from '@ghostfolio/client/core/notification/notification.service';
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
import { GfSymbolPipe } from '@ghostfolio/client/pipes/symbol/symbol.pipe';
import {
DEFAULT_PAGE_SIZE,
TAG_ID_EXCLUDE_FROM_ANALYSIS
@ -73,7 +73,7 @@ import { GfValueComponent } from '../value/value.component';
GfActivityTypeComponent,
GfEntityLogoComponent,
GfNoTransactionsInfoComponent,
GfSymbolModule,
GfSymbolPipe,
GfValueComponent,
IonIcon,
MatButtonModule,

4
libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.component.ts

@ -1,4 +1,4 @@
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
import { GfSymbolPipe } from '@ghostfolio/client/pipes/symbol/symbol.pipe';
import { internalRoutes } from '@ghostfolio/common/routes/routes';
import { FocusableOption } from '@angular/cdk/a11y';
@ -24,7 +24,7 @@ import {
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [GfSymbolModule, RouterModule],
imports: [GfSymbolPipe, RouterModule],
selector: 'gf-assistant-list-item',
styleUrls: ['./assistant-list-item.scss'],
templateUrl: './assistant-list-item.html'

5
libs/ui/src/lib/assistant/assistant.component.ts

@ -1,4 +1,4 @@
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
import { GfSymbolPipe } from '@ghostfolio/client/pipes/symbol/symbol.pipe';
import { AdminService } from '@ghostfolio/client/services/admin.service';
import { DataService } from '@ghostfolio/client/services/data.service';
import { getAssetProfileIdentifier } from '@ghostfolio/common/helper';
@ -73,8 +73,9 @@ import {
imports: [
FormsModule,
GfAssistantListItemComponent,
GfEntityLogoComponent,
GfPortfolioFilterFormComponent,
GfSymbolModule,
GfSymbolPipe,
IonIcon,
MatButtonModule,
MatFormFieldModule,

10
libs/ui/src/lib/benchmark/benchmark.component.scss

@ -1,13 +1,3 @@
:host {
display: block;
.gf-table {
th {
::ng-deep {
.mat-sort-header-container {
justify-content: inherit;
}
}
}
}
}

1
libs/ui/src/lib/fire-calculator/fire-calculator.component.html

@ -40,6 +40,7 @@
formControlName="retirementDate"
matInput
[matDatepicker]="datepicker"
[min]="minDate"
/>
<mat-datepicker-toggle
matIconSuffix

2
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts

@ -44,6 +44,7 @@ import 'chartjs-adapter-date-fns';
import Color from 'color';
import {
add,
addDays,
addYears,
getMonth,
setMonth,
@ -102,6 +103,7 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy {
});
public chart: Chart<'bar'>;
public isLoading = true;
public minDate = addDays(new Date(), 1);
public periodsToRetire = 0;
private readonly CONTRIBUTION_PERIOD = 12;

10
libs/ui/src/lib/holdings-table/holdings-table.component.scss

@ -1,13 +1,3 @@
:host {
display: block;
.gf-table {
th {
::ng-deep {
.mat-sort-header-container {
justify-content: inherit;
}
}
}
}
}

4
libs/ui/src/lib/holdings-table/holdings-table.component.ts

@ -1,4 +1,4 @@
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
import { GfSymbolPipe } from '@ghostfolio/client/pipes/symbol/symbol.pipe';
import { getLocale } from '@ghostfolio/common/helper';
import {
AssetProfileIdentifier,
@ -34,7 +34,7 @@ import { GfValueComponent } from '../value/value.component';
imports: [
CommonModule,
GfEntityLogoComponent,
GfSymbolModule,
GfSymbolPipe,
GfValueComponent,
MatButtonModule,
MatDialogModule,

5
libs/ui/src/lib/line-chart/line-chart.component.ts

@ -261,7 +261,10 @@ export class GfLineChartComponent
}
if (typeof tickValue === 'number') {
return tickValue.toFixed(2);
return tickValue.toLocaleString(this.locale, {
maximumFractionDigits: 2,
minimumFractionDigits: 2
});
}
return tickValue;

4
libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts

@ -1,4 +1,4 @@
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
import { GfSymbolPipe } from '@ghostfolio/client/pipes/symbol/symbol.pipe';
import { DataService } from '@ghostfolio/client/services/data.service';
import { LookupItem } from '@ghostfolio/common/interfaces';
@ -57,7 +57,7 @@ import { AbstractMatFormField } from '../shared/abstract-mat-form-field';
imports: [
FormsModule,
GfPremiumIndicatorComponent,
GfSymbolModule,
GfSymbolPipe,
MatAutocompleteModule,
MatFormFieldModule,
MatInputModule,

4
libs/ui/src/lib/top-holdings/top-holdings.component.ts

@ -1,4 +1,4 @@
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
import { GfSymbolPipe } from '@ghostfolio/client/pipes/symbol/symbol.pipe';
import { getLocale } from '@ghostfolio/common/helper';
import {
AssetProfileIdentifier,
@ -46,7 +46,7 @@ import { GfValueComponent } from '../value/value.component';
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [
CommonModule,
GfSymbolModule,
GfSymbolPipe,
GfValueComponent,
MatButtonModule,
MatPaginatorModule,

104
package-lock.json

@ -1,12 +1,12 @@
{
"name": "ghostfolio",
"version": "2.202.0",
"version": "2.205.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "ghostfolio",
"version": "2.202.0",
"version": "2.205.0",
"hasInstallScript": true,
"license": "AGPL-3.0",
"dependencies": {
@ -44,7 +44,7 @@
"@nestjs/schedule": "6.0.0",
"@nestjs/serve-static": "5.0.3",
"@openrouter/ai-sdk-provider": "0.7.2",
"@prisma/client": "6.16.1",
"@prisma/client": "6.16.3",
"@simplewebauthn/browser": "13.1.0",
"@simplewebauthn/server": "13.1.1",
"@stripe/stripe-js": "7.9.0",
@ -130,7 +130,7 @@
"@types/big.js": "6.2.2",
"@types/google-spreadsheet": "3.1.5",
"@types/jest": "29.5.13",
"@types/lodash": "4.17.17",
"@types/lodash": "4.17.20",
"@types/node": "22.15.17",
"@types/papaparse": "5.3.7",
"@types/passport-google-oauth20": "2.0.16",
@ -149,7 +149,7 @@
"nx": "21.5.1",
"prettier": "3.6.2",
"prettier-plugin-organize-attributes": "1.0.0",
"prisma": "6.16.1",
"prisma": "6.16.3",
"react": "18.2.0",
"react-dom": "18.2.0",
"replace-in-file": "8.3.0",
@ -11960,9 +11960,9 @@
"license": "MIT"
},
"node_modules/@prisma/client": {
"version": "6.16.1",
"resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.16.1.tgz",
"integrity": "sha512-QaBCOY29lLAxEFFJgBPyW3WInCW52fJeQTmWx/h6YsP5u0bwuqP51aP0uhqFvhK9DaZPwvai/M4tSDYLVE9vRg==",
"version": "6.16.3",
"resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.16.3.tgz",
"integrity": "sha512-JfNfAtXG+/lIopsvoZlZiH2k5yNx87mcTS4t9/S5oufM1nKdXYxOvpDC1XoTCFBa5cQh7uXnbMPsmZrwZY80xw==",
"hasInstallScript": true,
"license": "Apache-2.0",
"engines": {
@ -11982,9 +11982,9 @@
}
},
"node_modules/@prisma/config": {
"version": "6.16.1",
"resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.16.1.tgz",
"integrity": "sha512-sz3uxRPNL62QrJ0EYiujCFkIGZ3hg+9hgC1Ae1HjoYuj0BxCqHua4JNijYvYCrh9LlofZDZcRBX3tHBfLvAngA==",
"version": "6.16.3",
"resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.16.3.tgz",
"integrity": "sha512-VlsLnG4oOuKGGMToEeVaRhoTBZu5H3q51jTQXb/diRags3WV0+BQK5MolJTtP6G7COlzoXmWeS11rNBtvg+qFQ==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
@ -11995,53 +11995,53 @@
}
},
"node_modules/@prisma/debug": {
"version": "6.16.1",
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.16.1.tgz",
"integrity": "sha512-RWv/VisW5vJE4cDRTuAHeVedtGoItXTnhuLHsSlJ9202QKz60uiXWywBlVcqXVq8bFeIZoCoWH+R1duZJPwqLw==",
"version": "6.16.3",
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.16.3.tgz",
"integrity": "sha512-89DdqWtdKd7qoc9/qJCKLTazj3W3zPEiz0hc7HfZdpjzm21c7orOUB5oHWJsG+4KbV4cWU5pefq3CuDVYF9vgA==",
"devOptional": true,
"license": "Apache-2.0"
},
"node_modules/@prisma/engines": {
"version": "6.16.1",
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.16.1.tgz",
"integrity": "sha512-EOnEM5HlosPudBqbI+jipmaW/vQEaF0bKBo4gVkGabasINHR6RpC6h44fKZEqx4GD8CvH+einD2+b49DQrwrAg==",
"version": "6.16.3",
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.16.3.tgz",
"integrity": "sha512-b+Rl4nzQDcoqe6RIpSHv8f5lLnwdDGvXhHjGDiokObguAAv/O1KaX1Oc69mBW/GFWKQpCkOraobLjU6s1h8HGg==",
"devOptional": true,
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"@prisma/debug": "6.16.1",
"@prisma/engines-version": "6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43",
"@prisma/fetch-engine": "6.16.1",
"@prisma/get-platform": "6.16.1"
"@prisma/debug": "6.16.3",
"@prisma/engines-version": "6.16.1-1.bb420e667c1820a8c05a38023385f6cc7ef8e83a",
"@prisma/fetch-engine": "6.16.3",
"@prisma/get-platform": "6.16.3"
}
},
"node_modules/@prisma/engines-version": {
"version": "6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43",
"resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43.tgz",
"integrity": "sha512-ThvlDaKIVrnrv97ujNFDYiQbeMQpLa0O86HFA2mNoip4mtFqM7U5GSz2ie1i2xByZtvPztJlNRgPsXGeM/kqAA==",
"version": "6.16.1-1.bb420e667c1820a8c05a38023385f6cc7ef8e83a",
"resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.16.1-1.bb420e667c1820a8c05a38023385f6cc7ef8e83a.tgz",
"integrity": "sha512-fftRmosBex48Ph1v2ll1FrPpirwtPZpNkE5CDCY1Lw2SD2ctyrLlVlHiuxDAAlALwWBOkPbAll4+EaqdGuMhJw==",
"devOptional": true,
"license": "Apache-2.0"
},
"node_modules/@prisma/fetch-engine": {
"version": "6.16.1",
"resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.16.1.tgz",
"integrity": "sha512-fl/PKQ8da5YTayw86WD3O9OmKJEM43gD3vANy2hS5S1CnfW2oPXk+Q03+gUWqcKK306QqhjjIHRFuTZ31WaosQ==",
"version": "6.16.3",
"resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.16.3.tgz",
"integrity": "sha512-bUoRIkVaI+CCaVGrSfcKev0/Mk4ateubqWqGZvQ9uCqFv2ENwWIR3OeNuGin96nZn5+SkebcD7RGgKr/+mJelw==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
"@prisma/debug": "6.16.1",
"@prisma/engines-version": "6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43",
"@prisma/get-platform": "6.16.1"
"@prisma/debug": "6.16.3",
"@prisma/engines-version": "6.16.1-1.bb420e667c1820a8c05a38023385f6cc7ef8e83a",
"@prisma/get-platform": "6.16.3"
}
},
"node_modules/@prisma/get-platform": {
"version": "6.16.1",
"resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.16.1.tgz",
"integrity": "sha512-kUfg4vagBG7dnaGRcGd1c0ytQFcDj2SUABiuveIpL3bthFdTLI6PJeLEia6Q8Dgh+WhPdo0N2q0Fzjk63XTyaA==",
"version": "6.16.3",
"resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.16.3.tgz",
"integrity": "sha512-X1LxiFXinJ4iQehrodGp0f66Dv6cDL0GbRlcCoLtSu6f4Wi+hgo7eND/afIs5029GQLgNWKZ46vn8hjyXTsHLA==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
"@prisma/debug": "6.16.1"
"@prisma/debug": "6.16.3"
}
},
"node_modules/@redis/client": {
@ -14435,9 +14435,9 @@
}
},
"node_modules/@types/lodash": {
"version": "4.17.17",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.17.tgz",
"integrity": "sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==",
"version": "4.17.20",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz",
"integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==",
"dev": true,
"license": "MIT"
},
@ -17285,9 +17285,9 @@
}
},
"node_modules/c12/node_modules/jiti": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz",
"integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==",
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz",
"integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
"devOptional": true,
"license": "MIT",
"bin": {
@ -33713,16 +33713,16 @@
}
},
"node_modules/nypm": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.1.tgz",
"integrity": "sha512-hlacBiRiv1k9hZFiphPUkfSQ/ZfQzZDzC+8z0wL3lvDAOUu/2NnChkKuMoMjNur/9OpKuz2QsIeiPVN0xM5Q0w==",
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.2.tgz",
"integrity": "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"citty": "^0.1.6",
"consola": "^3.4.2",
"pathe": "^2.0.3",
"pkg-types": "^2.2.0",
"pkg-types": "^2.3.0",
"tinyexec": "^1.0.1"
},
"bin": {
@ -34903,9 +34903,9 @@
}
},
"node_modules/pkg-types": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.2.0.tgz",
"integrity": "sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ==",
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz",
"integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==",
"devOptional": true,
"license": "MIT",
"dependencies": {
@ -35747,15 +35747,15 @@
}
},
"node_modules/prisma": {
"version": "6.16.1",
"resolved": "https://registry.npmjs.org/prisma/-/prisma-6.16.1.tgz",
"integrity": "sha512-MFkMU0eaDDKAT4R/By2IA9oQmwLTxokqv2wegAErr9Rf+oIe7W2sYpE/Uxq0H2DliIR7vnV63PkC1bEwUtl98w==",
"version": "6.16.3",
"resolved": "https://registry.npmjs.org/prisma/-/prisma-6.16.3.tgz",
"integrity": "sha512-4tJq3KB9WRshH5+QmzOLV54YMkNlKOtLKaSdvraI5kC/axF47HuOw6zDM8xrxJ6s9o2WodY654On4XKkrobQdQ==",
"devOptional": true,
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"@prisma/config": "6.16.1",
"@prisma/engines": "6.16.1"
"@prisma/config": "6.16.3",
"@prisma/engines": "6.16.3"
},
"bin": {
"prisma": "build/index.js"

8
package.json

@ -1,6 +1,6 @@
{
"name": "ghostfolio",
"version": "2.202.0",
"version": "2.205.0",
"homepage": "https://ghostfol.io",
"license": "AGPL-3.0",
"repository": "https://github.com/ghostfolio/ghostfolio",
@ -90,7 +90,7 @@
"@nestjs/schedule": "6.0.0",
"@nestjs/serve-static": "5.0.3",
"@openrouter/ai-sdk-provider": "0.7.2",
"@prisma/client": "6.16.1",
"@prisma/client": "6.16.3",
"@simplewebauthn/browser": "13.1.0",
"@simplewebauthn/server": "13.1.1",
"@stripe/stripe-js": "7.9.0",
@ -176,7 +176,7 @@
"@types/big.js": "6.2.2",
"@types/google-spreadsheet": "3.1.5",
"@types/jest": "29.5.13",
"@types/lodash": "4.17.17",
"@types/lodash": "4.17.20",
"@types/node": "22.15.17",
"@types/papaparse": "5.3.7",
"@types/passport-google-oauth20": "2.0.16",
@ -195,7 +195,7 @@
"nx": "21.5.1",
"prettier": "3.6.2",
"prettier-plugin-organize-attributes": "1.0.0",
"prisma": "6.16.1",
"prisma": "6.16.3",
"react": "18.2.0",
"react-dom": "18.2.0",
"replace-in-file": "8.3.0",

Loading…
Cancel
Save