Browse Source

Merge pull request #25 from dandevaud/main

Main
pull/5027/head
dandevaud 2 years ago
committed by GitHub
parent
commit
bd3a1dab4a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 22
      CHANGELOG.md
  2. 6
      README.md
  3. 17
      apps/api/src/app/admin/admin.service.ts
  4. 2
      apps/api/src/app/auth/auth.service.ts
  5. 2
      apps/api/src/app/import/import.service.ts
  6. 5
      apps/api/src/app/info/info.module.ts
  7. 30
      apps/api/src/app/info/info.service.ts
  8. 1
      apps/api/src/app/portfolio/current-rate.service.spec.ts
  9. 2
      apps/api/src/app/portfolio/portfolio-calculator.ts
  10. 14
      apps/api/src/app/portfolio/portfolio.controller.ts
  11. 13
      apps/api/src/app/portfolio/portfolio.service.ts
  12. 12
      apps/api/src/app/user/user.service.ts
  13. 116
      apps/api/src/assets/sitemap.xml
  14. 10
      apps/api/src/main.ts
  15. 4
      apps/api/src/middlewares/html-template.middleware.ts
  16. 6
      apps/api/src/services/configuration/configuration.service.ts
  17. 4
      apps/api/src/services/data-gathering/data-gathering.service.ts
  18. 21
      apps/api/src/services/data-provider/coingecko/coingecko.service.ts
  19. 4
      apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.spec.ts
  20. 38
      apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts
  21. 47
      apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts
  22. 5
      apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts
  23. 49
      apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts
  24. 34
      apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts
  25. 1
      apps/api/src/services/interfaces/environment.interface.ts
  26. 17
      apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts
  27. 286
      apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html
  28. 9
      apps/client/src/app/pages/blog/blog-page-routing.module.ts
  29. 26
      apps/client/src/app/pages/blog/blog-page.html
  30. 10
      apps/client/src/app/pages/landing/landing-page.html
  31. 4
      apps/client/src/app/pages/open/open-page.html
  32. 2
      apps/client/src/app/pages/pricing/pricing-page.html
  33. 4
      apps/client/src/app/pages/register/register-page.component.ts
  34. 1
      apps/client/src/app/pages/register/register-page.html
  35. BIN
      apps/client/src/assets/images/blog/ghostfolio-2.jpg
  36. 198
      apps/client/src/locales/messages.de.xlf
  37. 198
      apps/client/src/locales/messages.es.xlf
  38. 198
      apps/client/src/locales/messages.fr.xlf
  39. 198
      apps/client/src/locales/messages.it.xlf
  40. 796
      apps/client/src/locales/messages.nl.xlf
  41. 198
      apps/client/src/locales/messages.pt.xlf
  42. 8708
      apps/client/src/locales/messages.xlf
  43. 8
      docker/docker-compose.build.yml
  44. 5
      docker/docker-compose.dev.yml
  45. 8
      docker/docker-compose.yml
  46. 4
      package.json
  47. 8
      yarn.lock

22
CHANGELOG.md

@ -7,13 +7,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased ## Unreleased
### Changed
- Harmonized the logger output: <symbol> (<dataSource>)
- Improved the language localization for Dutch (`nl`)
### Fixed
- Fixed an issue with the portfolio summary caused by the language localization for Dutch (`nl`)
## 2.0.0 - 2023-09-09
### Added ### Added
- Added support for the cryptocurrency _CyberConnect_ - Added support for the cryptocurrency _CyberConnect_
- Added a blog post: _Announcing Ghostfolio 2.0_
### Changed ### Changed
- **Breaking Change**: Removed the deprecated environment variable `BASE_CURRENCY`
- Improved the validation in the activities import
- Deactivated _Internet Identity_ as a social login provider for the account registration
- Improved the language localization for German (`de`)
- Refreshed the cryptocurrencies list - Refreshed the cryptocurrencies list
- Changed the version in the `docker-compose` files from `3.7` to `3.9`
- Upgraded `yahoo-finance2` from version `2.4.4` to `2.5.0`
### Fixed
- Fixed an issue in the _Yahoo Finance_ data enhancer where countries and sectors have been removed
## 1.305.0 - 2023-09-03 ## 1.305.0 - 2023-09-03

6
README.md

