Browse Source

Merge branch 'main' into feature/add-hacktoberfest-2023-blog-post

pull/2359/head
Thomas Kaul 2 years ago
committed by GitHub
parent
commit
e31a1fe0b6
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 16
      CHANGELOG.md
  2. 2
      README.md
  3. 2
      apps/api/src/app/import/import.service.ts
  4. 5
      apps/api/src/app/order/order.controller.ts
  5. 26
      apps/api/src/app/order/order.service.ts
  6. 10
      apps/api/src/app/portfolio/portfolio.controller.ts
  7. 36
      apps/api/src/assets/sitemap.xml
  8. 3
      apps/api/src/middlewares/html-template.middleware.ts
  9. 4
      apps/api/src/services/data-gathering/data-gathering.service.ts
  10. 14
      apps/client/project.json
  11. 5
      apps/client/src/app/app.component.html
  12. 10
      apps/client/src/app/pages/faq/faq-page.html
  13. 2
      apps/client/src/app/pages/features/features-page.html
  14. 4
      apps/client/src/app/pages/pricing/pricing-page.html
  15. 8
      apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html
  16. 49
      apps/client/src/app/pages/resources/personal-finance-tools/products.ts
  17. 31
      apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts
  18. 31
      apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts
  19. 3
      apps/client/src/app/pages/user-account/user-account-page.component.ts
  20. 4
      apps/client/src/app/pages/user-account/user-account-page.html
  21. 27
      apps/client/src/app/services/import-activities.service.ts
  22. 52
      apps/client/src/locales/messages.de.xlf
  23. 52
      apps/client/src/locales/messages.es.xlf
  24. 52
      apps/client/src/locales/messages.fr.xlf
  25. 52
      apps/client/src/locales/messages.it.xlf
  26. 52
      apps/client/src/locales/messages.nl.xlf
  27. 52
      apps/client/src/locales/messages.pt.xlf
  28. 9541
      apps/client/src/locales/messages.tr.xlf
  29. 50
      apps/client/src/locales/messages.xlf
  30. 3
      libs/common/src/lib/config.ts
  31. 44
      libs/common/src/lib/helper.ts
  32. 2
      libs/common/src/lib/interfaces/product.ts
  33. 39
      libs/ui/src/lib/activities-table/activities-table.component.html
  34. 51
      libs/ui/src/lib/activities-table/activities-table.component.scss
  35. 2
      libs/ui/src/lib/activities-table/activities-table.module.ts
  36. 32
      libs/ui/src/lib/activity-type/activity-type.component.html
  37. 47
      libs/ui/src/lib/activity-type/activity-type.component.scss
  38. 26
      libs/ui/src/lib/activity-type/activity-type.component.ts
  39. 12
      libs/ui/src/lib/activity-type/activity-type.module.ts
  40. 1
      libs/ui/src/lib/activity-type/index.ts
  41. 2
      package.json
  42. 6
      test/import/ok.csv

16
CHANGELOG.md

@ -11,6 +11,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Added a blog post: _Hacktoberfest 2023_ - Added a blog post: _Hacktoberfest 2023_
## 2.5.0 - 2023-09-23
### Added
- Added support for translated activity types in the activities table
- Added support for dates in `DD.MM.YYYY` format in the activities import
- Set up the language localization for Türkçe (`tr`)
### Changed
- Skipped creating queue jobs for asset profiles with `MANUAL` data source on creating a new activity
### Fixed
- Fixed an issue with the cash position in the holdings table
## 2.4.0 - 2023-09-19 ## 2.4.0 - 2023-09-19
### Added ### Added

2
README.md

