Browse Source

Merge remote-tracking branch 'origin/main' into feature/enable-strict-null-checks-in-ui

pull/6264/head
KenTandrian 2 weeks ago
parent
commit
c4b6a6f7d2
  1. 6
      CHANGELOG.md
  2. 10
      apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts
  3. 12
      apps/api/src/services/data-provider/coingecko/coingecko.service.ts
  4. 10
      apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts
  5. 10
      apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts
  6. 8
      apps/client/src/app/app.component.ts
  7. 2
      apps/client/src/app/components/admin-users/admin-users.component.ts
  8. 8
      apps/client/src/app/components/footer/footer.component.ts
  9. 2
      apps/client/src/app/components/home-overview/home-overview.component.ts
  10. 21
      apps/client/src/app/components/markets/markets.component.ts
  11. 10
      apps/client/src/app/pages/about/about-page.routes.ts
  12. 2
      apps/client/src/app/pages/about/changelog/changelog-page.routes.ts
  13. 2
      apps/client/src/app/pages/about/license/license-page.routes.ts
  14. 2
      apps/client/src/app/pages/about/oss-friends/oss-friends-page.routes.ts
  15. 2
      apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.routes.ts
  16. 2
      apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.routes.ts
  17. 20
      apps/client/src/app/pages/admin/admin-page.routes.ts
  18. 2
      apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts
  19. 4
      apps/client/src/app/pages/faq/faq-page.routes.ts
  20. 2
      apps/client/src/app/pages/faq/saas/saas-page.component.ts
  21. 2
      apps/client/src/app/pages/faq/saas/saas-page.routes.ts
  22. 2
      apps/client/src/app/pages/faq/self-hosting/self-hosting-page.routes.ts
  23. 20
      apps/client/src/app/pages/home/home-page.routes.ts
  24. 2
      apps/client/src/app/pages/portfolio/activities/activities-page.routes.ts
  25. 2
      apps/client/src/app/pages/portfolio/analysis/analysis-page.routes.ts
  26. 8
      apps/client/src/app/pages/portfolio/portfolio-page.routes.ts
  27. 2
      apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts
  28. 2
      apps/client/src/app/pages/resources/glossary/resources-glossary.routes.ts
  29. 2
      apps/client/src/app/pages/resources/guides/resources-guides.routes.ts
  30. 2
      apps/client/src/app/pages/resources/markets/resources-markets.routes.ts
  31. 12
      apps/client/src/app/pages/resources/overview/resources-overview.component.ts
  32. 6
      apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.routes.ts
  33. 8
      apps/client/src/app/pages/resources/resources-page.routes.ts
  34. 8
      apps/client/src/app/pages/user-account/user-account-page.routes.ts
  35. 4
      apps/client/src/app/pages/zen/zen-page.routes.ts
  36. 166
      apps/client/src/locales/messages.pl.xlf

6
CHANGELOG.md

@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
### Changed
- Improved the language localization for Polish (`pl`)
## 2.250.0 - 2026-03-17
### Added

10
apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts

@ -16,7 +16,7 @@ import {
LookupResponse
} from '@ghostfolio/common/interfaces';
import { Injectable } from '@nestjs/common';
import { Injectable, OnModuleInit } from '@nestjs/common';
import { DataSource, SymbolProfile } from '@prisma/client';
import Alphavantage from 'alphavantage';
import { format, isAfter, isBefore, parse } from 'date-fns';
@ -24,12 +24,16 @@ import { format, isAfter, isBefore, parse } from 'date-fns';
import { AlphaVantageHistoricalResponse } from './interfaces/interfaces';
@Injectable()
export class AlphaVantageService implements DataProviderInterface {
export class AlphaVantageService
implements DataProviderInterface, OnModuleInit
{
public alphaVantage;
public constructor(
private readonly configurationService: ConfigurationService
) {
) {}
public onModuleInit() {
this.alphaVantage = Alphavantage({
key: this.configurationService.get('API_KEY_ALPHA_VANTAGE')
});

12
apps/api/src/services/data-provider/coingecko/coingecko.service.ts

@ -17,7 +17,7 @@ import {
LookupResponse
} from '@ghostfolio/common/interfaces';
import { Injectable, Logger } from '@nestjs/common';
import { Injectable, Logger, OnModuleInit } from '@nestjs/common';
import {
AssetClass,
AssetSubClass,
@ -27,13 +27,15 @@ import {
import { format, fromUnixTime, getUnixTime } from 'date-fns';
@Injectable()
export class CoinGeckoService implements DataProviderInterface {
private readonly apiUrl: string;
private readonly headers: HeadersInit = {};
export class CoinGeckoService implements DataProviderInterface, OnModuleInit {
private apiUrl: string;
private headers: HeadersInit = {};
public constructor(
private readonly configurationService: ConfigurationService
) {
) {}
public onModuleInit() {
const apiKeyDemo = this.configurationService.get('API_KEY_COINGECKO_DEMO');
const apiKeyPro = this.configurationService.get('API_KEY_COINGECKO_PRO');

10
apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts

@ -22,7 +22,7 @@ import {
} from '@ghostfolio/common/interfaces';
import { MarketState } from '@ghostfolio/common/types';
import { Injectable, Logger } from '@nestjs/common';
import { Injectable, Logger, OnModuleInit } from '@nestjs/common';
import {
AssetClass,
AssetSubClass,
@ -33,14 +33,18 @@ import { addDays, format, isSameDay, isToday } from 'date-fns';
import { isNumber } from 'lodash';
@Injectable()
export class EodHistoricalDataService implements DataProviderInterface {
export class EodHistoricalDataService
implements DataProviderInterface, OnModuleInit
{
private apiKey: string;
private readonly URL = 'https://eodhistoricaldata.com/api';
public constructor(
private readonly configurationService: ConfigurationService,
private readonly symbolProfileService: SymbolProfileService
) {
) {}
public onModuleInit() {
this.apiKey = this.configurationService.get('API_KEY_EOD_HISTORICAL_DATA');
}

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

@ -23,7 +23,7 @@ import {
} from '@ghostfolio/common/interfaces';
import { MarketState } from '@ghostfolio/common/types';
import { Injectable, Logger } from '@nestjs/common';
import { Injectable, Logger, OnModuleInit } from '@nestjs/common';
import {
AssetClass,
AssetSubClass,
@ -44,7 +44,9 @@ import {
import { uniqBy } from 'lodash';
@Injectable()
export class FinancialModelingPrepService implements DataProviderInterface {
export class FinancialModelingPrepService
implements DataProviderInterface, OnModuleInit
{
private static countriesMapping = {
'Korea (the Republic of)': 'South Korea',
'Russian Federation': 'Russia',
@ -57,7 +59,9 @@ export class FinancialModelingPrepService implements DataProviderInterface {
private readonly configurationService: ConfigurationService,
private readonly cryptocurrencyService: CryptocurrencyService,
private readonly prismaService: PrismaService
) {
) {}
public onModuleInit() {
this.apiKey = this.configurationService.get(
'API_KEY_FINANCIAL_MODELING_PREP'
);

8
apps/client/src/app/app.component.ts

@ -141,18 +141,18 @@ export class GfAppComponent implements OnInit {
if (
(this.currentRoute === internalRoutes.home.path &&
this.currentSubRoute ===
internalRoutes.home.subRoutes.holdings.path) ||
internalRoutes.home.subRoutes?.holdings.path) ||
(this.currentRoute === internalRoutes.portfolio.path &&
!this.currentSubRoute) ||
(this.currentRoute === internalRoutes.portfolio.path &&
this.currentSubRoute ===
internalRoutes.portfolio.subRoutes.activities.path) ||
internalRoutes.portfolio.subRoutes?.activities.path) ||
(this.currentRoute === internalRoutes.portfolio.path &&
this.currentSubRoute ===
internalRoutes.portfolio.subRoutes.allocations.path) ||
internalRoutes.portfolio.subRoutes?.allocations.path) ||
(this.currentRoute === internalRoutes.zen.path &&
this.currentSubRoute ===
internalRoutes.home.subRoutes.holdings.path)
internalRoutes.home.subRoutes?.holdings.path)
) {
this.hasPermissionToChangeFilters = true;
} else {

2
apps/client/src/app/components/admin-users/admin-users.component.ts

@ -89,7 +89,7 @@ export class GfAdminUsersComponent implements OnInit {
public isLoading = false;
public pageSize = DEFAULT_PAGE_SIZE;
public routerLinkAdminControlUsers =
internalRoutes.adminControl.subRoutes.users.routerLink;
internalRoutes.adminControl.subRoutes?.users.routerLink;
public totalItems = 0;
public user: User;

8
apps/client/src/app/components/footer/footer.component.ts

@ -33,13 +33,13 @@ export class GfFooterComponent implements OnChanges {
public hasPermissionToAccessFearAndGreedIndex: boolean;
public routerLinkAbout = publicRoutes.about.routerLink;
public routerLinkAboutChangelog =
publicRoutes.about.subRoutes.changelog.routerLink;
publicRoutes.about.subRoutes?.changelog.routerLink;
public routerLinkAboutLicense =
publicRoutes.about.subRoutes.license.routerLink;
publicRoutes.about.subRoutes?.license.routerLink;
public routerLinkAboutPrivacyPolicy =
publicRoutes.about.subRoutes.privacyPolicy.routerLink;
publicRoutes.about.subRoutes?.privacyPolicy.routerLink;
public routerLinkAboutTermsOfService =
publicRoutes.about.subRoutes.termsOfService.routerLink;
publicRoutes.about.subRoutes?.termsOfService.routerLink;
public routerLinkBlog = publicRoutes.blog.routerLink;
public routerLinkFaq = publicRoutes.faq.routerLink;
public routerLinkFeatures = publicRoutes.features.routerLink;

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

@ -56,7 +56,7 @@ export class GfHomeOverviewComponent implements OnInit {
public routerLinkAccounts = internalRoutes.accounts.routerLink;
public routerLinkPortfolio = internalRoutes.portfolio.routerLink;
public routerLinkPortfolioActivities =
internalRoutes.portfolio.subRoutes.activities.routerLink;
internalRoutes.portfolio.subRoutes?.activities.routerLink;
public showDetails = false;
public unit: string;
public user: User;

21
apps/client/src/app/components/markets/markets.component.ts

@ -19,12 +19,11 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
OnDestroy,
DestroyRef,
OnInit
} from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { DeviceDetectorService } from 'ngx-device-detector';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
@ -39,7 +38,7 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['./markets.scss'],
templateUrl: './markets.html'
})
export class GfMarketsComponent implements OnDestroy, OnInit {
export class GfMarketsComponent implements OnInit {
public benchmarks: Benchmark[];
public deviceType: string;
public fearAndGreedIndex: number;
@ -55,18 +54,17 @@ export class GfMarketsComponent implements OnDestroy, OnInit {
public readonly numberOfDays = 365;
public user: User;
private unsubscribeSubject = new Subject<void>();
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private userService: UserService
) {
this.deviceType = this.deviceService.getDeviceInfo().deviceType;
this.userService.stateChanged
.pipe(takeUntil(this.unsubscribeSubject))
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@ -79,7 +77,7 @@ export class GfMarketsComponent implements OnDestroy, OnInit {
public ngOnInit() {
this.dataService
.fetchMarketDataOfMarkets({ includeHistoricalData: this.numberOfDays })
.pipe(takeUntil(this.unsubscribeSubject))
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ fearAndGreedIndex }) => {
this.fearAndGreedIndexData = fearAndGreedIndex;
@ -90,7 +88,7 @@ export class GfMarketsComponent implements OnDestroy, OnInit {
this.dataService
.fetchBenchmarks()
.pipe(takeUntil(this.unsubscribeSubject))
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ benchmarks }) => {
this.benchmarks = benchmarks;
@ -119,9 +117,4 @@ export class GfMarketsComponent implements OnDestroy, OnInit {
this.initialize();
}
public ngOnDestroy() {
this.unsubscribeSubject.next();
this.unsubscribeSubject.complete();
}
}

10
apps/client/src/app/pages/about/about-page.routes.ts

@ -15,29 +15,29 @@ export const routes: Routes = [
import('./overview/about-overview-page.routes').then((m) => m.routes)
},
{
path: publicRoutes.about.subRoutes.changelog.path,
path: publicRoutes.about.subRoutes?.changelog.path,
loadChildren: () =>
import('./changelog/changelog-page.routes').then((m) => m.routes)
},
{
path: publicRoutes.about.subRoutes.license.path,
path: publicRoutes.about.subRoutes?.license.path,
loadChildren: () =>
import('./license/license-page.routes').then((m) => m.routes)
},
{
path: publicRoutes.about.subRoutes.ossFriends.path,
path: publicRoutes.about.subRoutes?.ossFriends.path,
loadChildren: () =>
import('./oss-friends/oss-friends-page.routes').then((m) => m.routes)
},
{
path: publicRoutes.about.subRoutes.privacyPolicy.path,
path: publicRoutes.about.subRoutes?.privacyPolicy.path,
loadChildren: () =>
import('./privacy-policy/privacy-policy-page.routes').then(
(m) => m.routes
)
},
{
path: publicRoutes.about.subRoutes.termsOfService.path,
path: publicRoutes.about.subRoutes?.termsOfService.path,
loadChildren: () =>
import('./terms-of-service/terms-of-service-page.routes').then(
(m) => m.routes

2
apps/client/src/app/pages/about/changelog/changelog-page.routes.ts

@ -10,6 +10,6 @@ export const routes: Routes = [
canActivate: [AuthGuard],
component: GfChangelogPageComponent,
path: '',
title: publicRoutes.about.subRoutes.changelog.title
title: publicRoutes.about.subRoutes?.changelog.title
}
];

2
apps/client/src/app/pages/about/license/license-page.routes.ts

@ -10,6 +10,6 @@ export const routes: Routes = [
canActivate: [AuthGuard],
component: GfLicensePageComponent,
path: '',
title: publicRoutes.about.subRoutes.license.title
title: publicRoutes.about.subRoutes?.license.title
}
];

2
apps/client/src/app/pages/about/oss-friends/oss-friends-page.routes.ts

@ -10,6 +10,6 @@ export const routes: Routes = [
canActivate: [AuthGuard],
component: GfOpenSourceSoftwareFriendsPageComponent,
path: '',
title: publicRoutes.about.subRoutes.ossFriends.title
title: publicRoutes.about.subRoutes?.ossFriends.title
}
];

2
apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.routes.ts

@ -10,6 +10,6 @@ export const routes: Routes = [
canActivate: [AuthGuard],
component: GfPrivacyPolicyPageComponent,
path: '',
title: publicRoutes.about.subRoutes.privacyPolicy.title
title: publicRoutes.about.subRoutes?.privacyPolicy.title
}
];

2
apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.routes.ts

@ -10,6 +10,6 @@ export const routes: Routes = [
canActivate: [AuthGuard],
component: GfTermsOfServicePageComponent,
path: '',
title: publicRoutes.about.subRoutes.termsOfService.title
title: publicRoutes.about.subRoutes?.termsOfService.title
}
];

20
apps/client/src/app/pages/admin/admin-page.routes.ts

@ -20,29 +20,29 @@ export const routes: Routes = [
title: internalRoutes.adminControl.title
},
{
path: internalRoutes.adminControl.subRoutes.jobs.path,
path: internalRoutes.adminControl.subRoutes?.jobs.path,
component: GfAdminJobsComponent,
title: internalRoutes.adminControl.subRoutes.jobs.title
title: internalRoutes.adminControl.subRoutes?.jobs.title
},
{
path: internalRoutes.adminControl.subRoutes.marketData.path,
path: internalRoutes.adminControl.subRoutes?.marketData.path,
component: GfAdminMarketDataComponent,
title: internalRoutes.adminControl.subRoutes.marketData.title
title: internalRoutes.adminControl.subRoutes?.marketData.title
},
{
path: internalRoutes.adminControl.subRoutes.settings.path,
path: internalRoutes.adminControl.subRoutes?.settings.path,
component: GfAdminSettingsComponent,
title: internalRoutes.adminControl.subRoutes.settings.title
title: internalRoutes.adminControl.subRoutes?.settings.title
},
{
path: internalRoutes.adminControl.subRoutes.users.path,
path: internalRoutes.adminControl.subRoutes?.users.path,
component: GfAdminUsersComponent,
title: internalRoutes.adminControl.subRoutes.users.title
title: internalRoutes.adminControl.subRoutes?.users.title
},
{
path: `${internalRoutes.adminControl.subRoutes.users.path}/:userId`,
path: `${internalRoutes.adminControl.subRoutes?.users.path}/:userId`,
component: GfAdminUsersComponent,
title: internalRoutes.adminControl.subRoutes.users.title
title: internalRoutes.adminControl.subRoutes?.users.title
}
],
component: AdminPageComponent,

2
apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts

@ -12,6 +12,6 @@ import { RouterModule } from '@angular/router';
})
export class GhostfolioJoinsOssFriendsPageComponent {
public routerLinkAboutOssFriends =
publicRoutes.about.subRoutes.ossFriends.routerLink;
publicRoutes.about.subRoutes?.ossFriends.routerLink;
public routerLinkBlog = publicRoutes.blog.routerLink;
}

4
apps/client/src/app/pages/faq/faq-page.routes.ts

@ -15,12 +15,12 @@ export const routes: Routes = [
import('./overview/faq-overview-page.routes').then((m) => m.routes)
},
{
path: publicRoutes.faq.subRoutes.saas.path,
path: publicRoutes.faq.subRoutes?.saas.path,
loadChildren: () =>
import('./saas/saas-page.routes').then((m) => m.routes)
},
{
path: publicRoutes.faq.subRoutes.selfHosting.path,
path: publicRoutes.faq.subRoutes?.selfHosting.path,
loadChildren: () =>
import('./self-hosting/self-hosting-page.routes').then(
(m) => m.routes

2
apps/client/src/app/pages/faq/saas/saas-page.component.ts

@ -25,7 +25,7 @@ export class GfSaasPageComponent implements OnDestroy {
public pricingUrl = `https://ghostfol.io/${document.documentElement.lang}/${publicRoutes.pricing.path}`;
public routerLinkAccount = internalRoutes.account.routerLink;
public routerLinkAccountMembership =
internalRoutes.account.subRoutes.membership.routerLink;
internalRoutes.account.subRoutes?.membership.routerLink;
public routerLinkMarkets = publicRoutes.markets.routerLink;
public routerLinkRegister = publicRoutes.register.routerLink;
public user: User;

2
apps/client/src/app/pages/faq/saas/saas-page.routes.ts

@ -10,6 +10,6 @@ export const routes: Routes = [
canActivate: [AuthGuard],
component: GfSaasPageComponent,
path: '',
title: `${publicRoutes.faq.subRoutes.saas.title} - ${publicRoutes.faq.title}`
title: `${publicRoutes.faq.subRoutes?.saas.title} - ${publicRoutes.faq.title}`
}
];

2
apps/client/src/app/pages/faq/self-hosting/self-hosting-page.routes.ts

@ -10,6 +10,6 @@ export const routes: Routes = [
canActivate: [AuthGuard],
component: GfSelfHostingPageComponent,
path: '',
title: `${publicRoutes.faq.subRoutes.selfHosting.title} - ${publicRoutes.faq.title}`
title: `${publicRoutes.faq.subRoutes?.selfHosting.title} - ${publicRoutes.faq.title}`
}
];

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

@ -20,29 +20,29 @@ export const routes: Routes = [
component: GfHomeOverviewComponent
},
{
path: internalRoutes.home.subRoutes.holdings.path,
path: internalRoutes.home.subRoutes?.holdings.path,
component: GfHomeHoldingsComponent,
title: internalRoutes.home.subRoutes.holdings.title
title: internalRoutes.home.subRoutes?.holdings.title
},
{
path: internalRoutes.home.subRoutes.summary.path,
path: internalRoutes.home.subRoutes?.summary.path,
component: GfHomeSummaryComponent,
title: internalRoutes.home.subRoutes.summary.title
title: internalRoutes.home.subRoutes?.summary.title
},
{
path: internalRoutes.home.subRoutes.markets.path,
path: internalRoutes.home.subRoutes?.markets.path,
component: GfHomeMarketComponent,
title: internalRoutes.home.subRoutes.markets.title
title: internalRoutes.home.subRoutes?.markets.title
},
{
path: internalRoutes.home.subRoutes.marketsPremium.path,
path: internalRoutes.home.subRoutes?.marketsPremium.path,
component: GfMarketsComponent,
title: internalRoutes.home.subRoutes.marketsPremium.title
title: internalRoutes.home.subRoutes?.marketsPremium.title
},
{
path: internalRoutes.home.subRoutes.watchlist.path,
path: internalRoutes.home.subRoutes?.watchlist.path,
component: GfHomeWatchlistComponent,
title: internalRoutes.home.subRoutes.watchlist.title
title: internalRoutes.home.subRoutes?.watchlist.title
}
],
component: GfHomePageComponent,

2
apps/client/src/app/pages/portfolio/activities/activities-page.routes.ts

@ -10,6 +10,6 @@ export const routes: Routes = [
canActivate: [AuthGuard],
component: GfActivitiesPageComponent,
path: '',
title: internalRoutes.portfolio.subRoutes.activities.title
title: internalRoutes.portfolio.subRoutes?.activities.title
}
];

2
apps/client/src/app/pages/portfolio/analysis/analysis-page.routes.ts

@ -10,6 +10,6 @@ export const routes: Routes = [
canActivate: [AuthGuard],
component: GfAnalysisPageComponent,
path: '',
title: internalRoutes.portfolio.subRoutes.analysis.title
title: internalRoutes.portfolio.subRoutes?.analysis.title
}
];

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

@ -15,22 +15,22 @@ export const routes: Routes = [
import('./analysis/analysis-page.routes').then((m) => m.routes)
},
{
path: internalRoutes.portfolio.subRoutes.activities.path,
path: internalRoutes.portfolio.subRoutes?.activities.path,
loadChildren: () =>
import('./activities/activities-page.routes').then((m) => m.routes)
},
{
path: internalRoutes.portfolio.subRoutes.allocations.path,
path: internalRoutes.portfolio.subRoutes?.allocations.path,
loadChildren: () =>
import('./allocations/allocations-page.routes').then((m) => m.routes)
},
{
path: internalRoutes.portfolio.subRoutes.fire.path,
path: internalRoutes.portfolio.subRoutes?.fire.path,
loadChildren: () =>
import('./fire/fire-page.routes').then((m) => m.routes)
},
{
path: internalRoutes.portfolio.subRoutes.xRay.path,
path: internalRoutes.portfolio.subRoutes?.xRay.path,
loadChildren: () =>
import('./x-ray/x-ray-page.routes').then((m) => m.routes)
}

2
apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts

@ -16,7 +16,7 @@ export class ResourcesGlossaryPageComponent implements OnInit {
public hasPermissionForSubscription: boolean;
public info: InfoItem;
public routerLinkResourcesPersonalFinanceTools =
publicRoutes.resources.subRoutes.personalFinanceTools.routerLink;
publicRoutes.resources.subRoutes?.personalFinanceTools.routerLink;
public constructor(private dataService: DataService) {
this.info = this.dataService.fetchInfo();

2
apps/client/src/app/pages/resources/glossary/resources-glossary.routes.ts

@ -8,6 +8,6 @@ export const routes: Routes = [
{
component: ResourcesGlossaryPageComponent,
path: '',
title: publicRoutes.resources.subRoutes.glossary.title
title: publicRoutes.resources.subRoutes?.glossary.title
}
];

2
apps/client/src/app/pages/resources/guides/resources-guides.routes.ts

@ -8,6 +8,6 @@ export const routes: Routes = [
{
component: ResourcesGuidesComponent,
path: '',
title: publicRoutes.resources.subRoutes.guides.title
title: publicRoutes.resources.subRoutes?.guides.title
}
];

2
apps/client/src/app/pages/resources/markets/resources-markets.routes.ts

@ -8,6 +8,6 @@ export const routes: Routes = [
{
component: ResourcesMarketsComponent,
path: '',
title: publicRoutes.resources.subRoutes.markets.title
title: publicRoutes.resources.subRoutes?.markets.title
}
];

12
apps/client/src/app/pages/resources/overview/resources-overview.component.ts

@ -20,20 +20,20 @@ export class ResourcesOverviewComponent {
{
description:
'Explore our guides to help you get started with investing and managing your finances.',
routerLink: publicRoutes.resources.subRoutes.guides.routerLink,
title: publicRoutes.resources.subRoutes.guides.title
routerLink: publicRoutes.resources.subRoutes?.guides.routerLink,
title: publicRoutes.resources.subRoutes?.guides.title
},
{
description:
'Access various market resources and tools to stay informed about financial markets.',
routerLink: publicRoutes.resources.subRoutes.markets.routerLink,
title: publicRoutes.resources.subRoutes.markets.title
routerLink: publicRoutes.resources.subRoutes?.markets.routerLink,
title: publicRoutes.resources.subRoutes?.markets.title
},
{
description:
'Learn key financial terms and concepts in our comprehensive glossary.',
routerLink: publicRoutes.resources.subRoutes.glossary.routerLink,
title: publicRoutes.resources.subRoutes.glossary.title
routerLink: publicRoutes.resources.subRoutes?.glossary.routerLink,
title: publicRoutes.resources.subRoutes?.glossary.title
}
];
}

6
apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.routes.ts

@ -11,7 +11,7 @@ export const routes: Routes = [
canActivate: [AuthGuard],
component: PersonalFinanceToolsPageComponent,
path: '',
title: publicRoutes.resources.subRoutes.personalFinanceTools.title
title: publicRoutes.resources.subRoutes?.personalFinanceTools.title
},
...personalFinanceTools.map(({ alias, key, name }) => {
return {
@ -23,8 +23,8 @@ export const routes: Routes = [
return GfProductPageComponent;
}
),
path: `${publicRoutes.resources.subRoutes.personalFinanceTools.subRoutes.product.path}-${alias ?? key}`,
title: `${publicRoutes.resources.subRoutes.personalFinanceTools.subRoutes.product.title} ${name}`
path: `${publicRoutes.resources.subRoutes?.personalFinanceTools.subRoutes?.product.path}-${alias ?? key}`,
title: `${publicRoutes.resources.subRoutes?.personalFinanceTools.subRoutes?.product.title} ${name}`
};
})
];

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

@ -16,22 +16,22 @@ export const routes: Routes = [
import('./overview/resources-overview.routes').then((m) => m.routes)
},
{
path: publicRoutes.resources.subRoutes.glossary.path,
path: publicRoutes.resources.subRoutes?.glossary.path,
loadChildren: () =>
import('./glossary/resources-glossary.routes').then((m) => m.routes)
},
{
path: publicRoutes.resources.subRoutes.guides.path,
path: publicRoutes.resources.subRoutes?.guides.path,
loadChildren: () =>
import('./guides/resources-guides.routes').then((m) => m.routes)
},
{
path: publicRoutes.resources.subRoutes.markets.path,
path: publicRoutes.resources.subRoutes?.markets.path,
loadChildren: () =>
import('./markets/resources-markets.routes').then((m) => m.routes)
},
{
path: publicRoutes.resources.subRoutes.personalFinanceTools.path,
path: publicRoutes.resources.subRoutes?.personalFinanceTools.path,
loadChildren: () =>
import('./personal-finance-tools/personal-finance-tools-page.routes').then(
(m) => m.routes

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

@ -18,14 +18,14 @@ export const routes: Routes = [
title: internalRoutes.account.title
},
{
path: internalRoutes.account.subRoutes.membership.path,
path: internalRoutes.account.subRoutes?.membership.path,
component: GfUserAccountMembershipComponent,
title: internalRoutes.account.subRoutes.membership.title
title: internalRoutes.account.subRoutes?.membership.title
},
{
path: internalRoutes.account.subRoutes.access.path,
path: internalRoutes.account.subRoutes?.access.path,
component: GfUserAccountAccessComponent,
title: internalRoutes.account.subRoutes.access.title
title: internalRoutes.account.subRoutes?.access.title
}
],
component: GfUserAccountPageComponent,

4
apps/client/src/app/pages/zen/zen-page.routes.ts

@ -16,9 +16,9 @@ export const routes: Routes = [
component: GfHomeOverviewComponent
},
{
path: internalRoutes.zen.subRoutes.holdings.path,
path: internalRoutes.zen.subRoutes?.holdings.path,
component: GfHomeHoldingsComponent,
title: internalRoutes.home.subRoutes.holdings.title
title: internalRoutes.home.subRoutes?.holdings.title
}
],
component: GfZenPageComponent,

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

@ -240,7 +240,7 @@
</trans-unit>
<trans-unit id="9153520284278555926" datatype="html">
<source>please</source>
<target state="new">please</target>
<target state="translated">proszę</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">333</context>
@ -284,7 +284,7 @@
</trans-unit>
<trans-unit id="1351814922314683865" datatype="html">
<source>with</source>
<target state="new">with</target>
<target state="translated">z</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html</context>
<context context-type="linenumber">87</context>
@ -1208,7 +1208,7 @@
</trans-unit>
<trans-unit id="8319378030525016917" datatype="html">
<source>Asset profile has been saved</source>
<target state="new">Asset profile has been saved</target>
<target state="translated">Profil zasobu został zapisany</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts</context>
<context context-type="linenumber">594</context>
@ -1224,7 +1224,7 @@
</trans-unit>
<trans-unit id="7701575534145602925" datatype="html">
<source>Explore <x id="INTERPOLATION" equiv-text="{{ item.title }}"/></source>
<target state="new">Explore <x id="INTERPOLATION" equiv-text="{{ item.title }}"/></target>
<target state="translated">Eksploruj <x id="INTERPOLATION" equiv-text="{{ item.title }}"/></target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/overview/resources-overview.component.html</context>
<context context-type="linenumber">11</context>
@ -1232,7 +1232,7 @@
</trans-unit>
<trans-unit id="7702646444963497962" datatype="html">
<source>By</source>
<target state="new">By</target>
<target state="translated">Przez</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">139</context>
@ -1248,7 +1248,7 @@
</trans-unit>
<trans-unit id="4340477809050781416" datatype="html">
<source>Current year</source>
<target state="new">Current year</target>
<target state="translated">Obecny rok</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts</context>
<context context-type="linenumber">204</context>
@ -1344,7 +1344,7 @@
</trans-unit>
<trans-unit id="2395205455607568422" datatype="html">
<source>No auto-renewal on membership.</source>
<target state="new">No auto-renewal on membership.</target>
<target state="translated">Brak automatycznego odnawiania członkostwa.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-membership/user-account-membership.html</context>
<context context-type="linenumber">74</context>
@ -1644,7 +1644,7 @@
</trans-unit>
<trans-unit id="6004588582437169024" datatype="html">
<source>Current week</source>
<target state="new">Current week</target>
<target state="translated">Obecny tydzień</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts</context>
<context context-type="linenumber">196</context>
@ -2588,7 +2588,7 @@
</trans-unit>
<trans-unit id="8553460997100418147" datatype="html">
<source>for</source>
<target state="new">for</target>
<target state="translated">dla</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html</context>
<context context-type="linenumber">128</context>
@ -2888,7 +2888,7 @@
</trans-unit>
<trans-unit id="5134951682994822188" datatype="html">
<source>Could not parse scraper configuration</source>
<target state="new">Could not parse scraper configuration</target>
<target state="translated">Nie udało się przetworzyć konfiguracji scrapera</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts</context>
<context context-type="linenumber">525</context>
@ -3044,7 +3044,7 @@
</trans-unit>
<trans-unit id="3556628518893194463" datatype="html">
<source>per week</source>
<target state="new">per week</target>
<target state="translated">na tydzień</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html</context>
<context context-type="linenumber">130</context>
@ -3220,7 +3220,7 @@
</trans-unit>
<trans-unit id="9187635907883145155" datatype="html">
<source>Edit access</source>
<target state="new">Edit access</target>
<target state="translated">Edytuj dostęp</target>
<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>
<context context-type="linenumber">11</context>
@ -3324,7 +3324,7 @@
</trans-unit>
<trans-unit id="8984201769958269296" datatype="html">
<source>Get access to 80’000+ tickers from over 50 exchanges</source>
<target state="new">Get access to 80’000+ tickers from over 50 exchanges</target>
<target state="translated">Uzyskaj dostęp do 80 000+ tickerów z ponad 50 giełd</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html</context>
<context context-type="linenumber">84</context>
@ -3460,7 +3460,7 @@
</trans-unit>
<trans-unit id="8014012170270529279" datatype="html">
<source>less than</source>
<target state="new">less than</target>
<target state="translated">mniej niż</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html</context>
<context context-type="linenumber">129</context>
@ -3524,7 +3524,7 @@
</trans-unit>
<trans-unit id="4257439615478050183" datatype="html">
<source>Ghostfolio Status</source>
<target state="new">Ghostfolio Status</target>
<target state="translated">Ghostfolio Status</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">62</context>
@ -3532,7 +3532,7 @@
</trans-unit>
<trans-unit id="4275978599610634089" datatype="html">
<source>with your university e-mail address</source>
<target state="new">with your university e-mail address</target>
<target state="translated">używając swojego adresu e-mail uczelni</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">348</context>
@ -3804,7 +3804,7 @@
</trans-unit>
<trans-unit id="7500665368930738879" datatype="html">
<source>or start a discussion at</source>
<target state="new">or start a discussion at</target>
<target state="translated">lub rozpocznij dyskusję n</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">94</context>
@ -4016,7 +4016,7 @@
</trans-unit>
<trans-unit id="7934616470747135563" datatype="html">
<source>Latest activities</source>
<target state="new">Latest activities</target>
<target state="translated">Ostatnie transakcje</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
<context context-type="linenumber">210</context>
@ -4084,7 +4084,7 @@
</trans-unit>
<trans-unit id="7763941937414903315" datatype="html">
<source>Looking for a student discount?</source>
<target state="new">Looking for a student discount?</target>
<target state="translated">Szukasz zniżki studenckiej?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">342</context>
@ -4617,7 +4617,7 @@
</trans-unit>
<trans-unit id="5271053765919315173" datatype="html">
<source>Website of Thomas Kaul</source>
<target state="new">Website of Thomas Kaul</target>
<target state="translated">Strona internetowa Thomas'a Kaul'a</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">44</context>
@ -4849,7 +4849,7 @@
</trans-unit>
<trans-unit id="5276907121760788823" datatype="html">
<source>Request it</source>
<target state="new">Request it</target>
<target state="translated">Porpoś o</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">344</context>
@ -4969,7 +4969,7 @@
</trans-unit>
<trans-unit id="page.fire.projected.1" datatype="html">
<source>,</source>
<target state="new">,</target>
<target state="translated">,</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">145</context>
@ -4993,7 +4993,7 @@
</trans-unit>
<trans-unit id="1531212547408073567" datatype="html">
<source>contact us</source>
<target state="new">contact us</target>
<target state="translated">skontaktuj się z nami</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">336</context>
@ -5049,7 +5049,7 @@
</trans-unit>
<trans-unit id="3441715041566940420" datatype="html">
<source>Interest</source>
<target state="translated">Udział</target>
<target state="translated">Odsetki</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html</context>
<context context-type="linenumber">69</context>
@ -5317,7 +5317,7 @@
</trans-unit>
<trans-unit id="9218541487912911620" datatype="html">
<source>No Activities</source>
<target state="new">No Activities</target>
<target state="translated">Brak transakcji</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/admin-market-data.component.ts</context>
<context context-type="linenumber">146</context>
@ -5417,7 +5417,7 @@
</trans-unit>
<trans-unit id="2145636458848553570" datatype="html">
<source>Sign in with OpenID Connect</source>
<target state="new">Sign in with OpenID Connect</target>
<target state="translated">Zaloguj się za pomocą OpenID Connect</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
<context context-type="linenumber">55</context>
@ -5529,7 +5529,7 @@
</trans-unit>
<trans-unit id="8966698274727122602" datatype="html">
<source>Authentication</source>
<target state="new">Authentication</target>
<target state="translated">Uwierzytelnianie</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">54</context>
@ -5829,7 +5829,7 @@
</trans-unit>
<trans-unit id="2575998129003872734" datatype="html">
<source>Argentina</source>
<target state="new">Argentina</target>
<target state="translated">Argentyna</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">78</context>
@ -5885,7 +5885,7 @@
</trans-unit>
<trans-unit id="858192247408211331" datatype="html">
<source>here</source>
<target state="new">here</target>
<target state="translated">tutaj</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">347</context>
@ -5893,7 +5893,7 @@
</trans-unit>
<trans-unit id="1600023202562292052" datatype="html">
<source>Close Holding</source>
<target state="new">Close Holding</target>
<target state="translated">Zamknij pozycję</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">441</context>
@ -6274,7 +6274,7 @@
</trans-unit>
<trans-unit id="5707368132268957392" datatype="html">
<source>Include in</source>
<target state="new">Include in</target>
<target state="translated">Uwzględnij w</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html</context>
<context context-type="linenumber">377</context>
@ -6558,7 +6558,7 @@
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
<source>View Holding</source>
<target state="new">View Holding</target>
<target state="translated">Podgląd inwestycji</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">450</context>
@ -6702,7 +6702,7 @@
</trans-unit>
<trans-unit id="4762855117875399861" datatype="html">
<source>Oops! Could not update access.</source>
<target state="new">Oops! Could not update access.</target>
<target state="translated">Ups! Nie udało się zaktualizować dostępu.</target>
<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.component.ts</context>
<context context-type="linenumber">178</context>
@ -6830,7 +6830,7 @@
</trans-unit>
<trans-unit id="4145496584631696119" datatype="html">
<source>Role</source>
<target state="new">Role</target>
<target state="translated">Rola</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">33</context>
@ -6870,7 +6870,7 @@
</trans-unit>
<trans-unit id="6602358241522477056" datatype="html">
<source>If you plan to open an account at</source>
<target state="new">If you plan to open an account at</target>
<target state="translated">Jeśli planujesz otworzyć konto w</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">312</context>
@ -6902,7 +6902,7 @@
</trans-unit>
<trans-unit id="6664504469290651320" datatype="html">
<source>send an e-mail to</source>
<target state="new">send an e-mail to</target>
<target state="translated">wyślij e-mail do</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">87</context>
@ -6982,7 +6982,7 @@
</trans-unit>
<trans-unit id="7522916136412124285" datatype="html">
<source>to use our referral link and get a Ghostfolio Premium membership for one year</source>
<target state="new">to use our referral link and get a Ghostfolio Premium membership for one year</target>
<target state="translated">aby skorzystać z naszego linku polecającego i otrzymać roczną subskrypcję Ghostfolio Premium</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">340</context>
@ -6990,7 +6990,7 @@
</trans-unit>
<trans-unit id="7530176451725943586" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{ product1.name }}"/> can be self-hosted</source>
<target state="translated"><x id="INTERPOLATION" equiv-text="{{ product1.name }}"/> może być hostowany samodzielnie</target>
<target state="translated"><x id="INTERPOLATION" equiv-text="{{ product1.name }}"/> może być hostowana samodzielnie</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.html</context>
<context context-type="linenumber">178</context>
@ -7014,7 +7014,7 @@
</trans-unit>
<trans-unit id="7900108539442184659" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{ product1.name }}"/> can be used anonymously</source>
<target state="translated"><x id="INTERPOLATION" equiv-text="{{ product1.name }}"/> może być używany anonimowo</target>
<target state="translated"><x id="INTERPOLATION" equiv-text="{{ product1.name }}"/> może być używana anonimowo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.html</context>
<context context-type="linenumber">217</context>
@ -7026,7 +7026,7 @@
</trans-unit>
<trans-unit id="4605555143173907624" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{ product1.name }}"/> cannot be used anonymously</source>
<target state="translated"><x id="INTERPOLATION" equiv-text="{{ product1.name }}"/> nie może być używany anonimowo</target>
<target state="translated"><x id="INTERPOLATION" equiv-text="{{ product1.name }}"/> nie może być używana anonimowo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page.html</context>
<context context-type="linenumber">224</context>
@ -7376,7 +7376,7 @@
</trans-unit>
<trans-unit id="1789421195684815451" datatype="html">
<source>Check the system status at</source>
<target state="new">Check the system status at</target>
<target state="translated">Sprawdź status systemu n</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">57</context>
@ -7648,7 +7648,7 @@
</trans-unit>
<trans-unit id="6752851341939241310" datatype="html">
<source>Find account, holding or page...</source>
<target state="new">Find account, holding or page...</target>
<target state="translated">Znajdź konto, pozycję lub stronę...</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">115</context>
@ -7906,7 +7906,7 @@
</trans-unit>
<trans-unit id="rule.feeRatioTotalInvestmentVolume.false" datatype="html">
<source>The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)</source>
<target state="new">The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)</target>
<target state="translated">Opłaty przekraczają ${thresholdMax}% twojej całkowitej wartości inwestycji (${feeRatio}%)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">154</context>
@ -7914,7 +7914,7 @@
</trans-unit>
<trans-unit id="rule.feeRatioTotalInvestmentVolume.true" datatype="html">
<source>The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)</source>
<target state="new">The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)</target>
<target state="translated">Opłaty nie przekraczają ${thresholdMax}% twojej całkowitej wartości inwestycji (${feeRatio}%)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">158</context>
@ -8072,7 +8072,7 @@
</trans-unit>
<trans-unit id="7383756232563820625" datatype="html">
<source>Current month</source>
<target state="new">Current month</target>
<target state="translated">Bieżący miesiąc</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts</context>
<context context-type="linenumber">200</context>
@ -8365,7 +8365,7 @@
</trans-unit>
<trans-unit id="rule.emergencyFund.category" datatype="html">
<source>Emergency Fund</source>
<target state="new">Emergency Fund</target>
<target state="translated">Fundusz Awaryjny</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">144</context>
@ -8397,7 +8397,7 @@
</trans-unit>
<trans-unit id="rule.liquidityBuyingPower.false.min" datatype="html">
<source>Your buying power is below ${thresholdMin} ${baseCurrency}</source>
<target state="new">Your buying power is below ${thresholdMin} ${baseCurrency}</target>
<target state="translated">Twoja siła nabywcza jest niższa niż ${thresholdMin} ${baseCurrency}</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">73</context>
@ -8405,7 +8405,7 @@
</trans-unit>
<trans-unit id="rule.liquidityBuyingPower.false.zero" datatype="html">
<source>Your buying power is 0 ${baseCurrency}</source>
<target state="new">Your buying power is 0 ${baseCurrency}</target>
<target state="translated">Twoja siła nabywcza to 0 ${baseCurrency}</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">77</context>
@ -8429,7 +8429,7 @@
</trans-unit>
<trans-unit id="5815936665222001383" datatype="html">
<source>No results found...</source>
<target state="new">No results found...</target>
<target state="translated">Nie znaleziono wyników...</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context>
<context context-type="linenumber">51</context>
@ -8445,7 +8445,7 @@
</trans-unit>
<trans-unit id="rule.economicMarketClusterRiskDevelopedMarkets.false.max" datatype="html">
<source>The developed markets contribution of your current investment (${developedMarketsValueRatio}%) exceeds ${thresholdMax}%</source>
<target state="new">The developed markets contribution of your current investment (${developedMarketsValueRatio}%) exceeds ${thresholdMax}%</target>
<target state="translated">Udział rynków rozwiniętych w Twojej obecnej inwestycji (${developedMarketsValueRatio}%) przekracza ${thresholdMax}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">112</context>
@ -8453,7 +8453,7 @@
</trans-unit>
<trans-unit id="rule.economicMarketClusterRiskDevelopedMarkets.false.min" datatype="html">
<source>The developed markets contribution of your current investment (${developedMarketsValueRatio}%) is below ${thresholdMin}%</source>
<target state="new">The developed markets contribution of your current investment (${developedMarketsValueRatio}%) is below ${thresholdMin}%</target>
<target state="translated">Udział rynków rozwiniętych w Twojej obecnej inwestycji (${developedMarketsValueRatio}%) jest poniżej ${thresholdMin}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">117</context>
@ -8461,7 +8461,7 @@
</trans-unit>
<trans-unit id="rule.economicMarketClusterRiskDevelopedMarkets.true" datatype="html">
<source>The developed markets contribution of your current investment (${developedMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%</source>
<target state="new">The developed markets contribution of your current investment (${developedMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%</target>
<target state="translated">Udział rynków rozwiniętych w Twojej obecnej inwestycji (${developedMarketsValueRatio}%) mieści się w zakresie ${thresholdMin}% i ${thresholdMax}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">122</context>
@ -8477,7 +8477,7 @@
</trans-unit>
<trans-unit id="rule.economicMarketClusterRiskEmergingMarkets.false.max" datatype="html">
<source>The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) exceeds ${thresholdMax}%</source>
<target state="new">The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) exceeds ${thresholdMax}%</target>
<target state="translated">Udział rynków wschodzących w obecnej inwestycji (${emergingMarketsValueRatio}%) przekracza ${thresholdMax}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">130</context>
@ -8485,7 +8485,7 @@
</trans-unit>
<trans-unit id="rule.economicMarketClusterRiskEmergingMarkets.false.min" datatype="html">
<source>The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) is below ${thresholdMin}%</source>
<target state="new">The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) is below ${thresholdMin}%</target>
<target state="translated">Udział rynków wschodzących w obecnej inwestycji (${emergingMarketsValueRatio}%) jest poniżej ${thresholdMin}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">135</context>
@ -8493,7 +8493,7 @@
</trans-unit>
<trans-unit id="rule.economicMarketClusterRiskEmergingMarkets.true" datatype="html">
<source>The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%</source>
<target state="new">The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%</target>
<target state="translated">Udział rynków wschodzących w obecnej inwestycji (${emergingMarketsValueRatio}%) mieści się w zakresie ${thresholdMin}% i ${thresholdMax}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">140</context>
@ -8501,7 +8501,7 @@
</trans-unit>
<trans-unit id="rule.accountClusterRiskCurrentInvestment.false.invalid" datatype="html">
<source>No accounts have been set up</source>
<target state="new">No accounts have been set up</target>
<target state="translated">Nie utworzono żadnych kont</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">21</context>
@ -8509,7 +8509,7 @@
</trans-unit>
<trans-unit id="rule.accountClusterRiskSingleAccount.false.invalid" datatype="html">
<source>Your net worth is managed by 0 accounts</source>
<target state="new">Your net worth is managed by 0 accounts</target>
<target state="translated">Twój majątek jest zarządzany przez 0 kont</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">33</context>
@ -8517,7 +8517,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskAsiaPacific" datatype="html">
<source>Asia-Pacific</source>
<target state="new">Asia-Pacific</target>
<target state="translated">Asia-Pacific</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">165</context>
@ -8525,7 +8525,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskAsiaPacific.false.max" datatype="html">
<source>The Asia-Pacific market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%</source>
<target state="new">The Asia-Pacific market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%</target>
<target state="translated">Udział rynku Azji i Pacyfiku w Twojej obecnej inwestycji (${valueRatio}%) przekracza ${thresholdMax}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">167</context>
@ -8533,7 +8533,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskAsiaPacific.false.min" datatype="html">
<source>The Asia-Pacific market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%</source>
<target state="new">The Asia-Pacific market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%</target>
<target state="translated">Udział rynku Azji i Pacyfiku w Twojej obecnej inwestycji (${valueRatio}%) jest poniżej ${thresholdMin}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">171</context>
@ -8541,7 +8541,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskAsiaPacific.true" datatype="html">
<source>The Asia-Pacific market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%</source>
<target state="new">The Asia-Pacific market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%</target>
<target state="translated">Udział rynku Azji i Pacyfiku w Twojej obecnej inwestycji (${valueRatio}%) mieści się w zakresie ${thresholdMin}% i ${thresholdMax}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">175</context>
@ -8549,7 +8549,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskEmergingMarkets" datatype="html">
<source>Emerging Markets</source>
<target state="new">Emerging Markets</target>
<target state="translated">Rynki wschodzące</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">180</context>
@ -8557,7 +8557,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskEmergingMarkets.false.max" datatype="html">
<source>The Emerging Markets contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%</source>
<target state="new">The Emerging Markets contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%</target>
<target state="translated">Udział rynków wschodzących w Twojej obecnej inwestycji (${valueRatio}%) przekracza ${thresholdMax}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">183</context>
@ -8565,7 +8565,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskEmergingMarkets.false.min" datatype="html">
<source>The Emerging Markets contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%</source>
<target state="new">The Emerging Markets contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%</target>
<target state="translated">Udział rynków wschodzących w Twojej obecnej inwestycji (${valueRatio}%) jest poniżej ${thresholdMin}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">187</context>
@ -8573,7 +8573,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskEmergingMarkets.true" datatype="html">
<source>The Emerging Markets contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%</source>
<target state="new">The Emerging Markets contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%</target>
<target state="translated">Udział rynków wschodzących w Twojej obecnej inwestycji (${valueRatio}%) mieści się w zakresie ${thresholdMin}% i ${thresholdMax}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">191</context>
@ -8589,7 +8589,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskEurope.false.max" datatype="html">
<source>The Europe market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%</source>
<target state="new">The Europe market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%</target>
<target state="translated">Udział rynku europejskiego w obecnej inwestycji (${valueRatio}%) przekracza ${thresholdMax}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">197</context>
@ -8597,7 +8597,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskEurope.false.min" datatype="html">
<source>The Europe market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%</source>
<target state="new">The Europe market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%</target>
<target state="translated">Udział rynku europejskiego w obecnej inwestycji (${valueRatio}%) jest poniżej ${thresholdMin}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">201</context>
@ -8605,7 +8605,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskEurope.true" datatype="html">
<source>The Europe market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%</source>
<target state="new">The Europe market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%</target>
<target state="translated">Udział rynku europejskiego w obecnej inwestycji (${valueRatio}%) mieści się w zakresie ${thresholdMin}% i ${thresholdMax}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">205</context>
@ -8621,7 +8621,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskJapan.false.max" datatype="html">
<source>The Japan market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%</source>
<target state="new">The Japan market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%</target>
<target state="translated">Udział rynku japońskiego w obecnej inwestycj (${valueRatio}%) przekracza ${thresholdMax}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">211</context>
@ -8629,7 +8629,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskJapan.false.min" datatype="html">
<source>The Japan market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%</source>
<target state="new">The Japan market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%</target>
<target state="translated">Udział rynku japońskiego w obecnej inwestycj (${valueRatio}%) jest poniżej ${thresholdMin}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">215</context>
@ -8637,7 +8637,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskJapan.true" datatype="html">
<source>The Japan market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%</source>
<target state="new">The Japan market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%</target>
<target state="translated">Udział rynku japońskiego w obecnej inwestycj (${valueRatio}%) mieści się w zakresie ${thresholdMin}% i ${thresholdMax}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">219</context>
@ -8645,7 +8645,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskNorthAmerica" datatype="html">
<source>North America</source>
<target state="new">North America</target>
<target state="translated">Północna Ameryka</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">223</context>
@ -8653,7 +8653,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskNorthAmerica.false.max" datatype="html">
<source>The North America market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%</source>
<target state="new">The North America market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%</target>
<target state="translated">Udział rynku Ameryki Północnej w obecnej inwestycji (${valueRatio}%) przekracza ${thresholdMax}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">225</context>
@ -8661,7 +8661,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskNorthAmerica.false.min" datatype="html">
<source>The North America market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%</source>
<target state="new">The North America market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%</target>
<target state="translated">Udział rynku Ameryki Północnej w obecnej inwestycji (${valueRatio}%) jest poniżej ${thresholdMin}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">229</context>
@ -8669,7 +8669,7 @@
</trans-unit>
<trans-unit id="rule.regionalMarketClusterRiskNorthAmerica.true" datatype="html">
<source>The North America market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%</source>
<target state="new">The North America market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%</target>
<target state="translated">Udział rynku Ameryki Północnej w obecnej inwestycji (${valueRatio}%) mieści się w zakresie ${thresholdMin}% i ${thresholdMax}%</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">233</context>
@ -8677,7 +8677,7 @@
</trans-unit>
<trans-unit id="2305116864852661861" datatype="html">
<source>Find Ghostfolio on GitHub</source>
<target state="new">Find Ghostfolio on GitHub</target>
<target state="translated">Znajdź Ghostfolio na GitHub</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">99</context>
@ -8689,7 +8689,7 @@
</trans-unit>
<trans-unit id="5606994816647505945" datatype="html">
<source>Join the Ghostfolio Slack community</source>
<target state="new">Join the Ghostfolio Slack community</target>
<target state="translated">Dołącz do społeczności Ghostfolio na Slacku</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">109</context>
@ -8697,7 +8697,7 @@
</trans-unit>
<trans-unit id="2555424753565986929" datatype="html">
<source>Follow Ghostfolio on X (formerly Twitter)</source>
<target state="new">Follow Ghostfolio on X (formerly Twitter)</target>
<target state="translated">Śledź Ghostfolio na X (poprzednio Twitter)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">118</context>
@ -8705,7 +8705,7 @@
</trans-unit>
<trans-unit id="3375362149606316745" datatype="html">
<source>Send an e-mail</source>
<target state="new">Send an e-mail</target>
<target state="translated">Wyślij e-mail</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">89</context>
@ -8717,7 +8717,7 @@
</trans-unit>
<trans-unit id="339860602695747533" datatype="html">
<source>Registration Date</source>
<target state="new">Registration Date</target>
<target state="translated">Data rejestracji</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">45</context>
@ -8725,7 +8725,7 @@
</trans-unit>
<trans-unit id="5162138648470294706" datatype="html">
<source>Follow Ghostfolio on LinkedIn</source>
<target state="new">Follow Ghostfolio on LinkedIn</target>
<target state="translated">Śledź Ghostfolio na LinkedIn</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">147</context>
@ -8733,7 +8733,7 @@
</trans-unit>
<trans-unit id="4170353658096790081" datatype="html">
<source>Ghostfolio is an independent &amp; bootstrapped business</source>
<target state="new">Ghostfolio is an independent &amp; bootstrapped business</target>
<target state="translated">Ghostfolio to niezależna &amp; samofinansująca się firma</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">157</context>
@ -8741,7 +8741,7 @@
</trans-unit>
<trans-unit id="1184917049575486230" datatype="html">
<source>Support Ghostfolio</source>
<target state="new">Support Ghostfolio</target>
<target state="translated">Wesprzyj Ghostfolio</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
<context context-type="linenumber">166</context>

Loading…
Cancel
Save