@ -13,6 +13,8 @@
[![Shield: Contributions Welcome](https://img.shields.io/badge/Contributions-Welcome-orange.svg)](#contributing) [![Shield: Contributions Welcome](https://img.shields.io/badge/Contributions-Welcome-orange.svg)](#contributing)
[![Shield: License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) [![Shield: License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
New: [Ghostfolio 2.0](https://ghostfol.io/en/blog/2023/09/ghostfolio-2)
</div> </div>
**Ghostfolio** is an open source wealth management software built with web technology. The application empowers busy people to keep track of stocks, ETFs or cryptocurrencies and make solid, data-driven investment decisions. The software is designed for personal use in continuous operation. **Ghostfolio** is an open source wealth management software built with web technology. The application empowers busy people to keep track of stocks, ETFs or cryptocurrencies and make solid, data-driven investment decisions. The software is designed for personal use in continuous operation.
@ -136,9 +138,9 @@ docker-compose --env-file ./.env -f docker/docker-compose.build.yml up -d
1. Run the following command to start the new Docker image: `docker-compose --env-file ./.env -f docker/docker-compose.yml up -d` 1. Run the following command to start the new Docker image: `docker-compose --env-file ./.env -f docker/docker-compose.yml up -d`
At each start, the container will automatically apply the database schema migrations if needed. At each start, the container will automatically apply the database schema migrations if needed.
### Run with _Unraid_ (Community) ### Home Server Systems (Community)
Please follow the instructions of the Ghostfolio [Unraid Community App](https://unraid.net/community/apps?q=ghostfolio). Ghostfolio is available for various home server systems, including [Runtipi](https://www.runtipi.io/docs/apps-available), [TrueCharts](https://truecharts.org/charts/stable/ghostfolio), [Umbrel](https://apps.umbrel.com/app/ghostfolio), and [Unraid](https://unraid.net/community/apps?q=ghostfolio).
## Development ## Development

17
apps/api/src/app/admin/admin.service.ts

@ -6,7 +6,10 @@ import { MarketDataService } from '@ghostfolio/api/services/market-data/market-d
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import { PropertyService } from '@ghostfolio/api/services/property/property.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service';
import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service';
import { PROPERTY_CURRENCIES } from '@ghostfolio/common/config'; import {
DEFAULT_CURRENCY,
PROPERTY_CURRENCIES
} from '@ghostfolio/common/config';
import { import {
AdminData, AdminData,
AdminMarketData, AdminMarketData,
@ -23,8 +26,6 @@ import { groupBy } from 'lodash';
@Injectable() @Injectable()
export class AdminService { export class AdminService {
private baseCurrency: string;
public constructor( public constructor(
private readonly configurationService: ConfigurationService, private readonly configurationService: ConfigurationService,
private readonly dataProviderService: DataProviderService, private readonly dataProviderService: DataProviderService,
@ -34,9 +35,7 @@ export class AdminService {
private readonly propertyService: PropertyService, private readonly propertyService: PropertyService,
private readonly subscriptionService: SubscriptionService, private readonly subscriptionService: SubscriptionService,
private readonly symbolProfileService: SymbolProfileService private readonly symbolProfileService: SymbolProfileService
) { ) {}
this.baseCurrency = this.configurationService.get('BASE_CURRENCY');
}
public async addAssetProfile({ public async addAssetProfile({
dataSource, dataSource,
@ -80,15 +79,15 @@ export class AdminService {
exchangeRates: this.exchangeRateDataService exchangeRates: this.exchangeRateDataService
.getCurrencies() .getCurrencies()
.filter((currency) => { .filter((currency) => {
return currency !== this.baseCurrency; return currency !== DEFAULT_CURRENCY;
}) })
.map((currency) => { .map((currency) => {
return { return {
label1: this.baseCurrency, label1: DEFAULT_CURRENCY,
label2: currency, label2: currency,
value: this.exchangeRateDataService.toCurrency( value: this.exchangeRateDataService.toCurrency(
1, 1,
this.baseCurrency, DEFAULT_CURRENCY,
currency currency
) )
}; };

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

@ -55,7 +55,7 @@ export class AuthService {
const isUserSignupEnabled = const isUserSignupEnabled =
await this.propertyService.isUserSignupEnabled(); await this.propertyService.isUserSignupEnabled();
if (!isUserSignupEnabled) { if (!isUserSignupEnabled || true) {
throw new Error('Sign up forbidden'); throw new Error('Sign up forbidden');
} }

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

@ -566,7 +566,7 @@ export class ImportService {
]) ])
)?.[symbol]; )?.[symbol];
if (!assetProfile) { if (!assetProfile?.name) {
throw new Error( throw new Error(
`activities.${index}.symbol ("${symbol}") is not valid for the specified data source ("${dataSource}")` `activities.${index}.symbol ("${symbol}") is not valid for the specified data source ("${dataSource}")`
); );

5
apps/api/src/app/info/info.module.ts

@ -1,6 +1,7 @@
import { BenchmarkModule } from '@ghostfolio/api/app/benchmark/benchmark.module'; import { BenchmarkModule } from '@ghostfolio/api/app/benchmark/benchmark.module';
import { PlatformModule } from '@ghostfolio/api/app/platform/platform.module'; import { PlatformModule } from '@ghostfolio/api/app/platform/platform.module';
import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module'; import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module';
import { UserModule } from '@ghostfolio/api/app/user/user.module';
import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module';
import { DataGatheringModule } from '@ghostfolio/api/services/data-gathering/data-gathering.module'; import { DataGatheringModule } from '@ghostfolio/api/services/data-gathering/data-gathering.module';
import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module';
@ -28,11 +29,11 @@ import { InfoService } from './info.service';
signOptions: { expiresIn: '30 days' } signOptions: { expiresIn: '30 days' }
}), }),
PlatformModule, PlatformModule,
PrismaModule,
PropertyModule, PropertyModule,
RedisCacheModule, RedisCacheModule,
SymbolProfileModule, SymbolProfileModule,
TagModule TagModule,
UserModule
], ],
providers: [InfoService] providers: [InfoService]
}) })

30
apps/api/src/app/info/info.service.ts

@ -1,12 +1,13 @@
import { BenchmarkService } from '@ghostfolio/api/app/benchmark/benchmark.service'; import { BenchmarkService } from '@ghostfolio/api/app/benchmark/benchmark.service';
import { PlatformService } from '@ghostfolio/api/app/platform/platform.service'; import { PlatformService } from '@ghostfolio/api/app/platform/platform.service';
import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service'; import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service';
import { UserService } from '@ghostfolio/api/app/user/user.service';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service';
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import { PropertyService } from '@ghostfolio/api/services/property/property.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service';
import { TagService } from '@ghostfolio/api/services/tag/tag.service'; import { TagService } from '@ghostfolio/api/services/tag/tag.service';
import { import {
DEFAULT_CURRENCY,
PROPERTY_BETTER_UPTIME_MONITOR_ID, PROPERTY_BETTER_UPTIME_MONITOR_ID,
PROPERTY_COUNTRIES_OF_SUBSCRIBERS, PROPERTY_COUNTRIES_OF_SUBSCRIBERS,
PROPERTY_DEMO_USER_ID, PROPERTY_DEMO_USER_ID,
@ -44,10 +45,10 @@ export class InfoService {
private readonly exchangeRateDataService: ExchangeRateDataService, private readonly exchangeRateDataService: ExchangeRateDataService,
private readonly jwtService: JwtService, private readonly jwtService: JwtService,
private readonly platformService: PlatformService, private readonly platformService: PlatformService,
private readonly prismaService: PrismaService,
private readonly propertyService: PropertyService, private readonly propertyService: PropertyService,
private readonly redisCacheService: RedisCacheService, private readonly redisCacheService: RedisCacheService,
private readonly tagService: TagService private readonly tagService: TagService,
private readonly userService: UserService
) {} ) {}
public async get(): Promise<InfoItem> { public async get(): Promise<InfoItem> {
@ -139,18 +140,13 @@ export class InfoService {
subscriptions, subscriptions,
systemMessage, systemMessage,
tags, tags,
baseCurrency: this.configurationService.get('BASE_CURRENCY'), baseCurrency: DEFAULT_CURRENCY,
currencies: this.exchangeRateDataService.getCurrencies() currencies: this.exchangeRateDataService.getCurrencies()
}; };
} }
private async countActiveUsers(aDays: number) { private async countActiveUsers(aDays: number) {
return await this.prismaService.user.count({ return this.userService.count({
orderBy: {
Analytics: {
updatedAt: 'desc'
}
},
where: { where: {
AND: [ AND: [
{ {
@ -223,10 +219,7 @@ export class InfoService {
} }
private async countNewUsers(aDays: number) { private async countNewUsers(aDays: number) {
return await this.prismaService.user.count({ return this.userService.count({
orderBy: {
createdAt: 'desc'
},
where: { where: {
AND: [ AND: [
{ {
@ -317,11 +310,10 @@ export class InfoService {
return undefined; return undefined;
} }
const stripeConfig = (await this.prismaService.property.findUnique({ return (
where: { key: PROPERTY_STRIPE_CONFIG } ((await this.propertyService.getByKey(PROPERTY_STRIPE_CONFIG)) as any) ??
})) ?? { value: '{}' }; {}
);
return JSON.parse(stripeConfig.value);
} }
private async getUptime(): Promise<number> { private async getUptime(): Promise<number> {

1
apps/api/src/app/portfolio/current-rate.service.spec.ts

@ -105,7 +105,6 @@ describe('CurrentRateService', () => {
null, null,
null, null,
null, null,
null,
null null
); );
marketDataService = new MarketDataService(null); marketDataService = new MarketDataService(null);

2
apps/api/src/app/portfolio/portfolio-calculator.ts

@ -768,7 +768,7 @@ export class PortfolioCalculator {
); );
} else if (!currentPosition.quantity.eq(0)) { } else if (!currentPosition.quantity.eq(0)) {
Logger.warn( Logger.warn(
`Missing historical market data for symbol ${currentPosition.symbol}`, `Missing historical market data for ${currentPosition.symbol} (${currentPosition.dataSource})`,
'PortfolioCalculator' 'PortfolioCalculator'
); );
hasErrors = true; hasErrors = true;

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

@ -10,7 +10,10 @@ import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interc
import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { ApiService } from '@ghostfolio/api/services/api/api.service';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service';
import { HEADER_KEY_IMPERSONATION } from '@ghostfolio/common/config'; import {
DEFAULT_CURRENCY,
HEADER_KEY_IMPERSONATION
} from '@ghostfolio/common/config';
import { import {
PortfolioDetails, PortfolioDetails,
PortfolioDividends, PortfolioDividends,
@ -47,8 +50,6 @@ import { PortfolioService } from './portfolio.service';
@Controller('portfolio') @Controller('portfolio')
export class PortfolioController { export class PortfolioController {
private baseCurrency: string;
public constructor( public constructor(
private readonly accessService: AccessService, private readonly accessService: AccessService,
private readonly apiService: ApiService, private readonly apiService: ApiService,
@ -57,9 +58,7 @@ export class PortfolioController {
private readonly portfolioService: PortfolioService, private readonly portfolioService: PortfolioService,
@Inject(REQUEST) private readonly request: RequestWithUser, @Inject(REQUEST) private readonly request: RequestWithUser,
private readonly userService: UserService private readonly userService: UserService
) { ) {}
this.baseCurrency = this.configurationService.get('BASE_CURRENCY');
}
@Get('details') @Get('details')
@UseGuards(AuthGuard('jwt')) @UseGuards(AuthGuard('jwt'))
@ -477,8 +476,7 @@ export class PortfolioController {
return this.exchangeRateDataService.toCurrency( return this.exchangeRateDataService.toCurrency(
portfolioPosition.quantity * portfolioPosition.marketPrice, portfolioPosition.quantity * portfolioPosition.marketPrice,
portfolioPosition.currency, portfolioPosition.currency,
this.request.user?.Settings?.settings.baseCurrency ?? this.request.user?.Settings?.settings.baseCurrency ?? DEFAULT_CURRENCY
this.baseCurrency
); );
}) })
.reduce((a, b) => a + b, 0); .reduce((a, b) => a + b, 0);

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

@ -11,12 +11,12 @@ import { AccountClusterRiskSingleAccount } from '@ghostfolio/api/models/rules/ac
import { CurrencyClusterRiskBaseCurrencyCurrentInvestment } from '@ghostfolio/api/models/rules/currency-cluster-risk/base-currency-current-investment'; import { CurrencyClusterRiskBaseCurrencyCurrentInvestment } from '@ghostfolio/api/models/rules/currency-cluster-risk/base-currency-current-investment';
import { CurrencyClusterRiskCurrentInvestment } from '@ghostfolio/api/models/rules/currency-cluster-risk/current-investment'; import { CurrencyClusterRiskCurrentInvestment } from '@ghostfolio/api/models/rules/currency-cluster-risk/current-investment';
import { FeeRatioInitialInvestment } from '@ghostfolio/api/models/rules/fees/fee-ratio-initial-investment'; import { FeeRatioInitialInvestment } from '@ghostfolio/api/models/rules/fees/fee-ratio-initial-investment';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service';
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service';
import { ImpersonationService } from '@ghostfolio/api/services/impersonation/impersonation.service'; import { ImpersonationService } from '@ghostfolio/api/services/impersonation/impersonation.service';
import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service';
import { import {
DEFAULT_CURRENCY,
EMERGENCY_FUND_TAG_ID, EMERGENCY_FUND_TAG_ID,
MAX_CHART_ITEMS, MAX_CHART_ITEMS,
UNKNOWN_KEY UNKNOWN_KEY
@ -90,11 +90,8 @@ const europeMarkets = require('../../assets/countries/europe-markets.json');
@Injectable() @Injectable()
export class PortfolioService { export class PortfolioService {
private baseCurrency: string;
public constructor( public constructor(
private readonly accountService: AccountService, private readonly accountService: AccountService,
private readonly configurationService: ConfigurationService,
private readonly currentRateService: CurrentRateService, private readonly currentRateService: CurrentRateService,
private readonly dataProviderService: DataProviderService, private readonly dataProviderService: DataProviderService,
private readonly exchangeRateDataService: ExchangeRateDataService, private readonly exchangeRateDataService: ExchangeRateDataService,
@ -104,9 +101,7 @@ export class PortfolioService {
private readonly rulesService: RulesService, private readonly rulesService: RulesService,
private readonly symbolProfileService: SymbolProfileService, private readonly symbolProfileService: SymbolProfileService,
private readonly userService: UserService private readonly userService: UserService
) { ) {}
this.baseCurrency = this.configurationService.get('BASE_CURRENCY');
}
public async getAccounts({ public async getAccounts({
filters, filters,
@ -1879,7 +1874,7 @@ export class PortfolioService {
portfolioOrders: PortfolioOrder[]; portfolioOrders: PortfolioOrder[];
}> { }> {
const userCurrency = const userCurrency =
this.request.user?.Settings?.settings.baseCurrency ?? this.baseCurrency; this.request.user?.Settings?.settings.baseCurrency ?? DEFAULT_CURRENCY;
const orders = await this.orderService.getOrders({ const orders = await this.orderService.getOrders({
filters, filters,
@ -2101,7 +2096,7 @@ export class PortfolioService {
return ( return (
aUser.Settings?.settings.baseCurrency ?? aUser.Settings?.settings.baseCurrency ??
this.request.user?.Settings?.settings.baseCurrency ?? this.request.user?.Settings?.settings.baseCurrency ??
this.baseCurrency DEFAULT_CURRENCY
); );
} }

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

@ -25,16 +25,16 @@ const crypto = require('crypto');
@Injectable() @Injectable()
export class UserService { export class UserService {
private baseCurrency: string;
public constructor( public constructor(
private readonly configurationService: ConfigurationService, private readonly configurationService: ConfigurationService,
private readonly prismaService: PrismaService, private readonly prismaService: PrismaService,
private readonly propertyService: PropertyService, private readonly propertyService: PropertyService,
private readonly subscriptionService: SubscriptionService, private readonly subscriptionService: SubscriptionService,
private readonly tagService: TagService private readonly tagService: TagService
) { ) {}
this.baseCurrency = this.configurationService.get('BASE_CURRENCY');
public async count(args?: Prisma.UserCountArgs) {
return this.prismaService.user.count(args);
} }
public async getUser( public async getUser(
@ -267,7 +267,7 @@ export class UserService {
...data, ...data,
Account: { Account: {
create: { create: {
currency: this.baseCurrency, currency: DEFAULT_CURRENCY,
isDefault: true, isDefault: true,
name: 'Default Account' name: 'Default Account'
} }
@ -275,7 +275,7 @@ export class UserService {
Settings: { Settings: {
create: { create: {
settings: { settings: {
currency: this.baseCurrency currency: DEFAULT_CURRENCY
} }
} }
} }

116
apps/api/src/assets/sitemap.xml

@ -250,6 +250,10 @@
<loc>https://ghostfol.io/en/blog/2023/08/ghostfolio-joins-oss-friends</loc> <loc>https://ghostfol.io/en/blog/2023/08/ghostfolio-joins-oss-friends</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url> </url>
<url>
<loc>https://ghostfol.io/en/blog/2023/09/ghostfolio-2</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url> <url>
<loc>https://ghostfol.io/en/faq</loc> <loc>https://ghostfol.io/en/faq</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -555,7 +559,111 @@
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://ghostfol.io/nl/kenmerken</loc> <loc>https://ghostfol.io/nl/bronnen/personal-finance-tools</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-altoo</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-copilot-money</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-delta</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-divvydiary</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-exirio</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-folishare</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-getquin</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-gospatz</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-justetf</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-kubera</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-markets.sh</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-maybe-finance</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-monse</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-parqet</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-plannix</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-portfolio-dividend-tracker</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-portseido</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-projectionlab</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-seeking-alpha</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-sharesight</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-simple-portfolio</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-snowball-analytics</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-sumio</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-utluna</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-yeekatee</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/functionaliteiten</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url> </url>
<url> <url>
@ -597,7 +705,11 @@
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://ghostfol.io/nl/vaak-gestelde-vragen</loc> <loc>https://ghostfol.io/nl/veelgestelde-vragen</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/pt</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url> </url>
<url> <url>

10
apps/api/src/main.ts

@ -55,7 +55,6 @@ async function bootstrap() {
app.use(HtmlTemplateMiddleware); app.use(HtmlTemplateMiddleware);
const BASE_CURRENCY = configService.get<string>('BASE_CURRENCY');
const HOST = configService.get<string>('HOST') || '0.0.0.0'; const HOST = configService.get<string>('HOST') || '0.0.0.0';
const PORT = configService.get<number>('PORT') || 3333; const PORT = configService.get<number>('PORT') || 3333;
@ -63,15 +62,6 @@ async function bootstrap() {
logLogo(); logLogo();
Logger.log(`Listening at http://${HOST}:${PORT}`); Logger.log(`Listening at http://${HOST}:${PORT}`);
Logger.log(''); Logger.log('');
if (BASE_CURRENCY) {
Logger.warn(
`The environment variable "BASE_CURRENCY" is deprecated and will be removed in Ghostfolio 2.0.`
);
Logger.warn(
'Please use the currency converter in the activity dialog instead.'
);
}
}); });
} }

4
apps/api/src/middlewares/html-template.middleware.ts

@ -75,6 +75,10 @@ const locales = {
'/en/blog/2023/08/ghostfolio-joins-oss-friends': { '/en/blog/2023/08/ghostfolio-joins-oss-friends': {
featureGraphicPath: 'assets/images/blog/ghostfolio-joins-oss-friends.png', featureGraphicPath: 'assets/images/blog/ghostfolio-joins-oss-friends.png',
title: `Ghostfolio joins OSS Friends - ${titleShort}` title: `Ghostfolio joins OSS Friends - ${titleShort}`
},
'/en/blog/2023/09/ghostfolio-2': {
featureGraphicPath: 'assets/images/blog/ghostfolio-2.jpg',
title: `Announcing Ghostfolio 2.0 - ${titleShort}`
} }
}; };

6
apps/api/src/services/configuration/configuration.service.ts

@ -1,5 +1,5 @@
import { Environment } from '@ghostfolio/api/services/interfaces/environment.interface'; import { Environment } from '@ghostfolio/api/services/interfaces/environment.interface';
import { DEFAULT_CURRENCY, DEFAULT_ROOT_URL } from '@ghostfolio/common/config'; import { DEFAULT_ROOT_URL } from '@ghostfolio/common/config';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { DataSource } from '@prisma/client'; import { DataSource } from '@prisma/client';
import { bool, cleanEnv, host, json, num, port, str } from 'envalid'; import { bool, cleanEnv, host, json, num, port, str } from 'envalid';
@ -12,10 +12,6 @@ export class ConfigurationService {
this.environmentConfiguration = cleanEnv(process.env, { this.environmentConfiguration = cleanEnv(process.env, {
ACCESS_TOKEN_SALT: str(), ACCESS_TOKEN_SALT: str(),
ALPHA_VANTAGE_API_KEY: str({ default: '' }), ALPHA_VANTAGE_API_KEY: str({ default: '' }),
BASE_CURRENCY: str({
choices: ['AUD', 'CAD', 'CNY', 'EUR', 'GBP', 'JPY', 'RUB', 'USD'],
default: DEFAULT_CURRENCY
}),
BETTER_UPTIME_API_KEY: str({ default: '' }), BETTER_UPTIME_API_KEY: str({ default: '' }),
CACHE_QUOTES_TTL: num({ default: 1 }), CACHE_QUOTES_TTL: num({ default: 1 }),
CACHE_TTL: num({ default: 1 }), CACHE_TTL: num({ default: 1 }),

4
apps/api/src/services/data-gathering/data-gathering.service.ts

@ -145,7 +145,9 @@ export class DataGatheringService {
}); });
} catch (error) { } catch (error) {
Logger.error( Logger.error(
`Failed to enhance data for symbol ${symbol} by ${dataEnhancer.getName()}`, `Failed to enhance data for ${symbol} (${
assetProfile.dataSource
}) by ${dataEnhancer.getName()}`,
error, error,
'DataGatheringService' 'DataGatheringService'
); );

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

@ -1,10 +1,10 @@
import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface'; import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { DataProviderInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-provider.interface'; import { DataProviderInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-provider.interface';
import { import {
IDataProviderHistoricalResponse, IDataProviderHistoricalResponse,
IDataProviderResponse IDataProviderResponse
} from '@ghostfolio/api/services/interfaces/interfaces'; } from '@ghostfolio/api/services/interfaces/interfaces';
import { DEFAULT_CURRENCY } from '@ghostfolio/common/config';
import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { DATE_FORMAT } from '@ghostfolio/common/helper';
import { DataProviderInfo } from '@ghostfolio/common/interfaces'; import { DataProviderInfo } from '@ghostfolio/common/interfaces';
import { Granularity } from '@ghostfolio/common/types'; import { Granularity } from '@ghostfolio/common/types';
@ -20,14 +20,9 @@ import got from 'got';
@Injectable() @Injectable()
export class CoinGeckoService implements DataProviderInterface { export class CoinGeckoService implements DataProviderInterface {
private baseCurrency: string;
private readonly URL = 'https://api.coingecko.com/api/v3'; private readonly URL = 'https://api.coingecko.com/api/v3';
public constructor( public constructor() {}
private readonly configurationService: ConfigurationService
) {
this.baseCurrency = this.configurationService.get('BASE_CURRENCY');
}
public canHandle(symbol: string) { public canHandle(symbol: string) {
return true; return true;
@ -39,7 +34,7 @@ export class CoinGeckoService implements DataProviderInterface {
const response: Partial<SymbolProfile> = { const response: Partial<SymbolProfile> = {
assetClass: AssetClass.CASH, assetClass: AssetClass.CASH,
assetSubClass: AssetSubClass.CRYPTOCURRENCY, assetSubClass: AssetSubClass.CRYPTOCURRENCY,
currency: this.baseCurrency, currency: DEFAULT_CURRENCY,
dataSource: this.getName(), dataSource: this.getName(),
symbol: aSymbol symbol: aSymbol
}; };
@ -81,7 +76,7 @@ export class CoinGeckoService implements DataProviderInterface {
const { prices } = await got( const { prices } = await got(
`${ `${
this.URL this.URL
}/coins/${aSymbol}/market_chart/range?vs_currency=${this.baseCurrency.toLowerCase()}&from=${getUnixTime( }/coins/${aSymbol}/market_chart/range?vs_currency=${DEFAULT_CURRENCY.toLowerCase()}&from=${getUnixTime(
from from
)}&to=${getUnixTime(to)}` )}&to=${getUnixTime(to)}`
).json<any>(); ).json<any>();
@ -130,16 +125,16 @@ export class CoinGeckoService implements DataProviderInterface {
const response = await got( const response = await got(
`${this.URL}/simple/price?ids=${aSymbols.join( `${this.URL}/simple/price?ids=${aSymbols.join(
',' ','
)}&vs_currencies=${this.baseCurrency.toLowerCase()}` )}&vs_currencies=${DEFAULT_CURRENCY.toLowerCase()}`
).json<any>(); ).json<any>();
for (const symbol in response) { for (const symbol in response) {
if (Object.prototype.hasOwnProperty.call(response, symbol)) { if (Object.prototype.hasOwnProperty.call(response, symbol)) {
results[symbol] = { results[symbol] = {
currency: this.baseCurrency, currency: DEFAULT_CURRENCY,
dataProviderInfo: this.getDataProviderInfo(), dataProviderInfo: this.getDataProviderInfo(),
dataSource: DataSource.COINGECKO, dataSource: DataSource.COINGECKO,
marketPrice: response[symbol][this.baseCurrency.toLowerCase()], marketPrice: response[symbol][DEFAULT_CURRENCY.toLowerCase()],
marketState: 'open' marketState: 'open'
}; };
} }
@ -175,7 +170,7 @@ export class CoinGeckoService implements DataProviderInterface {
symbol, symbol,
assetClass: AssetClass.CASH, assetClass: AssetClass.CASH,
assetSubClass: AssetSubClass.CRYPTOCURRENCY, assetSubClass: AssetSubClass.CRYPTOCURRENCY,
currency: this.baseCurrency, currency: DEFAULT_CURRENCY,
dataSource: this.getName() dataSource: this.getName()
}; };
}); });

4
apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.spec.ts

@ -1,4 +1,3 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service'; import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service';
import { YahooFinanceDataEnhancerService } from './yahoo-finance.service'; import { YahooFinanceDataEnhancerService } from './yahoo-finance.service';
@ -26,16 +25,13 @@ jest.mock(
); );
describe('YahooFinanceDataEnhancerService', () => { describe('YahooFinanceDataEnhancerService', () => {
let configurationService: ConfigurationService;
let cryptocurrencyService: CryptocurrencyService; let cryptocurrencyService: CryptocurrencyService;
let yahooFinanceDataEnhancerService: YahooFinanceDataEnhancerService; let yahooFinanceDataEnhancerService: YahooFinanceDataEnhancerService;
beforeAll(async () => { beforeAll(async () => {
configurationService = new ConfigurationService();
cryptocurrencyService = new CryptocurrencyService(); cryptocurrencyService = new CryptocurrencyService();
yahooFinanceDataEnhancerService = new YahooFinanceDataEnhancerService( yahooFinanceDataEnhancerService = new YahooFinanceDataEnhancerService(
configurationService,
cryptocurrencyService cryptocurrencyService
); );
}); });

38
apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts

@ -1,13 +1,13 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service'; import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service';
import { DataEnhancerInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-enhancer.interface'; import { DataEnhancerInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-enhancer.interface';
import { UNKNOWN_KEY } from '@ghostfolio/common/config'; import { DEFAULT_CURRENCY, UNKNOWN_KEY } from '@ghostfolio/common/config';
import { isCurrency } from '@ghostfolio/common/helper'; import { isCurrency } from '@ghostfolio/common/helper';
import { Injectable, Logger } from '@nestjs/common'; import { Injectable, Logger } from '@nestjs/common';
import { import {
AssetClass, AssetClass,
AssetSubClass, AssetSubClass,
DataSource, DataSource,
Prisma,
SymbolProfile SymbolProfile
} from '@prisma/client'; } from '@prisma/client';
import { countries } from 'countries-list'; import { countries } from 'countries-list';
@ -16,23 +16,18 @@ import type { Price } from 'yahoo-finance2/dist/esm/src/modules/quoteSummary-ifa
@Injectable() @Injectable()
export class YahooFinanceDataEnhancerService implements DataEnhancerInterface { export class YahooFinanceDataEnhancerService implements DataEnhancerInterface {
private baseCurrency: string;
public constructor( public constructor(
private readonly configurationService: ConfigurationService,
private readonly cryptocurrencyService: CryptocurrencyService private readonly cryptocurrencyService: CryptocurrencyService
) { ) {}
this.baseCurrency = this.configurationService.get('BASE_CURRENCY');
}
public convertFromYahooFinanceSymbol(aYahooFinanceSymbol: string) { public convertFromYahooFinanceSymbol(aYahooFinanceSymbol: string) {
let symbol = aYahooFinanceSymbol.replace( let symbol = aYahooFinanceSymbol.replace(
new RegExp(`-${this.baseCurrency}$`), new RegExp(`-${DEFAULT_CURRENCY}$`),
this.baseCurrency DEFAULT_CURRENCY
); );
if (symbol.includes('=X') && !symbol.includes(this.baseCurrency)) { if (symbol.includes('=X') && !symbol.includes(DEFAULT_CURRENCY)) {
symbol = `${this.baseCurrency}${symbol}`; symbol = `${DEFAULT_CURRENCY}${symbol}`;
} }
return symbol.replace('=X', ''); return symbol.replace('=X', '');
@ -47,21 +42,18 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface {
*/ */
public convertToYahooFinanceSymbol(aSymbol: string) { public convertToYahooFinanceSymbol(aSymbol: string) {
if ( if (
aSymbol.includes(this.baseCurrency) && aSymbol.includes(DEFAULT_CURRENCY) &&
aSymbol.length > this.baseCurrency.length aSymbol.length > DEFAULT_CURRENCY.length
) { ) {
if ( if (
isCurrency( isCurrency(
aSymbol.substring(0, aSymbol.length - this.baseCurrency.length) aSymbol.substring(0, aSymbol.length - DEFAULT_CURRENCY.length)
) )
) { ) {
return `${aSymbol}=X`; return `${aSymbol}=X`;
} else if ( } else if (
this.cryptocurrencyService.isCryptocurrency( this.cryptocurrencyService.isCryptocurrency(
aSymbol.replace( aSymbol.replace(new RegExp(`-${DEFAULT_CURRENCY}$`), DEFAULT_CURRENCY)
new RegExp(`-${this.baseCurrency}$`),
this.baseCurrency
)
) )
) { ) {
// Add a dash before the last three characters // Add a dash before the last three characters
@ -69,8 +61,8 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface {
// DOGEUSD -> DOGE-USD // DOGEUSD -> DOGE-USD
// SOL1USD -> SOL1-USD // SOL1USD -> SOL1-USD
return aSymbol.replace( return aSymbol.replace(
new RegExp(`-?${this.baseCurrency}$`), new RegExp(`-?${DEFAULT_CURRENCY}$`),
`-${this.baseCurrency}` `-${DEFAULT_CURRENCY}`
); );
} }
} }
@ -102,11 +94,11 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface {
const { countries, sectors, url } = const { countries, sectors, url } =
await this.getAssetProfile(yahooSymbol); await this.getAssetProfile(yahooSymbol);
if (countries) { if ((countries as unknown as Prisma.JsonArray)?.length > 0) {
response.countries = countries; response.countries = countries;
} }
if (sectors) { if ((sectors as unknown as Prisma.JsonArray)?.length > 0) {
response.sectors = sectors; response.sectors = sectors;
} }

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

@ -5,7 +5,10 @@ import {
IDataProviderHistoricalResponse, IDataProviderHistoricalResponse,
IDataProviderResponse IDataProviderResponse
} from '@ghostfolio/api/services/interfaces/interfaces'; } from '@ghostfolio/api/services/interfaces/interfaces';
import { DEFAULT_REQUEST_TIMEOUT } from '@ghostfolio/common/config'; import {
DEFAULT_CURRENCY,
DEFAULT_REQUEST_TIMEOUT
} from '@ghostfolio/common/config';
import { DATE_FORMAT, isCurrency } from '@ghostfolio/common/helper'; import { DATE_FORMAT, isCurrency } from '@ghostfolio/common/helper';
import { Granularity } from '@ghostfolio/common/types'; import { Granularity } from '@ghostfolio/common/types';
import { Injectable, Logger } from '@nestjs/common'; import { Injectable, Logger } from '@nestjs/common';
@ -22,14 +25,12 @@ import got from 'got';
@Injectable() @Injectable()
export class EodHistoricalDataService implements DataProviderInterface { export class EodHistoricalDataService implements DataProviderInterface {
private apiKey: string; private apiKey: string;
private baseCurrency: string;
private readonly URL = 'https://eodhistoricaldata.com/api'; private readonly URL = 'https://eodhistoricaldata.com/api';
public constructor( public constructor(
private readonly configurationService: ConfigurationService private readonly configurationService: ConfigurationService
) { ) {
this.apiKey = this.configurationService.get('EOD_HISTORICAL_DATA_API_KEY'); this.apiKey = this.configurationService.get('EOD_HISTORICAL_DATA_API_KEY');
this.baseCurrency = this.configurationService.get('BASE_CURRENCY');
} }
public canHandle(symbol: string) { public canHandle(symbol: string) {
@ -175,7 +176,7 @@ export class EodHistoricalDataService implements DataProviderInterface {
})?.currency; })?.currency;
result[this.convertFromEodSymbol(code)] = { result[this.convertFromEodSymbol(code)] = {
currency: currency ?? this.baseCurrency, currency: currency ?? DEFAULT_CURRENCY,
dataSource: DataSource.EOD_HISTORICAL_DATA, dataSource: DataSource.EOD_HISTORICAL_DATA,
marketPrice: close, marketPrice: close,
marketState: isToday(new Date(timestamp * 1000)) ? 'open' : 'closed' marketState: isToday(new Date(timestamp * 1000)) ? 'open' : 'closed'
@ -186,24 +187,24 @@ export class EodHistoricalDataService implements DataProviderInterface {
{} {}
); );
if (response[`${this.baseCurrency}GBP`]) { if (response[`${DEFAULT_CURRENCY}GBP`]) {
response[`${this.baseCurrency}GBp`] = { response[`${DEFAULT_CURRENCY}GBp`] = {
...response[`${this.baseCurrency}GBP`], ...response[`${DEFAULT_CURRENCY}GBP`],
currency: `${this.baseCurrency}GBp`, currency: `${DEFAULT_CURRENCY}GBp`,
marketPrice: this.getConvertedValue({ marketPrice: this.getConvertedValue({
symbol: `${this.baseCurrency}GBp`, symbol: `${DEFAULT_CURRENCY}GBp`,
value: response[`${this.baseCurrency}GBP`].marketPrice value: response[`${DEFAULT_CURRENCY}GBP`].marketPrice
}) })
}; };
} }
if (response[`${this.baseCurrency}ILS`]) { if (response[`${DEFAULT_CURRENCY}ILS`]) {
response[`${this.baseCurrency}ILA`] = { response[`${DEFAULT_CURRENCY}ILA`] = {
...response[`${this.baseCurrency}ILS`], ...response[`${DEFAULT_CURRENCY}ILS`],
currency: `${this.baseCurrency}ILA`, currency: `${DEFAULT_CURRENCY}ILA`,
marketPrice: this.getConvertedValue({ marketPrice: this.getConvertedValue({
symbol: `${this.baseCurrency}ILA`, symbol: `${DEFAULT_CURRENCY}ILA`,
value: response[`${this.baseCurrency}ILS`].marketPrice value: response[`${DEFAULT_CURRENCY}ILS`].marketPrice
}) })
}; };
} }
@ -272,7 +273,7 @@ export class EodHistoricalDataService implements DataProviderInterface {
if (symbol.endsWith('.FOREX')) { if (symbol.endsWith('.FOREX')) {
symbol = symbol.replace('GBX', 'GBp'); symbol = symbol.replace('GBX', 'GBp');
symbol = symbol.replace('.FOREX', ''); symbol = symbol.replace('.FOREX', '');
symbol = `${this.baseCurrency}${symbol}`; symbol = `${DEFAULT_CURRENCY}${symbol}`;
} }
return symbol; return symbol;
@ -285,17 +286,17 @@ export class EodHistoricalDataService implements DataProviderInterface {
*/ */
private convertToEodSymbol(aSymbol: string) { private convertToEodSymbol(aSymbol: string) {
if ( if (
aSymbol.startsWith(this.baseCurrency) && aSymbol.startsWith(DEFAULT_CURRENCY) &&
aSymbol.length > this.baseCurrency.length aSymbol.length > DEFAULT_CURRENCY.length
) { ) {
if ( if (
isCurrency( isCurrency(
aSymbol.substring(0, aSymbol.length - this.baseCurrency.length) aSymbol.substring(0, aSymbol.length - DEFAULT_CURRENCY.length)
) )
) { ) {
return `${aSymbol return `${aSymbol
.replace('GBp', 'GBX') .replace('GBp', 'GBX')
.replace(this.baseCurrency, '')}.FOREX`; .replace(DEFAULT_CURRENCY, '')}.FOREX`;
} }
} }
@ -309,10 +310,10 @@ export class EodHistoricalDataService implements DataProviderInterface {
symbol: string; symbol: string;
value: number; value: number;
}) { }) {
if (symbol === `${this.baseCurrency}GBp`) { if (symbol === `${DEFAULT_CURRENCY}GBp`) {
// Convert GPB to GBp (pence) // Convert GPB to GBp (pence)
return new Big(value).mul(100).toNumber(); return new Big(value).mul(100).toNumber();
} else if (symbol === `${this.baseCurrency}ILA`) { } else if (symbol === `${DEFAULT_CURRENCY}ILA`) {
// Convert ILS to ILA // Convert ILS to ILA
return new Big(value).mul(100).toNumber(); return new Big(value).mul(100).toNumber();
} }

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

@ -5,6 +5,7 @@ import {
IDataProviderHistoricalResponse, IDataProviderHistoricalResponse,
IDataProviderResponse IDataProviderResponse
} from '@ghostfolio/api/services/interfaces/interfaces'; } from '@ghostfolio/api/services/interfaces/interfaces';
import { DEFAULT_CURRENCY } from '@ghostfolio/common/config';
import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper'; import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper';
import { DataProviderInfo } from '@ghostfolio/common/interfaces'; import { DataProviderInfo } from '@ghostfolio/common/interfaces';
import { Granularity } from '@ghostfolio/common/types'; import { Granularity } from '@ghostfolio/common/types';
@ -16,7 +17,6 @@ import got from 'got';
@Injectable() @Injectable()
export class FinancialModelingPrepService implements DataProviderInterface { export class FinancialModelingPrepService implements DataProviderInterface {
private apiKey: string; private apiKey: string;
private baseCurrency: string;
private readonly URL = 'https://financialmodelingprep.com/api/v3'; private readonly URL = 'https://financialmodelingprep.com/api/v3';
public constructor( public constructor(
@ -25,7 +25,6 @@ export class FinancialModelingPrepService implements DataProviderInterface {
this.apiKey = this.configurationService.get( this.apiKey = this.configurationService.get(
'FINANCIAL_MODELING_PREP_API_KEY' 'FINANCIAL_MODELING_PREP_API_KEY'
); );
this.baseCurrency = this.configurationService.get('BASE_CURRENCY');
} }
public canHandle(symbol: string) { public canHandle(symbol: string) {
@ -117,7 +116,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
for (const { price, symbol } of response) { for (const { price, symbol } of response) {
results[symbol] = { results[symbol] = {
currency: this.baseCurrency, currency: DEFAULT_CURRENCY,
dataProviderInfo: this.getDataProviderInfo(), dataProviderInfo: this.getDataProviderInfo(),
dataSource: DataSource.FINANCIAL_MODELING_PREP, dataSource: DataSource.FINANCIAL_MODELING_PREP,
marketPrice: price, marketPrice: price,

49
apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts

@ -1,5 +1,4 @@
import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface'; import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service'; import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service';
import { YahooFinanceDataEnhancerService } from '@ghostfolio/api/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service'; import { YahooFinanceDataEnhancerService } from '@ghostfolio/api/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service';
import { DataProviderInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-provider.interface'; import { DataProviderInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-provider.interface';
@ -7,6 +6,7 @@ import {
IDataProviderHistoricalResponse, IDataProviderHistoricalResponse,
IDataProviderResponse IDataProviderResponse
} from '@ghostfolio/api/services/interfaces/interfaces'; } from '@ghostfolio/api/services/interfaces/interfaces';
import { DEFAULT_CURRENCY } from '@ghostfolio/common/config';
import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { DATE_FORMAT } from '@ghostfolio/common/helper';
import { Granularity } from '@ghostfolio/common/types'; import { Granularity } from '@ghostfolio/common/types';
import { Injectable, Logger } from '@nestjs/common'; import { Injectable, Logger } from '@nestjs/common';
@ -18,15 +18,10 @@ import { Quote } from 'yahoo-finance2/dist/esm/src/modules/quote';
@Injectable() @Injectable()
export class YahooFinanceService implements DataProviderInterface { export class YahooFinanceService implements DataProviderInterface {
private baseCurrency: string;
public constructor( public constructor(
private readonly configurationService: ConfigurationService,
private readonly cryptocurrencyService: CryptocurrencyService, private readonly cryptocurrencyService: CryptocurrencyService,
private readonly yahooFinanceDataEnhancerService: YahooFinanceDataEnhancerService private readonly yahooFinanceDataEnhancerService: YahooFinanceDataEnhancerService
) { ) {}
this.baseCurrency = this.configurationService.get('BASE_CURRENCY');
}
public canHandle(symbol: string) { public canHandle(symbol: string) {
return true; return true;
@ -212,50 +207,50 @@ export class YahooFinanceService implements DataProviderInterface {
}; };
if ( if (
symbol === `${this.baseCurrency}GBP` && symbol === `${DEFAULT_CURRENCY}GBP` &&
yahooFinanceSymbols.includes(`${this.baseCurrency}GBp=X`) yahooFinanceSymbols.includes(`${DEFAULT_CURRENCY}GBp=X`)
) { ) {
// Convert GPB to GBp (pence) // Convert GPB to GBp (pence)
response[`${this.baseCurrency}GBp`] = { response[`${DEFAULT_CURRENCY}GBp`] = {
...response[symbol], ...response[symbol],
currency: 'GBp', currency: 'GBp',
marketPrice: this.getConvertedValue({ marketPrice: this.getConvertedValue({
symbol: `${this.baseCurrency}GBp`, symbol: `${DEFAULT_CURRENCY}GBp`,
value: response[symbol].marketPrice value: response[symbol].marketPrice
}) })
}; };
} else if ( } else if (
symbol === `${this.baseCurrency}ILS` && symbol === `${DEFAULT_CURRENCY}ILS` &&
yahooFinanceSymbols.includes(`${this.baseCurrency}ILA=X`) yahooFinanceSymbols.includes(`${DEFAULT_CURRENCY}ILA=X`)
) { ) {
// Convert ILS to ILA // Convert ILS to ILA
response[`${this.baseCurrency}ILA`] = { response[`${DEFAULT_CURRENCY}ILA`] = {
...response[symbol], ...response[symbol],
currency: 'ILA', currency: 'ILA',
marketPrice: this.getConvertedValue({ marketPrice: this.getConvertedValue({
symbol: `${this.baseCurrency}ILA`, symbol: `${DEFAULT_CURRENCY}ILA`,
value: response[symbol].marketPrice value: response[symbol].marketPrice
}) })
}; };
} else if ( } else if (
symbol === `${this.baseCurrency}ZAR` && symbol === `${DEFAULT_CURRENCY}ZAR` &&
yahooFinanceSymbols.includes(`${this.baseCurrency}ZAc=X`) yahooFinanceSymbols.includes(`${DEFAULT_CURRENCY}ZAc=X`)
) { ) {
// Convert ZAR to ZAc (cents) // Convert ZAR to ZAc (cents)
response[`${this.baseCurrency}ZAc`] = { response[`${DEFAULT_CURRENCY}ZAc`] = {
...response[symbol], ...response[symbol],
currency: 'ZAc', currency: 'ZAc',
marketPrice: this.getConvertedValue({ marketPrice: this.getConvertedValue({
symbol: `${this.baseCurrency}ZAc`, symbol: `${DEFAULT_CURRENCY}ZAc`,
value: response[symbol].marketPrice value: response[symbol].marketPrice
}) })
}; };
} }
} }
if (yahooFinanceSymbols.includes(`${this.baseCurrency}USX=X`)) { if (yahooFinanceSymbols.includes(`${DEFAULT_CURRENCY}USX=X`)) {
// Convert USD to USX (cent) // Convert USD to USX (cent)
response[`${this.baseCurrency}USX`] = { response[`${DEFAULT_CURRENCY}USX`] = {
currency: 'USX', currency: 'USX',
dataSource: this.getName(), dataSource: this.getName(),
marketPrice: new Big(1).mul(100).toNumber(), marketPrice: new Big(1).mul(100).toNumber(),
@ -303,8 +298,8 @@ export class YahooFinanceService implements DataProviderInterface {
(quoteType === 'CRYPTOCURRENCY' && (quoteType === 'CRYPTOCURRENCY' &&
this.cryptocurrencyService.isCryptocurrency( this.cryptocurrencyService.isCryptocurrency(
symbol.replace( symbol.replace(
new RegExp(`-${this.baseCurrency}$`), new RegExp(`-${DEFAULT_CURRENCY}$`),
this.baseCurrency DEFAULT_CURRENCY
) )
)) || )) ||
quoteTypes.includes(quoteType) quoteTypes.includes(quoteType)
@ -314,7 +309,7 @@ export class YahooFinanceService implements DataProviderInterface {
if (quoteType === 'CRYPTOCURRENCY') { if (quoteType === 'CRYPTOCURRENCY') {
// Only allow cryptocurrencies in base currency to avoid having redundancy in the database. // Only allow cryptocurrencies in base currency to avoid having redundancy in the database.
// Transactions need to be converted manually to the base currency before // Transactions need to be converted manually to the base currency before
return symbol.includes(this.baseCurrency); return symbol.includes(DEFAULT_CURRENCY);
} else if (quoteType === 'FUTURE') { } else if (quoteType === 'FUTURE') {
// Allow GC=F, but not MGC=F // Allow GC=F, but not MGC=F
return symbol.length === 4; return symbol.length === 4;
@ -373,13 +368,13 @@ export class YahooFinanceService implements DataProviderInterface {
symbol: string; symbol: string;
value: number; value: number;
}) { }) {
if (symbol === `${this.baseCurrency}GBp`) { if (symbol === `${DEFAULT_CURRENCY}GBp`) {
// Convert GPB to GBp (pence) // Convert GPB to GBp (pence)
return new Big(value).mul(100).toNumber(); return new Big(value).mul(100).toNumber();
} else if (symbol === `${this.baseCurrency}ILA`) { } else if (symbol === `${DEFAULT_CURRENCY}ILA`) {
// Convert ILS to ILA // Convert ILS to ILA
return new Big(value).mul(100).toNumber(); return new Big(value).mul(100).toNumber();
} else if (symbol === `${this.baseCurrency}ZAc`) { } else if (symbol === `${DEFAULT_CURRENCY}ZAc`) {
// Convert ZAR to ZAc (cents) // Convert ZAR to ZAc (cents)
return new Big(value).mul(100).toNumber(); return new Big(value).mul(100).toNumber();
} }

34
apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts

@ -1,10 +1,12 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service';
import { IDataGatheringItem } from '@ghostfolio/api/services/interfaces/interfaces'; import { IDataGatheringItem } from '@ghostfolio/api/services/interfaces/interfaces';
import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service';
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import { PropertyService } from '@ghostfolio/api/services/property/property.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service';
import { PROPERTY_CURRENCIES } from '@ghostfolio/common/config'; import {
DEFAULT_CURRENCY,
PROPERTY_CURRENCIES
} from '@ghostfolio/common/config';
import { DATE_FORMAT, getYesterday } from '@ghostfolio/common/helper'; import { DATE_FORMAT, getYesterday } from '@ghostfolio/common/helper';
import { Injectable, Logger } from '@nestjs/common'; import { Injectable, Logger } from '@nestjs/common';
import { format, isToday } from 'date-fns'; import { format, isToday } from 'date-fns';
@ -12,13 +14,11 @@ import { isNumber, uniq } from 'lodash';
@Injectable() @Injectable()
export class ExchangeRateDataService { export class ExchangeRateDataService {
private baseCurrency: string;
private currencies: string[] = []; private currencies: string[] = [];
private currencyPairs: IDataGatheringItem[] = []; private currencyPairs: IDataGatheringItem[] = [];
private exchangeRates: { [currencyPair: string]: number } = {}; private exchangeRates: { [currencyPair: string]: number } = {};
public constructor( public constructor(
private readonly configurationService: ConfigurationService,
private readonly dataProviderService: DataProviderService, private readonly dataProviderService: DataProviderService,
private readonly marketDataService: MarketDataService, private readonly marketDataService: MarketDataService,
private readonly prismaService: PrismaService, private readonly prismaService: PrismaService,
@ -26,7 +26,7 @@ export class ExchangeRateDataService {
) {} ) {}
public getCurrencies() { public getCurrencies() {
return this.currencies?.length > 0 ? this.currencies : [this.baseCurrency]; return this.currencies?.length > 0 ? this.currencies : [DEFAULT_CURRENCY];
} }
public getCurrencyPairs() { public getCurrencyPairs() {
@ -43,7 +43,6 @@ export class ExchangeRateDataService {
} }
public async initialize() { public async initialize() {
this.baseCurrency = this.configurationService.get('BASE_CURRENCY');
this.currencies = await this.prepareCurrencies(); this.currencies = await this.prepareCurrencies();
this.currencyPairs = []; this.currencyPairs = [];
this.exchangeRates = {}; this.exchangeRates = {};
@ -113,9 +112,9 @@ export class ExchangeRateDataService {
if (!this.exchangeRates[symbol]) { if (!this.exchangeRates[symbol]) {
// Not found, calculate indirectly via base currency // Not found, calculate indirectly via base currency
this.exchangeRates[symbol] = this.exchangeRates[symbol] =
resultExtended[`${currency1}${this.baseCurrency}`]?.[date] resultExtended[`${currency1}${DEFAULT_CURRENCY}`]?.[date]
?.marketPrice * ?.marketPrice *
resultExtended[`${this.baseCurrency}${currency2}`]?.[date] resultExtended[`${DEFAULT_CURRENCY}${currency2}`]?.[date]
?.marketPrice; ?.marketPrice;
// Calculate the opposite direction // Calculate the opposite direction
@ -144,9 +143,8 @@ export class ExchangeRateDataService {
} else { } else {
// Calculate indirectly via base currency // Calculate indirectly via base currency
const factor1 = const factor1 =
this.exchangeRates[`${aFromCurrency}${this.baseCurrency}`]; this.exchangeRates[`${aFromCurrency}${DEFAULT_CURRENCY}`];
const factor2 = const factor2 = this.exchangeRates[`${DEFAULT_CURRENCY}${aToCurrency}`];
this.exchangeRates[`${this.baseCurrency}${aToCurrency}`];
factor = factor1 * factor2; factor = factor1 * factor2;
@ -204,28 +202,28 @@ export class ExchangeRateDataService {
let marketPriceBaseCurrencyToCurrency: number; let marketPriceBaseCurrencyToCurrency: number;
try { try {
if (this.baseCurrency === aFromCurrency) { if (aFromCurrency === DEFAULT_CURRENCY) {
marketPriceBaseCurrencyFromCurrency = 1; marketPriceBaseCurrencyFromCurrency = 1;
} else { } else {
marketPriceBaseCurrencyFromCurrency = ( marketPriceBaseCurrencyFromCurrency = (
await this.marketDataService.get({ await this.marketDataService.get({
dataSource, dataSource,
date: aDate, date: aDate,
symbol: `${this.baseCurrency}${aFromCurrency}` symbol: `${DEFAULT_CURRENCY}${aFromCurrency}`
}) })
)?.marketPrice; )?.marketPrice;
} }
} catch {} } catch {}
try { try {
if (this.baseCurrency === aToCurrency) { if (aToCurrency === DEFAULT_CURRENCY) {
marketPriceBaseCurrencyToCurrency = 1; marketPriceBaseCurrencyToCurrency = 1;
} else { } else {
marketPriceBaseCurrencyToCurrency = ( marketPriceBaseCurrencyToCurrency = (
await this.marketDataService.get({ await this.marketDataService.get({
dataSource, dataSource,
date: aDate, date: aDate,
symbol: `${this.baseCurrency}${aToCurrency}` symbol: `${DEFAULT_CURRENCY}${aToCurrency}`
}) })
)?.marketPrice; )?.marketPrice;
} }
@ -295,14 +293,14 @@ export class ExchangeRateDataService {
private prepareCurrencyPairs(aCurrencies: string[]) { private prepareCurrencyPairs(aCurrencies: string[]) {
return aCurrencies return aCurrencies
.filter((currency) => { .filter((currency) => {
return currency !== this.baseCurrency; return currency !== DEFAULT_CURRENCY;
}) })
.map((currency) => { .map((currency) => {
return { return {
currency1: this.baseCurrency, currency1: DEFAULT_CURRENCY,
currency2: currency, currency2: currency,
dataSource: this.dataProviderService.getDataSourceForExchangeRates(), dataSource: this.dataProviderService.getDataSourceForExchangeRates(),
symbol: `${this.baseCurrency}${currency}` symbol: `${DEFAULT_CURRENCY}${currency}`
}; };
}); });
} }

1
apps/api/src/services/interfaces/environment.interface.ts

@ -3,7 +3,6 @@ import { CleanedEnvAccessors } from 'envalid';
export interface Environment extends CleanedEnvAccessors { export interface Environment extends CleanedEnvAccessors {
ACCESS_TOKEN_SALT: string; ACCESS_TOKEN_SALT: string;
ALPHA_VANTAGE_API_KEY: string; ALPHA_VANTAGE_API_KEY: string;
BASE_CURRENCY: string;
BETTER_UPTIME_API_KEY: string; BETTER_UPTIME_API_KEY: string;
CACHE_QUOTES_TTL: number; CACHE_QUOTES_TTL: number;
CACHE_TTL: number; CACHE_TTL: number;

17
apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts

@ -0,0 +1,17 @@
import { Component } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router';
@Component({
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-ghostfolio-2-page',
standalone: true,
templateUrl: './ghostfolio-2-page.html'
})
export class Ghostfolio2PageComponent {
public routerLinkAbout = ['/' + $localize`about`];
public routerLinkAboutChangelog = ['/' + $localize`about`, 'changelog'];
public routerLinkFeatures = ['/' + $localize`features`];
public routerLinkMarkets = ['/' + $localize`markets`];
}

286
apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html

@ -0,0 +1,286 @@
<div class="blog container">
<div class="row">
<div class="col-md-8 offset-md-2">
<article>
<div class="mb-4 text-center">
<h1 class="mb-1">Ghostfolio 2.0</h1>
<div class="mb-3 text-muted"><small>2023-09-09</small></div>
<img
alt="Ghostfolio 2.0 Teaser"
class="border rounded w-100"
src="../assets/images/blog/ghostfolio-2.jpg"
title="Announcing Ghostfolio 2.0"
/>
</div>
<section class="mb-4">
<p>
Since late 2020, when
<a [routerLink]="routerLinkAbout">Ghostfolio</a> took shape, the
main goal has remained the same: to simplify investment tracking
while prioritizing user privacy and enable investors to make
informed decisions. Our journey so far has been incredible, with
over 300 releases since the
<a href="../en/blog/2021/07/hello-ghostfolio">first major release</a
>, close to 300’000 pulls on Docker Hub, and collaboration with 50+
contributors from around the globe. Ghostfolio was recently featured
on
<a
href="https://news.ycombinator.com/item?id=37337482"
target="_blank"
>Hacker News</a
>, where it ranked on the front page and briefly hit the #1 spot.
Shortly after, the project’s repository was trending on GitHub.
These achievements emphasize the growing recognition for our project
and the path we are on.
</p>
<p>
Now, we are thrilled to present Ghostfolio 2.0, another milestone in
our journey to empower investors.
</p>
</section>
<section class="mb-4">
<h2 class="h4">Introducing Ghostfolio 2.0</h2>
<p>
Ghostfolio 2.0 is the evolution of our
<a [routerLink]="routerLinkFeatures"
>open source wealth management software</a
>, elevating both user and developer experiences. We have extended
data import capabilities, added comprehensive analytics, increased
stability, and utilized the latest technology to deliver these
improvements. Here is a closer look at a selection of the
improvements you can expect from this
<a [routerLink]="routerLinkAboutChangelog">release</a>, alongside
uncounted smaller additions and enhancements.
</p>
<h3 class="h5">Extended Data Import Capabilities</h3>
<p>
Importing account activities is an important aspect of any portfolio
management software. With Ghostfolio 2.0, we have extended our data
import functionality, ensuring a seamless experience for users. Our
system supports multiple formats to make the experience more
seamless. Additionally, there is an API, providing you with even
greater flexibility and control over how you import transactions.
</p>
<h3 class="h5">Comprehensive Analytics</h3>
<p>
Understanding your wealth is key. The latest release offers more
comprehensive analytics to categorize your securities, providing
invaluable insights into your investment portfolio for making
informed decisions and optimizing diversification.
</p>
<h3 class="h5">Reliable Stability</h3>
<p>
Ensuring the stability of software is crucial, and a platform for
managing your wealth is no exception. The increased robustness of
our architecture means that you can count on Ghostfolio to be there
when you need it most, no matter the
<a [routerLink]="routerLinkMarkets">market conditions</a>.
</p>
<h3 class="h5">Cutting-Edge Technology Stack</h3>
<p>
Ghostfolio 2.0 leverages the latest tech stack to deliver a superior
user and developer experience. We have upgraded to
<a href="https://angular.io" target="_blank">Angular 16</a>,
<a href="https://nestjs.com" target="_blank">Nest.js 10</a>,
<a href="https://www.prisma.io" target="_blank">Prisma 5</a>, and
<a href="https://nx.dev" target="_blank">Nx 16</a>, ensuring that
the software is at the forefront of innovation. This upgrade allows
us to provide you with the best possible user experience, making
investment tracking more intuitive than ever before.
</p>
</section>
<section class="mb-4">
<h2 class="h4">Thriving Ghostfolio Community</h2>
<p>
In open source software (OSS) projects like Ghostfolio, the
community is the driving force behind its success. Without the
incredible support of our users and contributors, it would not have
been possible. As we celebrate the launch of Ghostfolio 2.0, we are
delighted to showcase the growth of the Ghostfolio community:
</p>
<ul>
<li>
Ghostfolio has accumulated <strong>2500+ stars</strong> on
<a
href="https://github.com/ghostfolio/ghostfolio"
target="_blank"
title="Find Ghostfolio on GitHub"
>GitHub</a
>, highlighting the appreciation and adoption of our platform by
the community.
</li>
<li>
Our
<a
href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg"
target="_blank"
title="Join the Ghostfolio Slack community"
>Slack</a
>
community has expanded to over <strong>350 members</strong>,
creating a space for like-minded investors to connect, share
insights, and collaborate.
</li>
<li>
On
<a href="https://twitter.com/ghostfolio_" target="_blank">X</a>
(formerly Twitter), over
<strong>300 investors and personal finance enthusiasts</strong>
follow Ghostfolio, keen to stay updated on the latest
developments.
</li>
</ul>
<p>
This is just the beginning. Ghostfolio is dedicated to ongoing
improvement and helping grow a vibrant community of investors. We
invite you to join us on this exciting journey.
</p>
<p>
<strong>Join our Slack community</strong>: Connect with fellow
investors, share your insights, and stay updated on the latest news
by joining our
<a
href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg"
target="_blank"
title="Join the Ghostfolio Slack community"
>Slack</a
>
community. It is a dynamic space where you can learn, collaborate,
and grow together with us.
</p>
<p>
<strong>Follow us on X</strong>: For release updates and market
insights, follow
<a href="https://twitter.com/ghostfolio_" target="_blank"
>Ghostfolio on X</a
>. It is the perfect place to stay informed and connect with our
team.
</p>
<p>
<strong>Give us a Star</strong>: If you have found value in
Ghostfolio or appreciate our commitment to simplifying investment
tracking, please consider giving us a star on
<a
href="https://github.com/ghostfolio/ghostfolio"
target="_blank"
title="Find Ghostfolio on GitHub"
>GitHub</a
>. Your support helps us reach a wider audience and make a
difference in the world of wealth management.
</p>
<p>
<strong>Become a contributor</strong>: If you are a developer
passionate about open source projects and personal finance, we
welcome your contributions.
<a href="https://github.com/ghostfolio/ghostfolio" target="_blank"
>Join our developer community</a
>, collaborate with like-minded people, and help shape the future of
Ghostfolio.
</p>
</section>
<section>
<p>
Ghostfolio 2.0 represents a major step forward in our mission to
empower investors, and we could not be more excited about the future
of the project. Together, we can build an outstanding tool that
makes our lives easier. Thank you for being a part of the Ghostfolio
community.
</p>
<p>Thomas from Ghostfolio</p>
</section>
<section class="mb-4">
<ul class="list-inline">
<li class="list-inline-item">
<span class="badge badge-light">Angular</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Announcement</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Collaboration</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Community</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Contribution</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Evolution</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Fintech</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Ghostfolio</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Ghostfolio 2.0</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Investment</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Nest.js</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Nx</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Open Source</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">OSS</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Personal Finance</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Platform</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Portfolio</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Prisma</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Privacy</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Release</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Software</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Stack</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Technology</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Wealth Management</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Web3</span>
</li>
</ul>
</section>
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a i18n [routerLink]="['/blog']">Blog</a>
</li>
<li
aria-current="page"
class="active breadcrumb-item text-truncate"
>
Announcing Ghostfolio 2.0
</li>
</ol>
</nav>
</article>
</div>
</div>
</div>

9
apps/client/src/app/pages/blog/blog-page-routing.module.ts

@ -145,6 +145,15 @@ const routes: Routes = [
'./2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component' './2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component'
).then((c) => c.GhostfolioJoinsOssFriendsPageComponent), ).then((c) => c.GhostfolioJoinsOssFriendsPageComponent),
title: 'Ghostfolio joins OSS Friends' title: 'Ghostfolio joins OSS Friends'
},
{
canActivate: [AuthGuard],
path: '2023/09/ghostfolio-2',
loadComponent: () =>
import('./2023/09/ghostfolio-2/ghostfolio-2-page.component').then(
(c) => c.Ghostfolio2PageComponent
),
title: 'Ghostfolio 2.0'
} }
]; ];

26
apps/client/src/app/pages/blog/blog-page.html

@ -8,6 +8,32 @@
finance</small finance</small
> >
</h1> </h1>
<mat-card appearance="outlined" class="mb-3">
<mat-card-content>
<div class="container p-0">
<div class="flex-nowrap no-gutters row">
<a
class="d-flex overflow-hidden w-100"
href="../en/blog/2023/09/ghostfolio-2"
>
<div class="flex-grow-1 overflow-hidden">
<div class="h6 m-0 text-truncate">
Announcing Ghostfolio 2.0
</div>
<div class="d-flex text-muted">2023-09-09</div>
</div>
<div class="align-items-center d-flex">
<ion-icon
class="chevron text-muted"
name="chevron-forward-outline"
size="small"
></ion-icon>
</div>
</a>
</div>
</div>
</mat-card-content>
</mat-card>
<mat-card appearance="outlined" class="mb-3"> <mat-card appearance="outlined" class="mb-3">
<mat-card-content> <mat-card-content>
<div class="container p-0"> <div class="container p-0">

10
apps/client/src/app/pages/landing/landing-page.html

@ -1,9 +1,17 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col text-center"> <div class="col text-center">
<h1 class="font-weight-bold intro mt-5" i18n> <div class="mt-5">
<div class="badge badge-light badge-pill border mb-3 px-3 py-2">
<a href="../en/blog/2023/09/ghostfolio-2"
><span class="mr-1 text-uppercase" i18n>New</span>
<span class="font-weight-normal">Ghostfolio 2.0</span></a
>
</div>
<h1 class="font-weight-bold intro" i18n>
Manage your wealth like a boss Manage your wealth like a boss
</h1> </h1>
</div>
<p class="lead mb-4" i18n> <p class="lead mb-4" i18n>
Ghostfolio is a privacy-first, open source dashboard for your personal Ghostfolio is a privacy-first, open source dashboard for your personal
finances. Break down your asset allocation, know your net worth and make finances. Break down your asset allocation, know your net worth and make

4
apps/client/src/app/pages/open/open-page.html

@ -32,6 +32,7 @@
<div class="col-xs-12 col-md-4 my-2"> <div class="col-xs-12 col-md-4 my-2">
<gf-value <gf-value
i18n i18n
i18n-subLabel
size="large" size="large"
subLabel="(Last 24 hours)" subLabel="(Last 24 hours)"
[locale]="user?.settings?.locale" [locale]="user?.settings?.locale"
@ -42,6 +43,7 @@
<div class="col-xs-12 col-md-4 my-2"> <div class="col-xs-12 col-md-4 my-2">
<gf-value <gf-value
i18n i18n
i18n-subLabel
size="large" size="large"
subLabel="(Last 30 days)" subLabel="(Last 30 days)"
[locale]="user?.settings?.locale" [locale]="user?.settings?.locale"
@ -52,6 +54,7 @@
<div class="col-xs-12 col-md-4 my-2"> <div class="col-xs-12 col-md-4 my-2">
<gf-value <gf-value
i18n i18n
i18n-subLabel
size="large" size="large"
subLabel="(Last 30 days)" subLabel="(Last 30 days)"
[locale]="user?.settings?.locale" [locale]="user?.settings?.locale"
@ -119,6 +122,7 @@
<a class="d-block" href="https://status.ghostfol.io"> <a class="d-block" href="https://status.ghostfol.io">
<gf-value <gf-value
i18n i18n
i18n-subLabel
size="large" size="large"
subLabel="(Last 90 days)" subLabel="(Last 90 days)"
[isPercent]="true" [isPercent]="true"

2
apps/client/src/app/pages/pricing/pricing-page.html

@ -329,7 +329,7 @@
>{{ baseCurrency }}&nbsp;<strong >{{ baseCurrency }}&nbsp;<strong
>{{ price }}</strong >{{ price }}</strong
></ng-container ></ng-container
>&nbsp;<span>per year</span></span >&nbsp;<span i18n>per year</span></span
> >
</p> </p>
<div <div

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

@ -4,7 +4,6 @@ import { Router } from '@angular/router';
import { DataService } from '@ghostfolio/client/services/data.service'; import { DataService } from '@ghostfolio/client/services/data.service';
import { InternetIdentityService } from '@ghostfolio/client/services/internet-identity.service'; import { InternetIdentityService } from '@ghostfolio/client/services/internet-identity.service';
import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service'; import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import { InfoItem, LineChartItem } from '@ghostfolio/common/interfaces'; import { InfoItem, LineChartItem } from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { Role } from '@prisma/client'; import { Role } from '@prisma/client';
@ -36,8 +35,7 @@ export class RegisterPageComponent implements OnDestroy, OnInit {
private dialog: MatDialog, private dialog: MatDialog,
private internetIdentityService: InternetIdentityService, private internetIdentityService: InternetIdentityService,
private router: Router, private router: Router,
private tokenStorageService: TokenStorageService, private tokenStorageService: TokenStorageService
private userService: UserService
) { ) {
this.info = this.dataService.fetchInfo(); this.info = this.dataService.fetchInfo();

1
apps/client/src/app/pages/register/register-page.html

@ -28,6 +28,7 @@
<ng-container *ngIf="hasPermissionForSocialLogin"> <ng-container *ngIf="hasPermissionForSocialLogin">
<div class="my-3 text-muted" i18n>or</div> <div class="my-3 text-muted" i18n>or</div>
<button <button
*ngIf="false"
class="d-block mb-2 px-4 rounded-pill" class="d-block mb-2 px-4 rounded-pill"
mat-stroked-button mat-stroked-button
(click)="onLoginWithInternetIdentity()" (click)="onLoginWithInternetIdentity()"

BIN
apps/client/src/assets/images/blog/ghostfolio-2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 KiB

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

@ -658,7 +658,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">158</context> <context context-type="linenumber">161</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7d6573fb998f3a1cf1356623b85850d9d10edaa9" datatype="html"> <trans-unit id="7d6573fb998f3a1cf1356623b85850d9d10edaa9" datatype="html">
@ -702,7 +702,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">171</context> <context context-type="linenumber">175</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="323af13292ecc714ab3848b9dff48f923893be32" datatype="html"> <trans-unit id="323af13292ecc714ab3848b9dff48f923893be32" datatype="html">
@ -714,7 +714,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">185</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4fe84c1d0eef5726c017f64c691145db7a61f879" datatype="html"> <trans-unit id="4fe84c1d0eef5726c017f64c691145db7a61f879" datatype="html">
@ -734,7 +734,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">189</context> <context context-type="linenumber">193</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.html</context>
@ -750,7 +750,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">209</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="452ef1b96854fe05618303ee601f8fed3b866c9f" datatype="html"> <trans-unit id="452ef1b96854fe05618303ee601f8fed3b866c9f" datatype="html">
@ -766,7 +766,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">216</context> <context context-type="linenumber">220</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/resources-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/resources-page.html</context>
@ -786,11 +786,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">292</context> <context context-type="linenumber">297</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html</context>
@ -906,7 +906,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">280</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="28094f38aac43d3cb6edaf98a281fe443a930b5e" datatype="html"> <trans-unit id="28094f38aac43d3cb6edaf98a281fe443a930b5e" datatype="html">
@ -914,7 +914,7 @@
<target state="translated">Ich</target> <target state="translated">Ich</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">141</context> <context context-type="linenumber">142</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="90d136a4e1f551f5de5340d443e0c95e49e95e1c" datatype="html"> <trans-unit id="90d136a4e1f551f5de5340d443e0c95e49e95e1c" datatype="html">
@ -922,7 +922,7 @@
<target state="translated">Mein Ghostfolio</target> <target state="translated">Mein Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">196</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6313384ccd7be95272bc2113ee9dada12af79b9b" datatype="html"> <trans-unit id="6313384ccd7be95272bc2113ee9dada12af79b9b" datatype="html">
@ -930,7 +930,7 @@
<target state="translated">Über Ghostfolio</target> <target state="translated">Über Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">236</context> <context context-type="linenumber">240</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
@ -946,7 +946,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">267</context> <context context-type="linenumber">271</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -962,7 +962,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">308</context> <context context-type="linenumber">313</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-market/home-market.html</context> <context context-type="sourcefile">apps/client/src/app/components/home-market/home-market.html</context>
@ -1054,7 +1054,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">414</context> <context context-type="linenumber">430</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
@ -1098,7 +1098,7 @@
<target state="translated">Einloggen</target> <target state="translated">Einloggen</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">321</context> <context context-type="linenumber">326</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -1528,6 +1528,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">154</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html</context>
<context context-type="linenumber">267</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context> <context context-type="linenumber">5</context>
@ -1652,6 +1656,10 @@
<trans-unit id="218afa01afa0cfc71b1a6507a3387763ecaa9332" datatype="html"> <trans-unit id="218afa01afa0cfc71b1a6507a3387763ecaa9332" datatype="html">
<source>per year</source> <source>per year</source>
<target state="translated">pro Jahr</target> <target state="translated">pro Jahr</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">332</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">57</context>
@ -2350,7 +2358,7 @@
<target state="translated">Weiter mit Internet Identity</target> <target state="translated">Weiter mit Internet Identity</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">41</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7eb7fc17d2f646c6c835f4da0b96f255b515cf4" datatype="html"> <trans-unit id="c7eb7fc17d2f646c6c835f4da0b96f255b515cf4" datatype="html">
@ -2358,7 +2366,7 @@
<target state="translated">Weiter mit Google</target> <target state="translated">Weiter mit Google</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3a6e5a6aa78ca864f6542410c5dafb6334538106" datatype="html"> <trans-unit id="3a6e5a6aa78ca864f6542410c5dafb6334538106" datatype="html">
@ -2534,7 +2542,7 @@
<target state="translated">Registrieren</target> <target state="translated">Registrieren</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">333</context> <context context-type="linenumber">338</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4190182554887994764" datatype="html"> <trans-unit id="4190182554887994764" datatype="html">
@ -7206,11 +7214,11 @@
<target state="translated">Aktive Nutzer</target> <target state="translated">Aktive Nutzer</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">39</context> <context context-type="linenumber">40</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">59</context> <context context-type="linenumber">62</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8c4cfd77b7b3d7917de13bec98a8a74890f95618" datatype="html"> <trans-unit id="8c4cfd77b7b3d7917de13bec98a8a74890f95618" datatype="html">
@ -7218,7 +7226,7 @@
<target state="translated">Neue Nutzer</target> <target state="translated">Neue Nutzer</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c0eb011366e597e23542be386e8bc0d53470b520" datatype="html"> <trans-unit id="c0eb011366e597e23542be386e8bc0d53470b520" datatype="html">
@ -7226,7 +7234,7 @@
<target state="translated">Nutzer in der Slack Community</target> <target state="translated">Nutzer in der Slack Community</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">72</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="be99161cc904867871ab172df77b736d3b27dfc5" datatype="html"> <trans-unit id="be99161cc904867871ab172df77b736d3b27dfc5" datatype="html">
@ -7234,7 +7242,7 @@
<target state="translated">Contributors auf GitHub</target> <target state="translated">Contributors auf GitHub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8d3932a9eba50bc101c2b8c329e7b4ea033cde97" datatype="html"> <trans-unit id="8d3932a9eba50bc101c2b8c329e7b4ea033cde97" datatype="html">
@ -7242,11 +7250,11 @@
<target state="translated">Sterne auf GitHub</target> <target state="translated">Sterne auf GitHub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="512b096f732f5e05dc1c451276b7a2b1a2509acd" datatype="html"> <trans-unit id="512b096f732f5e05dc1c451276b7a2b1a2509acd" datatype="html">
@ -7254,11 +7262,11 @@
<target state="translated">Downloads auf Docker Hub</target> <target state="translated">Downloads auf Docker Hub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">114</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ed1d16219cf7cc3ad92d2d49f0c55bbafe3768b2" datatype="html"> <trans-unit id="ed1d16219cf7cc3ad92d2d49f0c55bbafe3768b2" datatype="html">
@ -7266,7 +7274,7 @@
<target state="translated">Verfügbarkeit</target> <target state="translated">Verfügbarkeit</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">128</context> <context context-type="linenumber">132</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html"> <trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html">
@ -7341,12 +7349,12 @@
<context context-type="linenumber">24,28</context> <context context-type="linenumber">24,28</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1be07764640e49ab8b6f59b079e31d42083abf5b" datatype="html"> <trans-unit id="7b3c319feef05dcc1f487d09dd2a59eb4c50e6d6" datatype="html">
<source> Manage your wealth like a boss </source> <source> Manage your wealth like a boss </source>
<target state="translated"> Verwalte dein Vermögen wie ein Profi </target> <target state="translated"> Verwalte dein Vermögen wie ein Profi </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">4,6</context> <context context-type="linenumber">11,13</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f251aca95a00756de48b14172b02d33f175661fc" datatype="html"> <trans-unit id="f251aca95a00756de48b14172b02d33f175661fc" datatype="html">
@ -7354,7 +7362,7 @@
<target state="translated"> Ghostfolio ist ein Open Source Dashboard für deine persönlichen Finanzen mit Fokus auf Datenschutz. Analysiere deine Vermögensverteilung, ermittle dein Nettovermögen und treffe fundierte, datengestützte Investitionsentscheidungen. </target> <target state="translated"> Ghostfolio ist ein Open Source Dashboard für deine persönlichen Finanzen mit Fokus auf Datenschutz. Analysiere deine Vermögensverteilung, ermittle dein Nettovermögen und treffe fundierte, datengestützte Investitionsentscheidungen. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">7,11</context> <context context-type="linenumber">15,19</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="50fefcca3f8b7dd5a34141329118014a8c4b7d1b" datatype="html"> <trans-unit id="50fefcca3f8b7dd5a34141329118014a8c4b7d1b" datatype="html">
@ -7362,11 +7370,11 @@
<target state="translated"> Jetzt loslegen </target> <target state="translated"> Jetzt loslegen </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">39,41</context> <context context-type="linenumber">47,49</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">410,412</context> <context context-type="linenumber">426,428</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c4b553bb0e33c675cd6a34e2e295b984f9ee8381" datatype="html"> <trans-unit id="c4b553bb0e33c675cd6a34e2e295b984f9ee8381" datatype="html">
@ -7374,7 +7382,7 @@
<target state="translated"> oder </target> <target state="translated"> oder </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">44,46</context> <context context-type="linenumber">52,54</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1d6f11238819cf97ea87ab54714deda567d83f5c" datatype="html"> <trans-unit id="1d6f11238819cf97ea87ab54714deda567d83f5c" datatype="html">
@ -7382,7 +7390,7 @@
<target state="translated">Monatlich aktive Nutzer</target> <target state="translated">Monatlich aktive Nutzer</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9c7ee452b83c7458f6ffdd49837daf95b1d5f34e" datatype="html"> <trans-unit id="9c7ee452b83c7458f6ffdd49837daf95b1d5f34e" datatype="html">
@ -7390,7 +7398,7 @@
<target state="translated">Bekannt aus</target> <target state="translated">Bekannt aus</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">119</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c8ef12032b654cfd51b9ae1082fde84247945e03" datatype="html"> <trans-unit id="c8ef12032b654cfd51b9ae1082fde84247945e03" datatype="html">
@ -7398,7 +7406,7 @@
<target state="translated"> Schützen Sie Ihr <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Vermögen<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. Optimieren Sie Ihre <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>persönliche Anlagestrategie<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. </target> <target state="translated"> Schützen Sie Ihr <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Vermögen<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. Optimieren Sie Ihre <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>persönliche Anlagestrategie<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">205,208</context> <context context-type="linenumber">221,224</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9dd7364c5dcf1b010bfa80e824ba80eb67cc2b57" datatype="html"> <trans-unit id="9dd7364c5dcf1b010bfa80e824ba80eb67cc2b57" datatype="html">
@ -7406,7 +7414,7 @@
<target state="translated"> Ghostfolio ermöglicht es geschäftigen Leuten, den Überblick über Aktien, ETFs oder Kryptowährungen zu behalten, ohne überwacht zu werden. </target> <target state="translated"> Ghostfolio ermöglicht es geschäftigen Leuten, den Überblick über Aktien, ETFs oder Kryptowährungen zu behalten, ohne überwacht zu werden. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">209,212</context> <context context-type="linenumber">225,228</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a1ed4b69a5a2cefa86b16c94ff2799a6566b4f" datatype="html"> <trans-unit id="70a1ed4b69a5a2cefa86b16c94ff2799a6566b4f" datatype="html">
@ -7414,7 +7422,7 @@
<target state="translated">360° Ansicht</target> <target state="translated">360° Ansicht</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">220</context> <context context-type="linenumber">236</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e0840e61fd65397c9dd8c0aa35ec19778c79b73d" datatype="html"> <trans-unit id="e0840e61fd65397c9dd8c0aa35ec19778c79b73d" datatype="html">
@ -7422,7 +7430,7 @@
<target state="translated">Web3 ready</target> <target state="translated">Web3 ready</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">247</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="0a82bf107b3693ed6bdba551a97ce92494921513" datatype="html"> <trans-unit id="0a82bf107b3693ed6bdba551a97ce92494921513" datatype="html">
@ -7430,7 +7438,7 @@
<target state="translated"> Nutze Ghostfolio ganz anonym und behalte deine Finanzdaten. </target> <target state="translated"> Nutze Ghostfolio ganz anonym und behalte deine Finanzdaten. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">233,235</context> <context context-type="linenumber">249,251</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ebc1c2623f53ce48c714e00161a2f31f732c815b" datatype="html"> <trans-unit id="ebc1c2623f53ce48c714e00161a2f31f732c815b" datatype="html">
@ -7438,7 +7446,7 @@
<target state="translated">Open Source</target> <target state="translated">Open Source</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">257</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3756fe4769648222e9a3143d6a140e55afd7424b" datatype="html"> <trans-unit id="3756fe4769648222e9a3143d6a140e55afd7424b" datatype="html">
@ -7446,7 +7454,7 @@
<target state="translated"> Profitiere von kontinuierlichen Verbesserungen durch eine aktive Community. </target> <target state="translated"> Profitiere von kontinuierlichen Verbesserungen durch eine aktive Community. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">243,245</context> <context context-type="linenumber">259,261</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e7360ce972bb10156736d042a15c6c939fea123d" datatype="html"> <trans-unit id="e7360ce972bb10156736d042a15c6c939fea123d" datatype="html">
@ -7454,7 +7462,7 @@
<target state="translated">Warum <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>?</target> <target state="translated">Warum <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">268</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b2466b29949bb745c1f96f2d82e5dab9061f8efe" datatype="html"> <trans-unit id="b2466b29949bb745c1f96f2d82e5dab9061f8efe" datatype="html">
@ -7462,7 +7470,7 @@
<target state="translated"> Ghostfolio ist für dich geeignet, wenn du... </target> <target state="translated"> Ghostfolio ist für dich geeignet, wenn du... </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">253,255</context> <context context-type="linenumber">269,271</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2fe7c768f92932a3a6c9b460dd5d72e53deb9cfe" datatype="html"> <trans-unit id="2fe7c768f92932a3a6c9b460dd5d72e53deb9cfe" datatype="html">
@ -7470,7 +7478,7 @@
<target state="translated">Aktien, ETFs oder Kryptowährungen auf unterschiedlichen Plattformen handelst</target> <target state="translated">Aktien, ETFs oder Kryptowährungen auf unterschiedlichen Plattformen handelst</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">260,261</context> <context context-type="linenumber">276,277</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="fe71658bf131fad393a7ce618908e246617ded26" datatype="html"> <trans-unit id="fe71658bf131fad393a7ce618908e246617ded26" datatype="html">
@ -7478,7 +7486,7 @@
<target state="translated">eine Buy &amp; Hold Strategie verfolgst</target> <target state="translated">eine Buy &amp; Hold Strategie verfolgst</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">266</context> <context context-type="linenumber">282</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2e95d2cbc69d45e5ecf3eb92c2972e8cb4ff3ec6" datatype="html"> <trans-unit id="2e95d2cbc69d45e5ecf3eb92c2972e8cb4ff3ec6" datatype="html">
@ -7486,7 +7494,7 @@
<target state="translated">dich für die Zusammensetzung deines Portfolios interessierst</target> <target state="translated">dich für die Zusammensetzung deines Portfolios interessierst</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">271</context> <context context-type="linenumber">287</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4093027d62fd4125e36fe21bdd44475fc7499d02" datatype="html"> <trans-unit id="4093027d62fd4125e36fe21bdd44475fc7499d02" datatype="html">
@ -7494,7 +7502,7 @@
<target state="translated">Privatsphäre und Datenhoheit wertschätzt</target> <target state="translated">Privatsphäre und Datenhoheit wertschätzt</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">276</context> <context context-type="linenumber">292</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5fae4f4ad7de60db18a5c52ccf5e7e8c7b194a9c" datatype="html"> <trans-unit id="5fae4f4ad7de60db18a5c52ccf5e7e8c7b194a9c" datatype="html">
@ -7502,7 +7510,7 @@
<target state="translated">zum Frugalismus oder Minimalismus neigst</target> <target state="translated">zum Frugalismus oder Minimalismus neigst</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">279</context> <context context-type="linenumber">295</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="18bb2c16577866572e3656986d9660d2db012565" datatype="html"> <trans-unit id="18bb2c16577866572e3656986d9660d2db012565" datatype="html">
@ -7510,7 +7518,7 @@
<target state="translated">dich um die Diversifizierung deiner finanziellen Mittel kümmerst</target> <target state="translated">dich um die Diversifizierung deiner finanziellen Mittel kümmerst</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">283</context> <context context-type="linenumber">299</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="0a6c37c2d3a8c41e7e44f020aefb1c667ac150dc" datatype="html"> <trans-unit id="0a6c37c2d3a8c41e7e44f020aefb1c667ac150dc" datatype="html">
@ -7518,7 +7526,7 @@
<target state="translated">Interesse an finanzieller Freiheit hast</target> <target state="translated">Interesse an finanzieller Freiheit hast</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">287</context> <context context-type="linenumber">303</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="81fbb4e2cd3d3079d790bdddbfcc73ec3b600d22" datatype="html"> <trans-unit id="81fbb4e2cd3d3079d790bdddbfcc73ec3b600d22" datatype="html">
@ -7526,7 +7534,7 @@
<target state="translated">Nein sagst zu Excel-Tabellen im Jahr <x id="INTERPOLATION" equiv-text="{{ currentYear }}"/></target> <target state="translated">Nein sagst zu Excel-Tabellen im Jahr <x id="INTERPOLATION" equiv-text="{{ currentYear }}"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">291</context> <context context-type="linenumber">307</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="92cef868de56015b451e7eee26c9eaef54f41d37" datatype="html"> <trans-unit id="92cef868de56015b451e7eee26c9eaef54f41d37" datatype="html">
@ -7534,7 +7542,7 @@
<target state="translated">diese Liste bis zum Ende liest</target> <target state="translated">diese Liste bis zum Ende liest</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">294</context> <context context-type="linenumber">310</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8c11c506c55700ca9883f360c52df5a432a51dcf" datatype="html"> <trans-unit id="8c11c506c55700ca9883f360c52df5a432a51dcf" datatype="html">
@ -7542,7 +7550,7 @@
<target state="translated">Erfahre mehr über Ghostfolio</target> <target state="translated">Erfahre mehr über Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">315</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ae508ae33a02ae69247d9e4d84e98b610209ef3b" datatype="html"> <trans-unit id="ae508ae33a02ae69247d9e4d84e98b610209ef3b" datatype="html">
@ -7550,7 +7558,7 @@
<target state="translated"> Was unsere <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Nutzer<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> sagen </target> <target state="translated"> Was unsere <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Nutzer<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> sagen </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">307,309</context> <context context-type="linenumber">323,325</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f9e4d441f5fed560c87d2f1f061eaa826ed271cd" datatype="html"> <trans-unit id="f9e4d441f5fed560c87d2f1f061eaa826ed271cd" datatype="html">
@ -7558,7 +7566,7 @@
<target state="translated"> Nutzer aus aller Welt verwenden <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;pricing&quot;&gt;"/><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio Premium<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/></target> <target state="translated"> Nutzer aus aller Welt verwenden <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;pricing&quot;&gt;"/><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio Premium<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">337,339</context> <context context-type="linenumber">353,355</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="abc6737537d65639f566a7068d0e5dde19c9d220" datatype="html"> <trans-unit id="abc6737537d65639f566a7068d0e5dde19c9d220" datatype="html">
@ -7566,7 +7574,7 @@
<target state="translated"> Wie funktioniert <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> ? </target> <target state="translated"> Wie funktioniert <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> ? </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">352,354</context> <context context-type="linenumber">368,370</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="969974097ecdfff6cb04b4cb71efccd717da1ce8" datatype="html"> <trans-unit id="969974097ecdfff6cb04b4cb71efccd717da1ce8" datatype="html">
@ -7574,7 +7582,7 @@
<target state="translated">Registriere dich anonym*</target> <target state="translated">Registriere dich anonym*</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">361</context> <context context-type="linenumber">377</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ebca1c496ea9caf6acf2a7ee5c4fa2b3f5aee1fe" datatype="html"> <trans-unit id="ebca1c496ea9caf6acf2a7ee5c4fa2b3f5aee1fe" datatype="html">
@ -7582,7 +7590,7 @@
<target state="translated"><x id="START_SMALL_TEXT" ctype="x-small" equiv-text="&lt;small&gt;"/>* Keine E-Mail-Adresse oder Kreditkarte erforderlich<x id="CLOSE_SMALL_TEXT" ctype="x-small" equiv-text="&lt;/small&gt;"/></target> <target state="translated"><x id="START_SMALL_TEXT" ctype="x-small" equiv-text="&lt;small&gt;"/>* Keine E-Mail-Adresse oder Kreditkarte erforderlich<x id="CLOSE_SMALL_TEXT" ctype="x-small" equiv-text="&lt;/small&gt;"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">363</context> <context context-type="linenumber">379</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2039f449cf4ee0c26a9211de9d057c1002293917" datatype="html"> <trans-unit id="2039f449cf4ee0c26a9211de9d057c1002293917" datatype="html">
@ -7590,7 +7598,7 @@
<target state="translated"> Füge historische Transaktionen hinzu </target> <target state="translated"> Füge historische Transaktionen hinzu </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">374,376</context> <context context-type="linenumber">390,392</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d6a2cfef5de5fd13ceb051a8725b1414c2ad9a69" datatype="html"> <trans-unit id="d6a2cfef5de5fd13ceb051a8725b1414c2ad9a69" datatype="html">
@ -7598,7 +7606,7 @@
<target state="translated"> Erhalte nützliche Erkenntnisse über die Zusammensetzung deines Portfolios </target> <target state="translated"> Erhalte nützliche Erkenntnisse über die Zusammensetzung deines Portfolios </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">386,388</context> <context context-type="linenumber">402,404</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b19d6b55a61fe4b3a9594fe87d504667cae32d8e" datatype="html"> <trans-unit id="b19d6b55a61fe4b3a9594fe87d504667cae32d8e" datatype="html">
@ -7606,7 +7614,7 @@
<target state="translated">Bist <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>du<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> bereit?</target> <target state="translated">Bist <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>du<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> bereit?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">398</context> <context context-type="linenumber">414</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="31d1cab2469b1cd9d7105900f3bf2781873282ad" datatype="html"> <trans-unit id="31d1cab2469b1cd9d7105900f3bf2781873282ad" datatype="html">
@ -7614,7 +7622,7 @@
<target state="translated"> Melde dich jetzt an <x id="START_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;ng-container *ngIf=&quot;hasPermissionForDemo&quot;&gt;"/> oder probiere die Live Demo aus<x id="CLOSE_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;/ng-container &gt;"/></target> <target state="translated"> Melde dich jetzt an <x id="START_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;ng-container *ngIf=&quot;hasPermissionForDemo&quot;&gt;"/> oder probiere die Live Demo aus<x id="CLOSE_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;/ng-container &gt;"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">399,402</context> <context context-type="linenumber">415,418</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="195d2d6475819f55cf73287f97752093b7721ade" datatype="html"> <trans-unit id="195d2d6475819f55cf73287f97752093b7721ade" datatype="html">
@ -7622,11 +7630,11 @@
<target state="translated">Live Demo</target> <target state="translated">Live Demo</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">415</context> <context context-type="linenumber">431</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="dbe66b4824faaff93249a96c9ce23c237b446ed5" datatype="html"> <trans-unit id="dbe66b4824faaff93249a96c9ce23c237b446ed5" datatype="html">
@ -7634,7 +7642,7 @@
<target state="translated"> Verschaffe dir einen vollständigen Überblick deiner persönlichen Finanzen über mehrere Plattformen hinweg. </target> <target state="translated"> Verschaffe dir einen vollständigen Überblick deiner persönlichen Finanzen über mehrere Plattformen hinweg. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">222,225</context> <context context-type="linenumber">238,241</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9454b3758f67cb4d178570e8bfb3e0d684e2353e" datatype="html"> <trans-unit id="9454b3758f67cb4d178570e8bfb3e0d684e2353e" datatype="html">
@ -7642,7 +7650,7 @@
<target state="translated">Beginne mit nur 3 Schritten</target> <target state="translated">Beginne mit nur 3 Schritten</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">355</context> <context context-type="linenumber">371</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4656883433287439415" datatype="html"> <trans-unit id="4656883433287439415" datatype="html">
@ -7700,6 +7708,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">15</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
@ -7864,6 +7876,14 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">14</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.component.ts</context>
<context context-type="linenumber">25</context> <context context-type="linenumber">25</context>
@ -8028,6 +8048,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">16</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context>
<context context-type="linenumber">14</context> <context context-type="linenumber">14</context>
@ -9413,6 +9437,42 @@
<context context-type="linenumber">325</context> <context context-type="linenumber">325</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7db7ee6941e96fe86681e5fb785c69d66da006d7" datatype="html">
<source>(Last 24 hours)</source>
<target state="translated">(Letzte 24 Stunden)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="e365d670d2eeb6a6876784db260668a2eb749044" datatype="html">
<source>(Last 30 days)</source>
<target state="translated">(Letzte 30 Tage)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="b9e82953df4178922cea15c5a8371fa224d6bc0c" datatype="html">
<source>(Last 90 days)</source>
<target state="translated">(Letzte 90 Tage)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="d81f00c85d3b507f3e3d78bfc617a2c66e028391" datatype="html">
<source>New</source>
<target state="translated">Neu</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

@ -659,7 +659,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">158</context> <context context-type="linenumber">161</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7d6573fb998f3a1cf1356623b85850d9d10edaa9" datatype="html"> <trans-unit id="7d6573fb998f3a1cf1356623b85850d9d10edaa9" datatype="html">
@ -703,7 +703,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">171</context> <context context-type="linenumber">175</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="323af13292ecc714ab3848b9dff48f923893be32" datatype="html"> <trans-unit id="323af13292ecc714ab3848b9dff48f923893be32" datatype="html">
@ -715,7 +715,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">185</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4fe84c1d0eef5726c017f64c691145db7a61f879" datatype="html"> <trans-unit id="4fe84c1d0eef5726c017f64c691145db7a61f879" datatype="html">
@ -735,7 +735,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">189</context> <context context-type="linenumber">193</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.html</context>
@ -751,7 +751,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">209</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="452ef1b96854fe05618303ee601f8fed3b866c9f" datatype="html"> <trans-unit id="452ef1b96854fe05618303ee601f8fed3b866c9f" datatype="html">
@ -767,7 +767,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">216</context> <context context-type="linenumber">220</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/resources-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/resources-page.html</context>
@ -787,11 +787,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">292</context> <context context-type="linenumber">297</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html</context>
@ -907,7 +907,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">280</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="28094f38aac43d3cb6edaf98a281fe443a930b5e" datatype="html"> <trans-unit id="28094f38aac43d3cb6edaf98a281fe443a930b5e" datatype="html">
@ -915,7 +915,7 @@
<target state="translated">mí</target> <target state="translated">mí</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">141</context> <context context-type="linenumber">142</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="90d136a4e1f551f5de5340d443e0c95e49e95e1c" datatype="html"> <trans-unit id="90d136a4e1f551f5de5340d443e0c95e49e95e1c" datatype="html">
@ -923,7 +923,7 @@
<target state="translated">Mi Ghostfolio</target> <target state="translated">Mi Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">196</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6313384ccd7be95272bc2113ee9dada12af79b9b" datatype="html"> <trans-unit id="6313384ccd7be95272bc2113ee9dada12af79b9b" datatype="html">
@ -931,7 +931,7 @@
<target state="translated">Sobre Ghostfolio</target> <target state="translated">Sobre Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">236</context> <context context-type="linenumber">240</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
@ -947,7 +947,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">267</context> <context context-type="linenumber">271</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -963,7 +963,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">308</context> <context context-type="linenumber">313</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-market/home-market.html</context> <context context-type="sourcefile">apps/client/src/app/components/home-market/home-market.html</context>
@ -1055,7 +1055,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">414</context> <context context-type="linenumber">430</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
@ -1099,7 +1099,7 @@
<target state="translated">Iniciar sesión</target> <target state="translated">Iniciar sesión</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">321</context> <context context-type="linenumber">326</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -1529,6 +1529,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">154</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html</context>
<context context-type="linenumber">267</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context> <context context-type="linenumber">5</context>
@ -1653,6 +1657,10 @@
<trans-unit id="218afa01afa0cfc71b1a6507a3387763ecaa9332" datatype="html"> <trans-unit id="218afa01afa0cfc71b1a6507a3387763ecaa9332" datatype="html">
<source>per year</source> <source>per year</source>
<target state="translated">por año</target> <target state="translated">por año</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">332</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">57</context>
@ -2351,7 +2359,7 @@
<target state="translated">Continuar con Internet Identity</target> <target state="translated">Continuar con Internet Identity</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">41</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7eb7fc17d2f646c6c835f4da0b96f255b515cf4" datatype="html"> <trans-unit id="c7eb7fc17d2f646c6c835f4da0b96f255b515cf4" datatype="html">
@ -2359,7 +2367,7 @@
<target state="translated">Continuar con Google</target> <target state="translated">Continuar con Google</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3a6e5a6aa78ca864f6542410c5dafb6334538106" datatype="html"> <trans-unit id="3a6e5a6aa78ca864f6542410c5dafb6334538106" datatype="html">
@ -2535,7 +2543,7 @@
<target state="translated">Comenzar</target> <target state="translated">Comenzar</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">333</context> <context context-type="linenumber">338</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4190182554887994764" datatype="html"> <trans-unit id="4190182554887994764" datatype="html">
@ -7207,11 +7215,11 @@
<target state="new">Active Users</target> <target state="new">Active Users</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">39</context> <context context-type="linenumber">40</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">59</context> <context context-type="linenumber">62</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8c4cfd77b7b3d7917de13bec98a8a74890f95618" datatype="html"> <trans-unit id="8c4cfd77b7b3d7917de13bec98a8a74890f95618" datatype="html">
@ -7219,7 +7227,7 @@
<target state="new">New Users</target> <target state="new">New Users</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c0eb011366e597e23542be386e8bc0d53470b520" datatype="html"> <trans-unit id="c0eb011366e597e23542be386e8bc0d53470b520" datatype="html">
@ -7227,7 +7235,7 @@
<target state="new">Users in Slack community</target> <target state="new">Users in Slack community</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">72</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="be99161cc904867871ab172df77b736d3b27dfc5" datatype="html"> <trans-unit id="be99161cc904867871ab172df77b736d3b27dfc5" datatype="html">
@ -7235,7 +7243,7 @@
<target state="new">Contributors on GitHub</target> <target state="new">Contributors on GitHub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8d3932a9eba50bc101c2b8c329e7b4ea033cde97" datatype="html"> <trans-unit id="8d3932a9eba50bc101c2b8c329e7b4ea033cde97" datatype="html">
@ -7243,11 +7251,11 @@
<target state="new">Stars on GitHub</target> <target state="new">Stars on GitHub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="512b096f732f5e05dc1c451276b7a2b1a2509acd" datatype="html"> <trans-unit id="512b096f732f5e05dc1c451276b7a2b1a2509acd" datatype="html">
@ -7255,11 +7263,11 @@
<target state="new">Pulls on Docker Hub</target> <target state="new">Pulls on Docker Hub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">114</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ed1d16219cf7cc3ad92d2d49f0c55bbafe3768b2" datatype="html"> <trans-unit id="ed1d16219cf7cc3ad92d2d49f0c55bbafe3768b2" datatype="html">
@ -7267,7 +7275,7 @@
<target state="new">Uptime</target> <target state="new">Uptime</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">128</context> <context context-type="linenumber">132</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html"> <trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html">
@ -7342,12 +7350,12 @@
<context context-type="linenumber">24,28</context> <context context-type="linenumber">24,28</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1be07764640e49ab8b6f59b079e31d42083abf5b" datatype="html"> <trans-unit id="7b3c319feef05dcc1f487d09dd2a59eb4c50e6d6" datatype="html">
<source> Manage your wealth like a boss </source> <source> Manage your wealth like a boss </source>
<target state="new"> Manage your wealth like a boss </target> <target state="new"> Manage your wealth like a boss </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">4,6</context> <context context-type="linenumber">11,13</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f251aca95a00756de48b14172b02d33f175661fc" datatype="html"> <trans-unit id="f251aca95a00756de48b14172b02d33f175661fc" datatype="html">
@ -7355,7 +7363,7 @@
<target state="new"> Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. </target> <target state="new"> Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">7,11</context> <context context-type="linenumber">15,19</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="50fefcca3f8b7dd5a34141329118014a8c4b7d1b" datatype="html"> <trans-unit id="50fefcca3f8b7dd5a34141329118014a8c4b7d1b" datatype="html">
@ -7363,11 +7371,11 @@
<target state="new"> Get Started </target> <target state="new"> Get Started </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">39,41</context> <context context-type="linenumber">47,49</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">410,412</context> <context context-type="linenumber">426,428</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c4b553bb0e33c675cd6a34e2e295b984f9ee8381" datatype="html"> <trans-unit id="c4b553bb0e33c675cd6a34e2e295b984f9ee8381" datatype="html">
@ -7375,7 +7383,7 @@
<target state="new"> or </target> <target state="new"> or </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">44,46</context> <context context-type="linenumber">52,54</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1d6f11238819cf97ea87ab54714deda567d83f5c" datatype="html"> <trans-unit id="1d6f11238819cf97ea87ab54714deda567d83f5c" datatype="html">
@ -7383,7 +7391,7 @@
<target state="new">Monthly Active Users</target> <target state="new">Monthly Active Users</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9c7ee452b83c7458f6ffdd49837daf95b1d5f34e" datatype="html"> <trans-unit id="9c7ee452b83c7458f6ffdd49837daf95b1d5f34e" datatype="html">
@ -7391,7 +7399,7 @@
<target state="new">As seen in</target> <target state="new">As seen in</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">119</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c8ef12032b654cfd51b9ae1082fde84247945e03" datatype="html"> <trans-unit id="c8ef12032b654cfd51b9ae1082fde84247945e03" datatype="html">
@ -7399,7 +7407,7 @@
<target state="new"> Protect your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>assets<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. Refine your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>personal investment strategy<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. </target> <target state="new"> Protect your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>assets<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. Refine your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>personal investment strategy<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">205,208</context> <context context-type="linenumber">221,224</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9dd7364c5dcf1b010bfa80e824ba80eb67cc2b57" datatype="html"> <trans-unit id="9dd7364c5dcf1b010bfa80e824ba80eb67cc2b57" datatype="html">
@ -7407,7 +7415,7 @@
<target state="new"> Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. </target> <target state="new"> Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">209,212</context> <context context-type="linenumber">225,228</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a1ed4b69a5a2cefa86b16c94ff2799a6566b4f" datatype="html"> <trans-unit id="70a1ed4b69a5a2cefa86b16c94ff2799a6566b4f" datatype="html">
@ -7415,7 +7423,7 @@
<target state="new">360° View</target> <target state="new">360° View</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">220</context> <context context-type="linenumber">236</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e0840e61fd65397c9dd8c0aa35ec19778c79b73d" datatype="html"> <trans-unit id="e0840e61fd65397c9dd8c0aa35ec19778c79b73d" datatype="html">
@ -7423,7 +7431,7 @@
<target state="new">Web3 Ready</target> <target state="new">Web3 Ready</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">247</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="0a82bf107b3693ed6bdba551a97ce92494921513" datatype="html"> <trans-unit id="0a82bf107b3693ed6bdba551a97ce92494921513" datatype="html">
@ -7431,7 +7439,7 @@
<target state="new"> Use Ghostfolio anonymously and own your financial data. </target> <target state="new"> Use Ghostfolio anonymously and own your financial data. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">233,235</context> <context context-type="linenumber">249,251</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ebc1c2623f53ce48c714e00161a2f31f732c815b" datatype="html"> <trans-unit id="ebc1c2623f53ce48c714e00161a2f31f732c815b" datatype="html">
@ -7439,7 +7447,7 @@
<target state="new">Open Source</target> <target state="new">Open Source</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">257</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3756fe4769648222e9a3143d6a140e55afd7424b" datatype="html"> <trans-unit id="3756fe4769648222e9a3143d6a140e55afd7424b" datatype="html">
@ -7447,7 +7455,7 @@
<target state="new"> Benefit from continuous improvements through a strong community. </target> <target state="new"> Benefit from continuous improvements through a strong community. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">243,245</context> <context context-type="linenumber">259,261</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e7360ce972bb10156736d042a15c6c939fea123d" datatype="html"> <trans-unit id="e7360ce972bb10156736d042a15c6c939fea123d" datatype="html">
@ -7455,7 +7463,7 @@
<target state="new">Why <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>?</target> <target state="new">Why <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">268</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b2466b29949bb745c1f96f2d82e5dab9061f8efe" datatype="html"> <trans-unit id="b2466b29949bb745c1f96f2d82e5dab9061f8efe" datatype="html">
@ -7463,7 +7471,7 @@
<target state="new"> Ghostfolio is for you if you are... </target> <target state="new"> Ghostfolio is for you if you are... </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">253,255</context> <context context-type="linenumber">269,271</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2fe7c768f92932a3a6c9b460dd5d72e53deb9cfe" datatype="html"> <trans-unit id="2fe7c768f92932a3a6c9b460dd5d72e53deb9cfe" datatype="html">
@ -7471,7 +7479,7 @@
<target state="new">trading stocks, ETFs or cryptocurrencies on multiple platforms</target> <target state="new">trading stocks, ETFs or cryptocurrencies on multiple platforms</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">260,261</context> <context context-type="linenumber">276,277</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="fe71658bf131fad393a7ce618908e246617ded26" datatype="html"> <trans-unit id="fe71658bf131fad393a7ce618908e246617ded26" datatype="html">
@ -7479,7 +7487,7 @@
<target state="new">pursuing a buy &amp; hold strategy</target> <target state="new">pursuing a buy &amp; hold strategy</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">266</context> <context context-type="linenumber">282</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2e95d2cbc69d45e5ecf3eb92c2972e8cb4ff3ec6" datatype="html"> <trans-unit id="2e95d2cbc69d45e5ecf3eb92c2972e8cb4ff3ec6" datatype="html">
@ -7487,7 +7495,7 @@
<target state="new">interested in getting insights of your portfolio composition</target> <target state="new">interested in getting insights of your portfolio composition</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">271</context> <context context-type="linenumber">287</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4093027d62fd4125e36fe21bdd44475fc7499d02" datatype="html"> <trans-unit id="4093027d62fd4125e36fe21bdd44475fc7499d02" datatype="html">
@ -7495,7 +7503,7 @@
<target state="new">valuing privacy and data ownership</target> <target state="new">valuing privacy and data ownership</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">276</context> <context context-type="linenumber">292</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5fae4f4ad7de60db18a5c52ccf5e7e8c7b194a9c" datatype="html"> <trans-unit id="5fae4f4ad7de60db18a5c52ccf5e7e8c7b194a9c" datatype="html">
@ -7503,7 +7511,7 @@
<target state="new">into minimalism</target> <target state="new">into minimalism</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">279</context> <context context-type="linenumber">295</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="18bb2c16577866572e3656986d9660d2db012565" datatype="html"> <trans-unit id="18bb2c16577866572e3656986d9660d2db012565" datatype="html">
@ -7511,7 +7519,7 @@
<target state="new">caring about diversifying your financial resources</target> <target state="new">caring about diversifying your financial resources</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">283</context> <context context-type="linenumber">299</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="0a6c37c2d3a8c41e7e44f020aefb1c667ac150dc" datatype="html"> <trans-unit id="0a6c37c2d3a8c41e7e44f020aefb1c667ac150dc" datatype="html">
@ -7519,7 +7527,7 @@
<target state="new">interested in financial independence</target> <target state="new">interested in financial independence</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">287</context> <context context-type="linenumber">303</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="81fbb4e2cd3d3079d790bdddbfcc73ec3b600d22" datatype="html"> <trans-unit id="81fbb4e2cd3d3079d790bdddbfcc73ec3b600d22" datatype="html">
@ -7527,7 +7535,7 @@
<target state="new">saying no to spreadsheets in <x id="INTERPOLATION" equiv-text="{{ currentYear }}"/></target> <target state="new">saying no to spreadsheets in <x id="INTERPOLATION" equiv-text="{{ currentYear }}"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">291</context> <context context-type="linenumber">307</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="92cef868de56015b451e7eee26c9eaef54f41d37" datatype="html"> <trans-unit id="92cef868de56015b451e7eee26c9eaef54f41d37" datatype="html">
@ -7535,7 +7543,7 @@
<target state="new">still reading this list</target> <target state="new">still reading this list</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">294</context> <context context-type="linenumber">310</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8c11c506c55700ca9883f360c52df5a432a51dcf" datatype="html"> <trans-unit id="8c11c506c55700ca9883f360c52df5a432a51dcf" datatype="html">
@ -7543,7 +7551,7 @@
<target state="new">Learn more about Ghostfolio</target> <target state="new">Learn more about Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">315</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ae508ae33a02ae69247d9e4d84e98b610209ef3b" datatype="html"> <trans-unit id="ae508ae33a02ae69247d9e4d84e98b610209ef3b" datatype="html">
@ -7551,7 +7559,7 @@
<target state="new"> What our <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>users<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> are saying </target> <target state="new"> What our <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>users<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> are saying </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">307,309</context> <context context-type="linenumber">323,325</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f9e4d441f5fed560c87d2f1f061eaa826ed271cd" datatype="html"> <trans-unit id="f9e4d441f5fed560c87d2f1f061eaa826ed271cd" datatype="html">
@ -7559,7 +7567,7 @@
<target state="new"> Members from around the globe are using <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;pricing&quot;&gt;"/><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio Premium<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/></target> <target state="new"> Members from around the globe are using <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;pricing&quot;&gt;"/><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio Premium<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">337,339</context> <context context-type="linenumber">353,355</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="abc6737537d65639f566a7068d0e5dde19c9d220" datatype="html"> <trans-unit id="abc6737537d65639f566a7068d0e5dde19c9d220" datatype="html">
@ -7567,7 +7575,7 @@
<target state="new"> How does <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> work? </target> <target state="new"> How does <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> work? </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">352,354</context> <context context-type="linenumber">368,370</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="969974097ecdfff6cb04b4cb71efccd717da1ce8" datatype="html"> <trans-unit id="969974097ecdfff6cb04b4cb71efccd717da1ce8" datatype="html">
@ -7575,7 +7583,7 @@
<target state="new">Sign up anonymously*</target> <target state="new">Sign up anonymously*</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">361</context> <context context-type="linenumber">377</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ebca1c496ea9caf6acf2a7ee5c4fa2b3f5aee1fe" datatype="html"> <trans-unit id="ebca1c496ea9caf6acf2a7ee5c4fa2b3f5aee1fe" datatype="html">
@ -7583,7 +7591,7 @@
<target state="new"><x id="START_SMALL_TEXT" ctype="x-small" equiv-text="&lt;small&gt;"/>* no e-mail address nor credit card required<x id="CLOSE_SMALL_TEXT" ctype="x-small" equiv-text="&lt;/small&gt;"/></target> <target state="new"><x id="START_SMALL_TEXT" ctype="x-small" equiv-text="&lt;small&gt;"/>* no e-mail address nor credit card required<x id="CLOSE_SMALL_TEXT" ctype="x-small" equiv-text="&lt;/small&gt;"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">363</context> <context context-type="linenumber">379</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2039f449cf4ee0c26a9211de9d057c1002293917" datatype="html"> <trans-unit id="2039f449cf4ee0c26a9211de9d057c1002293917" datatype="html">
@ -7591,7 +7599,7 @@
<target state="new"> Add any of your historical transactions </target> <target state="new"> Add any of your historical transactions </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">374,376</context> <context context-type="linenumber">390,392</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d6a2cfef5de5fd13ceb051a8725b1414c2ad9a69" datatype="html"> <trans-unit id="d6a2cfef5de5fd13ceb051a8725b1414c2ad9a69" datatype="html">
@ -7599,7 +7607,7 @@
<target state="new"> Get valuable insights of your portfolio composition </target> <target state="new"> Get valuable insights of your portfolio composition </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">386,388</context> <context context-type="linenumber">402,404</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b19d6b55a61fe4b3a9594fe87d504667cae32d8e" datatype="html"> <trans-unit id="b19d6b55a61fe4b3a9594fe87d504667cae32d8e" datatype="html">
@ -7607,7 +7615,7 @@
<target state="new">Are <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>you<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> ready?</target> <target state="new">Are <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>you<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> ready?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">398</context> <context context-type="linenumber">414</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="31d1cab2469b1cd9d7105900f3bf2781873282ad" datatype="html"> <trans-unit id="31d1cab2469b1cd9d7105900f3bf2781873282ad" datatype="html">
@ -7615,7 +7623,7 @@
<target state="new"> Join now<x id="START_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;ng-container *ngIf=&quot;hasPermissionForDemo&quot;&gt;"/> or check out the example account<x id="CLOSE_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;/ng-container &gt;"/></target> <target state="new"> Join now<x id="START_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;ng-container *ngIf=&quot;hasPermissionForDemo&quot;&gt;"/> or check out the example account<x id="CLOSE_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;/ng-container &gt;"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">399,402</context> <context context-type="linenumber">415,418</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="195d2d6475819f55cf73287f97752093b7721ade" datatype="html"> <trans-unit id="195d2d6475819f55cf73287f97752093b7721ade" datatype="html">
@ -7623,11 +7631,11 @@
<target state="new">Live Demo</target> <target state="new">Live Demo</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">415</context> <context context-type="linenumber">431</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="dbe66b4824faaff93249a96c9ce23c237b446ed5" datatype="html"> <trans-unit id="dbe66b4824faaff93249a96c9ce23c237b446ed5" datatype="html">
@ -7635,7 +7643,7 @@
<target state="new"> Get the full picture of your personal finances across multiple platforms. </target> <target state="new"> Get the full picture of your personal finances across multiple platforms. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">222,225</context> <context context-type="linenumber">238,241</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9454b3758f67cb4d178570e8bfb3e0d684e2353e" datatype="html"> <trans-unit id="9454b3758f67cb4d178570e8bfb3e0d684e2353e" datatype="html">
@ -7643,7 +7651,7 @@
<target state="new">Get started in only 3 steps</target> <target state="new">Get started in only 3 steps</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">355</context> <context context-type="linenumber">371</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4656883433287439415" datatype="html"> <trans-unit id="4656883433287439415" datatype="html">
@ -7701,6 +7709,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">15</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
@ -7865,6 +7877,14 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">14</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.component.ts</context>
<context context-type="linenumber">25</context> <context context-type="linenumber">25</context>
@ -8029,6 +8049,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">16</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context>
<context context-type="linenumber">14</context> <context context-type="linenumber">14</context>
@ -9414,6 +9438,42 @@
<context context-type="linenumber">325</context> <context context-type="linenumber">325</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7db7ee6941e96fe86681e5fb785c69d66da006d7" datatype="html">
<source>(Last 24 hours)</source>
<target state="new">(Last 24 hours)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="e365d670d2eeb6a6876784db260668a2eb749044" datatype="html">
<source>(Last 30 days)</source>
<target state="new">(Last 30 days)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="b9e82953df4178922cea15c5a8371fa224d6bc0c" datatype="html">
<source>(Last 90 days)</source>
<target state="new">(Last 90 days)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="d81f00c85d3b507f3e3d78bfc617a2c66e028391" datatype="html">
<source>New</source>
<target state="new">New</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

@ -906,7 +906,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">158</context> <context context-type="linenumber">161</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7d6573fb998f3a1cf1356623b85850d9d10edaa9" datatype="html"> <trans-unit id="7d6573fb998f3a1cf1356623b85850d9d10edaa9" datatype="html">
@ -934,7 +934,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">189</context> <context context-type="linenumber">193</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.html</context>
@ -1018,7 +1018,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">171</context> <context context-type="linenumber">175</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="323af13292ecc714ab3848b9dff48f923893be32" datatype="html"> <trans-unit id="323af13292ecc714ab3848b9dff48f923893be32" datatype="html">
@ -1030,7 +1030,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">185</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b0f210a3147d1b669e081dae1fcd0918fe7c3021" datatype="html"> <trans-unit id="b0f210a3147d1b669e081dae1fcd0918fe7c3021" datatype="html">
@ -1042,7 +1042,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">209</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="452ef1b96854fe05618303ee601f8fed3b866c9f" datatype="html"> <trans-unit id="452ef1b96854fe05618303ee601f8fed3b866c9f" datatype="html">
@ -1058,7 +1058,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">216</context> <context context-type="linenumber">220</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/resources-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/resources-page.html</context>
@ -1078,11 +1078,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">292</context> <context context-type="linenumber">297</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html</context>
@ -1198,7 +1198,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">280</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="28094f38aac43d3cb6edaf98a281fe443a930b5e" datatype="html"> <trans-unit id="28094f38aac43d3cb6edaf98a281fe443a930b5e" datatype="html">
@ -1206,7 +1206,7 @@
<target state="translated">Moi</target> <target state="translated">Moi</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">141</context> <context context-type="linenumber">142</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="90d136a4e1f551f5de5340d443e0c95e49e95e1c" datatype="html"> <trans-unit id="90d136a4e1f551f5de5340d443e0c95e49e95e1c" datatype="html">
@ -1214,7 +1214,7 @@
<target state="translated">Mon Ghostfolio</target> <target state="translated">Mon Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">196</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6313384ccd7be95272bc2113ee9dada12af79b9b" datatype="html"> <trans-unit id="6313384ccd7be95272bc2113ee9dada12af79b9b" datatype="html">
@ -1222,7 +1222,7 @@
<target state="translated">À propos de Ghostfolio</target> <target state="translated">À propos de Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">236</context> <context context-type="linenumber">240</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
@ -1238,7 +1238,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">267</context> <context context-type="linenumber">271</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -1254,7 +1254,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">308</context> <context context-type="linenumber">313</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-market/home-market.html</context> <context context-type="sourcefile">apps/client/src/app/components/home-market/home-market.html</context>
@ -1270,7 +1270,7 @@
<target state="translated">Se connecter</target> <target state="translated">Se connecter</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">321</context> <context context-type="linenumber">326</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -1282,7 +1282,7 @@
<target state="translated">Démarrer</target> <target state="translated">Démarrer</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">333</context> <context context-type="linenumber">338</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5207635742003539443" datatype="html"> <trans-unit id="5207635742003539443" datatype="html">
@ -1410,7 +1410,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">414</context> <context context-type="linenumber">430</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
@ -1940,6 +1940,10 @@
<trans-unit id="218afa01afa0cfc71b1a6507a3387763ecaa9332" datatype="html"> <trans-unit id="218afa01afa0cfc71b1a6507a3387763ecaa9332" datatype="html">
<source>per year</source> <source>per year</source>
<target state="translated">par an</target> <target state="translated">par an</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">332</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">57</context>
@ -2296,6 +2300,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">154</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html</context>
<context context-type="linenumber">267</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context> <context context-type="linenumber">5</context>
@ -2890,7 +2898,7 @@
<target state="translated">Continue avec Internet Identity</target> <target state="translated">Continue avec Internet Identity</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">41</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7eb7fc17d2f646c6c835f4da0b96f255b515cf4" datatype="html"> <trans-unit id="c7eb7fc17d2f646c6c835f4da0b96f255b515cf4" datatype="html">
@ -2898,7 +2906,7 @@
<target state="translated">Continuer avec Google</target> <target state="translated">Continuer avec Google</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3a6e5a6aa78ca864f6542410c5dafb6334538106" datatype="html"> <trans-unit id="3a6e5a6aa78ca864f6542410c5dafb6334538106" datatype="html">
@ -7206,11 +7214,11 @@
<target state="new">Active Users</target> <target state="new">Active Users</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">39</context> <context context-type="linenumber">40</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">59</context> <context context-type="linenumber">62</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8c4cfd77b7b3d7917de13bec98a8a74890f95618" datatype="html"> <trans-unit id="8c4cfd77b7b3d7917de13bec98a8a74890f95618" datatype="html">
@ -7218,7 +7226,7 @@
<target state="new">New Users</target> <target state="new">New Users</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c0eb011366e597e23542be386e8bc0d53470b520" datatype="html"> <trans-unit id="c0eb011366e597e23542be386e8bc0d53470b520" datatype="html">
@ -7226,7 +7234,7 @@
<target state="new">Users in Slack community</target> <target state="new">Users in Slack community</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">72</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="be99161cc904867871ab172df77b736d3b27dfc5" datatype="html"> <trans-unit id="be99161cc904867871ab172df77b736d3b27dfc5" datatype="html">
@ -7234,7 +7242,7 @@
<target state="new">Contributors on GitHub</target> <target state="new">Contributors on GitHub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8d3932a9eba50bc101c2b8c329e7b4ea033cde97" datatype="html"> <trans-unit id="8d3932a9eba50bc101c2b8c329e7b4ea033cde97" datatype="html">
@ -7242,11 +7250,11 @@
<target state="new">Stars on GitHub</target> <target state="new">Stars on GitHub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="512b096f732f5e05dc1c451276b7a2b1a2509acd" datatype="html"> <trans-unit id="512b096f732f5e05dc1c451276b7a2b1a2509acd" datatype="html">
@ -7254,11 +7262,11 @@
<target state="new">Pulls on Docker Hub</target> <target state="new">Pulls on Docker Hub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">114</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ed1d16219cf7cc3ad92d2d49f0c55bbafe3768b2" datatype="html"> <trans-unit id="ed1d16219cf7cc3ad92d2d49f0c55bbafe3768b2" datatype="html">
@ -7266,7 +7274,7 @@
<target state="new">Uptime</target> <target state="new">Uptime</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">128</context> <context context-type="linenumber">132</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html"> <trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html">
@ -7341,12 +7349,12 @@
<context context-type="linenumber">24,28</context> <context context-type="linenumber">24,28</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1be07764640e49ab8b6f59b079e31d42083abf5b" datatype="html"> <trans-unit id="7b3c319feef05dcc1f487d09dd2a59eb4c50e6d6" datatype="html">
<source> Manage your wealth like a boss </source> <source> Manage your wealth like a boss </source>
<target state="new"> Manage your wealth like a boss </target> <target state="new"> Manage your wealth like a boss </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">4,6</context> <context context-type="linenumber">11,13</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f251aca95a00756de48b14172b02d33f175661fc" datatype="html"> <trans-unit id="f251aca95a00756de48b14172b02d33f175661fc" datatype="html">
@ -7354,7 +7362,7 @@
<target state="new"> Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. </target> <target state="new"> Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">7,11</context> <context context-type="linenumber">15,19</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="50fefcca3f8b7dd5a34141329118014a8c4b7d1b" datatype="html"> <trans-unit id="50fefcca3f8b7dd5a34141329118014a8c4b7d1b" datatype="html">
@ -7362,11 +7370,11 @@
<target state="new"> Get Started </target> <target state="new"> Get Started </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">39,41</context> <context context-type="linenumber">47,49</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">410,412</context> <context context-type="linenumber">426,428</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c4b553bb0e33c675cd6a34e2e295b984f9ee8381" datatype="html"> <trans-unit id="c4b553bb0e33c675cd6a34e2e295b984f9ee8381" datatype="html">
@ -7374,7 +7382,7 @@
<target state="new"> or </target> <target state="new"> or </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">44,46</context> <context context-type="linenumber">52,54</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1d6f11238819cf97ea87ab54714deda567d83f5c" datatype="html"> <trans-unit id="1d6f11238819cf97ea87ab54714deda567d83f5c" datatype="html">
@ -7382,7 +7390,7 @@
<target state="new">Monthly Active Users</target> <target state="new">Monthly Active Users</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9c7ee452b83c7458f6ffdd49837daf95b1d5f34e" datatype="html"> <trans-unit id="9c7ee452b83c7458f6ffdd49837daf95b1d5f34e" datatype="html">
@ -7390,7 +7398,7 @@
<target state="new">As seen in</target> <target state="new">As seen in</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">119</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c8ef12032b654cfd51b9ae1082fde84247945e03" datatype="html"> <trans-unit id="c8ef12032b654cfd51b9ae1082fde84247945e03" datatype="html">
@ -7398,7 +7406,7 @@
<target state="new"> Protect your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>assets<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. Refine your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>personal investment strategy<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. </target> <target state="new"> Protect your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>assets<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. Refine your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>personal investment strategy<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">205,208</context> <context context-type="linenumber">221,224</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9dd7364c5dcf1b010bfa80e824ba80eb67cc2b57" datatype="html"> <trans-unit id="9dd7364c5dcf1b010bfa80e824ba80eb67cc2b57" datatype="html">
@ -7406,7 +7414,7 @@
<target state="new"> Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. </target> <target state="new"> Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">209,212</context> <context context-type="linenumber">225,228</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a1ed4b69a5a2cefa86b16c94ff2799a6566b4f" datatype="html"> <trans-unit id="70a1ed4b69a5a2cefa86b16c94ff2799a6566b4f" datatype="html">
@ -7414,7 +7422,7 @@
<target state="new">360° View</target> <target state="new">360° View</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">220</context> <context context-type="linenumber">236</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e0840e61fd65397c9dd8c0aa35ec19778c79b73d" datatype="html"> <trans-unit id="e0840e61fd65397c9dd8c0aa35ec19778c79b73d" datatype="html">
@ -7422,7 +7430,7 @@
<target state="new">Web3 Ready</target> <target state="new">Web3 Ready</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">247</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="0a82bf107b3693ed6bdba551a97ce92494921513" datatype="html"> <trans-unit id="0a82bf107b3693ed6bdba551a97ce92494921513" datatype="html">
@ -7430,7 +7438,7 @@
<target state="new"> Use Ghostfolio anonymously and own your financial data. </target> <target state="new"> Use Ghostfolio anonymously and own your financial data. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">233,235</context> <context context-type="linenumber">249,251</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ebc1c2623f53ce48c714e00161a2f31f732c815b" datatype="html"> <trans-unit id="ebc1c2623f53ce48c714e00161a2f31f732c815b" datatype="html">
@ -7438,7 +7446,7 @@
<target state="new">Open Source</target> <target state="new">Open Source</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">257</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3756fe4769648222e9a3143d6a140e55afd7424b" datatype="html"> <trans-unit id="3756fe4769648222e9a3143d6a140e55afd7424b" datatype="html">
@ -7446,7 +7454,7 @@
<target state="new"> Benefit from continuous improvements through a strong community. </target> <target state="new"> Benefit from continuous improvements through a strong community. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">243,245</context> <context context-type="linenumber">259,261</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e7360ce972bb10156736d042a15c6c939fea123d" datatype="html"> <trans-unit id="e7360ce972bb10156736d042a15c6c939fea123d" datatype="html">
@ -7454,7 +7462,7 @@
<target state="new">Why <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>?</target> <target state="new">Why <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">268</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b2466b29949bb745c1f96f2d82e5dab9061f8efe" datatype="html"> <trans-unit id="b2466b29949bb745c1f96f2d82e5dab9061f8efe" datatype="html">
@ -7462,7 +7470,7 @@
<target state="new"> Ghostfolio is for you if you are... </target> <target state="new"> Ghostfolio is for you if you are... </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">253,255</context> <context context-type="linenumber">269,271</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2fe7c768f92932a3a6c9b460dd5d72e53deb9cfe" datatype="html"> <trans-unit id="2fe7c768f92932a3a6c9b460dd5d72e53deb9cfe" datatype="html">
@ -7470,7 +7478,7 @@
<target state="new">trading stocks, ETFs or cryptocurrencies on multiple platforms</target> <target state="new">trading stocks, ETFs or cryptocurrencies on multiple platforms</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">260,261</context> <context context-type="linenumber">276,277</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="fe71658bf131fad393a7ce618908e246617ded26" datatype="html"> <trans-unit id="fe71658bf131fad393a7ce618908e246617ded26" datatype="html">
@ -7478,7 +7486,7 @@
<target state="new">pursuing a buy &amp; hold strategy</target> <target state="new">pursuing a buy &amp; hold strategy</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">266</context> <context context-type="linenumber">282</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2e95d2cbc69d45e5ecf3eb92c2972e8cb4ff3ec6" datatype="html"> <trans-unit id="2e95d2cbc69d45e5ecf3eb92c2972e8cb4ff3ec6" datatype="html">
@ -7486,7 +7494,7 @@
<target state="new">interested in getting insights of your portfolio composition</target> <target state="new">interested in getting insights of your portfolio composition</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">271</context> <context context-type="linenumber">287</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4093027d62fd4125e36fe21bdd44475fc7499d02" datatype="html"> <trans-unit id="4093027d62fd4125e36fe21bdd44475fc7499d02" datatype="html">
@ -7494,7 +7502,7 @@
<target state="new">valuing privacy and data ownership</target> <target state="new">valuing privacy and data ownership</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">276</context> <context context-type="linenumber">292</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5fae4f4ad7de60db18a5c52ccf5e7e8c7b194a9c" datatype="html"> <trans-unit id="5fae4f4ad7de60db18a5c52ccf5e7e8c7b194a9c" datatype="html">
@ -7502,7 +7510,7 @@
<target state="new">into minimalism</target> <target state="new">into minimalism</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">279</context> <context context-type="linenumber">295</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="18bb2c16577866572e3656986d9660d2db012565" datatype="html"> <trans-unit id="18bb2c16577866572e3656986d9660d2db012565" datatype="html">
@ -7510,7 +7518,7 @@
<target state="new">caring about diversifying your financial resources</target> <target state="new">caring about diversifying your financial resources</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">283</context> <context context-type="linenumber">299</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="0a6c37c2d3a8c41e7e44f020aefb1c667ac150dc" datatype="html"> <trans-unit id="0a6c37c2d3a8c41e7e44f020aefb1c667ac150dc" datatype="html">
@ -7518,7 +7526,7 @@
<target state="new">interested in financial independence</target> <target state="new">interested in financial independence</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">287</context> <context context-type="linenumber">303</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="81fbb4e2cd3d3079d790bdddbfcc73ec3b600d22" datatype="html"> <trans-unit id="81fbb4e2cd3d3079d790bdddbfcc73ec3b600d22" datatype="html">
@ -7526,7 +7534,7 @@
<target state="new">saying no to spreadsheets in <x id="INTERPOLATION" equiv-text="{{ currentYear }}"/></target> <target state="new">saying no to spreadsheets in <x id="INTERPOLATION" equiv-text="{{ currentYear }}"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">291</context> <context context-type="linenumber">307</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="92cef868de56015b451e7eee26c9eaef54f41d37" datatype="html"> <trans-unit id="92cef868de56015b451e7eee26c9eaef54f41d37" datatype="html">
@ -7534,7 +7542,7 @@
<target state="new">still reading this list</target> <target state="new">still reading this list</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">294</context> <context context-type="linenumber">310</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8c11c506c55700ca9883f360c52df5a432a51dcf" datatype="html"> <trans-unit id="8c11c506c55700ca9883f360c52df5a432a51dcf" datatype="html">
@ -7542,7 +7550,7 @@
<target state="new">Learn more about Ghostfolio</target> <target state="new">Learn more about Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">315</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ae508ae33a02ae69247d9e4d84e98b610209ef3b" datatype="html"> <trans-unit id="ae508ae33a02ae69247d9e4d84e98b610209ef3b" datatype="html">
@ -7550,7 +7558,7 @@
<target state="new"> What our <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>users<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> are saying </target> <target state="new"> What our <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>users<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> are saying </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">307,309</context> <context context-type="linenumber">323,325</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f9e4d441f5fed560c87d2f1f061eaa826ed271cd" datatype="html"> <trans-unit id="f9e4d441f5fed560c87d2f1f061eaa826ed271cd" datatype="html">
@ -7558,7 +7566,7 @@
<target state="new"> Members from around the globe are using <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;pricing&quot;&gt;"/><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio Premium<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/></target> <target state="new"> Members from around the globe are using <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;pricing&quot;&gt;"/><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio Premium<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">337,339</context> <context context-type="linenumber">353,355</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="abc6737537d65639f566a7068d0e5dde19c9d220" datatype="html"> <trans-unit id="abc6737537d65639f566a7068d0e5dde19c9d220" datatype="html">
@ -7566,7 +7574,7 @@
<target state="new"> How does <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> work? </target> <target state="new"> How does <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> work? </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">352,354</context> <context context-type="linenumber">368,370</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="969974097ecdfff6cb04b4cb71efccd717da1ce8" datatype="html"> <trans-unit id="969974097ecdfff6cb04b4cb71efccd717da1ce8" datatype="html">
@ -7574,7 +7582,7 @@
<target state="new">Sign up anonymously*</target> <target state="new">Sign up anonymously*</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">361</context> <context context-type="linenumber">377</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ebca1c496ea9caf6acf2a7ee5c4fa2b3f5aee1fe" datatype="html"> <trans-unit id="ebca1c496ea9caf6acf2a7ee5c4fa2b3f5aee1fe" datatype="html">
@ -7582,7 +7590,7 @@
<target state="new"><x id="START_SMALL_TEXT" ctype="x-small" equiv-text="&lt;small&gt;"/>* no e-mail address nor credit card required<x id="CLOSE_SMALL_TEXT" ctype="x-small" equiv-text="&lt;/small&gt;"/></target> <target state="new"><x id="START_SMALL_TEXT" ctype="x-small" equiv-text="&lt;small&gt;"/>* no e-mail address nor credit card required<x id="CLOSE_SMALL_TEXT" ctype="x-small" equiv-text="&lt;/small&gt;"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">363</context> <context context-type="linenumber">379</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2039f449cf4ee0c26a9211de9d057c1002293917" datatype="html"> <trans-unit id="2039f449cf4ee0c26a9211de9d057c1002293917" datatype="html">
@ -7590,7 +7598,7 @@
<target state="new"> Add any of your historical transactions </target> <target state="new"> Add any of your historical transactions </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">374,376</context> <context context-type="linenumber">390,392</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d6a2cfef5de5fd13ceb051a8725b1414c2ad9a69" datatype="html"> <trans-unit id="d6a2cfef5de5fd13ceb051a8725b1414c2ad9a69" datatype="html">
@ -7598,7 +7606,7 @@
<target state="new"> Get valuable insights of your portfolio composition </target> <target state="new"> Get valuable insights of your portfolio composition </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">386,388</context> <context context-type="linenumber">402,404</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b19d6b55a61fe4b3a9594fe87d504667cae32d8e" datatype="html"> <trans-unit id="b19d6b55a61fe4b3a9594fe87d504667cae32d8e" datatype="html">
@ -7606,7 +7614,7 @@
<target state="new">Are <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>you<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> ready?</target> <target state="new">Are <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>you<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> ready?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">398</context> <context context-type="linenumber">414</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="31d1cab2469b1cd9d7105900f3bf2781873282ad" datatype="html"> <trans-unit id="31d1cab2469b1cd9d7105900f3bf2781873282ad" datatype="html">
@ -7614,7 +7622,7 @@
<target state="new"> Join now<x id="START_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;ng-container *ngIf=&quot;hasPermissionForDemo&quot;&gt;"/> or check out the example account<x id="CLOSE_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;/ng-container &gt;"/></target> <target state="new"> Join now<x id="START_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;ng-container *ngIf=&quot;hasPermissionForDemo&quot;&gt;"/> or check out the example account<x id="CLOSE_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;/ng-container &gt;"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">399,402</context> <context context-type="linenumber">415,418</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="195d2d6475819f55cf73287f97752093b7721ade" datatype="html"> <trans-unit id="195d2d6475819f55cf73287f97752093b7721ade" datatype="html">
@ -7622,11 +7630,11 @@
<target state="new">Live Demo</target> <target state="new">Live Demo</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">415</context> <context context-type="linenumber">431</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="dbe66b4824faaff93249a96c9ce23c237b446ed5" datatype="html"> <trans-unit id="dbe66b4824faaff93249a96c9ce23c237b446ed5" datatype="html">
@ -7634,7 +7642,7 @@
<target state="new"> Get the full picture of your personal finances across multiple platforms. </target> <target state="new"> Get the full picture of your personal finances across multiple platforms. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">222,225</context> <context context-type="linenumber">238,241</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9454b3758f67cb4d178570e8bfb3e0d684e2353e" datatype="html"> <trans-unit id="9454b3758f67cb4d178570e8bfb3e0d684e2353e" datatype="html">
@ -7642,7 +7650,7 @@
<target state="new">Get started in only 3 steps</target> <target state="new">Get started in only 3 steps</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">355</context> <context context-type="linenumber">371</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4656883433287439415" datatype="html"> <trans-unit id="4656883433287439415" datatype="html">
@ -7700,6 +7708,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">15</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
@ -7864,6 +7876,14 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">14</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.component.ts</context>
<context context-type="linenumber">25</context> <context context-type="linenumber">25</context>
@ -8028,6 +8048,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">16</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context>
<context context-type="linenumber">14</context> <context context-type="linenumber">14</context>
@ -9413,6 +9437,42 @@
<context context-type="linenumber">325</context> <context context-type="linenumber">325</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7db7ee6941e96fe86681e5fb785c69d66da006d7" datatype="html">
<source>(Last 24 hours)</source>
<target state="new">(Last 24 hours)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="e365d670d2eeb6a6876784db260668a2eb749044" datatype="html">
<source>(Last 30 days)</source>
<target state="new">(Last 30 days)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="b9e82953df4178922cea15c5a8371fa224d6bc0c" datatype="html">
<source>(Last 90 days)</source>
<target state="new">(Last 90 days)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="d81f00c85d3b507f3e3d78bfc617a2c66e028391" datatype="html">
<source>New</source>
<target state="new">New</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

@ -659,7 +659,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">158</context> <context context-type="linenumber">161</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7d6573fb998f3a1cf1356623b85850d9d10edaa9" datatype="html"> <trans-unit id="7d6573fb998f3a1cf1356623b85850d9d10edaa9" datatype="html">
@ -703,7 +703,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">171</context> <context context-type="linenumber">175</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="323af13292ecc714ab3848b9dff48f923893be32" datatype="html"> <trans-unit id="323af13292ecc714ab3848b9dff48f923893be32" datatype="html">
@ -715,7 +715,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">185</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4fe84c1d0eef5726c017f64c691145db7a61f879" datatype="html"> <trans-unit id="4fe84c1d0eef5726c017f64c691145db7a61f879" datatype="html">
@ -735,7 +735,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">189</context> <context context-type="linenumber">193</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.html</context>
@ -751,7 +751,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">209</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="452ef1b96854fe05618303ee601f8fed3b866c9f" datatype="html"> <trans-unit id="452ef1b96854fe05618303ee601f8fed3b866c9f" datatype="html">
@ -767,7 +767,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">216</context> <context context-type="linenumber">220</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/resources-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/resources-page.html</context>
@ -787,11 +787,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">292</context> <context context-type="linenumber">297</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html</context>
@ -907,7 +907,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">280</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="28094f38aac43d3cb6edaf98a281fe443a930b5e" datatype="html"> <trans-unit id="28094f38aac43d3cb6edaf98a281fe443a930b5e" datatype="html">
@ -915,7 +915,7 @@
<target state="translated">Io</target> <target state="translated">Io</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">141</context> <context context-type="linenumber">142</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="90d136a4e1f551f5de5340d443e0c95e49e95e1c" datatype="html"> <trans-unit id="90d136a4e1f551f5de5340d443e0c95e49e95e1c" datatype="html">
@ -923,7 +923,7 @@
<target state="translated">Il mio Ghostfolio</target> <target state="translated">Il mio Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">196</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6313384ccd7be95272bc2113ee9dada12af79b9b" datatype="html"> <trans-unit id="6313384ccd7be95272bc2113ee9dada12af79b9b" datatype="html">
@ -931,7 +931,7 @@
<target state="translated">Informazioni su Ghostfolio</target> <target state="translated">Informazioni su Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">236</context> <context context-type="linenumber">240</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
@ -947,7 +947,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">267</context> <context context-type="linenumber">271</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -963,7 +963,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">308</context> <context context-type="linenumber">313</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-market/home-market.html</context> <context context-type="sourcefile">apps/client/src/app/components/home-market/home-market.html</context>
@ -1055,7 +1055,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">414</context> <context context-type="linenumber">430</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
@ -1099,7 +1099,7 @@
<target state="translated">Accedi</target> <target state="translated">Accedi</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">321</context> <context context-type="linenumber">326</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -1529,6 +1529,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">154</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html</context>
<context context-type="linenumber">267</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context> <context context-type="linenumber">5</context>
@ -1653,6 +1657,10 @@
<trans-unit id="218afa01afa0cfc71b1a6507a3387763ecaa9332" datatype="html"> <trans-unit id="218afa01afa0cfc71b1a6507a3387763ecaa9332" datatype="html">
<source>per year</source> <source>per year</source>
<target state="translated">per anno</target> <target state="translated">per anno</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">332</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">57</context>
@ -2351,7 +2359,7 @@
<target state="translated">Continua con Internet Identity</target> <target state="translated">Continua con Internet Identity</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">41</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7eb7fc17d2f646c6c835f4da0b96f255b515cf4" datatype="html"> <trans-unit id="c7eb7fc17d2f646c6c835f4da0b96f255b515cf4" datatype="html">
@ -2359,7 +2367,7 @@
<target state="translated">Continua con Google</target> <target state="translated">Continua con Google</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3a6e5a6aa78ca864f6542410c5dafb6334538106" datatype="html"> <trans-unit id="3a6e5a6aa78ca864f6542410c5dafb6334538106" datatype="html">
@ -2535,7 +2543,7 @@
<target state="translated">Inizia</target> <target state="translated">Inizia</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">333</context> <context context-type="linenumber">338</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4190182554887994764" datatype="html"> <trans-unit id="4190182554887994764" datatype="html">
@ -7207,11 +7215,11 @@
<target state="new">Active Users</target> <target state="new">Active Users</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">39</context> <context context-type="linenumber">40</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">59</context> <context context-type="linenumber">62</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8c4cfd77b7b3d7917de13bec98a8a74890f95618" datatype="html"> <trans-unit id="8c4cfd77b7b3d7917de13bec98a8a74890f95618" datatype="html">
@ -7219,7 +7227,7 @@
<target state="new">New Users</target> <target state="new">New Users</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c0eb011366e597e23542be386e8bc0d53470b520" datatype="html"> <trans-unit id="c0eb011366e597e23542be386e8bc0d53470b520" datatype="html">
@ -7227,7 +7235,7 @@
<target state="new">Users in Slack community</target> <target state="new">Users in Slack community</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">72</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="be99161cc904867871ab172df77b736d3b27dfc5" datatype="html"> <trans-unit id="be99161cc904867871ab172df77b736d3b27dfc5" datatype="html">
@ -7235,7 +7243,7 @@
<target state="new">Contributors on GitHub</target> <target state="new">Contributors on GitHub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8d3932a9eba50bc101c2b8c329e7b4ea033cde97" datatype="html"> <trans-unit id="8d3932a9eba50bc101c2b8c329e7b4ea033cde97" datatype="html">
@ -7243,11 +7251,11 @@
<target state="new">Stars on GitHub</target> <target state="new">Stars on GitHub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="512b096f732f5e05dc1c451276b7a2b1a2509acd" datatype="html"> <trans-unit id="512b096f732f5e05dc1c451276b7a2b1a2509acd" datatype="html">
@ -7255,11 +7263,11 @@
<target state="new">Pulls on Docker Hub</target> <target state="new">Pulls on Docker Hub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">114</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ed1d16219cf7cc3ad92d2d49f0c55bbafe3768b2" datatype="html"> <trans-unit id="ed1d16219cf7cc3ad92d2d49f0c55bbafe3768b2" datatype="html">
@ -7267,7 +7275,7 @@
<target state="new">Uptime</target> <target state="new">Uptime</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">128</context> <context context-type="linenumber">132</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html"> <trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html">
@ -7342,12 +7350,12 @@
<context context-type="linenumber">24,28</context> <context context-type="linenumber">24,28</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1be07764640e49ab8b6f59b079e31d42083abf5b" datatype="html"> <trans-unit id="7b3c319feef05dcc1f487d09dd2a59eb4c50e6d6" datatype="html">
<source> Manage your wealth like a boss </source> <source> Manage your wealth like a boss </source>
<target state="new"> Manage your wealth like a boss </target> <target state="new"> Manage your wealth like a boss </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">4,6</context> <context context-type="linenumber">11,13</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f251aca95a00756de48b14172b02d33f175661fc" datatype="html"> <trans-unit id="f251aca95a00756de48b14172b02d33f175661fc" datatype="html">
@ -7355,7 +7363,7 @@
<target state="new"> Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. </target> <target state="new"> Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">7,11</context> <context context-type="linenumber">15,19</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="50fefcca3f8b7dd5a34141329118014a8c4b7d1b" datatype="html"> <trans-unit id="50fefcca3f8b7dd5a34141329118014a8c4b7d1b" datatype="html">
@ -7363,11 +7371,11 @@
<target state="new"> Get Started </target> <target state="new"> Get Started </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">39,41</context> <context context-type="linenumber">47,49</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">410,412</context> <context context-type="linenumber">426,428</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c4b553bb0e33c675cd6a34e2e295b984f9ee8381" datatype="html"> <trans-unit id="c4b553bb0e33c675cd6a34e2e295b984f9ee8381" datatype="html">
@ -7375,7 +7383,7 @@
<target state="new"> or </target> <target state="new"> or </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">44,46</context> <context context-type="linenumber">52,54</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1d6f11238819cf97ea87ab54714deda567d83f5c" datatype="html"> <trans-unit id="1d6f11238819cf97ea87ab54714deda567d83f5c" datatype="html">
@ -7383,7 +7391,7 @@
<target state="new">Monthly Active Users</target> <target state="new">Monthly Active Users</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9c7ee452b83c7458f6ffdd49837daf95b1d5f34e" datatype="html"> <trans-unit id="9c7ee452b83c7458f6ffdd49837daf95b1d5f34e" datatype="html">
@ -7391,7 +7399,7 @@
<target state="new">As seen in</target> <target state="new">As seen in</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">119</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c8ef12032b654cfd51b9ae1082fde84247945e03" datatype="html"> <trans-unit id="c8ef12032b654cfd51b9ae1082fde84247945e03" datatype="html">
@ -7399,7 +7407,7 @@
<target state="new"> Protect your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>assets<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. Refine your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>personal investment strategy<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. </target> <target state="new"> Protect your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>assets<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. Refine your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>personal investment strategy<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">205,208</context> <context context-type="linenumber">221,224</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9dd7364c5dcf1b010bfa80e824ba80eb67cc2b57" datatype="html"> <trans-unit id="9dd7364c5dcf1b010bfa80e824ba80eb67cc2b57" datatype="html">
@ -7407,7 +7415,7 @@
<target state="new"> Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. </target> <target state="new"> Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">209,212</context> <context context-type="linenumber">225,228</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a1ed4b69a5a2cefa86b16c94ff2799a6566b4f" datatype="html"> <trans-unit id="70a1ed4b69a5a2cefa86b16c94ff2799a6566b4f" datatype="html">
@ -7415,7 +7423,7 @@
<target state="new">360° View</target> <target state="new">360° View</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">220</context> <context context-type="linenumber">236</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e0840e61fd65397c9dd8c0aa35ec19778c79b73d" datatype="html"> <trans-unit id="e0840e61fd65397c9dd8c0aa35ec19778c79b73d" datatype="html">
@ -7423,7 +7431,7 @@
<target state="new">Web3 Ready</target> <target state="new">Web3 Ready</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">247</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="0a82bf107b3693ed6bdba551a97ce92494921513" datatype="html"> <trans-unit id="0a82bf107b3693ed6bdba551a97ce92494921513" datatype="html">
@ -7431,7 +7439,7 @@
<target state="new"> Use Ghostfolio anonymously and own your financial data. </target> <target state="new"> Use Ghostfolio anonymously and own your financial data. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">233,235</context> <context context-type="linenumber">249,251</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ebc1c2623f53ce48c714e00161a2f31f732c815b" datatype="html"> <trans-unit id="ebc1c2623f53ce48c714e00161a2f31f732c815b" datatype="html">
@ -7439,7 +7447,7 @@
<target state="new">Open Source</target> <target state="new">Open Source</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">257</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3756fe4769648222e9a3143d6a140e55afd7424b" datatype="html"> <trans-unit id="3756fe4769648222e9a3143d6a140e55afd7424b" datatype="html">
@ -7447,7 +7455,7 @@
<target state="new"> Benefit from continuous improvements through a strong community. </target> <target state="new"> Benefit from continuous improvements through a strong community. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">243,245</context> <context context-type="linenumber">259,261</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e7360ce972bb10156736d042a15c6c939fea123d" datatype="html"> <trans-unit id="e7360ce972bb10156736d042a15c6c939fea123d" datatype="html">
@ -7455,7 +7463,7 @@
<target state="new">Why <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>?</target> <target state="new">Why <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">268</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b2466b29949bb745c1f96f2d82e5dab9061f8efe" datatype="html"> <trans-unit id="b2466b29949bb745c1f96f2d82e5dab9061f8efe" datatype="html">
@ -7463,7 +7471,7 @@
<target state="new"> Ghostfolio is for you if you are... </target> <target state="new"> Ghostfolio is for you if you are... </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">253,255</context> <context context-type="linenumber">269,271</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2fe7c768f92932a3a6c9b460dd5d72e53deb9cfe" datatype="html"> <trans-unit id="2fe7c768f92932a3a6c9b460dd5d72e53deb9cfe" datatype="html">
@ -7471,7 +7479,7 @@
<target state="new">trading stocks, ETFs or cryptocurrencies on multiple platforms</target> <target state="new">trading stocks, ETFs or cryptocurrencies on multiple platforms</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">260,261</context> <context context-type="linenumber">276,277</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="fe71658bf131fad393a7ce618908e246617ded26" datatype="html"> <trans-unit id="fe71658bf131fad393a7ce618908e246617ded26" datatype="html">
@ -7479,7 +7487,7 @@
<target state="new">pursuing a buy &amp; hold strategy</target> <target state="new">pursuing a buy &amp; hold strategy</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">266</context> <context context-type="linenumber">282</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2e95d2cbc69d45e5ecf3eb92c2972e8cb4ff3ec6" datatype="html"> <trans-unit id="2e95d2cbc69d45e5ecf3eb92c2972e8cb4ff3ec6" datatype="html">
@ -7487,7 +7495,7 @@
<target state="new">interested in getting insights of your portfolio composition</target> <target state="new">interested in getting insights of your portfolio composition</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">271</context> <context context-type="linenumber">287</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4093027d62fd4125e36fe21bdd44475fc7499d02" datatype="html"> <trans-unit id="4093027d62fd4125e36fe21bdd44475fc7499d02" datatype="html">
@ -7495,7 +7503,7 @@
<target state="new">valuing privacy and data ownership</target> <target state="new">valuing privacy and data ownership</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">276</context> <context context-type="linenumber">292</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5fae4f4ad7de60db18a5c52ccf5e7e8c7b194a9c" datatype="html"> <trans-unit id="5fae4f4ad7de60db18a5c52ccf5e7e8c7b194a9c" datatype="html">
@ -7503,7 +7511,7 @@
<target state="new">into minimalism</target> <target state="new">into minimalism</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">279</context> <context context-type="linenumber">295</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="18bb2c16577866572e3656986d9660d2db012565" datatype="html"> <trans-unit id="18bb2c16577866572e3656986d9660d2db012565" datatype="html">
@ -7511,7 +7519,7 @@
<target state="new">caring about diversifying your financial resources</target> <target state="new">caring about diversifying your financial resources</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">283</context> <context context-type="linenumber">299</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="0a6c37c2d3a8c41e7e44f020aefb1c667ac150dc" datatype="html"> <trans-unit id="0a6c37c2d3a8c41e7e44f020aefb1c667ac150dc" datatype="html">
@ -7519,7 +7527,7 @@
<target state="new">interested in financial independence</target> <target state="new">interested in financial independence</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">287</context> <context context-type="linenumber">303</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="81fbb4e2cd3d3079d790bdddbfcc73ec3b600d22" datatype="html"> <trans-unit id="81fbb4e2cd3d3079d790bdddbfcc73ec3b600d22" datatype="html">
@ -7527,7 +7535,7 @@
<target state="new">saying no to spreadsheets in <x id="INTERPOLATION" equiv-text="{{ currentYear }}"/></target> <target state="new">saying no to spreadsheets in <x id="INTERPOLATION" equiv-text="{{ currentYear }}"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">291</context> <context context-type="linenumber">307</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="92cef868de56015b451e7eee26c9eaef54f41d37" datatype="html"> <trans-unit id="92cef868de56015b451e7eee26c9eaef54f41d37" datatype="html">
@ -7535,7 +7543,7 @@
<target state="new">still reading this list</target> <target state="new">still reading this list</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">294</context> <context context-type="linenumber">310</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8c11c506c55700ca9883f360c52df5a432a51dcf" datatype="html"> <trans-unit id="8c11c506c55700ca9883f360c52df5a432a51dcf" datatype="html">
@ -7543,7 +7551,7 @@
<target state="new">Learn more about Ghostfolio</target> <target state="new">Learn more about Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">315</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ae508ae33a02ae69247d9e4d84e98b610209ef3b" datatype="html"> <trans-unit id="ae508ae33a02ae69247d9e4d84e98b610209ef3b" datatype="html">
@ -7551,7 +7559,7 @@
<target state="new"> What our <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>users<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> are saying </target> <target state="new"> What our <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>users<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> are saying </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">307,309</context> <context context-type="linenumber">323,325</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f9e4d441f5fed560c87d2f1f061eaa826ed271cd" datatype="html"> <trans-unit id="f9e4d441f5fed560c87d2f1f061eaa826ed271cd" datatype="html">
@ -7559,7 +7567,7 @@
<target state="new"> Members from around the globe are using <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;pricing&quot;&gt;"/><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio Premium<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/></target> <target state="new"> Members from around the globe are using <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;pricing&quot;&gt;"/><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio Premium<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">337,339</context> <context context-type="linenumber">353,355</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="abc6737537d65639f566a7068d0e5dde19c9d220" datatype="html"> <trans-unit id="abc6737537d65639f566a7068d0e5dde19c9d220" datatype="html">
@ -7567,7 +7575,7 @@
<target state="new"> How does <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> work? </target> <target state="new"> How does <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> work? </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">352,354</context> <context context-type="linenumber">368,370</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="969974097ecdfff6cb04b4cb71efccd717da1ce8" datatype="html"> <trans-unit id="969974097ecdfff6cb04b4cb71efccd717da1ce8" datatype="html">
@ -7575,7 +7583,7 @@
<target state="new">Sign up anonymously*</target> <target state="new">Sign up anonymously*</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">361</context> <context context-type="linenumber">377</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ebca1c496ea9caf6acf2a7ee5c4fa2b3f5aee1fe" datatype="html"> <trans-unit id="ebca1c496ea9caf6acf2a7ee5c4fa2b3f5aee1fe" datatype="html">
@ -7583,7 +7591,7 @@
<target state="new"><x id="START_SMALL_TEXT" ctype="x-small" equiv-text="&lt;small&gt;"/>* no e-mail address nor credit card required<x id="CLOSE_SMALL_TEXT" ctype="x-small" equiv-text="&lt;/small&gt;"/></target> <target state="new"><x id="START_SMALL_TEXT" ctype="x-small" equiv-text="&lt;small&gt;"/>* no e-mail address nor credit card required<x id="CLOSE_SMALL_TEXT" ctype="x-small" equiv-text="&lt;/small&gt;"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">363</context> <context context-type="linenumber">379</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2039f449cf4ee0c26a9211de9d057c1002293917" datatype="html"> <trans-unit id="2039f449cf4ee0c26a9211de9d057c1002293917" datatype="html">
@ -7591,7 +7599,7 @@
<target state="new"> Add any of your historical transactions </target> <target state="new"> Add any of your historical transactions </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">374,376</context> <context context-type="linenumber">390,392</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d6a2cfef5de5fd13ceb051a8725b1414c2ad9a69" datatype="html"> <trans-unit id="d6a2cfef5de5fd13ceb051a8725b1414c2ad9a69" datatype="html">
@ -7599,7 +7607,7 @@
<target state="new"> Get valuable insights of your portfolio composition </target> <target state="new"> Get valuable insights of your portfolio composition </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">386,388</context> <context context-type="linenumber">402,404</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b19d6b55a61fe4b3a9594fe87d504667cae32d8e" datatype="html"> <trans-unit id="b19d6b55a61fe4b3a9594fe87d504667cae32d8e" datatype="html">
@ -7607,7 +7615,7 @@
<target state="new">Are <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>you<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> ready?</target> <target state="new">Are <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>you<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> ready?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">398</context> <context context-type="linenumber">414</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="31d1cab2469b1cd9d7105900f3bf2781873282ad" datatype="html"> <trans-unit id="31d1cab2469b1cd9d7105900f3bf2781873282ad" datatype="html">
@ -7615,7 +7623,7 @@
<target state="new"> Join now<x id="START_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;ng-container *ngIf=&quot;hasPermissionForDemo&quot;&gt;"/> or check out the example account<x id="CLOSE_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;/ng-container &gt;"/></target> <target state="new"> Join now<x id="START_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;ng-container *ngIf=&quot;hasPermissionForDemo&quot;&gt;"/> or check out the example account<x id="CLOSE_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;/ng-container &gt;"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">399,402</context> <context context-type="linenumber">415,418</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="195d2d6475819f55cf73287f97752093b7721ade" datatype="html"> <trans-unit id="195d2d6475819f55cf73287f97752093b7721ade" datatype="html">
@ -7623,11 +7631,11 @@
<target state="new">Live Demo</target> <target state="new">Live Demo</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">415</context> <context context-type="linenumber">431</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="dbe66b4824faaff93249a96c9ce23c237b446ed5" datatype="html"> <trans-unit id="dbe66b4824faaff93249a96c9ce23c237b446ed5" datatype="html">
@ -7635,7 +7643,7 @@
<target state="new"> Get the full picture of your personal finances across multiple platforms. </target> <target state="new"> Get the full picture of your personal finances across multiple platforms. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">222,225</context> <context context-type="linenumber">238,241</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9454b3758f67cb4d178570e8bfb3e0d684e2353e" datatype="html"> <trans-unit id="9454b3758f67cb4d178570e8bfb3e0d684e2353e" datatype="html">
@ -7643,7 +7651,7 @@
<target state="new">Get started in only 3 steps</target> <target state="new">Get started in only 3 steps</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">355</context> <context context-type="linenumber">371</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4656883433287439415" datatype="html"> <trans-unit id="4656883433287439415" datatype="html">
@ -7701,6 +7709,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">15</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
@ -7865,6 +7877,14 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">14</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.component.ts</context>
<context context-type="linenumber">25</context> <context context-type="linenumber">25</context>
@ -8029,6 +8049,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">16</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context>
<context context-type="linenumber">14</context> <context context-type="linenumber">14</context>
@ -9414,6 +9438,42 @@
<context context-type="linenumber">325</context> <context context-type="linenumber">325</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7db7ee6941e96fe86681e5fb785c69d66da006d7" datatype="html">
<source>(Last 24 hours)</source>
<target state="new">(Last 24 hours)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="e365d670d2eeb6a6876784db260668a2eb749044" datatype="html">
<source>(Last 30 days)</source>
<target state="new">(Last 30 days)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="b9e82953df4178922cea15c5a8371fa224d6bc0c" datatype="html">
<source>(Last 90 days)</source>
<target state="new">(Last 90 days)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="d81f00c85d3b507f3e3d78bfc617a2c66e028391" datatype="html">
<source>New</source>
<target state="new">New</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

File diff suppressed because it is too large

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

@ -786,7 +786,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">158</context> <context context-type="linenumber">161</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7d6573fb998f3a1cf1356623b85850d9d10edaa9" datatype="html"> <trans-unit id="7d6573fb998f3a1cf1356623b85850d9d10edaa9" datatype="html">
@ -814,7 +814,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">189</context> <context context-type="linenumber">193</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.html</context>
@ -898,7 +898,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">171</context> <context context-type="linenumber">175</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="323af13292ecc714ab3848b9dff48f923893be32" datatype="html"> <trans-unit id="323af13292ecc714ab3848b9dff48f923893be32" datatype="html">
@ -910,7 +910,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">181</context> <context context-type="linenumber">185</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b0f210a3147d1b669e081dae1fcd0918fe7c3021" datatype="html"> <trans-unit id="b0f210a3147d1b669e081dae1fcd0918fe7c3021" datatype="html">
@ -922,7 +922,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">209</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="452ef1b96854fe05618303ee601f8fed3b866c9f" datatype="html"> <trans-unit id="452ef1b96854fe05618303ee601f8fed3b866c9f" datatype="html">
@ -938,7 +938,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">216</context> <context context-type="linenumber">220</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/resources-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/resources-page.html</context>
@ -958,11 +958,11 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">228</context> <context context-type="linenumber">232</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">292</context> <context context-type="linenumber">297</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html</context> <context context-type="sourcefile">apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html</context>
@ -1078,7 +1078,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">280</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="28094f38aac43d3cb6edaf98a281fe443a930b5e" datatype="html"> <trans-unit id="28094f38aac43d3cb6edaf98a281fe443a930b5e" datatype="html">
@ -1086,7 +1086,7 @@
<target state="translated">Eu</target> <target state="translated">Eu</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">141</context> <context context-type="linenumber">142</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="90d136a4e1f551f5de5340d443e0c95e49e95e1c" datatype="html"> <trans-unit id="90d136a4e1f551f5de5340d443e0c95e49e95e1c" datatype="html">
@ -1094,7 +1094,7 @@
<target state="translated">O meu Ghostfolio</target> <target state="translated">O meu Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">196</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6313384ccd7be95272bc2113ee9dada12af79b9b" datatype="html"> <trans-unit id="6313384ccd7be95272bc2113ee9dada12af79b9b" datatype="html">
@ -1102,7 +1102,7 @@
<target state="translated">Sobre o Ghostfolio</target> <target state="translated">Sobre o Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">236</context> <context context-type="linenumber">240</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/about/overview/about-overview-page.html</context>
@ -1118,7 +1118,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">267</context> <context context-type="linenumber">271</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -1134,7 +1134,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">308</context> <context context-type="linenumber">313</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-market/home-market.html</context> <context context-type="sourcefile">apps/client/src/app/components/home-market/home-market.html</context>
@ -1150,7 +1150,7 @@
<target state="translated">Iniciar sessão</target> <target state="translated">Iniciar sessão</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">321</context> <context context-type="linenumber">326</context>
</context-group> </context-group>
<context-group purpose="location"> <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="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -1162,7 +1162,7 @@
<target state="translated">Começar</target> <target state="translated">Começar</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context> <context context-type="sourcefile">apps/client/src/app/components/header/header.component.html</context>
<context context-type="linenumber">333</context> <context context-type="linenumber">338</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5207635742003539443" datatype="html"> <trans-unit id="5207635742003539443" datatype="html">
@ -1306,7 +1306,7 @@
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">414</context> <context context-type="linenumber">430</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
@ -1924,6 +1924,10 @@
<trans-unit id="218afa01afa0cfc71b1a6507a3387763ecaa9332" datatype="html"> <trans-unit id="218afa01afa0cfc71b1a6507a3387763ecaa9332" datatype="html">
<source>per year</source> <source>per year</source>
<target state="translated">por ano</target> <target state="translated">por ano</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">332</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">57</context>
@ -2224,6 +2228,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html</context>
<context context-type="linenumber">154</context> <context context-type="linenumber">154</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html</context>
<context context-type="linenumber">267</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/blog-page.html</context>
<context context-type="linenumber">5</context> <context context-type="linenumber">5</context>
@ -2798,7 +2806,7 @@
<target state="translated">Continuar com Internet Identity</target> <target state="translated">Continuar com Internet Identity</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">41</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c7eb7fc17d2f646c6c835f4da0b96f255b515cf4" datatype="html"> <trans-unit id="c7eb7fc17d2f646c6c835f4da0b96f255b515cf4" datatype="html">
@ -2806,7 +2814,7 @@
<target state="translated">Continuar com Google</target> <target state="translated">Continuar com Google</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/register/register-page.html</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3a6e5a6aa78ca864f6542410c5dafb6334538106" datatype="html"> <trans-unit id="3a6e5a6aa78ca864f6542410c5dafb6334538106" datatype="html">
@ -7206,11 +7214,11 @@
<target state="new">Active Users</target> <target state="new">Active Users</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">39</context> <context context-type="linenumber">40</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">59</context> <context context-type="linenumber">62</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8c4cfd77b7b3d7917de13bec98a8a74890f95618" datatype="html"> <trans-unit id="8c4cfd77b7b3d7917de13bec98a8a74890f95618" datatype="html">
@ -7218,7 +7226,7 @@
<target state="new">New Users</target> <target state="new">New Users</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c0eb011366e597e23542be386e8bc0d53470b520" datatype="html"> <trans-unit id="c0eb011366e597e23542be386e8bc0d53470b520" datatype="html">
@ -7226,7 +7234,7 @@
<target state="new">Users in Slack community</target> <target state="new">Users in Slack community</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">72</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="be99161cc904867871ab172df77b736d3b27dfc5" datatype="html"> <trans-unit id="be99161cc904867871ab172df77b736d3b27dfc5" datatype="html">
@ -7234,7 +7242,7 @@
<target state="new">Contributors on GitHub</target> <target state="new">Contributors on GitHub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">86</context> <context context-type="linenumber">89</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8d3932a9eba50bc101c2b8c329e7b4ea033cde97" datatype="html"> <trans-unit id="8d3932a9eba50bc101c2b8c329e7b4ea033cde97" datatype="html">
@ -7242,11 +7250,11 @@
<target state="new">Stars on GitHub</target> <target state="new">Stars on GitHub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">85</context> <context context-type="linenumber">93</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">103</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="512b096f732f5e05dc1c451276b7a2b1a2509acd" datatype="html"> <trans-unit id="512b096f732f5e05dc1c451276b7a2b1a2509acd" datatype="html">
@ -7254,11 +7262,11 @@
<target state="new">Pulls on Docker Hub</target> <target state="new">Pulls on Docker Hub</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">103</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">114</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ed1d16219cf7cc3ad92d2d49f0c55bbafe3768b2" datatype="html"> <trans-unit id="ed1d16219cf7cc3ad92d2d49f0c55bbafe3768b2" datatype="html">
@ -7266,7 +7274,7 @@
<target state="new">Uptime</target> <target state="new">Uptime</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">128</context> <context context-type="linenumber">132</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html"> <trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html">
@ -7341,12 +7349,12 @@
<context context-type="linenumber">24,28</context> <context context-type="linenumber">24,28</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1be07764640e49ab8b6f59b079e31d42083abf5b" datatype="html"> <trans-unit id="7b3c319feef05dcc1f487d09dd2a59eb4c50e6d6" datatype="html">
<source> Manage your wealth like a boss </source> <source> Manage your wealth like a boss </source>
<target state="new"> Manage your wealth like a boss </target> <target state="new"> Manage your wealth like a boss </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">4,6</context> <context context-type="linenumber">11,13</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f251aca95a00756de48b14172b02d33f175661fc" datatype="html"> <trans-unit id="f251aca95a00756de48b14172b02d33f175661fc" datatype="html">
@ -7354,7 +7362,7 @@
<target state="new"> Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. </target> <target state="new"> Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">7,11</context> <context context-type="linenumber">15,19</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="50fefcca3f8b7dd5a34141329118014a8c4b7d1b" datatype="html"> <trans-unit id="50fefcca3f8b7dd5a34141329118014a8c4b7d1b" datatype="html">
@ -7362,11 +7370,11 @@
<target state="new"> Get Started </target> <target state="new"> Get Started </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">39,41</context> <context context-type="linenumber">47,49</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">410,412</context> <context context-type="linenumber">426,428</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c4b553bb0e33c675cd6a34e2e295b984f9ee8381" datatype="html"> <trans-unit id="c4b553bb0e33c675cd6a34e2e295b984f9ee8381" datatype="html">
@ -7374,7 +7382,7 @@
<target state="new"> or </target> <target state="new"> or </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">44,46</context> <context context-type="linenumber">52,54</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1d6f11238819cf97ea87ab54714deda567d83f5c" datatype="html"> <trans-unit id="1d6f11238819cf97ea87ab54714deda567d83f5c" datatype="html">
@ -7382,7 +7390,7 @@
<target state="new">Monthly Active Users</target> <target state="new">Monthly Active Users</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">67</context> <context context-type="linenumber">75</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9c7ee452b83c7458f6ffdd49837daf95b1d5f34e" datatype="html"> <trans-unit id="9c7ee452b83c7458f6ffdd49837daf95b1d5f34e" datatype="html">
@ -7390,7 +7398,7 @@
<target state="new">As seen in</target> <target state="new">As seen in</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">119</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="c8ef12032b654cfd51b9ae1082fde84247945e03" datatype="html"> <trans-unit id="c8ef12032b654cfd51b9ae1082fde84247945e03" datatype="html">
@ -7398,7 +7406,7 @@
<target state="new"> Protect your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>assets<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. Refine your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>personal investment strategy<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. </target> <target state="new"> Protect your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>assets<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. Refine your <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>personal investment strategy<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">205,208</context> <context context-type="linenumber">221,224</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9dd7364c5dcf1b010bfa80e824ba80eb67cc2b57" datatype="html"> <trans-unit id="9dd7364c5dcf1b010bfa80e824ba80eb67cc2b57" datatype="html">
@ -7406,7 +7414,7 @@
<target state="new"> Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. </target> <target state="new"> Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">209,212</context> <context context-type="linenumber">225,228</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="70a1ed4b69a5a2cefa86b16c94ff2799a6566b4f" datatype="html"> <trans-unit id="70a1ed4b69a5a2cefa86b16c94ff2799a6566b4f" datatype="html">
@ -7414,7 +7422,7 @@
<target state="new">360° View</target> <target state="new">360° View</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">220</context> <context context-type="linenumber">236</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e0840e61fd65397c9dd8c0aa35ec19778c79b73d" datatype="html"> <trans-unit id="e0840e61fd65397c9dd8c0aa35ec19778c79b73d" datatype="html">
@ -7422,7 +7430,7 @@
<target state="new">Web3 Ready</target> <target state="new">Web3 Ready</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">231</context> <context context-type="linenumber">247</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="0a82bf107b3693ed6bdba551a97ce92494921513" datatype="html"> <trans-unit id="0a82bf107b3693ed6bdba551a97ce92494921513" datatype="html">
@ -7430,7 +7438,7 @@
<target state="new"> Use Ghostfolio anonymously and own your financial data. </target> <target state="new"> Use Ghostfolio anonymously and own your financial data. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">233,235</context> <context context-type="linenumber">249,251</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ebc1c2623f53ce48c714e00161a2f31f732c815b" datatype="html"> <trans-unit id="ebc1c2623f53ce48c714e00161a2f31f732c815b" datatype="html">
@ -7438,7 +7446,7 @@
<target state="new">Open Source</target> <target state="new">Open Source</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">241</context> <context context-type="linenumber">257</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3756fe4769648222e9a3143d6a140e55afd7424b" datatype="html"> <trans-unit id="3756fe4769648222e9a3143d6a140e55afd7424b" datatype="html">
@ -7446,7 +7454,7 @@
<target state="new"> Benefit from continuous improvements through a strong community. </target> <target state="new"> Benefit from continuous improvements through a strong community. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">243,245</context> <context context-type="linenumber">259,261</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="e7360ce972bb10156736d042a15c6c939fea123d" datatype="html"> <trans-unit id="e7360ce972bb10156736d042a15c6c939fea123d" datatype="html">
@ -7454,7 +7462,7 @@
<target state="new">Why <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>?</target> <target state="new">Why <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/>?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">268</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b2466b29949bb745c1f96f2d82e5dab9061f8efe" datatype="html"> <trans-unit id="b2466b29949bb745c1f96f2d82e5dab9061f8efe" datatype="html">
@ -7462,7 +7470,7 @@
<target state="new"> Ghostfolio is for you if you are... </target> <target state="new"> Ghostfolio is for you if you are... </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">253,255</context> <context context-type="linenumber">269,271</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2fe7c768f92932a3a6c9b460dd5d72e53deb9cfe" datatype="html"> <trans-unit id="2fe7c768f92932a3a6c9b460dd5d72e53deb9cfe" datatype="html">
@ -7470,7 +7478,7 @@
<target state="new">trading stocks, ETFs or cryptocurrencies on multiple platforms</target> <target state="new">trading stocks, ETFs or cryptocurrencies on multiple platforms</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">260,261</context> <context context-type="linenumber">276,277</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="fe71658bf131fad393a7ce618908e246617ded26" datatype="html"> <trans-unit id="fe71658bf131fad393a7ce618908e246617ded26" datatype="html">
@ -7478,7 +7486,7 @@
<target state="new">pursuing a buy &amp; hold strategy</target> <target state="new">pursuing a buy &amp; hold strategy</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">266</context> <context context-type="linenumber">282</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2e95d2cbc69d45e5ecf3eb92c2972e8cb4ff3ec6" datatype="html"> <trans-unit id="2e95d2cbc69d45e5ecf3eb92c2972e8cb4ff3ec6" datatype="html">
@ -7486,7 +7494,7 @@
<target state="new">interested in getting insights of your portfolio composition</target> <target state="new">interested in getting insights of your portfolio composition</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">271</context> <context context-type="linenumber">287</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4093027d62fd4125e36fe21bdd44475fc7499d02" datatype="html"> <trans-unit id="4093027d62fd4125e36fe21bdd44475fc7499d02" datatype="html">
@ -7494,7 +7502,7 @@
<target state="new">valuing privacy and data ownership</target> <target state="new">valuing privacy and data ownership</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">276</context> <context context-type="linenumber">292</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5fae4f4ad7de60db18a5c52ccf5e7e8c7b194a9c" datatype="html"> <trans-unit id="5fae4f4ad7de60db18a5c52ccf5e7e8c7b194a9c" datatype="html">
@ -7502,7 +7510,7 @@
<target state="new">into minimalism</target> <target state="new">into minimalism</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">279</context> <context context-type="linenumber">295</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="18bb2c16577866572e3656986d9660d2db012565" datatype="html"> <trans-unit id="18bb2c16577866572e3656986d9660d2db012565" datatype="html">
@ -7510,7 +7518,7 @@
<target state="new">caring about diversifying your financial resources</target> <target state="new">caring about diversifying your financial resources</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">283</context> <context context-type="linenumber">299</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="0a6c37c2d3a8c41e7e44f020aefb1c667ac150dc" datatype="html"> <trans-unit id="0a6c37c2d3a8c41e7e44f020aefb1c667ac150dc" datatype="html">
@ -7518,7 +7526,7 @@
<target state="new">interested in financial independence</target> <target state="new">interested in financial independence</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">287</context> <context context-type="linenumber">303</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="81fbb4e2cd3d3079d790bdddbfcc73ec3b600d22" datatype="html"> <trans-unit id="81fbb4e2cd3d3079d790bdddbfcc73ec3b600d22" datatype="html">
@ -7526,7 +7534,7 @@
<target state="new">saying no to spreadsheets in <x id="INTERPOLATION" equiv-text="{{ currentYear }}"/></target> <target state="new">saying no to spreadsheets in <x id="INTERPOLATION" equiv-text="{{ currentYear }}"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">291</context> <context context-type="linenumber">307</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="92cef868de56015b451e7eee26c9eaef54f41d37" datatype="html"> <trans-unit id="92cef868de56015b451e7eee26c9eaef54f41d37" datatype="html">
@ -7534,7 +7542,7 @@
<target state="new">still reading this list</target> <target state="new">still reading this list</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">294</context> <context context-type="linenumber">310</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8c11c506c55700ca9883f360c52df5a432a51dcf" datatype="html"> <trans-unit id="8c11c506c55700ca9883f360c52df5a432a51dcf" datatype="html">
@ -7542,7 +7550,7 @@
<target state="new">Learn more about Ghostfolio</target> <target state="new">Learn more about Ghostfolio</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">299</context> <context context-type="linenumber">315</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ae508ae33a02ae69247d9e4d84e98b610209ef3b" datatype="html"> <trans-unit id="ae508ae33a02ae69247d9e4d84e98b610209ef3b" datatype="html">
@ -7550,7 +7558,7 @@
<target state="new"> What our <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>users<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> are saying </target> <target state="new"> What our <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>users<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> are saying </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">307,309</context> <context context-type="linenumber">323,325</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="f9e4d441f5fed560c87d2f1f061eaa826ed271cd" datatype="html"> <trans-unit id="f9e4d441f5fed560c87d2f1f061eaa826ed271cd" datatype="html">
@ -7558,7 +7566,7 @@
<target state="new"> Members from around the globe are using <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;pricing&quot;&gt;"/><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio Premium<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/></target> <target state="new"> Members from around the globe are using <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;pricing&quot;&gt;"/><x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio Premium<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">337,339</context> <context context-type="linenumber">353,355</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="abc6737537d65639f566a7068d0e5dde19c9d220" datatype="html"> <trans-unit id="abc6737537d65639f566a7068d0e5dde19c9d220" datatype="html">
@ -7566,7 +7574,7 @@
<target state="new"> How does <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> work? </target> <target state="new"> How does <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>Ghostfolio<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> work? </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">352,354</context> <context context-type="linenumber">368,370</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="969974097ecdfff6cb04b4cb71efccd717da1ce8" datatype="html"> <trans-unit id="969974097ecdfff6cb04b4cb71efccd717da1ce8" datatype="html">
@ -7574,7 +7582,7 @@
<target state="new">Sign up anonymously*</target> <target state="new">Sign up anonymously*</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">361</context> <context context-type="linenumber">377</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="ebca1c496ea9caf6acf2a7ee5c4fa2b3f5aee1fe" datatype="html"> <trans-unit id="ebca1c496ea9caf6acf2a7ee5c4fa2b3f5aee1fe" datatype="html">
@ -7582,7 +7590,7 @@
<target state="new"><x id="START_SMALL_TEXT" ctype="x-small" equiv-text="&lt;small&gt;"/>* no e-mail address nor credit card required<x id="CLOSE_SMALL_TEXT" ctype="x-small" equiv-text="&lt;/small&gt;"/></target> <target state="new"><x id="START_SMALL_TEXT" ctype="x-small" equiv-text="&lt;small&gt;"/>* no e-mail address nor credit card required<x id="CLOSE_SMALL_TEXT" ctype="x-small" equiv-text="&lt;/small&gt;"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">363</context> <context context-type="linenumber">379</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2039f449cf4ee0c26a9211de9d057c1002293917" datatype="html"> <trans-unit id="2039f449cf4ee0c26a9211de9d057c1002293917" datatype="html">
@ -7590,7 +7598,7 @@
<target state="new"> Add any of your historical transactions </target> <target state="new"> Add any of your historical transactions </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">374,376</context> <context context-type="linenumber">390,392</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="d6a2cfef5de5fd13ceb051a8725b1414c2ad9a69" datatype="html"> <trans-unit id="d6a2cfef5de5fd13ceb051a8725b1414c2ad9a69" datatype="html">
@ -7598,7 +7606,7 @@
<target state="new"> Get valuable insights of your portfolio composition </target> <target state="new"> Get valuable insights of your portfolio composition </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">386,388</context> <context context-type="linenumber">402,404</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b19d6b55a61fe4b3a9594fe87d504667cae32d8e" datatype="html"> <trans-unit id="b19d6b55a61fe4b3a9594fe87d504667cae32d8e" datatype="html">
@ -7606,7 +7614,7 @@
<target state="new">Are <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>you<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> ready?</target> <target state="new">Are <x id="START_TAG_STRONG" ctype="x-strong" equiv-text="&lt;strong&gt;"/>you<x id="CLOSE_TAG_STRONG" ctype="x-strong" equiv-text="&lt;/strong&gt;"/> ready?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">398</context> <context context-type="linenumber">414</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="31d1cab2469b1cd9d7105900f3bf2781873282ad" datatype="html"> <trans-unit id="31d1cab2469b1cd9d7105900f3bf2781873282ad" datatype="html">
@ -7614,7 +7622,7 @@
<target state="new"> Join now<x id="START_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;ng-container *ngIf=&quot;hasPermissionForDemo&quot;&gt;"/> or check out the example account<x id="CLOSE_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;/ng-container &gt;"/></target> <target state="new"> Join now<x id="START_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;ng-container *ngIf=&quot;hasPermissionForDemo&quot;&gt;"/> or check out the example account<x id="CLOSE_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;/ng-container &gt;"/></target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">399,402</context> <context context-type="linenumber">415,418</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="195d2d6475819f55cf73287f97752093b7721ade" datatype="html"> <trans-unit id="195d2d6475819f55cf73287f97752093b7721ade" datatype="html">
@ -7622,11 +7630,11 @@
<target state="new">Live Demo</target> <target state="new">Live Demo</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">47</context> <context context-type="linenumber">55</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">415</context> <context context-type="linenumber">431</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="dbe66b4824faaff93249a96c9ce23c237b446ed5" datatype="html"> <trans-unit id="dbe66b4824faaff93249a96c9ce23c237b446ed5" datatype="html">
@ -7634,7 +7642,7 @@
<target state="new"> Get the full picture of your personal finances across multiple platforms. </target> <target state="new"> Get the full picture of your personal finances across multiple platforms. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">222,225</context> <context context-type="linenumber">238,241</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9454b3758f67cb4d178570e8bfb3e0d684e2353e" datatype="html"> <trans-unit id="9454b3758f67cb4d178570e8bfb3e0d684e2353e" datatype="html">
@ -7642,7 +7650,7 @@
<target state="new">Get started in only 3 steps</target> <target state="new">Get started in only 3 steps</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">355</context> <context context-type="linenumber">371</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4656883433287439415" datatype="html"> <trans-unit id="4656883433287439415" datatype="html">
@ -7700,6 +7708,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">15</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
@ -7864,6 +7876,14 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">14</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.component.ts</context>
<context context-type="linenumber">25</context> <context context-type="linenumber">25</context>
@ -8028,6 +8048,10 @@
<context context-type="sourcefile">apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts</context>
<context context-type="linenumber">13</context> <context context-type="linenumber">13</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts</context>
<context context-type="linenumber">16</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/faq/faq-page.component.ts</context>
<context context-type="linenumber">14</context> <context context-type="linenumber">14</context>
@ -9413,6 +9437,42 @@
<context context-type="linenumber">325</context> <context context-type="linenumber">325</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7db7ee6941e96fe86681e5fb785c69d66da006d7" datatype="html">
<source>(Last 24 hours)</source>
<target state="new">(Last 24 hours)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="e365d670d2eeb6a6876784db260668a2eb749044" datatype="html">
<source>(Last 30 days)</source>
<target state="new">(Last 30 days)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">48</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="b9e82953df4178922cea15c5a8371fa224d6bc0c" datatype="html">
<source>(Last 90 days)</source>
<target state="new">(Last 90 days)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/open/open-page.html</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="d81f00c85d3b507f3e3d78bfc617a2c66e028391" datatype="html">
<source>New</source>
<target state="new">New</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

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

File diff suppressed because it is too large

8
docker/docker-compose.build.yml

@ -1,4 +1,4 @@
version: '3.7' version: '3.9'
services: services:
ghostfolio: ghostfolio:
build: ../ build: ../
@ -7,7 +7,7 @@ services:
environment: environment:
DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?connect_timeout=300&sslmode=prefer DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?connect_timeout=300&sslmode=prefer
NODE_ENV: production NODE_ENV: production
REDIS_HOST: 'redis' REDIS_HOST: redis
REDIS_PASSWORD: ${REDIS_PASSWORD} REDIS_PASSWORD: ${REDIS_PASSWORD}
ports: ports:
- 3333:3333 - 3333:3333
@ -16,7 +16,6 @@ services:
condition: service_healthy condition: service_healthy
redis: redis:
condition: service_healthy condition: service_healthy
postgres: postgres:
image: postgres:12 image: postgres:12
env_file: env_file:
@ -28,9 +27,8 @@ services:
retries: 5 retries: 5
volumes: volumes:
- postgres:/var/lib/postgresql/data - postgres:/var/lib/postgresql/data
redis: redis:
image: 'redis:alpine' image: redis:alpine
healthcheck: healthcheck:
test: ['CMD-SHELL', 'redis-cli ping | grep PONG'] test: ['CMD-SHELL', 'redis-cli ping | grep PONG']
interval: 10s interval: 10s

5
docker/docker-compose.dev.yml

@ -1,4 +1,4 @@
version: '3.7' version: '3.9'
services: services:
postgres: postgres:
image: postgres:12 image: postgres:12
@ -10,9 +10,8 @@ services:
- 5432:5432 - 5432:5432
volumes: volumes:
- postgres:/var/lib/postgresql/data - postgres:/var/lib/postgresql/data
redis: redis:
image: 'redis:alpine' image: redis:alpine
container_name: redis container_name: redis
restart: unless-stopped restart: unless-stopped
ports: ports:

8
docker/docker-compose.yml

@ -1,4 +1,4 @@
version: '3.7' version: '3.9'
services: services:
ghostfolio: ghostfolio:
image: ghostfolio/ghostfolio:latest image: ghostfolio/ghostfolio:latest
@ -7,7 +7,7 @@ services:
environment: environment:
DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?connect_timeout=300&sslmode=prefer DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?connect_timeout=300&sslmode=prefer
NODE_ENV: production NODE_ENV: production
REDIS_HOST: 'redis' REDIS_HOST: redis
REDIS_PASSWORD: ${REDIS_PASSWORD} REDIS_PASSWORD: ${REDIS_PASSWORD}
ports: ports:
- 3333:3333 - 3333:3333
@ -16,7 +16,6 @@ services:
condition: service_healthy condition: service_healthy
redis: redis:
condition: service_healthy condition: service_healthy
postgres: postgres:
image: postgres:12 image: postgres:12
env_file: env_file:
@ -28,9 +27,8 @@ services:
retries: 5 retries: 5
volumes: volumes:
- postgres:/var/lib/postgresql/data - postgres:/var/lib/postgresql/data
redis: redis:
image: 'redis:alpine' image: redis:alpine
healthcheck: healthcheck:
test: ['CMD-SHELL', 'redis-cli ping | grep PONG'] test: ['CMD-SHELL', 'redis-cli ping | grep PONG']
interval: 10s interval: 10s

4
package.json

@ -1,6 +1,6 @@
{ {
"name": "ghostfolio", "name": "ghostfolio",
"version": "1.305.0", "version": "2.0.0",
"homepage": "https://ghostfol.io", "homepage": "https://ghostfol.io",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"repository": "https://github.com/ghostfolio/ghostfolio", "repository": "https://github.com/ghostfolio/ghostfolio",
@ -129,7 +129,7 @@
"svgmap": "2.6.0", "svgmap": "2.6.0",
"twitter-api-v2": "1.14.2", "twitter-api-v2": "1.14.2",
"uuid": "9.0.0", "uuid": "9.0.0",
"yahoo-finance2": "2.4.4", "yahoo-finance2": "2.5.0",
"zone.js": "0.13.1" "zone.js": "0.13.1"
}, },
"devDependencies": { "devDependencies": {

8
yarn.lock

@ -19035,10 +19035,10 @@ y18n@^5.0.5:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
yahoo-finance2@2.4.4: yahoo-finance2@2.5.0:
version "2.4.4" version "2.5.0"
resolved "https://registry.yarnpkg.com/yahoo-finance2/-/yahoo-finance2-2.4.4.tgz#3149a4f2e6fab04430aabe7758bfbc70f240503e" resolved "https://registry.yarnpkg.com/yahoo-finance2/-/yahoo-finance2-2.5.0.tgz#847834b33d24dc8ce96357401aba7dae1bcfda9f"
integrity sha512-dL8bz3ubmPYRHd2M85hyL8kcVVlvpTGdzqeuewMH6X1Ej/lo4/2qlbAqZVT4qlcFeuEdlEIZ1N/mFp6SFnW8Uw== integrity sha512-YTniHzTx17lrs7tUonFZMWvY0dF4UJSrPkrTNMqNrb+la7Nde/5KY7mQFf+8VdXhngPup2V9ex27M2WK3ADtbw==
dependencies: dependencies:
"@types/tough-cookie" "^4.0.2" "@types/tough-cookie" "^4.0.2"
ajv "8.10.0" ajv "8.10.0"

Loading…
Cancel
Save