@ -27,7 +27,7 @@ New: [Ghostfolio 2.0](https://ghostfol.io/en/blog/2023/09/ghostfolio-2)
## Ghostfolio Premium ## Ghostfolio Premium
Our official **[Ghostfolio Premium](https://ghostfol.io/en/pricing)** cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. The revenue is used for covering the hosting costs. Our official **[Ghostfolio Premium](https://ghostfol.io/en/pricing)** cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development.
If you prefer to run Ghostfolio on your own infrastructure, please find further instructions in the [Self-hosting](#self-hosting) section. If you prefer to run Ghostfolio on your own infrastructure, please find further instructions in the [Self-hosting](#self-hosting) section.

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

@ -410,7 +410,7 @@ export class ImportService {
currency, currency,
userCurrency userCurrency
), ),
//@ts-ignore // @ts-ignore
SymbolProfile: assetProfile, SymbolProfile: assetProfile,
valueInBaseCurrency: this.exchangeRateDataService.toCurrency( valueInBaseCurrency: this.exchangeRateDataService.toCurrency(
value, value,

5
apps/api/src/app/order/order.controller.ts

@ -147,8 +147,9 @@ export class OrderController {
userId: this.request.user.id userId: this.request.user.id
}); });
if (!order.isDraft) { if (data.dataSource && !order.isDraft) {
// Gather symbol data in the background, if not draft // Gather symbol data in the background, if data source is set
// (not MANUAL) and not draft
this.dataGatheringService.gatherSymbols([ this.dataGatheringService.gatherSymbols([
{ {
dataSource: data.dataSource, dataSource: data.dataSource,

26
apps/api/src/app/order/order.service.ts

@ -123,20 +123,22 @@ export class OrderService {
}; };
} }
this.dataGatheringService.addJobToQueue({ if (data.SymbolProfile.connectOrCreate.create.dataSource !== 'MANUAL') {
data: { this.dataGatheringService.addJobToQueue({
dataSource: data.SymbolProfile.connectOrCreate.create.dataSource, data: {
symbol: data.SymbolProfile.connectOrCreate.create.symbol
},
name: GATHER_ASSET_PROFILE_PROCESS,
opts: {
...GATHER_ASSET_PROFILE_PROCESS_OPTIONS,
jobId: getAssetProfileIdentifier({
dataSource: data.SymbolProfile.connectOrCreate.create.dataSource, dataSource: data.SymbolProfile.connectOrCreate.create.dataSource,
symbol: data.SymbolProfile.connectOrCreate.create.symbol symbol: data.SymbolProfile.connectOrCreate.create.symbol
}) },
} name: GATHER_ASSET_PROFILE_PROCESS,
}); opts: {
...GATHER_ASSET_PROFILE_PROCESS_OPTIONS,
jobId: getAssetProfileIdentifier({
dataSource: data.SymbolProfile.connectOrCreate.create.dataSource,
symbol: data.SymbolProfile.connectOrCreate.create.symbol
})
}
});
}
delete data.accountId; delete data.accountId;
delete data.assetClass; delete data.assetClass;

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

@ -173,8 +173,14 @@ export class PortfolioController {
for (const [symbol, portfolioPosition] of Object.entries(holdings)) { for (const [symbol, portfolioPosition] of Object.entries(holdings)) {
holdings[symbol] = { holdings[symbol] = {
...portfolioPosition, ...portfolioPosition,
assetClass: hasDetails ? portfolioPosition.assetClass : undefined, assetClass:
assetSubClass: hasDetails ? portfolioPosition.assetSubClass : undefined, hasDetails || portfolioPosition.assetClass === 'CASH'
? portfolioPosition.assetClass
: undefined,
assetSubClass:
hasDetails || portfolioPosition.assetSubClass === 'CASH'
? portfolioPosition.assetSubClass
: undefined,
countries: hasDetails ? portfolioPosition.countries : [], countries: hasDetails ? portfolioPosition.countries : [],
currency: hasDetails ? portfolioPosition.currency : undefined, currency: hasDetails ? portfolioPosition.currency : undefined,
markets: hasDetails ? portfolioPosition.markets : undefined, markets: hasDetails ? portfolioPosition.markets : undefined,

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

@ -58,6 +58,10 @@
<loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-altoo</loc> <loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-altoo</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url> </url>
<url>
<loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-capmon</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url> <url>
<loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-copilot-money</loc> <loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-copilot-money</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -142,6 +146,10 @@
<loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-snowball-analytics</loc> <loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-snowball-analytics</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url> </url>
<url>
<loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-stockmarketeye</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url> <url>
<loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-sumio</loc> <loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-sumio</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -296,6 +304,10 @@
<loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-altoo</loc> <loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-altoo</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/resources/personal-finance-tools/open-source-alternative-to-capmon</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url> <url>
<loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-copilot-money</loc> <loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-copilot-money</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -380,6 +392,10 @@
<loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-snowball-analytics</loc> <loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-snowball-analytics</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/resources/personal-finance-tools/open-source-alternative-to-stockmarketeye</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url> <url>
<loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-sumio</loc> <loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-sumio</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -562,6 +578,10 @@
<loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-altoo</loc> <loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-altoo</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url> </url>
<url>
<loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-campmon</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url> <url>
<loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-copilot-money</loc> <loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-copilot-money</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -646,6 +666,10 @@
<loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-snowball-analytics</loc> <loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-snowball-analytics</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url> </url>
<url>
<loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-stockmarketeye</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url> <url>
<loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-sumio</loc> <loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-sumio</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -674,6 +698,10 @@
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-altoo</loc> <loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-altoo</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url> </url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-capmon</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url> <url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-copilot-money</loc> <loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-copilot-money</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -758,6 +786,10 @@
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-snowball-analytics</loc> <loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-snowball-analytics</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url> </url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-stockmarketeye</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url> <url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-sumio</loc> <loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-sumio</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -872,4 +904,8 @@
<loc>https://ghostfol.io/pt/sobre/politica-de-privacidade</loc> <loc>https://ghostfol.io/pt/sobre/politica-de-privacidade</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod> <lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url> </url>
<url>
<loc>https://ghostfol.io/tr</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
</urlset> </urlset>

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

@ -18,7 +18,8 @@ const descriptions = {
fr: 'Ghostfolio est un dashboard de finances personnelles qui permet de suivre vos actifs comme les actions, les ETF ou les crypto-monnaies sur plusieurs plateformes.', fr: 'Ghostfolio est un dashboard de finances personnelles qui permet de suivre vos actifs comme les actions, les ETF ou les crypto-monnaies sur plusieurs plateformes.',
it: 'Ghostfolio è un dashboard di finanza personale per tenere traccia delle vostre attività come azioni, ETF o criptovalute su più piattaforme.', it: 'Ghostfolio è un dashboard di finanza personale per tenere traccia delle vostre attività come azioni, ETF o criptovalute su più piattaforme.',
nl: 'Ghostfolio is een persoonlijk financieel dashboard om uw activa zoals aandelen, ETF’s of cryptocurrencies over meerdere platforms bij te houden.', nl: 'Ghostfolio is een persoonlijk financieel dashboard om uw activa zoals aandelen, ETF’s of cryptocurrencies over meerdere platforms bij te houden.',
pt: 'Ghostfolio é um dashboard de finanças pessoais para acompanhar os seus activos como acções, ETFs ou criptomoedas em múltiplas plataformas.' pt: 'Ghostfolio é um dashboard de finanças pessoais para acompanhar os seus activos como acções, ETFs ou criptomoedas em múltiplas plataformas.',
tr: 'Ghostfolio, hisse senetleri, ETF’ler veya kripto para birimleri gibi varlıklarınızı birden fazla platformda takip etmenizi sağlayan bir kişisel finans panosudur.'
}; };
const title = 'Ghostfolio – Open Source Wealth Management Software'; const title = 'Ghostfolio – Open Source Wealth Management Software';

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

@ -127,6 +127,10 @@ export class DataGatheringService {
uniqueAssets = await this.getUniqueAssets(); uniqueAssets = await this.getUniqueAssets();
} }
if (uniqueAssets.length <= 0) {
return;
}
const assetProfiles = const assetProfiles =
await this.dataProviderService.getAssetProfiles(uniqueAssets); await this.dataProviderService.getAssetProfiles(uniqueAssets);
const symbolProfiles = const symbolProfiles =

14
apps/client/project.json

@ -63,6 +63,10 @@
"baseHref": "/pt/", "baseHref": "/pt/",
"localize": ["pt"] "localize": ["pt"]
}, },
"development-tr": {
"baseHref": "/tr/",
"localize": ["tr"]
},
"production": { "production": {
"fileReplacements": [ "fileReplacements": [
{ {
@ -165,6 +169,9 @@
"development-pt": { "development-pt": {
"browserTarget": "client:build:development-pt" "browserTarget": "client:build:development-pt"
}, },
"development-tr": {
"browserTarget": "client:build:development-tr"
},
"production": { "production": {
"browserTarget": "client:build:production" "browserTarget": "client:build:production"
} }
@ -182,7 +189,8 @@
"messages.fr.xlf", "messages.fr.xlf",
"messages.it.xlf", "messages.it.xlf",
"messages.nl.xlf", "messages.nl.xlf",
"messages.pt.xlf" "messages.pt.xlf",
"messages.tr.xlf"
] ]
} }
}, },
@ -226,6 +234,10 @@
"pt": { "pt": {
"baseHref": "/pt/", "baseHref": "/pt/",
"translation": "apps/client/src/locales/messages.pt.xlf" "translation": "apps/client/src/locales/messages.pt.xlf"
},
"tr": {
"baseHref": "/tr/",
"translation": "apps/client/src/locales/messages.tr.xlf"
} }
}, },
"sourceLocale": "en" "sourceLocale": "en"

5
apps/client/src/app/app.component.html

@ -152,6 +152,11 @@
<li> <li>
<a href="../pt" title="Ghostfolio in Português">Português</a> <a href="../pt" title="Ghostfolio in Português">Português</a>
</li> </li>
<!--
<li>
<a href="../tr" title="Ghostfolio in Türkçe">Türkçe</a>
</li>
-->
</ul> </ul>
</div> </div>
</div> </div>

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

@ -142,11 +142,11 @@
> >
<mat-card-content <mat-card-content
><a [routerLink]="routerLinkPricing">Ghostfolio Premium</a> is a fully ><a [routerLink]="routerLinkPricing">Ghostfolio Premium</a> is a fully
managed Ghostfolio cloud offering for ambitious investors. The revenue managed Ghostfolio cloud offering for ambitious investors. Revenue is
is used to cover the hosting infrastructure and to fund the ongoing used to cover the costs of the hosting infrastructure and to fund
development. It is the Open Source code base with some extras like the ongoing development. It is the Open Source code base with some extras
<a [routerLink]="routerLinkMarkets">markets overview</a> and a like the <a [routerLink]="routerLinkMarkets">markets overview</a> and
professional data provider.</mat-card-content a professional data provider.</mat-card-content
> >
</mat-card> </mat-card>
<mat-card appearance="outlined" class="mb-3"> <mat-card appearance="outlined" class="mb-3">

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

@ -245,7 +245,7 @@
<h4 i18n>Multi-Language</h4> <h4 i18n>Multi-Language</h4>
<p class="m-0"> <p class="m-0">
Use Ghostfolio in multiple languages: English, Dutch, French, Use Ghostfolio in multiple languages: English, Dutch, French,
German, Italian, Portuguese and Spanish are currently German, Italian, Portuguese, Spanish and Turkish are currently
supported. supported.
</p> </p>
</div> </div>

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

@ -6,8 +6,8 @@
<p i18n> <p i18n>
Our official Ghostfolio Premium cloud offering is the easiest way to Our official Ghostfolio Premium cloud offering is the easiest way to
get started. Due to the time it saves, this will be the best option get started. Due to the time it saves, this will be the best option
for most people. The revenue is used to cover the hosting for most people. Revenue is used to cover the costs of the hosting
infrastructure and to fund the ongoing development of Ghostfolio. infrastructure and to fund ongoing development.
</p> </p>
<p *ngIf="user?.subscription?.type === 'Basic'"> <p *ngIf="user?.subscription?.type === 'Basic'">
If you plan to open an account at <i>DEGIRO</i>, <i>frankly</i>, If you plan to open an account at <i>DEGIRO</i>, <i>frankly</i>,

8
apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html

@ -96,16 +96,16 @@
Open Source Software Open Source Software
</td> </td>
<td class="mat-mdc-cell px-1 py-2"> <td class="mat-mdc-cell px-1 py-2">
<ng-container *ngIf="product1.isOpenSource === true" i18n <ng-container *ngIf="product1.isOpenSource" i18n
>✅ Yes</ng-container >✅ Yes</ng-container
><ng-container *ngIf="product1.isOpenSource === false" i18n ><ng-container *ngIf="!product1.isOpenSource" i18n
>❌ No</ng-container >❌ No</ng-container
> >
</td> </td>
<td class="mat-mdc-cell px-1 py-2"> <td class="mat-mdc-cell px-1 py-2">
<ng-container *ngIf="product2.isOpenSource === true" i18n <ng-container *ngIf="product2.isOpenSource" i18n
>✅ Yes</ng-container >✅ Yes</ng-container
><ng-container *ngIf="product2.isOpenSource === false" i18n ><ng-container *ngIf="!product2.isOpenSource" i18n
>❌ No >❌ No
</ng-container> </ng-container>
</td> </td>

49
apps/client/src/app/pages/resources/personal-finance-tools/products.ts

@ -1,6 +1,7 @@
import { Product } from '@ghostfolio/common/interfaces'; import { Product } from '@ghostfolio/common/interfaces';
import { AltooPageComponent } from './products/altoo-page.component'; import { AltooPageComponent } from './products/altoo-page.component';
import { CapMonPageComponent } from './products/capmon-page.component';
import { CopilotMoneyPageComponent } from './products/copilot-money-page.component'; import { CopilotMoneyPageComponent } from './products/copilot-money-page.component';
import { DeltaPageComponent } from './products/delta-page.component'; import { DeltaPageComponent } from './products/delta-page.component';
import { DivvyDiaryPageComponent } from './products/divvydiary-page.component'; import { DivvyDiaryPageComponent } from './products/divvydiary-page.component';
@ -22,6 +23,7 @@ import { SeekingAlphaPageComponent } from './products/seeking-alpha-page.compone
import { SharesightPageComponent } from './products/sharesight-page.component'; import { SharesightPageComponent } from './products/sharesight-page.component';
import { SimplePortfolioPageComponent } from './products/simple-portfolio-page.component'; import { SimplePortfolioPageComponent } from './products/simple-portfolio-page.component';
import { SnowballAnalyticsPageComponent } from './products/snowball-analytics-page.component'; import { SnowballAnalyticsPageComponent } from './products/snowball-analytics-page.component';
import { StockMarketEyePageComponent } from './products/stockmarketeye-page.component';
import { SumioPageComponent } from './products/sumio-page.component'; import { SumioPageComponent } from './products/sumio-page.component';
import { UtlunaPageComponent } from './products/utluna-page.component'; import { UtlunaPageComponent } from './products/utluna-page.component';
import { YeekateePageComponent } from './products/yeekatee-page.component'; import { YeekateePageComponent } from './products/yeekatee-page.component';
@ -45,7 +47,7 @@ export const products: Product[] = [
], ],
name: 'Ghostfolio', name: 'Ghostfolio',
origin: $localize`Switzerland`, origin: $localize`Switzerland`,
pricingPerYear: '$19', pricingPerYear: '$24',
region: $localize`Global`, region: $localize`Global`,
slogan: 'Open Source Wealth Management', slogan: 'Open Source Wealth Management',
useAnonymously: true useAnonymously: true
@ -54,18 +56,25 @@ export const products: Product[] = [
component: AltooPageComponent, component: AltooPageComponent,
founded: 2017, founded: 2017,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'altoo', key: 'altoo',
name: 'Altoo Wealth Platform', name: 'Altoo Wealth Platform',
origin: $localize`Switzerland`, origin: $localize`Switzerland`,
slogan: 'Simplicity for Complex Wealth' slogan: 'Simplicity for Complex Wealth'
}, },
{
component: CapMonPageComponent,
founded: 2022,
key: 'capmon',
name: 'CapMon.org',
origin: $localize`Germany`,
note: 'Sunset in 2023',
slogan: 'Next Generation Assets Tracking'
},
{ {
component: CopilotMoneyPageComponent, component: CopilotMoneyPageComponent,
founded: 2019, founded: 2019,
hasFreePlan: false, hasFreePlan: false,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'copilot-money', key: 'copilot-money',
name: 'Copilot Money', name: 'Copilot Money',
origin: $localize`United States`, origin: $localize`United States`,
@ -77,7 +86,6 @@ export const products: Product[] = [
founded: 2017, founded: 2017,
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'delta', key: 'delta',
name: 'Delta Investment Tracker', name: 'Delta Investment Tracker',
note: 'Acquired by eToro', note: 'Acquired by eToro',
@ -89,7 +97,6 @@ export const products: Product[] = [
founded: 2019, founded: 2019,
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'divvydiary', key: 'divvydiary',
languages: ['Deutsch', 'English'], languages: ['Deutsch', 'English'],
name: 'DivvyDiary', name: 'DivvyDiary',
@ -102,7 +109,6 @@ export const products: Product[] = [
founded: 2020, founded: 2020,
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'exirio', key: 'exirio',
name: 'Exirio', name: 'Exirio',
origin: $localize`United States`, origin: $localize`United States`,
@ -113,7 +119,6 @@ export const products: Product[] = [
component: FolisharePageComponent, component: FolisharePageComponent,
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'folishare', key: 'folishare',
languages: ['Deutsch', 'English'], languages: ['Deutsch', 'English'],
name: 'folishare', name: 'folishare',
@ -126,7 +131,6 @@ export const products: Product[] = [
founded: 2020, founded: 2020,
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'getquin', key: 'getquin',
languages: ['Deutsch', 'English'], languages: ['Deutsch', 'English'],
name: 'getquin', name: 'getquin',
@ -138,7 +142,6 @@ export const products: Product[] = [
component: GoSpatzPageComponent, component: GoSpatzPageComponent,
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'gospatz', key: 'gospatz',
name: 'goSPATZ', name: 'goSPATZ',
origin: $localize`Germany`, origin: $localize`Germany`,
@ -149,7 +152,6 @@ export const products: Product[] = [
founded: 2011, founded: 2011,
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'justetf', key: 'justetf',
name: 'justETF', name: 'justETF',
origin: $localize`Germany`, origin: $localize`Germany`,
@ -161,7 +163,6 @@ export const products: Product[] = [
founded: 2019, founded: 2019,
hasFreePlan: false, hasFreePlan: false,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'kubera', key: 'kubera',
name: 'Kubera®', name: 'Kubera®',
origin: $localize`United States`, origin: $localize`United States`,
@ -173,7 +174,6 @@ export const products: Product[] = [
founded: 2022, founded: 2022,
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'markets.sh', key: 'markets.sh',
languages: ['English'], languages: ['English'],
name: 'markets.sh', name: 'markets.sh',
@ -186,7 +186,6 @@ export const products: Product[] = [
component: MaybeFinancePageComponent, component: MaybeFinancePageComponent,
founded: 2021, founded: 2021,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'maybe-finance', key: 'maybe-finance',
languages: ['English'], languages: ['English'],
name: 'Maybe Finance', name: 'Maybe Finance',
@ -200,7 +199,6 @@ export const products: Product[] = [
component: MonsePageComponent, component: MonsePageComponent,
hasFreePlan: false, hasFreePlan: false,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'monse', key: 'monse',
name: 'Monse', name: 'Monse',
pricingPerYear: '$60', pricingPerYear: '$60',
@ -211,7 +209,6 @@ export const products: Product[] = [
founded: 2020, founded: 2020,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
hasFreePlan: true, hasFreePlan: true,
isOpenSource: false,
key: 'parqet', key: 'parqet',
name: 'Parqet', name: 'Parqet',
note: 'Originally named as Tresor One', note: 'Originally named as Tresor One',
@ -224,7 +221,6 @@ export const products: Product[] = [
component: PlannixPageComponent, component: PlannixPageComponent,
founded: 2023, founded: 2023,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'plannix', key: 'plannix',
name: 'Plannix', name: 'Plannix',
origin: $localize`Italy`, origin: $localize`Italy`,
@ -234,7 +230,6 @@ export const products: Product[] = [
component: PortfolioDividendTrackerPageComponent, component: PortfolioDividendTrackerPageComponent,
hasFreePlan: false, hasFreePlan: false,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'portfolio-dividend-tracker', key: 'portfolio-dividend-tracker',
languages: ['English', 'Nederlands'], languages: ['English', 'Nederlands'],
name: 'Portfolio Dividend Tracker', name: 'Portfolio Dividend Tracker',
@ -247,7 +242,6 @@ export const products: Product[] = [
founded: 2021, founded: 2021,
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'portseido', key: 'portseido',
languages: ['Deutsch', 'English', 'Français', 'Nederlands'], languages: ['Deutsch', 'English', 'Français', 'Nederlands'],
name: 'Portseido', name: 'Portseido',
@ -260,7 +254,6 @@ export const products: Product[] = [
founded: 2021, founded: 2021,
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: true, hasSelfHostingAbility: true,
isOpenSource: false,
key: 'projectionlab', key: 'projectionlab',
name: 'ProjectionLab', name: 'ProjectionLab',
origin: $localize`United States`, origin: $localize`United States`,
@ -272,7 +265,6 @@ export const products: Product[] = [
founded: 2004, founded: 2004,
hasFreePlan: false, hasFreePlan: false,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'seeking-alpha', key: 'seeking-alpha',
name: 'Seeking Alpha', name: 'Seeking Alpha',
origin: $localize`United States`, origin: $localize`United States`,
@ -284,7 +276,6 @@ export const products: Product[] = [
founded: 2007, founded: 2007,
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'sharesight', key: 'sharesight',
name: 'Sharesight', name: 'Sharesight',
origin: $localize`New Zealand`, origin: $localize`New Zealand`,
@ -296,7 +287,6 @@ export const products: Product[] = [
component: SimplePortfolioPageComponent, component: SimplePortfolioPageComponent,
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'simple-portfolio', key: 'simple-portfolio',
name: 'Simple Portfolio', name: 'Simple Portfolio',
origin: $localize`Czech Republic`, origin: $localize`Czech Republic`,
@ -308,18 +298,25 @@ export const products: Product[] = [
founded: 2021, founded: 2021,
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'snowball-analytics', key: 'snowball-analytics',
name: 'Snowball Analytics', name: 'Snowball Analytics',
origin: 'France', origin: $localize`France`,
pricingPerYear: '$80', pricingPerYear: '$80',
slogan: 'Simple and powerful portfolio tracker' slogan: 'Simple and powerful portfolio tracker'
}, },
{
component: StockMarketEyePageComponent,
founded: 2008,
key: 'stockmarketeye',
name: 'StockMarketEye',
origin: $localize`France`,
note: 'Sunset in 2023',
slogan: 'A Powerful Portfolio & Investment Tracking App'
},
{ {
component: SumioPageComponent, component: SumioPageComponent,
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'sumio', key: 'sumio',
name: 'Sumio', name: 'Sumio',
origin: $localize`Czech Republic`, origin: $localize`Czech Republic`,
@ -330,7 +327,6 @@ export const products: Product[] = [
component: UtlunaPageComponent, component: UtlunaPageComponent,
hasFreePlan: true, hasFreePlan: true,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'utluna', key: 'utluna',
languages: ['Deutsch', 'English', 'Français'], languages: ['Deutsch', 'English', 'Français'],
name: 'Utluna', name: 'Utluna',
@ -343,7 +339,6 @@ export const products: Product[] = [
component: YeekateePageComponent, component: YeekateePageComponent,
founded: 2021, founded: 2021,
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false,
key: 'yeekatee', key: 'yeekatee',
name: 'yeekatee', name: 'yeekatee',
origin: $localize`Switzerland`, origin: $localize`Switzerland`,

31
apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts

@ -0,0 +1,31 @@
import { CommonModule } from '@angular/common';
import { Component } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router';
import { products } from '../products';
@Component({
host: { class: 'page' },
imports: [CommonModule, MatButtonModule, RouterModule],
selector: 'gf-capmon-page',
standalone: true,
styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html'
})
export class CapMonPageComponent {
public product1 = products.find(({ key }) => {
return key === 'ghostfolio';
});
public product2 = products.find(({ key }) => {
return key === 'capmon';
});
public routerLinkAbout = ['/' + $localize`about`];
public routerLinkFeatures = ['/' + $localize`features`];
public routerLinkResourcesPersonalFinanceTools = [
'/' + $localize`resources`,
'personal-finance-tools'
];
}

31
apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts

@ -0,0 +1,31 @@
import { CommonModule } from '@angular/common';
import { Component } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router';
import { products } from '../products';
@Component({
host: { class: 'page' },
imports: [CommonModule, MatButtonModule, RouterModule],
selector: 'gf-stockmarketeye-page',
standalone: true,
styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html'
})
export class StockMarketEyePageComponent {
public product1 = products.find(({ key }) => {
return key === 'ghostfolio';
});
public product2 = products.find(({ key }) => {
return key === 'stockmarketeye';
});
public routerLinkAbout = ['/' + $localize`about`];
public routerLinkFeatures = ['/' + $localize`features`];
public routerLinkResourcesPersonalFinanceTools = [
'/' + $localize`resources`,
'personal-finance-tools'
];
}

3
apps/client/src/app/pages/user-account/user-account-page.component.ts

@ -66,7 +66,8 @@ export class UserAccountPageComponent implements OnDestroy, OnInit {
'fr', 'fr',
'it', 'it',
'nl', 'nl',
'pt' 'pt',
'tr'
]; ];
public price: number; public price: number;
public priceId: string; public priceId: string;

4
apps/client/src/app/pages/user-account/user-account-page.html

@ -160,6 +160,10 @@
>Português (<ng-container i18n>Community</ng-container >Português (<ng-container i18n>Community</ng-container
>)</mat-option >)</mat-option
> >
<mat-option value="tr"
>Türkçe (<ng-container i18n>Community</ng-container
>)</mat-option
>
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
</div> </div>

27
apps/client/src/app/services/import-activities.service.ts

@ -3,8 +3,8 @@ import { Injectable } from '@angular/core';
import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto'; import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto';
import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto'; import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto';
import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface'; import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface';
import { parseDate as parseDateHelper } from '@ghostfolio/common/helper';
import { Account, DataSource, Type } from '@prisma/client'; import { Account, DataSource, Type } from '@prisma/client';
import { isMatch, parse, parseISO } from 'date-fns';
import { isFinite } from 'lodash'; import { isFinite } from 'lodash';
import { parse as csvToJson } from 'papaparse'; import { parse as csvToJson } from 'papaparse';
import { EMPTY } from 'rxjs'; import { EMPTY } from 'rxjs';
@ -219,31 +219,12 @@ export class ImportActivitiesService {
item: any; item: any;
}) { }) {
item = this.lowercaseKeys(item); item = this.lowercaseKeys(item);
let date: string;
for (const key of ImportActivitiesService.DATE_KEYS) { for (const key of ImportActivitiesService.DATE_KEYS) {
if (item[key]) { if (item[key]) {
if (isMatch(item[key], 'dd-MM-yyyy') && item[key].length === 10) { try {
// Check length to only match yyyy (and not yy) return parseDateHelper(item[key].toString()).toISOString();
date = parse(item[key], 'dd-MM-yyyy', new Date()).toISOString(); } catch {}
} else if (
isMatch(item[key], 'dd/MM/yyyy') &&
item[key].length === 10
) {
// Check length to only match yyyy (and not yy)
date = parse(item[key], 'dd/MM/yyyy', new Date()).toISOString();
} else if (isMatch(item[key], 'yyyyMMdd') && item[key].length === 8) {
// Check length to only match yyyy (and not yy)
date = parse(item[key], 'yyyyMMdd', new Date()).toISOString();
} else {
try {
date = parseISO(item[key]).toISOString();
} catch {}
}
if (date) {
return date;
}
} }
} }

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

@ -22,7 +22,7 @@
<target state="translated">Das Ausfallrisiko beim Börsenhandel kann erheblich sein. Es ist nicht ratsam, Geld zu investieren, welches du kurzfristig benötigst.</target> <target state="translated">Das Ausfallrisiko beim Börsenhandel kann erheblich sein. Es ist nicht ratsam, Geld zu investieren, welches du kurzfristig benötigst.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/app.component.html</context> <context context-type="sourcefile">apps/client/src/app/app.component.html</context>
<context context-type="linenumber">169,170</context> <context context-type="linenumber">172,173</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b6192ee60a5e0e40874f4d02fbaaa584a0f1541e" datatype="html"> <trans-unit id="b6192ee60a5e0e40874f4d02fbaaa584a0f1541e" datatype="html">
@ -1608,7 +1608,7 @@
<target state="translated">Bitte gebe deinen Gutscheincode ein:</target> <target state="translated">Bitte gebe deinen Gutscheincode ein:</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">262</context> <context context-type="linenumber">263</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4420880039966769543" datatype="html"> <trans-unit id="4420880039966769543" datatype="html">
@ -1616,7 +1616,7 @@
<target state="translated">Gutscheincode konnte nicht eingelöst werden</target> <target state="translated">Gutscheincode konnte nicht eingelöst werden</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">273</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4819099731531004979" datatype="html"> <trans-unit id="4819099731531004979" datatype="html">
@ -1624,7 +1624,7 @@
<target state="translated">Gutscheincode wurde eingelöst</target> <target state="translated">Gutscheincode wurde eingelöst</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">284</context> <context context-type="linenumber">285</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7967484035994732534" datatype="html"> <trans-unit id="7967484035994732534" datatype="html">
@ -1632,7 +1632,7 @@
<target state="translated">Neu laden</target> <target state="translated">Neu laden</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">285</context> <context context-type="linenumber">286</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7963559562180316948" datatype="html"> <trans-unit id="7963559562180316948" datatype="html">
@ -1640,7 +1640,7 @@
<target state="translated">Möchtest du diese Anmeldemethode wirklich löschen?</target> <target state="translated">Möchtest du diese Anmeldemethode wirklich löschen?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">331</context> <context context-type="linenumber">332</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="29881a45dafbe5aa05cd9d0441a4c0c2fb06df92" datatype="html"> <trans-unit id="29881a45dafbe5aa05cd9d0441a4c0c2fb06df92" datatype="html">
@ -1724,7 +1724,7 @@
<target state="translated">Lokalität</target> <target state="translated">Lokalität</target>
<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">169</context> <context context-type="linenumber">173</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html"> <trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -1732,7 +1732,7 @@
<target state="translated">Datums- und Zahlenformat</target> <target state="translated">Datums- und Zahlenformat</target>
<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">171</context> <context context-type="linenumber">175</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html"> <trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -1744,7 +1744,7 @@
</context-group> </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">223</context> <context context-type="linenumber">227</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="78cf1b9b94e0e93e65d1d522001a5c54304e9f25" datatype="html"> <trans-unit id="78cf1b9b94e0e93e65d1d522001a5c54304e9f25" datatype="html">
@ -1752,7 +1752,7 @@
<target state="translated"> Einloggen mit Fingerabdruck </target> <target state="translated"> Einloggen mit Fingerabdruck </target>
<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">240,242</context> <context context-type="linenumber">244,246</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html"> <trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -1760,7 +1760,7 @@
<target state="translated">Benutzer ID</target> <target state="translated">Benutzer ID</target>
<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">273</context> <context context-type="linenumber">277</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html"> <trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -1768,7 +1768,7 @@
<target state="translated">Zugangsberechtigung</target> <target state="translated">Zugangsberechtigung</target>
<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">291</context> <context context-type="linenumber">295</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html"> <trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -2864,7 +2864,7 @@
<target state="translated">Experimentelle Funktionen</target> <target state="translated">Experimentelle Funktionen</target>
<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">258</context> <context context-type="linenumber">262</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="44fcf77e86dc038202ebad6b46d1d833d60d781b" datatype="html"> <trans-unit id="44fcf77e86dc038202ebad6b46d1d833d60d781b" datatype="html">
@ -2912,7 +2912,7 @@
<target state="translated">Aussehen</target> <target state="translated">Aussehen</target>
<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">197</context> <context context-type="linenumber">201</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html"> <trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -2920,7 +2920,7 @@
<target state="translated">Automatisch</target> <target state="translated">Automatisch</target>
<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">212</context> <context context-type="linenumber">216</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html"> <trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -2928,7 +2928,7 @@
<target state="translated">Hell</target> <target state="translated">Hell</target>
<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">213</context> <context context-type="linenumber">217</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html"> <trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -2936,7 +2936,7 @@
<target state="translated">Dunkel</target> <target state="translated">Dunkel</target>
<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">214</context> <context context-type="linenumber">218</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="112783260724635106" datatype="html"> <trans-unit id="112783260724635106" datatype="html">
@ -3222,6 +3222,10 @@
<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">160</context> <context context-type="linenumber">160</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context>
<context context-type="linenumber">164</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="064d88bead9e71bd849ecaefd8b38cca8f195a88" datatype="html"> <trans-unit id="064d88bead9e71bd849ecaefd8b38cca8f195a88" datatype="html">
<source>Activities Count</source> <source>Activities Count</source>
@ -3452,7 +3456,7 @@
<target state="translated"> Unbeschwertes Erlebnis für turbulente Zeiten </target> <target state="translated"> Unbeschwertes Erlebnis für turbulente Zeiten </target>
<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">224,226</context> <context context-type="linenumber">228,230</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html"> <trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html">
@ -3460,7 +3464,7 @@
<target state="translated"> Vorschau auf kommende Funktionalität </target> <target state="translated"> Vorschau auf kommende Funktionalität </target>
<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">259,261</context> <context context-type="linenumber">263,265</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="280c5b1f5b5b748fbbb37bf7a12c37f41539c1ff" datatype="html"> <trans-unit id="280c5b1f5b5b748fbbb37bf7a12c37f41539c1ff" datatype="html">
@ -3847,9 +3851,9 @@
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="356c1521a0dbc186d553e8c71bb7c64bc3998433" datatype="html"> <trans-unit id="de0d77a5255f97548d2b579f78c20c911a71820f" datatype="html">
<source> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. The revenue is used to cover the hosting infrastructure and to fund the ongoing development of Ghostfolio. </source> <source> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. </source>
<target state="translated"> Unser offizielles Ghostfolio Premium Cloud-Angebot ist der einfachste Weg für den Einstieg. Aufgrund der Zeitersparnis ist dies die beste Option für die meisten Nutzer. Die Einnahmen werden zur Deckung der Betriebskosten und zur Finanzierung der Weiterentwicklung von Ghostfolio verwendet. </target> <target state="translated"> Unser offizielles Ghostfolio Premium Cloud-Angebot ist der einfachste Weg für den Einstieg. Aufgrund der Zeitersparnis ist dies die beste Option für die meisten Nutzer. Die Einnahmen werden zur Deckung der Betriebskosten und zur Finanzierung der Weiterentwicklung verwendet. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">6,11</context> <context context-type="linenumber">6,11</context>
@ -7188,7 +7192,7 @@
<target state="translated">Biometrische Authentifizierung</target> <target state="translated">Biometrische Authentifizierung</target>
<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">239</context> <context context-type="linenumber">243</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html"> <trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html">
@ -7272,7 +7276,7 @@
<target state="translated">Daten exportieren</target> <target state="translated">Daten exportieren</target>
<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">280</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8298612418414367990" datatype="html"> <trans-unit id="8298612418414367990" datatype="html">

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

@ -23,7 +23,7 @@
<target state="new">El riesgo de pérdida en trading puede ser importante. No es aconsejable invertir dinero que puedas necesitar a corto plazo.</target> <target state="new">El riesgo de pérdida en trading puede ser importante. No es aconsejable invertir dinero que puedas necesitar a corto plazo.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/app.component.html</context> <context context-type="sourcefile">apps/client/src/app/app.component.html</context>
<context context-type="linenumber">169,170</context> <context context-type="linenumber">172,173</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b6192ee60a5e0e40874f4d02fbaaa584a0f1541e" datatype="html"> <trans-unit id="b6192ee60a5e0e40874f4d02fbaaa584a0f1541e" datatype="html">
@ -1606,7 +1606,7 @@
<target state="translated">Por favor, ingresa tu código de cupón:</target> <target state="translated">Por favor, ingresa tu código de cupón:</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">262</context> <context context-type="linenumber">263</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4420880039966769543" datatype="html"> <trans-unit id="4420880039966769543" datatype="html">
@ -1614,7 +1614,7 @@
<target state="translated">No se puede canjear este código de cupón</target> <target state="translated">No se puede canjear este código de cupón</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">273</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4819099731531004979" datatype="html"> <trans-unit id="4819099731531004979" datatype="html">
@ -1622,7 +1622,7 @@
<target state="translated">El codigo de cupón ha sido canjeado</target> <target state="translated">El codigo de cupón ha sido canjeado</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">284</context> <context context-type="linenumber">285</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7967484035994732534" datatype="html"> <trans-unit id="7967484035994732534" datatype="html">
@ -1630,7 +1630,7 @@
<target state="translated">Refrescar</target> <target state="translated">Refrescar</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">285</context> <context context-type="linenumber">286</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7963559562180316948" datatype="html"> <trans-unit id="7963559562180316948" datatype="html">
@ -1638,7 +1638,7 @@
<target state="translated">¿Estás seguro de eliminar este método de acceso?</target> <target state="translated">¿Estás seguro de eliminar este método de acceso?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">331</context> <context context-type="linenumber">332</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="29881a45dafbe5aa05cd9d0441a4c0c2fb06df92" datatype="html"> <trans-unit id="29881a45dafbe5aa05cd9d0441a4c0c2fb06df92" datatype="html">
@ -1722,7 +1722,7 @@
<target state="translated">Ubicación</target> <target state="translated">Ubicación</target>
<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">169</context> <context context-type="linenumber">173</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html"> <trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -1730,7 +1730,7 @@
<target state="translated">Formato de fecha y número</target> <target state="translated">Formato de fecha y número</target>
<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">171</context> <context context-type="linenumber">175</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html"> <trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -1742,7 +1742,7 @@
</context-group> </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">223</context> <context context-type="linenumber">227</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="78cf1b9b94e0e93e65d1d522001a5c54304e9f25" datatype="html"> <trans-unit id="78cf1b9b94e0e93e65d1d522001a5c54304e9f25" datatype="html">
@ -1750,7 +1750,7 @@
<target state="translated"> Accede con huella digital </target> <target state="translated"> Accede con huella digital </target>
<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">240,242</context> <context context-type="linenumber">244,246</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html"> <trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -1758,7 +1758,7 @@
<target state="translated">ID usuario</target> <target state="translated">ID usuario</target>
<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">273</context> <context context-type="linenumber">277</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html"> <trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -1766,7 +1766,7 @@
<target state="translated">Acceso concedido</target> <target state="translated">Acceso concedido</target>
<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">291</context> <context context-type="linenumber">295</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html"> <trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -2862,7 +2862,7 @@
<target state="translated">Funcionalidades experimentales</target> <target state="translated">Funcionalidades experimentales</target>
<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">258</context> <context context-type="linenumber">262</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1931353503905413384" datatype="html"> <trans-unit id="1931353503905413384" datatype="html">
@ -2910,7 +2910,7 @@
<target state="translated">Apariencia</target> <target state="translated">Apariencia</target>
<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">197</context> <context context-type="linenumber">201</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html"> <trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -2918,7 +2918,7 @@
<target state="translated">Automático</target> <target state="translated">Automático</target>
<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">212</context> <context context-type="linenumber">216</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html"> <trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -2926,7 +2926,7 @@
<target state="translated">Claro</target> <target state="translated">Claro</target>
<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">213</context> <context context-type="linenumber">217</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html"> <trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -2934,7 +2934,7 @@
<target state="translated">Oscuro</target> <target state="translated">Oscuro</target>
<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">214</context> <context context-type="linenumber">218</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="112783260724635106" datatype="html"> <trans-unit id="112783260724635106" datatype="html">
@ -3220,6 +3220,10 @@
<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">160</context> <context context-type="linenumber">160</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context>
<context context-type="linenumber">164</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="064d88bead9e71bd849ecaefd8b38cca8f195a88" datatype="html"> <trans-unit id="064d88bead9e71bd849ecaefd8b38cca8f195a88" datatype="html">
<source>Activities Count</source> <source>Activities Count</source>
@ -3450,7 +3454,7 @@
<target state="new"> Distraction-free experience for turbulent times </target> <target state="new"> Distraction-free experience for turbulent times </target>
<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">224,226</context> <context context-type="linenumber">228,230</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html"> <trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html">
@ -3458,7 +3462,7 @@
<target state="new"> Sneak peek at upcoming functionality </target> <target state="new"> Sneak peek at upcoming functionality </target>
<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">259,261</context> <context context-type="linenumber">263,265</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="280c5b1f5b5b748fbbb37bf7a12c37f41539c1ff" datatype="html"> <trans-unit id="280c5b1f5b5b748fbbb37bf7a12c37f41539c1ff" datatype="html">
@ -3845,9 +3849,9 @@
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="356c1521a0dbc186d553e8c71bb7c64bc3998433" datatype="html"> <trans-unit id="de0d77a5255f97548d2b579f78c20c911a71820f" datatype="html">
<source> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. The revenue is used to cover the hosting infrastructure and to fund the ongoing development of Ghostfolio. </source> <source> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. </source>
<target state="new"> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. The revenue is used to cover the hosting infrastructure and to fund the ongoing development of Ghostfolio. </target> <target state="new"> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">6,11</context> <context context-type="linenumber">6,11</context>
@ -7186,7 +7190,7 @@
<target state="new">Biometric Authentication</target> <target state="new">Biometric Authentication</target>
<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">239</context> <context context-type="linenumber">243</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html"> <trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html">
@ -7270,7 +7274,7 @@
<target state="new">Export Data</target> <target state="new">Export Data</target>
<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">280</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8298612418414367990" datatype="html"> <trans-unit id="8298612418414367990" datatype="html">

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

@ -6,7 +6,7 @@
<target state="translated">Le risque de perte en investissant peut être important. Il est déconseillé d&apos;investir de l&apos;argent dont vous pourriez avoir besoin à court terme.</target> <target state="translated">Le risque de perte en investissant peut être important. Il est déconseillé d&apos;investir de l&apos;argent dont vous pourriez avoir besoin à court terme.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/app.component.html</context> <context context-type="sourcefile">apps/client/src/app/app.component.html</context>
<context context-type="linenumber">169,170</context> <context context-type="linenumber">172,173</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="fbaaeb297e70b9a800acf841b9d26c19d60651ef" datatype="html"> <trans-unit id="fbaaeb297e70b9a800acf841b9d26c19d60651ef" datatype="html">
@ -1877,7 +1877,7 @@
<target state="translated">Veuillez entrer votre code promotionnel :</target> <target state="translated">Veuillez entrer votre code promotionnel :</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">262</context> <context context-type="linenumber">263</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4420880039966769543" datatype="html"> <trans-unit id="4420880039966769543" datatype="html">
@ -1885,7 +1885,7 @@
<target state="translated">Le code promotionnel n&apos;a pas pu être appliqué</target> <target state="translated">Le code promotionnel n&apos;a pas pu être appliqué</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">273</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4819099731531004979" datatype="html"> <trans-unit id="4819099731531004979" datatype="html">
@ -1893,7 +1893,7 @@
<target state="translated">Le code promotionnel a été appliqué</target> <target state="translated">Le code promotionnel a été appliqué</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">284</context> <context context-type="linenumber">285</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7967484035994732534" datatype="html"> <trans-unit id="7967484035994732534" datatype="html">
@ -1901,7 +1901,7 @@
<target state="translated">Rafraîchir</target> <target state="translated">Rafraîchir</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">285</context> <context context-type="linenumber">286</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7963559562180316948" datatype="html"> <trans-unit id="7963559562180316948" datatype="html">
@ -1909,7 +1909,7 @@
<target state="translated">Voulez-vous vraiment supprimer cette méthode de connexion ?</target> <target state="translated">Voulez-vous vraiment supprimer cette méthode de connexion ?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">331</context> <context context-type="linenumber">332</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="29881a45dafbe5aa05cd9d0441a4c0c2fb06df92" datatype="html"> <trans-unit id="29881a45dafbe5aa05cd9d0441a4c0c2fb06df92" datatype="html">
@ -2027,13 +2027,17 @@
<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">160</context> <context context-type="linenumber">160</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context>
<context context-type="linenumber">164</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="6b939b00e8481ed8aa8a24d8add7a209d7116759" datatype="html"> <trans-unit id="6b939b00e8481ed8aa8a24d8add7a209d7116759" datatype="html">
<source>Locale</source> <source>Locale</source>
<target state="translated">Paramètres régionaux</target> <target state="translated">Paramètres régionaux</target>
<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">169</context> <context context-type="linenumber">173</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html"> <trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -2041,7 +2045,7 @@
<target state="translated">Format de date et d&apos;heure</target> <target state="translated">Format de date et d&apos;heure</target>
<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">171</context> <context context-type="linenumber">175</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="bbe41ac2ea4a6c00ea941a41b33105048f8e9f13" datatype="html"> <trans-unit id="bbe41ac2ea4a6c00ea941a41b33105048f8e9f13" datatype="html">
@ -2049,7 +2053,7 @@
<target state="translated">Apparence</target> <target state="translated">Apparence</target>
<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">197</context> <context context-type="linenumber">201</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html"> <trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -2057,7 +2061,7 @@
<target state="translated">Auto</target> <target state="translated">Auto</target>
<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">212</context> <context context-type="linenumber">216</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html"> <trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -2065,7 +2069,7 @@
<target state="translated">Clair</target> <target state="translated">Clair</target>
<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">213</context> <context context-type="linenumber">217</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html"> <trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -2073,7 +2077,7 @@
<target state="translated">Sombre</target> <target state="translated">Sombre</target>
<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">214</context> <context context-type="linenumber">218</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html"> <trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -2085,7 +2089,7 @@
</context-group> </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">223</context> <context context-type="linenumber">227</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="78cf1b9b94e0e93e65d1d522001a5c54304e9f25" datatype="html"> <trans-unit id="78cf1b9b94e0e93e65d1d522001a5c54304e9f25" datatype="html">
@ -2093,7 +2097,7 @@
<target state="translated"> Se connecter avec empreinte </target> <target state="translated"> Se connecter avec empreinte </target>
<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">240,242</context> <context context-type="linenumber">244,246</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html"> <trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html">
@ -2101,7 +2105,7 @@
<target state="translated">Fonctionnalités expérimentales</target> <target state="translated">Fonctionnalités expérimentales</target>
<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">258</context> <context context-type="linenumber">262</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html"> <trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -2109,7 +2113,7 @@
<target state="translated">ID d&apos;utilisateur</target> <target state="translated">ID d&apos;utilisateur</target>
<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">273</context> <context context-type="linenumber">277</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html"> <trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -2117,7 +2121,7 @@
<target state="translated">Accès donné</target> <target state="translated">Accès donné</target>
<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">291</context> <context context-type="linenumber">295</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html"> <trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -3449,7 +3453,7 @@
<target state="translated"> Expérience sans distraction pour les périodes tumultueuses </target> <target state="translated"> Expérience sans distraction pour les périodes tumultueuses </target>
<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">224,226</context> <context context-type="linenumber">228,230</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html"> <trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html">
@ -3457,7 +3461,7 @@
<target state="translated"> Avant-première de fonctionnalités futures </target> <target state="translated"> Avant-première de fonctionnalités futures </target>
<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">259,261</context> <context context-type="linenumber">263,265</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="280c5b1f5b5b748fbbb37bf7a12c37f41539c1ff" datatype="html"> <trans-unit id="280c5b1f5b5b748fbbb37bf7a12c37f41539c1ff" datatype="html">
@ -3844,9 +3848,9 @@
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="356c1521a0dbc186d553e8c71bb7c64bc3998433" datatype="html"> <trans-unit id="de0d77a5255f97548d2b579f78c20c911a71820f" datatype="html">
<source> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. The revenue is used to cover the hosting infrastructure and to fund the ongoing development of Ghostfolio. </source> <source> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. </source>
<target state="translated"> Notre offre Ghostfolio Premium cloud est la manière la plus simple de débuter. Grâce au temps qu&apos;elle économise, ce sera la meilleure option pour la plupart des gens. Les revenus sont utilisés pour couvrir les frais d&apos;infrastructures et financer le développement continu de Ghostfolio. </target> <target state="new"> Notre offre Ghostfolio Premium cloud est la manière la plus simple de débuter. Grâce au temps qu&apos;elle économise, ce sera la meilleure option pour la plupart des gens. Les revenus sont utilisés pour couvrir les frais d&apos;infrastructures et financer le développement continu de Ghostfolio. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">6,11</context> <context context-type="linenumber">6,11</context>
@ -7185,7 +7189,7 @@
<target state="new">Biometric Authentication</target> <target state="new">Biometric Authentication</target>
<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">239</context> <context context-type="linenumber">243</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html"> <trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html">
@ -7269,7 +7273,7 @@
<target state="new">Export Data</target> <target state="new">Export Data</target>
<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">280</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8298612418414367990" datatype="html"> <trans-unit id="8298612418414367990" datatype="html">

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

@ -23,7 +23,7 @@
<target state="translated">Il rischio di perdita nel trading può essere notevole. Non è consigliabile investire denaro di cui potresti avere bisogno a breve termine.</target> <target state="translated">Il rischio di perdita nel trading può essere notevole. Non è consigliabile investire denaro di cui potresti avere bisogno a breve termine.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/app.component.html</context> <context context-type="sourcefile">apps/client/src/app/app.component.html</context>
<context context-type="linenumber">169,170</context> <context context-type="linenumber">172,173</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b6192ee60a5e0e40874f4d02fbaaa584a0f1541e" datatype="html"> <trans-unit id="b6192ee60a5e0e40874f4d02fbaaa584a0f1541e" datatype="html">
@ -1606,7 +1606,7 @@
<target state="translated">Inserisci il tuo codice del buono:</target> <target state="translated">Inserisci il tuo codice del buono:</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">262</context> <context context-type="linenumber">263</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4420880039966769543" datatype="html"> <trans-unit id="4420880039966769543" datatype="html">
@ -1614,7 +1614,7 @@
<target state="translated">Impossibile riscattare il codice del buono</target> <target state="translated">Impossibile riscattare il codice del buono</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">273</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4819099731531004979" datatype="html"> <trans-unit id="4819099731531004979" datatype="html">
@ -1622,7 +1622,7 @@
<target state="translated">Il codice del buono è stato riscattato</target> <target state="translated">Il codice del buono è stato riscattato</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">284</context> <context context-type="linenumber">285</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7967484035994732534" datatype="html"> <trans-unit id="7967484035994732534" datatype="html">
@ -1630,7 +1630,7 @@
<target state="translated">Ricarica</target> <target state="translated">Ricarica</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">285</context> <context context-type="linenumber">286</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7963559562180316948" datatype="html"> <trans-unit id="7963559562180316948" datatype="html">
@ -1638,7 +1638,7 @@
<target state="translated">Vuoi davvero rimuovere questo metodo di accesso?</target> <target state="translated">Vuoi davvero rimuovere questo metodo di accesso?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">331</context> <context context-type="linenumber">332</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="29881a45dafbe5aa05cd9d0441a4c0c2fb06df92" datatype="html"> <trans-unit id="29881a45dafbe5aa05cd9d0441a4c0c2fb06df92" datatype="html">
@ -1722,7 +1722,7 @@
<target state="translated">Locale</target> <target state="translated">Locale</target>
<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">169</context> <context context-type="linenumber">173</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html"> <trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -1730,7 +1730,7 @@
<target state="translated">Formato data e numero</target> <target state="translated">Formato data e numero</target>
<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">171</context> <context context-type="linenumber">175</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html"> <trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -1742,7 +1742,7 @@
</context-group> </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">223</context> <context context-type="linenumber">227</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="78cf1b9b94e0e93e65d1d522001a5c54304e9f25" datatype="html"> <trans-unit id="78cf1b9b94e0e93e65d1d522001a5c54304e9f25" datatype="html">
@ -1750,7 +1750,7 @@
<target state="translated"> Accesso con impronta digitale </target> <target state="translated"> Accesso con impronta digitale </target>
<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">240,242</context> <context context-type="linenumber">244,246</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html"> <trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -1758,7 +1758,7 @@
<target state="translated">ID utente</target> <target state="translated">ID utente</target>
<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">273</context> <context context-type="linenumber">277</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html"> <trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -1766,7 +1766,7 @@
<target state="translated">Accesso concesso</target> <target state="translated">Accesso concesso</target>
<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">291</context> <context context-type="linenumber">295</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html"> <trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -2862,7 +2862,7 @@
<target state="translated">Funzionalità sperimentali</target> <target state="translated">Funzionalità sperimentali</target>
<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">258</context> <context context-type="linenumber">262</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1931353503905413384" datatype="html"> <trans-unit id="1931353503905413384" datatype="html">
@ -2910,7 +2910,7 @@
<target state="translated">Aspetto</target> <target state="translated">Aspetto</target>
<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">197</context> <context context-type="linenumber">201</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html"> <trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -2918,7 +2918,7 @@
<target state="translated">Auto</target> <target state="translated">Auto</target>
<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">212</context> <context context-type="linenumber">216</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html"> <trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -2926,7 +2926,7 @@
<target state="translated">Chiaro</target> <target state="translated">Chiaro</target>
<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">213</context> <context context-type="linenumber">217</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html"> <trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -2934,7 +2934,7 @@
<target state="translated">Scuro</target> <target state="translated">Scuro</target>
<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">214</context> <context context-type="linenumber">218</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="112783260724635106" datatype="html"> <trans-unit id="112783260724635106" datatype="html">
@ -3220,6 +3220,10 @@
<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">160</context> <context context-type="linenumber">160</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context>
<context context-type="linenumber">164</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="064d88bead9e71bd849ecaefd8b38cca8f195a88" datatype="html"> <trans-unit id="064d88bead9e71bd849ecaefd8b38cca8f195a88" datatype="html">
<source>Activities Count</source> <source>Activities Count</source>
@ -3450,7 +3454,7 @@
<target state="translated"> Esperienza priva di distrazioni per i periodi più turbolenti </target> <target state="translated"> Esperienza priva di distrazioni per i periodi più turbolenti </target>
<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">224,226</context> <context context-type="linenumber">228,230</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html"> <trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html">
@ -3458,7 +3462,7 @@
<target state="translated"> Un&apos;anteprima delle funzionalità in arrivo </target> <target state="translated"> Un&apos;anteprima delle funzionalità in arrivo </target>
<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">259,261</context> <context context-type="linenumber">263,265</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="280c5b1f5b5b748fbbb37bf7a12c37f41539c1ff" datatype="html"> <trans-unit id="280c5b1f5b5b748fbbb37bf7a12c37f41539c1ff" datatype="html">
@ -3845,9 +3849,9 @@
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="356c1521a0dbc186d553e8c71bb7c64bc3998433" datatype="html"> <trans-unit id="de0d77a5255f97548d2b579f78c20c911a71820f" datatype="html">
<source> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. The revenue is used to cover the hosting infrastructure and to fund the ongoing development of Ghostfolio. </source> <source> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. </source>
<target state="translated"> La nostra offerta cloud ufficiale Ghostfolio Premium è il modo più semplice per iniziare. Grazie al risparmio di tempo, questa è l&apos;opzione migliore per la maggior parte delle persone. I ricavi vengono utilizzati per coprire l&apos;infrastruttura di hosting e per finanziare lo sviluppo continuo di Ghostfolio. </target> <target state="new"> La nostra offerta cloud ufficiale Ghostfolio Premium è il modo più semplice per iniziare. Grazie al risparmio di tempo, questa è l&apos;opzione migliore per la maggior parte delle persone. I ricavi vengono utilizzati per coprire l&apos;infrastruttura di hosting e per finanziare lo sviluppo continuo di Ghostfolio. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">6,11</context> <context context-type="linenumber">6,11</context>
@ -7186,7 +7190,7 @@
<target state="translated">Autenticazione biometrica</target> <target state="translated">Autenticazione biometrica</target>
<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">239</context> <context context-type="linenumber">243</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html"> <trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html">
@ -7270,7 +7274,7 @@
<target state="translated">Esporta dati</target> <target state="translated">Esporta dati</target>
<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">280</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8298612418414367990" datatype="html"> <trans-unit id="8298612418414367990" datatype="html">

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

@ -22,7 +22,7 @@
<target state="translated">Het risico op verlies bij handelen kan aanzienlijk zijn. Het is niet aan te raden om geld te investeren dat je misschien op korte termijn nodig heeft.</target> <target state="translated">Het risico op verlies bij handelen kan aanzienlijk zijn. Het is niet aan te raden om geld te investeren dat je misschien op korte termijn nodig heeft.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/app.component.html</context> <context context-type="sourcefile">apps/client/src/app/app.component.html</context>
<context context-type="linenumber">169,170</context> <context context-type="linenumber">172,173</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b6192ee60a5e0e40874f4d02fbaaa584a0f1541e" datatype="html"> <trans-unit id="b6192ee60a5e0e40874f4d02fbaaa584a0f1541e" datatype="html">
@ -1605,7 +1605,7 @@
<target state="translated">Voer je couponcode in:</target> <target state="translated">Voer je couponcode in:</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">262</context> <context context-type="linenumber">263</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4420880039966769543" datatype="html"> <trans-unit id="4420880039966769543" datatype="html">
@ -1613,7 +1613,7 @@
<target state="translated">Kon je kortingscode niet inwisselen</target> <target state="translated">Kon je kortingscode niet inwisselen</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">273</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4819099731531004979" datatype="html"> <trans-unit id="4819099731531004979" datatype="html">
@ -1621,7 +1621,7 @@
<target state="translated">Je couponcode is ingewisseld</target> <target state="translated">Je couponcode is ingewisseld</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">284</context> <context context-type="linenumber">285</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7967484035994732534" datatype="html"> <trans-unit id="7967484035994732534" datatype="html">
@ -1629,7 +1629,7 @@
<target state="translated">Herladen</target> <target state="translated">Herladen</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">285</context> <context context-type="linenumber">286</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7963559562180316948" datatype="html"> <trans-unit id="7963559562180316948" datatype="html">
@ -1637,7 +1637,7 @@
<target state="translated">Wil je deze aanmeldingsmethode echt verwijderen?</target> <target state="translated">Wil je deze aanmeldingsmethode echt verwijderen?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">331</context> <context context-type="linenumber">332</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="29881a45dafbe5aa05cd9d0441a4c0c2fb06df92" datatype="html"> <trans-unit id="29881a45dafbe5aa05cd9d0441a4c0c2fb06df92" datatype="html">
@ -1721,7 +1721,7 @@
<target state="translated">Locatie</target> <target state="translated">Locatie</target>
<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">169</context> <context context-type="linenumber">173</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html"> <trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -1729,7 +1729,7 @@
<target state="translated">Datum- en getalnotatie</target> <target state="translated">Datum- en getalnotatie</target>
<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">171</context> <context context-type="linenumber">175</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html"> <trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -1741,7 +1741,7 @@
</context-group> </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">223</context> <context context-type="linenumber">227</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="78cf1b9b94e0e93e65d1d522001a5c54304e9f25" datatype="html"> <trans-unit id="78cf1b9b94e0e93e65d1d522001a5c54304e9f25" datatype="html">
@ -1749,7 +1749,7 @@
<target state="translated"> Aanmelden met vingerafdruk </target> <target state="translated"> Aanmelden met vingerafdruk </target>
<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">240,242</context> <context context-type="linenumber">244,246</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html"> <trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -1757,7 +1757,7 @@
<target state="translated">Gebruikers-ID</target> <target state="translated">Gebruikers-ID</target>
<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">273</context> <context context-type="linenumber">277</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html"> <trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -1765,7 +1765,7 @@
<target state="translated">Verleende toegang</target> <target state="translated">Verleende toegang</target>
<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">291</context> <context context-type="linenumber">295</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html"> <trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -2861,7 +2861,7 @@
<target state="translated">Experimentele functies</target> <target state="translated">Experimentele functies</target>
<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">258</context> <context context-type="linenumber">262</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1931353503905413384" datatype="html"> <trans-unit id="1931353503905413384" datatype="html">
@ -2909,7 +2909,7 @@
<target state="translated">Weergave</target> <target state="translated">Weergave</target>
<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">197</context> <context context-type="linenumber">201</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html"> <trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -2917,7 +2917,7 @@
<target state="translated">Automatisch</target> <target state="translated">Automatisch</target>
<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">212</context> <context context-type="linenumber">216</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html"> <trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -2925,7 +2925,7 @@
<target state="translated">Licht</target> <target state="translated">Licht</target>
<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">213</context> <context context-type="linenumber">217</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html"> <trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -2933,7 +2933,7 @@
<target state="translated">Donker</target> <target state="translated">Donker</target>
<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">214</context> <context context-type="linenumber">218</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="112783260724635106" datatype="html"> <trans-unit id="112783260724635106" datatype="html">
@ -3219,6 +3219,10 @@
<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">160</context> <context context-type="linenumber">160</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context>
<context context-type="linenumber">164</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="064d88bead9e71bd849ecaefd8b38cca8f195a88" datatype="html"> <trans-unit id="064d88bead9e71bd849ecaefd8b38cca8f195a88" datatype="html">
<source>Activities Count</source> <source>Activities Count</source>
@ -3449,7 +3453,7 @@
<target state="translated"> Afleidingsvrije ervaring voor roerige tijden </target> <target state="translated"> Afleidingsvrije ervaring voor roerige tijden </target>
<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">224,226</context> <context context-type="linenumber">228,230</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html"> <trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html">
@ -3457,7 +3461,7 @@
<target state="translated"> Voorproefje van nieuwe functionaliteit </target> <target state="translated"> Voorproefje van nieuwe functionaliteit </target>
<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">259,261</context> <context context-type="linenumber">263,265</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="280c5b1f5b5b748fbbb37bf7a12c37f41539c1ff" datatype="html"> <trans-unit id="280c5b1f5b5b748fbbb37bf7a12c37f41539c1ff" datatype="html">
@ -3844,9 +3848,9 @@
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="356c1521a0dbc186d553e8c71bb7c64bc3998433" datatype="html"> <trans-unit id="de0d77a5255f97548d2b579f78c20c911a71820f" datatype="html">
<source> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. The revenue is used to cover the hosting infrastructure and to fund the ongoing development of Ghostfolio. </source> <source> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. </source>
<target state="translated"> Ons officiële Ghostfolio Premium cloud-aanbod is de eenvoudigste manier om te beginnen. Vanwege de tijd die het bespaart, zal dit voor de meeste mensen de beste optie zijn. De inkomsten worden gebruikt om de hostinginfrastructuur te dekken en de voortdurende ontwikkeling van Ghostfolio te financieren. </target> <target state="new"> Ons officiële Ghostfolio Premium cloud-aanbod is de eenvoudigste manier om te beginnen. Vanwege de tijd die het bespaart, zal dit voor de meeste mensen de beste optie zijn. De inkomsten worden gebruikt om de hostinginfrastructuur te dekken en de voortdurende ontwikkeling van Ghostfolio te financieren. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">6,11</context> <context context-type="linenumber">6,11</context>
@ -7185,7 +7189,7 @@
<target state="translated">Biometrische authenticatie</target> <target state="translated">Biometrische authenticatie</target>
<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">239</context> <context context-type="linenumber">243</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html"> <trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html">
@ -7269,7 +7273,7 @@
<target state="translated">Exporteer Data</target> <target state="translated">Exporteer Data</target>
<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">280</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8298612418414367990" datatype="html"> <trans-unit id="8298612418414367990" datatype="html">

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

@ -6,7 +6,7 @@
<target state="translated">O risco de perda em investimentos pode ser substancial. Não é aconselhável investir dinheiro que possa vir a precisar a curto prazo.</target> <target state="translated">O risco de perda em investimentos pode ser substancial. Não é aconselhável investir dinheiro que possa vir a precisar a curto prazo.</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/app.component.html</context> <context context-type="sourcefile">apps/client/src/app/app.component.html</context>
<context context-type="linenumber">169,170</context> <context context-type="linenumber">172,173</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="fbaaeb297e70b9a800acf841b9d26c19d60651ef" datatype="html"> <trans-unit id="fbaaeb297e70b9a800acf841b9d26c19d60651ef" datatype="html">
@ -1861,7 +1861,7 @@
<target state="translated">Por favor, insira o seu código de cupão:</target> <target state="translated">Por favor, insira o seu código de cupão:</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">262</context> <context context-type="linenumber">263</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4420880039966769543" datatype="html"> <trans-unit id="4420880039966769543" datatype="html">
@ -1869,7 +1869,7 @@
<target state="translated">Não foi possível resgatar o código de cupão</target> <target state="translated">Não foi possível resgatar o código de cupão</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">273</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4819099731531004979" datatype="html"> <trans-unit id="4819099731531004979" datatype="html">
@ -1877,7 +1877,7 @@
<target state="translated">Código de cupão foi resgatado</target> <target state="translated">Código de cupão foi resgatado</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">284</context> <context context-type="linenumber">285</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7967484035994732534" datatype="html"> <trans-unit id="7967484035994732534" datatype="html">
@ -1885,7 +1885,7 @@
<target state="translated">Atualizar</target> <target state="translated">Atualizar</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">285</context> <context context-type="linenumber">286</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7963559562180316948" datatype="html"> <trans-unit id="7963559562180316948" datatype="html">
@ -1893,7 +1893,7 @@
<target state="translated">Deseja realmente remover este método de início de sessão?</target> <target state="translated">Deseja realmente remover este método de início de sessão?</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">331</context> <context context-type="linenumber">332</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="29881a45dafbe5aa05cd9d0441a4c0c2fb06df92" datatype="html"> <trans-unit id="29881a45dafbe5aa05cd9d0441a4c0c2fb06df92" datatype="html">
@ -1997,7 +1997,7 @@
<target state="translated">Localidade</target> <target state="translated">Localidade</target>
<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">169</context> <context context-type="linenumber">173</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html"> <trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -2005,7 +2005,7 @@
<target state="translated">Formato de números e datas</target> <target state="translated">Formato de números e datas</target>
<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">171</context> <context context-type="linenumber">175</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html"> <trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -2017,7 +2017,7 @@
</context-group> </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">223</context> <context context-type="linenumber">227</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="bbe41ac2ea4a6c00ea941a41b33105048f8e9f13" datatype="html"> <trans-unit id="bbe41ac2ea4a6c00ea941a41b33105048f8e9f13" datatype="html">
@ -2025,7 +2025,7 @@
<target state="translated">Aparência</target> <target state="translated">Aparência</target>
<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">197</context> <context context-type="linenumber">201</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html"> <trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -2033,7 +2033,7 @@
<target state="translated">Auto</target> <target state="translated">Auto</target>
<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">212</context> <context context-type="linenumber">216</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html"> <trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -2041,7 +2041,7 @@
<target state="translated">Claro</target> <target state="translated">Claro</target>
<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">213</context> <context context-type="linenumber">217</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html"> <trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -2049,7 +2049,7 @@
<target state="translated">Escuro</target> <target state="translated">Escuro</target>
<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">214</context> <context context-type="linenumber">218</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="78cf1b9b94e0e93e65d1d522001a5c54304e9f25" datatype="html"> <trans-unit id="78cf1b9b94e0e93e65d1d522001a5c54304e9f25" datatype="html">
@ -2057,7 +2057,7 @@
<target state="translated"> Iniciar sessão com impressão digital </target> <target state="translated"> Iniciar sessão com impressão digital </target>
<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">240,242</context> <context context-type="linenumber">244,246</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html"> <trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html">
@ -2065,7 +2065,7 @@
<target state="translated">Funcionalidades Experimentais</target> <target state="translated">Funcionalidades Experimentais</target>
<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">258</context> <context context-type="linenumber">262</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html"> <trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -2073,7 +2073,7 @@
<target state="translated">ID do Utilizador</target> <target state="translated">ID do Utilizador</target>
<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">273</context> <context context-type="linenumber">277</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html"> <trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -2081,7 +2081,7 @@
<target state="translated">Acesso Concedido</target> <target state="translated">Acesso Concedido</target>
<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">291</context> <context context-type="linenumber">295</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html"> <trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -3275,6 +3275,10 @@
<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">160</context> <context context-type="linenumber">160</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context>
<context context-type="linenumber">164</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="4798457301875181136" datatype="html"> <trans-unit id="4798457301875181136" datatype="html">
<source>Market Data</source> <source>Market Data</source>
@ -3449,7 +3453,7 @@
<target state="translated"> Experiência sem distrações para tempos turbulentos </target> <target state="translated"> Experiência sem distrações para tempos turbulentos </target>
<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">224,226</context> <context context-type="linenumber">228,230</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html"> <trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html">
@ -3457,7 +3461,7 @@
<target state="translated"> Acesso antecipado a funcionalidades futuras </target> <target state="translated"> Acesso antecipado a funcionalidades futuras </target>
<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">259,261</context> <context context-type="linenumber">263,265</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="280c5b1f5b5b748fbbb37bf7a12c37f41539c1ff" datatype="html"> <trans-unit id="280c5b1f5b5b748fbbb37bf7a12c37f41539c1ff" datatype="html">
@ -3844,9 +3848,9 @@
<context context-type="linenumber">348</context> <context context-type="linenumber">348</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="356c1521a0dbc186d553e8c71bb7c64bc3998433" datatype="html"> <trans-unit id="de0d77a5255f97548d2b579f78c20c911a71820f" datatype="html">
<source> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. The revenue is used to cover the hosting infrastructure and to fund the ongoing development of Ghostfolio. </source> <source> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. </source>
<target state="translated">A nossa oferta oficial Ghostfolio Premium na nuvem é a maneira mais fácil de começar. Com o tempo que poupa, esta será a melhor opção para a maioria das pessoas. A receita é utilizada para cobrir a infraestrutura de hospedagem e financiar o desenvolvimento contínuo do Ghostfolio. </target> <target state="new">A nossa oferta oficial Ghostfolio Premium na nuvem é a maneira mais fácil de começar. Com o tempo que poupa, esta será a melhor opção para a maioria das pessoas. A receita é utilizada para cobrir a infraestrutura de hospedagem e financiar o desenvolvimento contínuo do Ghostfolio. </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">6,11</context> <context context-type="linenumber">6,11</context>
@ -7185,7 +7189,7 @@
<target state="new">Biometric Authentication</target> <target state="new">Biometric Authentication</target>
<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">239</context> <context context-type="linenumber">243</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html"> <trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html">
@ -7269,7 +7273,7 @@
<target state="new">Export Data</target> <target state="new">Export Data</target>
<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">280</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8298612418414367990" datatype="html"> <trans-unit id="8298612418414367990" datatype="html">

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

File diff suppressed because it is too large

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

@ -976,12 +976,16 @@
<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">160</context> <context context-type="linenumber">160</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.html</context>
<context context-type="linenumber">164</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="2ca05295d27e46c262b233252d1b19c27d95d07f" datatype="html"> <trans-unit id="2ca05295d27e46c262b233252d1b19c27d95d07f" datatype="html">
<source>The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term.</source> <source>The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/app.component.html</context> <context context-type="sourcefile">apps/client/src/app/app.component.html</context>
<context context-type="linenumber">169,170</context> <context context-type="linenumber">172,173</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="fbaaeb297e70b9a800acf841b9d26c19d60651ef" datatype="html"> <trans-unit id="fbaaeb297e70b9a800acf841b9d26c19d60651ef" datatype="html">
@ -3094,7 +3098,7 @@
</context-group> </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">223</context> <context context-type="linenumber">227</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="dbf8136366f55644df4ce493c233c74c12d79257" datatype="html"> <trans-unit id="dbf8136366f55644df4ce493c233c74c12d79257" datatype="html">
@ -4099,8 +4103,8 @@
<context context-type="linenumber">4</context> <context context-type="linenumber">4</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="356c1521a0dbc186d553e8c71bb7c64bc3998433" datatype="html"> <trans-unit id="de0d77a5255f97548d2b579f78c20c911a71820f" datatype="html">
<source> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. The revenue is used to cover the hosting infrastructure and to fund the ongoing development of Ghostfolio. </source> <source> Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. </source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">6,11</context> <context context-type="linenumber">6,11</context>
@ -8182,35 +8186,35 @@
<source>Please enter your coupon code:</source> <source>Please enter your coupon code:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">262</context> <context context-type="linenumber">263</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4420880039966769543" datatype="html"> <trans-unit id="4420880039966769543" datatype="html">
<source>Could not redeem coupon code</source> <source>Could not redeem coupon code</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">272</context> <context context-type="linenumber">273</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4819099731531004979" datatype="html"> <trans-unit id="4819099731531004979" datatype="html">
<source>Coupon code has been redeemed</source> <source>Coupon code has been redeemed</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">284</context> <context context-type="linenumber">285</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7967484035994732534" datatype="html"> <trans-unit id="7967484035994732534" datatype="html">
<source>Reload</source> <source>Reload</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">285</context> <context context-type="linenumber">286</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7963559562180316948" datatype="html"> <trans-unit id="7963559562180316948" datatype="html">
<source>Do you really want to remove this sign in method?</source> <source>Do you really want to remove this sign in method?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context> <context context-type="sourcefile">apps/client/src/app/pages/user-account/user-account-page.component.ts</context>
<context context-type="linenumber">331</context> <context context-type="linenumber">332</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="3c33a66194384cf8c14e25170416767efa56fd98" datatype="html"> <trans-unit id="3c33a66194384cf8c14e25170416767efa56fd98" datatype="html">
@ -8287,98 +8291,98 @@
<source>Locale</source> <source>Locale</source>
<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">169</context> <context context-type="linenumber">173</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html"> <trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
<source>Date and number format</source> <source>Date and number format</source>
<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">171</context> <context context-type="linenumber">175</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="bbe41ac2ea4a6c00ea941a41b33105048f8e9f13" datatype="html"> <trans-unit id="bbe41ac2ea4a6c00ea941a41b33105048f8e9f13" datatype="html">
<source>Appearance</source> <source>Appearance</source>
<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">197</context> <context context-type="linenumber">201</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html"> <trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
<source>Auto</source> <source>Auto</source>
<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">212</context> <context context-type="linenumber">216</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html"> <trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
<source>Light</source> <source>Light</source>
<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">213</context> <context context-type="linenumber">217</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html"> <trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
<source>Dark</source> <source>Dark</source>
<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">214</context> <context context-type="linenumber">218</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2e744a88d8fa3204bb7cf407e7e3f3680f9e67a4" datatype="html"> <trans-unit id="2e744a88d8fa3204bb7cf407e7e3f3680f9e67a4" datatype="html">
<source> Distraction-free experience for turbulent times </source> <source> Distraction-free experience for turbulent times </source>
<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">224,226</context> <context context-type="linenumber">228,230</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="fa22693b23a8bed32d787023df105a7b40002f9c" datatype="html"> <trans-unit id="fa22693b23a8bed32d787023df105a7b40002f9c" datatype="html">
<source>Biometric Authentication</source> <source>Biometric Authentication</source>
<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">239</context> <context context-type="linenumber">243</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="78cf1b9b94e0e93e65d1d522001a5c54304e9f25" datatype="html"> <trans-unit id="78cf1b9b94e0e93e65d1d522001a5c54304e9f25" datatype="html">
<source> Sign in with fingerprint </source> <source> Sign in with fingerprint </source>
<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">240,242</context> <context context-type="linenumber">244,246</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html"> <trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html">
<source>Experimental Features</source> <source>Experimental Features</source>
<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">258</context> <context context-type="linenumber">262</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html"> <trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html">
<source> Sneak peek at upcoming functionality </source> <source> Sneak peek at upcoming functionality </source>
<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">259,261</context> <context context-type="linenumber">263,265</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html"> <trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
<source>User ID</source> <source>User ID</source>
<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">273</context> <context context-type="linenumber">277</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html"> <trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html">
<source>Export Data</source> <source>Export Data</source>
<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">280</context> <context context-type="linenumber">284</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html"> <trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
<source>Granted Access</source> <source>Granted Access</source>
<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">291</context> <context context-type="linenumber">295</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="495a0574bd9a3d619a8b16dd5b893c6f617beded" datatype="html"> <trans-unit id="495a0574bd9a3d619a8b16dd5b893c6f617beded" datatype="html">

3
libs/common/src/lib/config.ts

@ -101,7 +101,8 @@ export const SUPPORTED_LANGUAGE_CODES = [
'fr', 'fr',
'it', 'it',
'nl', 'nl',
'pt' 'pt',
'tr'
]; ];
export const UNKNOWN_KEY = 'UNKNOWN'; export const UNKNOWN_KEY = 'UNKNOWN';

44
libs/common/src/lib/helper.ts

@ -1,8 +1,16 @@
import * as currencies from '@dinero.js/currencies'; import * as currencies from '@dinero.js/currencies';
import { DataSource } from '@prisma/client'; import { DataSource } from '@prisma/client';
import Big from 'big.js'; import Big from 'big.js';
import { getDate, getMonth, getYear, parse, subDays } from 'date-fns'; import {
import { de, es, fr, it, nl, pt } from 'date-fns/locale'; getDate,
getMonth,
getYear,
isMatch,
parse,
parseISO,
subDays
} from 'date-fns';
import { de, es, fr, it, nl, pt, tr } from 'date-fns/locale';
import { ghostfolioScraperApiSymbolPrefix, locale } from './config'; import { ghostfolioScraperApiSymbolPrefix, locale } from './config';
import { Benchmark, UniqueAsset } from './interfaces'; import { Benchmark, UniqueAsset } from './interfaces';
@ -96,6 +104,8 @@ export function getDateFnsLocale(aLanguageCode: string) {
return nl; return nl;
} else if (aLanguageCode === 'pt') { } else if (aLanguageCode === 'pt') {
return pt; return pt;
} else if (aLanguageCode === 'tr') {
return tr;
} }
return undefined; return undefined;
@ -282,8 +292,34 @@ export const DATE_FORMAT = 'yyyy-MM-dd';
export const DATE_FORMAT_MONTHLY = 'MMMM yyyy'; export const DATE_FORMAT_MONTHLY = 'MMMM yyyy';
export const DATE_FORMAT_YEARLY = 'yyyy'; export const DATE_FORMAT_YEARLY = 'yyyy';
export function parseDate(date: string) { export function parseDate(date: string): Date | null {
return parse(date, DATE_FORMAT, new Date()); // Transform 'yyyyMMdd' format to supported format by parse function
if (date?.length === 8) {
const match = date.match(/^(\d{4})(\d{2})(\d{2})$/);
if (match) {
const [, year, month, day] = match;
date = `${year}-${month}-${day}`;
}
}
const dateFormat = [
'dd-MM-yyyy',
'dd/MM/yyyy',
'dd.MM.yyyy',
'yyyy-MM-dd',
'yyyy/MM/dd',
'yyyy.MM.dd',
'yyyyMMdd'
].find((format) => {
return isMatch(date, format) && format.length === date.length;
});
if (dateFormat) {
return parse(date, dateFormat, new Date());
}
return parseISO(date);
} }
export function prettifySymbol(aSymbol: string): string { export function prettifySymbol(aSymbol: string): string {

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

@ -3,7 +3,7 @@ export interface Product {
founded?: number; founded?: number;
hasFreePlan?: boolean; hasFreePlan?: boolean;
hasSelfHostingAbility?: boolean; hasSelfHostingAbility?: boolean;
isOpenSource: boolean; isOpenSource?: boolean;
key: string; key: string;
languages?: string[]; languages?: string[];
name: string; name: string;

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

@ -156,44 +156,7 @@
<ng-container i18n>Type</ng-container> <ng-container i18n>Type</ng-container>
</th> </th>
<td *matCellDef="let element" class="px-1" mat-cell> <td *matCellDef="let element" class="px-1" mat-cell>
<div <gf-activity-type [activityType]="element.type"></gf-activity-type>
class="d-inline-flex p-1 type-badge"
[ngClass]="{
buy: element.type === 'BUY',
dividend: element.type === 'DIVIDEND',
fee: element.type === 'FEE',
interest: element.type === 'INTEREST',
item: element.type === 'ITEM',
liability: element.type === 'LIABILITY',
sell: element.type === 'SELL'
}"
>
<ion-icon
*ngIf="element.type === 'BUY'"
name="arrow-up-circle-outline"
></ion-icon>
<ion-icon
*ngIf="element.type === 'DIVIDEND' || element.type === 'INTEREST'"
name="add-circle-outline"
></ion-icon>
<ion-icon
*ngIf="element.type === 'FEE'"
name="hammer-outline"
></ion-icon>
<ion-icon
*ngIf="element.type === 'ITEM'"
name="cube-outline"
></ion-icon>
<ion-icon
*ngIf="element.type === 'LIABILITY'"
name="flame-outline"
></ion-icon>
<ion-icon
*ngIf="element.type === 'SELL'"
name="arrow-down-circle-outline"
></ion-icon>
<span class="d-none d-lg-block mx-1">{{ element.type }}</span>
</div>
</td> </td>
<td *matFooterCellDef class="px-1" mat-footer-cell></td> <td *matFooterCellDef class="px-1" mat-footer-cell></td>
</ng-container> </ng-container>

51
libs/ui/src/lib/activities-table/activities-table.component.scss

@ -14,57 +14,6 @@
} }
} }
} }
.mat-mdc-row {
.type-badge {
background-color: rgba(var(--palette-foreground-text), 0.05);
border-radius: 1rem;
line-height: 1em;
ion-icon {
font-size: 1rem;
}
&.buy {
color: var(--green);
}
&.dividend {
color: var(--blue);
}
&.fee {
color: var(--gray);
}
&.interest {
color: var(--cyan);
}
&.item {
color: var(--purple);
}
&.liability {
color: var(--red);
}
&.sell {
color: var(--orange);
}
}
}
}
}
}
:host-context(.is-dark-theme) {
.mat-mdc-table {
.type-badge {
background-color: rgba(
var(--palette-foreground-text-dark),
0.1
) !important;
} }
} }
} }

2
libs/ui/src/lib/activities-table/activities-table.module.ts

@ -11,6 +11,7 @@ import { RouterModule } from '@angular/router';
import { GfSymbolIconModule } from '@ghostfolio/client/components/symbol-icon/symbol-icon.module'; import { GfSymbolIconModule } from '@ghostfolio/client/components/symbol-icon/symbol-icon.module';
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module'; import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
import { GfActivitiesFilterModule } from '@ghostfolio/ui/activities-filter/activities-filter.module'; import { GfActivitiesFilterModule } from '@ghostfolio/ui/activities-filter/activities-filter.module';
import { GfActivityTypeModule } from '@ghostfolio/ui/activity-type';
import { GfNoTransactionsInfoModule } from '@ghostfolio/ui/no-transactions-info'; import { GfNoTransactionsInfoModule } from '@ghostfolio/ui/no-transactions-info';
import { GfValueModule } from '@ghostfolio/ui/value'; import { GfValueModule } from '@ghostfolio/ui/value';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
@ -23,6 +24,7 @@ import { ActivitiesTableComponent } from './activities-table.component';
imports: [ imports: [
CommonModule, CommonModule,
GfActivitiesFilterModule, GfActivitiesFilterModule,
GfActivityTypeModule,
GfNoTransactionsInfoModule, GfNoTransactionsInfoModule,
GfSymbolIconModule, GfSymbolIconModule,
GfSymbolModule, GfSymbolModule,

32
libs/ui/src/lib/activity-type/activity-type.component.html

@ -0,0 +1,32 @@
<div
class="d-inline-flex p-1 activity-type-badge"
[ngClass]="{
buy: activityType === 'BUY',
dividend: activityType === 'DIVIDEND',
fee: activityType === 'FEE',
interest: activityType === 'INTEREST',
item: activityType === 'ITEM',
liability: activityType === 'LIABILITY',
sell: activityType === 'SELL'
}"
>
<ion-icon
*ngIf="activityType === 'BUY'"
name="arrow-up-circle-outline"
></ion-icon>
<ion-icon
*ngIf="activityType === 'DIVIDEND' || activityType === 'INTEREST'"
name="add-circle-outline"
></ion-icon>
<ion-icon *ngIf="activityType === 'FEE'" name="hammer-outline"></ion-icon>
<ion-icon *ngIf="activityType === 'ITEM'" name="cube-outline"></ion-icon>
<ion-icon
*ngIf="activityType === 'LIABILITY'"
name="flame-outline"
></ion-icon>
<ion-icon
*ngIf="activityType === 'SELL'"
name="arrow-down-circle-outline"
></ion-icon>
<span class="d-none d-lg-block mx-1">{{ activityTypeLabel }}</span>
</div>

47
libs/ui/src/lib/activity-type/activity-type.component.scss

@ -0,0 +1,47 @@
:host {
display: block;
.activity-type-badge {
background-color: rgba(var(--palette-foreground-text), 0.05);
border-radius: 1rem;
line-height: 1em;
ion-icon {
font-size: 1rem;
}
&.buy {
color: var(--green);
}
&.dividend {
color: var(--blue);
}
&.fee {
color: var(--gray);
}
&.interest {
color: var(--cyan);
}
&.item {
color: var(--purple);
}
&.liability {
color: var(--red);
}
&.sell {
color: var(--orange);
}
}
}
:host-context(.is-dark-theme) {
.activity-type-badge {
background-color: rgba(var(--palette-foreground-text-dark), 0.1) !important;
}
}

26
libs/ui/src/lib/activity-type/activity-type.component.ts

@ -0,0 +1,26 @@
import {
ChangeDetectionStrategy,
Component,
Input,
OnChanges
} from '@angular/core';
import { translate } from '@ghostfolio/ui/i18n';
import { Type as ActivityType } from '@prisma/client';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'gf-activity-type',
styleUrls: ['./activity-type.component.scss'],
templateUrl: './activity-type.component.html'
})
export class ActivityTypeComponent implements OnChanges {
@Input() activityType: ActivityType;
public activityTypeLabel: string;
public constructor() {}
public ngOnChanges() {
this.activityTypeLabel = translate(this.activityType);
}
}

12
libs/ui/src/lib/activity-type/activity-type.module.ts

@ -0,0 +1,12 @@
import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { ActivityTypeComponent } from './activity-type.component';
@NgModule({
declarations: [ActivityTypeComponent],
exports: [ActivityTypeComponent],
imports: [CommonModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class GfActivityTypeModule {}

1
libs/ui/src/lib/activity-type/index.ts

@ -0,0 +1 @@
export * from './activity-type.module';

2
package.json

@ -1,6 +1,6 @@
{ {
"name": "ghostfolio", "name": "ghostfolio",
"version": "2.4.0", "version": "2.5.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",

6
test/import/ok.csv

@ -1,5 +1,5 @@
Date,Code,Currency,Price,Quantity,Action,Fee Date,Code,Currency,Price,Quantity,Action,Fee
16-09-2021,MSFT,USD,298.580,5,buy,19.00
17/11/2021,MSFT,USD,0.62,5,dividend,0.00 17/11/2021,MSFT,USD,0.62,5,dividend,0.00
16/09/2021,MSFT,USD,298.580,5,buy,19.00 01.01.2022,Penthouse Apartment,USD,500000.0,1,item,0.00
01/01/2022,Penthouse Apartment,USD,500000.0,1,item,0.00 20500606,MSFT,USD,0.00,0,buy,0.00
06/06/2050,MSFT,USD,0.00,0,buy,0.00

1 Date Code Currency Price Quantity Action Fee
2 16-09-2021 MSFT USD 298.580 5 buy 19.00
3 17/11/2021 MSFT USD 0.62 5 dividend 0.00
4 16/09/2021 01.01.2022 MSFT Penthouse Apartment USD 298.580 500000.0 5 1 buy item 19.00 0.00
5 01/01/2022 20500606 Penthouse Apartment MSFT USD 500000.0 0.00 1 0 item buy 0.00
06/06/2050 MSFT USD 0.00 0 buy 0.00
Loading…
Cancel
Save