Browse Source

Merge branch 'main' into feature/regional-market-cluster-risk-for-north-america

pull/4240/head
Thomas Kaul 11 months ago
committed by GitHub
parent
commit
c90d0ce680
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 151
      .eslintrc.json
  2. 40
      .github/workflows/extract-locales.yml
  3. 48
      CHANGELOG.md
  4. 22
      apps/api/.eslintrc.json
  5. 31
      apps/api/eslint.config.cjs
  6. 2
      apps/api/src/app/symbol/symbol.controller.ts
  7. 148
      apps/api/src/assets/cryptocurrencies/cryptocurrencies.json
  8. 2
      apps/api/src/assets/sitemap.xml
  9. 8
      apps/api/src/services/cryptocurrency/cryptocurrency.service.ts
  10. 326
      apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts
  11. 2
      apps/api/src/services/data-provider/manual/manual.service.ts
  12. 42
      apps/api/src/services/symbol-profile/symbol-profile.service.ts
  13. 46
      apps/client/.eslintrc.json
  14. 62
      apps/client/eslint.config.cjs
  15. 4
      apps/client/src/app/components/admin-settings/admin-settings.component.html
  16. 2
      apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts
  17. 2
      apps/client/src/app/components/user-account-settings/user-account-settings.html
  18. 5
      apps/client/src/app/pages/features/features-page.html
  19. 78
      apps/client/src/locales/messages.ca.xlf
  20. 78
      apps/client/src/locales/messages.de.xlf
  21. 78
      apps/client/src/locales/messages.es.xlf
  22. 78
      apps/client/src/locales/messages.fr.xlf
  23. 78
      apps/client/src/locales/messages.it.xlf
  24. 78
      apps/client/src/locales/messages.nl.xlf
  25. 78
      apps/client/src/locales/messages.pl.xlf
  26. 78
      apps/client/src/locales/messages.pt.xlf
  27. 78
      apps/client/src/locales/messages.tr.xlf
  28. 136
      apps/client/src/locales/messages.uk.xlf
  29. 76
      apps/client/src/locales/messages.xlf
  30. 78
      apps/client/src/locales/messages.zh.xlf
  31. 20
      apps/ui-e2e/.eslintrc.json
  32. 33
      apps/ui-e2e/eslint.config.cjs
  33. 196
      eslint.config.cjs
  34. 21
      libs/common/.eslintrc.json
  35. 28
      libs/common/eslint.config.cjs
  36. 82
      libs/common/src/lib/helper.spec.ts
  37. 4
      libs/common/src/lib/helper.ts
  38. 2
      libs/common/src/lib/interfaces/holding.interface.ts
  39. 40
      libs/ui/.eslintrc.json
  40. 65
      libs/ui/eslint.config.cjs
  41. 8
      libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
  42. 2
      libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
  43. 1
      nx.json
  44. 3586
      package-lock.json
  45. 91
      package.json
  46. 3
      prisma/seed.ts

151
.eslintrc.json

@ -1,151 +0,0 @@
{
"root": true,
"ignorePatterns": ["**/*"],
"plugins": ["@nx"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {
"@nx/enforce-module-boundaries": [
"warn",
{
"enforceBuildableLibDependency": true,
"allow": [],
"depConstraints": [
{
"sourceTag": "*",
"onlyDependOnLibsWithTags": ["*"]
}
]
}
],
"@typescript-eslint/no-extra-semi": "error",
"no-extra-semi": "off"
}
},
{
"files": ["*.ts", "*.tsx"],
"extends": ["plugin:@nx/typescript"]
},
{
"files": ["*.js", "*.jsx"],
"extends": ["plugin:@nx/javascript"]
},
{
"files": ["*.ts"],
"plugins": ["eslint-plugin-import", "@typescript-eslint"],
"extends": [
"plugin:@typescript-eslint/recommended-type-checked",
"plugin:@typescript-eslint/stylistic-type-checked"
],
"rules": {
"@typescript-eslint/consistent-indexed-object-style": "off",
"@typescript-eslint/dot-notation": "off",
"@typescript-eslint/explicit-member-accessibility": [
"off",
{
"accessibility": "explicit"
}
],
"@typescript-eslint/member-ordering": "warn",
"@typescript-eslint/naming-convention": [
"off",
{
"selector": "default",
"format": ["camelCase"],
"leadingUnderscore": "allow",
"trailingUnderscore": "allow"
},
{
"selector": ["variable", "classProperty", "typeProperty"],
"format": ["camelCase", "UPPER_CASE"],
"leadingUnderscore": "allow",
"trailingUnderscore": "allow"
},
{
"selector": "objectLiteralProperty",
"format": null
},
{
"selector": "enumMember",
"format": ["camelCase", "UPPER_CASE", "PascalCase"]
},
{
"selector": "typeLike",
"format": ["PascalCase"]
}
],
"@typescript-eslint/no-empty-interface": "warn",
"@typescript-eslint/no-inferrable-types": [
"warn",
{
"ignoreParameters": true
}
],
"@typescript-eslint/no-non-null-assertion": "warn",
"@typescript-eslint/no-shadow": [
"warn",
{
"hoist": "all"
}
],
"@typescript-eslint/unified-signatures": "error",
"@typescript-eslint/no-loss-of-precision": "warn",
"@typescript-eslint/no-var-requires": "warn",
"@typescript-eslint/ban-types": "warn",
"arrow-body-style": "off",
"constructor-super": "error",
"eqeqeq": ["error", "smart"],
"guard-for-in": "warn",
"id-blacklist": "off",
"id-match": "off",
"import/no-deprecated": "warn",
"no-bitwise": "error",
"no-caller": "error",
"no-debugger": "error",
"no-empty": "off",
"no-eval": "error",
"no-fallthrough": "error",
"no-new-wrappers": "error",
"no-restricted-imports": ["error", "rxjs/Rx"],
"no-undef-init": "error",
"no-underscore-dangle": "off",
"no-var": "error",
"radix": "error",
"no-unsafe-optional-chaining": "warn",
"no-extra-boolean-cast": "warn",
"no-empty-pattern": "warn",
"no-useless-catch": "warn",
"no-unsafe-finally": "warn",
"no-prototype-builtins": "warn",
"no-async-promise-executor": "warn",
"no-constant-condition": "warn",
// The following rules are part of @typescript-eslint/recommended-type-checked
// and can be remove once solved
"@typescript-eslint/await-thenable": "warn",
"@typescript-eslint/ban-ts-comment": "warn",
"@typescript-eslint/no-base-to-string": "warn",
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/no-floating-promises": "warn",
"@typescript-eslint/no-misused-promises": "warn",
"@typescript-eslint/no-redundant-type-constituents": "warn",
"@typescript-eslint/no-unnecessary-type-assertion": "warn",
"@typescript-eslint/no-unsafe-argument": "warn",
"@typescript-eslint/no-unsafe-assignment": "warn",
"@typescript-eslint/no-unsafe-enum-comparison": "warn",
"@typescript-eslint/no-unsafe-member-access": "warn",
"@typescript-eslint/no-unsafe-return": "warn",
"@typescript-eslint/no-unsafe-call": "warn",
"@typescript-eslint/require-await": "warn",
"@typescript-eslint/restrict-template-expressions": "warn",
"@typescript-eslint/unbound-method": "warn",
// The following rules are part of @typescript-eslint/stylistic-type-checked
// and can be remove once solved
"@typescript-eslint/prefer-nullish-coalescing": "warn" // TODO: Requires strictNullChecks: true
}
}
],
"extends": ["plugin:storybook/recommended"]
}

40
.github/workflows/extract-locales.yml

@ -0,0 +1,40 @@
name: Extract locales
on:
push:
branches:
- main
permissions:
contents: write
pull-requests: write
jobs:
extract_locales:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install dependencies
run: npm ci
- name: Extract locales
run: npm run extract-locales
- name: Check changes
id: verify-changed-files
uses: tj-actions/verify-changed-files@v20
- name: Create pull request
if: steps.verify-changed-files.outputs.files_changed == 'true'
uses: peter-evans/create-pull-request@v7
with:
author: 'github-actions[bot] <github-actions[bot]@users.noreply.github.com>'
branch: 'feature/update-locales'
commit-message: 'Update locales'
delete-branch: true
title: 'Feature/update locales'
token: ${{ secrets.GITHUB_TOKEN }}

48
CHANGELOG.md

@ -11,6 +11,54 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Added a new static portfolio analysis rule: _Regional Market Cluster Risk_ (North America)
### Changed
- Migrated the database seeding to _TypeScript_
- Upgraded `@trivago/prettier-plugin-sort-imports` from version `4.3.0` to `5.2.1`
- Upgraded `bull` from version `4.16.4` to `4.16.5`
- Upgraded `ng-extract-i18n-merge` from version `2.13.1` to `2.14.1`
### Fixed
- Fixed the dynamic numerical precision for cryptocurrencies in the holding detail dialog
## 2.136.0 - 2025-01-24
### Added
- Set up a _GitHub Action_ to automatically extract locales when the `main` branch changes
### Changed
- Extended the _Financial Modeling Prep_ service
- Improved the language localization for Ukrainian (`uk`)
- Refreshed the cryptocurrencies list
- Upgraded `date-fns` from version `3.6.0` to `4.1.0`
- Upgraded `rxjs` from version `7.5.6` to `7.8.1`
### Fixed
- Fixed an issue with the detection of the thousand separator by locale
- Fixed an issue with holdings and sectors while using symbol profile overrides
- Fixed an issue with the MIME type detection in the scraper configuration
## 2.135.0 - 2025-01-19
### Changed
- Moved the language localization for Polski (`pl`) from experimental to general availability
- Extended the _Financial Modeling Prep_ service
- Switched to _ESLint_’s flat config format
- Upgraded `bull` from version `4.16.2` to `4.16.4`
- Upgraded `chart.js` from version `4.2.0` to `4.4.7`
- Upgraded `chartjs-chart-treemap` from version `2.3.1` to `3.1.0`
- Upgraded `chartjs-plugin-annotation` from version `2.1.2` to `3.1.0`
- Upgraded `eslint` dependencies
- Upgraded `nestjs` from version `10.1.3` to `10.4.15`
- Upgraded `Nx` from version `20.3.0` to `20.3.2`
- Upgraded `reflect-metadata` from version `0.1.13` to `0.2.2`
- Upgraded `uuid` from version `11.0.2` to `11.0.5`
## 2.134.0 - 2025-01-15
### Added

22
apps/api/.eslintrc.json

@ -1,22 +0,0 @@
{
"extends": "../../.eslintrc.json",
"ignorePatterns": ["!**/*"],
"rules": {},
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"parserOptions": {
"project": ["apps/api/tsconfig.*?.json"]
},
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
}
]
}

31
apps/api/eslint.config.cjs

@ -0,0 +1,31 @@
const baseConfig = require('../../eslint.config.cjs');
module.exports = [
{
ignores: ['**/dist']
},
...baseConfig,
{
rules: {}
},
{
files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
// Override or add rules here
rules: {},
languageOptions: {
parserOptions: {
project: ['apps/api/tsconfig.*?.json']
}
}
},
{
files: ['**/*.ts', '**/*.tsx'],
// Override or add rules here
rules: {}
},
{
files: ['**/*.js', '**/*.jsx'],
// Override or add rules here
rules: {}
}
];

2
apps/api/src/app/symbol/symbol.controller.ts

@ -47,7 +47,7 @@ export class SymbolController {
try {
return this.symbolService.lookup({
includeIndices,
query: query.toLowerCase(),
query,
user: this.request.user
});
} catch {

148
apps/api/src/assets/cryptocurrencies/cryptocurrencies.json

@ -41,6 +41,7 @@
"0xVPN": "0xVPN.org",
"1-UP": "1-UP",
"1000SATS": "SATS",
"1000X": "1000x by Virtuals",
"10SET": "Tenset",
"1ART": "ArtWallet",
"1CAT": "Bitcoin Cats",
@ -212,6 +213,7 @@
"ACM": "AC Milan Fan Token",
"ACN": "AvonCoin",
"ACOIN": "ACoin",
"ACOLYT": "Acolyte by Virtuals",
"ACP": "Anarchists Prime",
"ACPT": "Crypto Accept",
"ACQ": "Acquire.Fi",
@ -332,6 +334,7 @@
"AGIL": "Agility LSD",
"AGIV1": "SingularityNET v1",
"AGIX": "SingularityNET",
"AGIXBT": "AGIXBT by Virtuals",
"AGLA": "Angola",
"AGLD": "Adventure Gold",
"AGM": "Argoneum",
@ -363,12 +366,13 @@
"AIBCOIN": "AIBLOCK",
"AIBK": "AIB Utility Token",
"AIBU": "AIBUZZ TOKEN",
"AIC": "AI Crypto",
"AIC": "AI Companions",
"AICELL": "AICell",
"AICH": "AIChain",
"AICO": "AICON",
"AICODE": "AI CODE",
"AICORE": "AICORE",
"AICRYPTO": "AI Crypto",
"AID": "AidCoin",
"AIDA": "Ai-Da robot",
"AIDI": "Aidi Inu",
@ -405,6 +409,7 @@
"AINU": "Ainu Token",
"AION": "Aion",
"AIONE": "AiONE",
"AIOS": "INT OS",
"AIOT": "AIOT Token",
"AIOZ": "AIOZ Network",
"AIPAD": "AIPAD",
@ -438,6 +443,7 @@
"AITRA": "Aitra",
"AITT": "AITrading",
"AIUS": "Arbius",
"AIVIA": "AI Virtual Agents",
"AIWALLET": "AiWallet Token",
"AIX": "Aigang",
"AIXBT": "aixbt by Virtuals",
@ -617,6 +623,7 @@
"ANDYBSC": "ANDY",
"ANDYMAN": "ANDYMAN",
"ANDYSOL": "Andy on SOL",
"ANEX": "AstroNexus",
"ANGEL": "Crypto Angel",
"ANGL": "Angel Token",
"ANGLE": "ANGLE",
@ -743,13 +750,14 @@
"ARBS": "Arbswap",
"ARBT": "ARBITRAGE",
"ARBUZ": "ARBUZ",
"ARC": "Arc",
"ARC": "AI Rig Complex",
"ARCA": "Legend of Arcadia",
"ARCAD": "Arcadeum",
"ARCADE": "ARCADE",
"ARCADECITY": "Arcade City",
"ARCADEF": "arcadefi",
"ARCADEN": "ArcadeNetwork",
"ARCAI": "ARCAI",
"ARCANE": "Arcane Token",
"ARCAS": "Arcas",
"ARCH": "Archway",
@ -757,6 +765,7 @@
"ARCHCOIN": "ArchCoin",
"ARCHE": "Archean",
"ARCHIVE": "Chainback",
"ARCINTEL": "Arc",
"ARCO": "AquariusCoin",
"ARCONA": "Arcona",
"ARCT": "ArbitrageCT",
@ -1272,6 +1281,7 @@
"BASEDP": "Based Pepe",
"BASEDR": "Based Rabbit",
"BASEDS": "BasedSwap",
"BASEDTURBO": "Based Turbo",
"BASEDV1": "Based Money v1",
"BASEHEROES": "Baseheroes",
"BASEPROTOCOL": "Base Protocol",
@ -1393,6 +1403,7 @@
"BDID": "BDID",
"BDL": "Bitdeal",
"BDOG": "Bulldog Token",
"BDOGITO": "BullDogito",
"BDOT": "Binance Wrapped DOT",
"BDP": "Big Data Protocol",
"BDPI": "Interest Bearing Defi Pulse Index",
@ -1513,6 +1524,7 @@
"BFT": "BF Token",
"BFTB": "Brazil Fan Token",
"BFTC": "BITS FACTOR",
"BFWOG": "Based Fwog (basedfwog.info)",
"BFX": "BitFinex Tokens",
"BG": "BunnyPark Game",
"BGB": "Bitget token",
@ -1591,7 +1603,7 @@
"BINS": "Bitsense",
"BINTEX": "Bintex Futures",
"BINU": "Blast Inu",
"BIO": "BITONE",
"BIO": "Bio Protocol",
"BIOB": "BioBar",
"BIOC": "BioCrypt",
"BIOCOIN": "Biocoin",
@ -1646,6 +1658,7 @@
"BITNEW": "BitNewChain",
"BITO": "BitoPro Exchange Token",
"BITOK": "BitOKX",
"BITONE": "BITONE",
"BITORB": "BitOrbit",
"BITRA": "Bitratoken",
"BITRADIO": "Bitradio",
@ -2015,6 +2028,7 @@
"BOSU": "Bosu Inu",
"BOT": "Bot Planet",
"BOTC": "BotChain",
"BOTIFY": "BOTIFY",
"BOTS": "ArkDAO",
"BOTTO": "Botto",
"BOTX": "BOTXCOIN",
@ -2144,6 +2158,7 @@
"BROTHER": "BROTHER",
"BROWN": "BrowniesSwap",
"BROZ": "Brozinkerbell",
"BRP": "BananaRepublic",
"BRRR": "Burrow",
"BRS": "Broovs Projects",
"BRT": "Bikerush",
@ -2288,6 +2303,7 @@
"BTNYX": "BitOnyx Token",
"BTO": "Bottos",
"BTOP": "Botopia.Finance",
"BTORO": "Bitoro Network",
"BTP": "Bitpaid",
"BTPL": "Bitcoin Planet",
"BTQ": "BitQuark",
@ -2577,6 +2593,7 @@
"CATELON": "CatElonMars",
"CATEX": "CATEX",
"CATFISH": "Catfish",
"CATG": "Crypto Agent Trading",
"CATGAME": "Cookie Cat Game",
"CATGIRL": "Catgirl",
"CATGOKU": "Catgoku",
@ -2789,6 +2806,7 @@
"CHAT": "Solchat",
"CHATAI": "ChatAI Token",
"CHATGPT": "AI Dragon",
"CHATOSHI": "chAtoshI",
"CHATTY": "ChatGPT's Mascot",
"CHB": "COINHUB TOKEN",
"CHBR": "CryptoHub",
@ -2993,6 +3011,7 @@
"CLU": "CluCoin",
"CLUB": "ClubCoin",
"CLUD": "CludCoin",
"CLUSTR": "Clustr Labs",
"CLV": "Clover Finance",
"CLVA": "Clever DeFi",
"CLVX": "Calvex",
@ -3337,6 +3356,7 @@
"CROWD": "CrowdCoin",
"CROWDWIZ": "Crowdwiz",
"CROWN": "Crown by Third Time Games",
"CROWWITH": "crow with knife",
"CROX": "CroxSwap",
"CRP": "Crypton",
"CRPS": "CryptoPennies",
@ -3793,6 +3813,7 @@
"DEER": "ToxicDeer Finance",
"DEEX": "DEEX",
"DEEZ": "DEEZ NUTS",
"DEFAI": "DeFAI",
"DEFC": "Defi Coin",
"DEFEND": "Blockdefend AI",
"DEFI": "DeFi",
@ -3980,6 +4001,7 @@
"DIGI": "Digiverse",
"DIGIC": "DigiCube",
"DIGIF": "DigiFel",
"DIGIMON": "Digimon",
"DIGIT": "Digital Asset Rights Token",
"DIGITAL": "Digital Reserve Currency",
"DIGITS": "Digits DAO",
@ -4327,6 +4349,7 @@
"DRS": "Digital Rupees",
"DRT": "DomRaider",
"DRUGS": "Big Pharmai",
"DRV": "Derive",
"DRXNE": "Droxne",
"DRZ": "Droidz",
"DS": "DeStorage",
@ -4386,6 +4409,7 @@
"DUC": "DucatusCoin",
"DUCATO": "Ducato Protocol Token",
"DUCK": "Unit Protocol New",
"DUCKAI": "Duck AI",
"DUCKC": "DuckCoin",
"DUCKD": "DuckDuckCoin",
"DUCKER": "Ducker",
@ -4463,6 +4487,7 @@
"DYAD": "Dyad Stable",
"DYC": "Dycoin",
"DYDX": "dYdX",
"DYDXV1": "dYdX v1",
"DYM": "Dymension",
"DYN": "Dynamic",
"DYNA": "Dynamix",
@ -4622,7 +4647,8 @@
"EGI": "eGame",
"EGL": "The Eagle Of Truth",
"EGLD": "eGold",
"EGO": "EGOcoin",
"EGO": "Paysenger EGO",
"EGOCOIN": "EGOcoin",
"EGOD": "EgodCoin",
"EGOLD": "EGOLD",
"EGON": "EgonCoin",
@ -4722,7 +4748,6 @@
"ELUSKMON": "Elusk Mon",
"ELV": "Elvantis",
"ELVN": "11Minutes",
"ELX": "Energy Ledger",
"ELY": "Elysian",
"ELYS": "Elys Network",
"ELYSIUM": "Elysium",
@ -4773,6 +4798,7 @@
"ENE": "EneCoin",
"ENEAR": "Near (Energiswap)",
"ENEDEX": "Enedex",
"ENERGYLEDGER": "Energy Ledger",
"ENERGYX": "Safe Energy",
"ENG": "Enigma",
"ENGT": "Engagement Token",
@ -5003,6 +5029,7 @@
"EVAI": "EVA Intelligence",
"EVAN": "Evanesco Network",
"EVAULT": "EthereumVault",
"EVAV1": "Evadore v1",
"EVC": "Eventchain",
"EVCC": "Eco Value Coin",
"EVCOIN": "EverestCoin",
@ -5111,10 +5138,11 @@
"FADO": "FADO Go",
"FAG": "PoorFag",
"FAH": "Falcons",
"FAI": "Fairum",
"FAI": "Freysa AI",
"FAIR": "FairCoin",
"FAIRC": "Faireum Token",
"FAIRG": "FairGame",
"FAIRUM": "Fairum",
"FAKE": "FAKE COIN",
"FAKEAI": "DeepFakeAI",
"FAKT": "Medifakt",
@ -5633,7 +5661,8 @@
"FUBAO": "FUBAO",
"FUCK": "Fuck Token",
"FUD": "FUD.finance",
"FUEL": "Jetfuel Finance",
"FUEGO": "FUEGO",
"FUEL": "Fuel Network",
"FUELX": "Fuel",
"FUFU": "Fufu Token",
"FUG": "FUG",
@ -5754,6 +5783,7 @@
"GAMEST": "GameStop Coin",
"GAMESTARS": "Game Stars",
"GAMESTO": "GameStop",
"GAMESTOP": "GameStop",
"GAMESTUMP": "GAMESTUMP",
"GAMET": "GAME Token",
"GAMEX": "GameX",
@ -5978,6 +6008,7 @@
"GINGER": "GINGER",
"GINNAN": "Ginnan The Cat",
"GINOA": "Ginoa",
"GINU": "Green Shiba Inu",
"GINUX": "Green Shiba Inu",
"GINZA": "GINZA NETWORK",
"GIO": "Graviocoin",
@ -6546,6 +6577,9 @@
"HEM": "Hemera",
"HEMAN": "HE-MAN",
"HEMULE": "Hemule",
"HENG": "HengCoin",
"HENLO": "Henlo",
"HENLOV1": "Henlo v1",
"HEP": "Health Potion",
"HER": "Hero Node",
"HERA": "Hero Arena",
@ -6652,6 +6686,8 @@
"HLINK": "Chainlink (Harmony One Bridge)",
"HLM": "Helium",
"HLN": "Holonus",
"HLO": "Halo",
"HLOV1": "Halo v1",
"HLP": "Purpose Coin",
"HLPR": "HELPER COIN",
"HLPT": "HLP Token",
@ -6777,6 +6813,7 @@
"HSAI": "HealthSci.AI",
"HSC": "HashCoin",
"HSF": "Hillstone Finance",
"HSK": "HashKey Platform Token",
"HSN": "Hyper Speed Network",
"HSP": "Horse Power",
"HSS": "Hashshare",
@ -6792,6 +6829,7 @@
"HTDF": "Orient Walt",
"HTE": "Hepton",
"HTER": "Biogen",
"HTERM": "Hiero Terminal",
"HTK": "Hard To Kill",
"HTM": "Hatom",
"HTML": "HTML Coin",
@ -6816,6 +6854,7 @@
"HUM": "Humanscape",
"HUMAI": "Humanoid AI",
"HUMP": "Hump",
"HUMV1": "Humanscape v1",
"HUND": "HUND MEME COIN",
"HUNDRED": "HUNDRED",
"HUNNY": "Pancake Hunny",
@ -6952,6 +6991,7 @@
"IDO": "Idexo",
"IDOL": "IDOLINU",
"IDORU": "Vip2Fan",
"IDRISS": "IDRISS",
"IDRT": "Rupiah Token",
"IDRX": "IDRX",
"IDT": "InvestDigital",
@ -7309,10 +7349,12 @@
"JET": "Jet Protocol",
"JETCAT": "Jetcat",
"JETCOIN": "Jetcoin",
"JETFUEL": "Jetfuel Finance",
"JETTON": "JetTon Game",
"JEUR": "Jarvis Synthetic Euro",
"JEW": "Shekel",
"JEWEL": "DeFi Kingdoms",
"JEWELRY": "Jewelry Token",
"JEX": "JEX Token",
"JF": "Jswap.Finance",
"JFI": "JackPool.finance",
@ -7347,6 +7389,7 @@
"JMT": "JMTIME",
"JMZ": "Jimizz",
"JNB": "Jinbi Token",
"JNFTC": "Jumbo Blockchain",
"JNGL": "Jungle Labz",
"JNS": "Janus",
"JNT": "Jibrel Network Token",
@ -7358,6 +7401,7 @@
"JOE": "JOE",
"JOEB": "Joe Biden",
"JOEBIDEN2024 ": "JOEBIDEN2024",
"JOECOIN": "Joe Coin",
"JOEY": "Joey Inu",
"JOGECO": "Jogecodog",
"JOHM": "Johm lemmon",
@ -7556,6 +7600,7 @@
"KEK": "KekCoin",
"KEKE": "KEK",
"KEKEC": "THE BALKAN DWARF",
"KEKIUS": "Kekius Maximus",
"KEL": "KelVPN",
"KELP": "KELP",
"KELPE": "Kelp Earned Points",
@ -7576,6 +7621,9 @@
"KET": "KET",
"KETAMINE": "Ketamine",
"KETAN": "Ketan",
"KEVIN": "Kevin (kevinonbase.xyz)",
"KEVINTOKENME": "KEVIN (kevintoken.me)",
"KEVINTOKENNET": "Kevin",
"KEX": "Kira Network",
"KEXCOIN": "KexCoin",
"KEY": "SelfKey",
@ -7605,6 +7653,7 @@
"KICKS": "GetKicks",
"KIDEN": "RoboKiden",
"KIF": "KittenFinance",
"KIKI": "Kiki Flaminki",
"KIKO": "KIKO",
"KILLA": "The Bitcoin Killa",
"KILLER": "Fat Cat Killer",
@ -7724,6 +7773,7 @@
"KOGE": "BNB48 Club Token",
"KOGECOIN": "KogeCoin.io",
"KOI": "Koi",
"KOII": "Koii",
"KOIN": "Koinos",
"KOINB": "KoinBülteni Token",
"KOINETWORK": "Koi Network",
@ -7823,6 +7873,7 @@
"KUBE": "KubeCoin",
"KUBO": "KUBO",
"KUBOS": "KubosCoin",
"KUDAI": "Kudai",
"KUE": "Kuende",
"KUJI": "Kujira",
"KUKU": "KuKu",
@ -7867,6 +7918,7 @@
"KZC": "KZCash",
"KZEN": "Kaizen",
"L": "L inu",
"L1": "Lamina1",
"L2": "Leverj Gluon",
"L2DAO": "Layer2DAO",
"L3": "Layer3",
@ -7928,7 +7980,8 @@
"LATX": "Latium",
"LAUGHCOIN": "Laughcoin",
"LAUNCH": "Launchblock.com",
"LAVA": "Lavaswap",
"LAVA": "Lava Network",
"LAVASWAP": "Lavaswap",
"LAVAX": "LavaX Labs",
"LAVE": "Lavandos",
"LAVITA": "Lavita AI",
@ -7992,6 +8045,7 @@
"LEE": "Love Earn Enjoy",
"LEET": "LeetSwap",
"LEG": "Legia Warsaw Fan Token",
"LEGEND": "Legend",
"LEGION": "LEGION",
"LEGO": "Lego Coin",
"LEIA": "Leia",
@ -8093,6 +8147,7 @@
"LIGHTSPEED": "LightSpeedCoin",
"LIGMA": "Ligma Node",
"LIGO": "Ligo",
"LIHUA": "LIHUA",
"LIKE": "Only1",
"LIKEC": "LikeCoin",
"LILA": "LiquidLayer",
@ -8100,6 +8155,7 @@
"LILFLOKI": "Lil Floki",
"LILPUMP": "lilpump",
"LILY": "LILY-The Gold Digger",
"LIMBO": "Limbo",
"LIME": "iMe Lab",
"LIMEX": "Limestone Network",
"LIMITEDCOIN": "Limited Coin",
@ -8167,6 +8223,7 @@
"LLAND": "Lyfe Land",
"LLG": "Loligo",
"LLION": "Lydian Lion",
"LLM": "Large Language Model Based",
"LLT": "LILLIUS",
"LM": "LeisureMeta",
"LMAO": "LMAO Finance",
@ -8366,6 +8423,7 @@
"LUFFY": "Luffy",
"LUFFYG": "Luffy G5",
"LUFFYOLD": "Luffy",
"LUFFYV1": "Luffy v1",
"LUIGI": "Luigi Inu",
"LUIS": "Tongue Cat",
"LULU": "LULU",
@ -8394,7 +8452,8 @@
"LUSH": "Lush AI",
"LUT": "Cinemadrom",
"LUTETIUM": "Lutetium Coin",
"LUX": "LUXCoin",
"LUX": "Lux Token",
"LUXCOIN": "LUXCoin",
"LUXO": "Luxo",
"LUXU": "Luxury Travel Token",
"LUXY": "Luxy",
@ -8449,6 +8508,7 @@
"MADAGASCARTOKEN": "Madagascar Token",
"MADANA": "MADANA",
"MADC": "MadCoin",
"MADCOIN": "MAD",
"MADH": "Madhouse",
"MADOG": "MarvelDoge",
"MADP": "Mad Penguin",
@ -8456,13 +8516,14 @@
"MAEP": "Maester Protocol",
"MAF": "MetaMAFIA",
"MAG": "Magnify Cash",
"MAGA": "MAGA Hat",
"MAGA": "MAGA",
"MAGA2024": "MAGA2024",
"MAGAA": "MAGA AGAIN",
"MAGAC": "MAGA CAT",
"MAGACA": "MAGA CAT",
"MAGACAT": "MAGACAT",
"MAGADOGE": "MAGA DOGE",
"MAGAHAT": "MAGA Hat",
"MAGAIBA": "Magaiba",
"MAGAN": "Maganomics On Solana",
"MAGANOMICS": "Maganomics",
@ -8577,6 +8638,7 @@
"MATAR": "MATAR AI",
"MATCH": "Matching Game",
"MATE": "Mate",
"MATES": "MATES",
"MATH": "MATH",
"MATIC": "Polygon",
"MATICX": "Stader MaticX",
@ -8607,6 +8669,7 @@
"MAZI": "MaziMatic",
"MAZZE": "Mazze",
"MB": "MineBee",
"MB28": "MBridge28",
"MB4": "Matthew Box 404",
"MB8": "MB8 Coin",
"MBAG": "MoonBag",
@ -8741,7 +8804,8 @@
"MEI": "Mei Solutions",
"MEIZHU": "GUANGZHOU ZOO NEW BABY PANDA",
"MEL": "MELX",
"MELANIA": "Melania Trump",
"MELANIA": "Melania Meme",
"MELANIATRUMP": "Melania Trump",
"MELB": "Minelab",
"MELD": "MELD",
"MELI": "Meli Games",
@ -8819,6 +8883,7 @@
"METAF": "MetaFastest",
"METAG": "MetagamZ",
"METAGEAR": "MetaGear",
"METAIVERSE": "MetAIverse",
"METAL": "Metal Blockchain",
"METALCOIN": "MetalCoin",
"METAMEME": "met a meta metameme",
@ -9732,6 +9797,7 @@
"NEXXO": "Nexxo",
"NEZHA": "NezhaToken",
"NFAI": "Not Financial Advice",
"NFAIV1": "Not Financial Advice v1",
"NFCR": "NFCore",
"NFD": "Feisty Doge NFT",
"NFE": "Edu3Labs",
@ -9857,6 +9923,7 @@
"NOBS": "No BS Crypto",
"NOCHILL": "AVAX HAS NO CHILL",
"NODE": "Whole Network",
"NODESYNAPSE": "NodeSynapse",
"NODIDDY": "NODIDDY",
"NODIS": "Nodis",
"NODL": "Nodle Network",
@ -9928,7 +9995,7 @@
"NRV": "Nerve Finance",
"NRVE": "Narrative",
"NRX": "Neironix",
"NS": "NodeSynapse",
"NS": "SuiNS Token",
"NS2DRP": "New Silver Series 2 DROP",
"NSBT": "Neutrino Token",
"NSD": "Nasdacoin",
@ -10620,7 +10687,8 @@
"PEGAMAGA": "Pepe Maga",
"PEGG": "PokPok Golden Egg",
"PEGS": "PegShares",
"PEIPEI": "PEIPEI",
"PEIPEI": "PeiPei",
"PEIPEICN": "PEIPEI",
"PEKA": "PEKA",
"PEKC": "Peacock Coin",
"PEKINU": "PEKI INU",
@ -10891,6 +10959,7 @@
"PLANET": "PLANET",
"PLANETCOIN": "PlanetCoin",
"PLANETS": "PlanetWatch",
"PLANT": "Plant",
"PLASTIK": "Plastiks",
"PLAT": "BitGuild PLAT",
"PLATC": "PlatinCoin",
@ -10941,6 +11010,7 @@
"PLU": "Pluton",
"PLUG": "PL^Gnet",
"PLUGCN": "Plug Chain",
"PLUME": "Plume",
"PLUP": "PoolUp",
"PLURA": "PluraCoin",
"PLUS1": "PlusOneCoin",
@ -11118,6 +11188,7 @@
"PPAY": "Plasma Finance",
"PPBLZ": "Pepemon Pepeballs",
"PPC": "PeerCoin",
"PPCOIN": "Project Plutus",
"PPFT": "Papparico Finance",
"PPI": "Primpy",
"PPIZZA": "P Pizza",
@ -11285,6 +11356,7 @@
"PUMP": "PUMP",
"PUMPBTC": "pumpBTC",
"PUMPFUNBAN": "Pump Fun Ban",
"PUMPTRUMP": "PUMP TRUMP",
"PUN": "Punkko",
"PUNCH": "PUNCHWORD",
"PUNDIX": "Pundi X",
@ -11360,6 +11432,7 @@
"PYRV1": "Vulcan Forged v1",
"PYT": "Payther",
"PYTH": "Pyth Network",
"PYTHIA": "Pythia",
"PYUSD": "PayPal USD",
"PZETH": "pzETH",
"PZM": "Prizm",
@ -11683,6 +11756,7 @@
"RENQ": "Renq Finance",
"RENS": "Rens",
"RENT": "Rent AI",
"RENTA": "Renta Network",
"RENTBE": "Rentberry",
"REP": "Augur",
"REPE": "Resistance Pepe",
@ -11766,6 +11840,7 @@
"RIDEMY": "Ride My Car",
"RIF": "RIF Token",
"RIF3": "MetaTariffv3",
"RIFA": "Rifampicin",
"RIFI": "Rikkei Finance",
"RIGEL": "Rigel Finance",
"RIK": "RIKEZA",
@ -11952,6 +12027,7 @@
"RSUN": "RisingSun",
"RSUSHI": "Sushi (Rainbow Bridge)",
"RSV": "Reserve",
"RSVV1": "Reserve v1",
"RSWETH": "Restaked Swell Ethereum",
"RT2": "RotoCoin",
"RTB": "AB-CHAIN",
@ -11999,6 +12075,8 @@
"RUX": "Gacrux NFT",
"RVC": "Revenue Coin",
"RVF": "RocketX exchange",
"RVFV1": "RocketX exchange v1",
"RVFV2": "RocketX exchange v2",
"RVL": "Revolotto",
"RVLNG": "RevolutionGames",
"RVLT": "Revolt 2 Earn",
@ -12170,7 +12248,7 @@
"SBTC": "Super Bitcoin",
"SC": "Siacoin",
"SC20": "Shine Chain",
"SCA": "SiaClassic",
"SCA": "Scallop",
"SCALE": "Scalia Infrastructure",
"SCAM": "Scam Coin",
"SCAMP": "ScamPump",
@ -12244,8 +12322,10 @@
"SDAO": "SingularityDAO",
"SDC": "ShadowCash",
"SDCRV": "Stake DAO CRV",
"SDEUSD": "Staked deUSD",
"SDEX": "SmarDex",
"SDL": "Saddle Finance",
"SDM": "Shieldeum",
"SDME": "SDME",
"SDN": "Shiden Network",
"SDO": "TheSolanDAO",
@ -12311,6 +12391,7 @@
"SENSOV1": "SENSO v1",
"SENSUS": "Sensus",
"SENT": "Sentinel",
"SENTAI": "SentAI",
"SENTI": "Sentinel Bot Ai",
"SENTR": "Sentre Protocol",
"SEON": "Seedon",
@ -12519,6 +12600,7 @@
"SHX": "Stronghold Token",
"SHYTCOIN": "ShytCoin",
"SI": "Siren",
"SIACLASSIC": "SiaClassic",
"SIB": "SibCoin",
"SIBA": "SibaInu",
"SIC": "Swisscoin",
@ -12552,6 +12634,7 @@
"SILVERSTAND": "Silver Standard",
"SILVERWAY": "Silverway",
"SIM": "Simpson",
"SIMBA": "SIMBA The Sloth",
"SIMP": "SO-COL",
"SIMPLE": "SimpleChain",
"SIMPS": "Simpson MAGA",
@ -12715,6 +12798,7 @@
"SMLY": "SmileyCoin",
"SMM": "TrendingTool.io",
"SMOG": "Smog",
"SMOK": "Smoking Chicken Fish",
"SMOKE": "Smoke",
"SMOL": "Smolcoin",
"SMOLE": "smolecoin",
@ -12741,6 +12825,7 @@
"SNA": "SUKUYANA",
"SNAC": "SnackboxAI",
"SNACK": "Crypto Snack",
"SNAI": "SwarmNode.ai",
"SNAIL": "SnailBrook",
"SNAKE": "snake",
"SNAKES": "Snakes Game",
@ -12817,7 +12902,8 @@
"SOFTCO": "SOFT COQ INU",
"SOH": "Stohn Coin",
"SOHOT": "SOHOTRN",
"SOIL": "SoilCoin",
"SOIL": "Soil",
"SOILCOIN": "SoilCoin",
"SOJ": "Sojourn Coin",
"SOK": "shoki",
"SOKU": "Soku Swap",
@ -12877,6 +12963,7 @@
"SOLSPONGE": "Solsponge",
"SOLT": "Soltalk AI",
"SOLTR": "SolTrump",
"SOLV": "Solv Protocol",
"SOLVBTC": "Solv Protocol SolvBTC",
"SOLVBTCBBN": "Solv Protocol SolvBTC.BBN",
"SOLVBTCCORE": "Solv Protocol SolvBTC.CORE",
@ -12971,6 +13058,7 @@
"SPENDC": "SpendCoin",
"SPENT": "Espento",
"SPEPE": "SolanaPepe",
"SPERG": "Bloomsperg Terminal",
"SPEX": "StepEx",
"SPF": "SportyCo",
"SPFC": "São Paulo FC Fan Token",
@ -13040,6 +13128,7 @@
"SPY": "Smarty Pay",
"SPYRO": "SPYRO",
"SQAT": "Syndiqate",
"SQD": "SQD",
"SQG": "Squid Token",
"SQGROW": "SquidGrow",
"SQL": "Squall Coin",
@ -13296,6 +13385,7 @@
"SUIA": "SUIA",
"SUIAI": "SUI Agents",
"SUIB": "Suiba Inu",
"SUIDEPIN": "Sui DePIN",
"SUIJAK": "Suijak",
"SUILAMA": "Suilama",
"SUIMAN": "Suiman",
@ -13385,6 +13475,7 @@
"SWAPP": "SWAPP Protocol",
"SWAPZ": "SWAPZ.app",
"SWARM": "SwarmCoin",
"SWARMS": "Swarms",
"SWASH": "Swash",
"SWAY": "Sway Social",
"SWBTC": "Swell Restaked BTC",
@ -13449,6 +13540,7 @@
"SYLO": "Sylo",
"SYLV": "Sylvester",
"SYM": "SymVerse",
"SYMP": "Sympson AI",
"SYN": "Synapse",
"SYNC": "Syncus",
"SYNCC": "SyncCoin",
@ -13462,7 +13554,8 @@
"SYNR": "MOBLAND",
"SYNT": "Synthetix Network",
"SYNTE": "Synternet",
"SYNTH": "Synthswap",
"SYNTH": "SYNTHR",
"SYNTHSWAP": "Synthswap",
"SYNX": "Syndicate",
"SYPOOL": "Sypool",
"SYRUP": "Syrup",
@ -13679,7 +13772,6 @@
"THAVAGE": "Mike Tython",
"THC": "The Hempcoin",
"THD": "Trump Harris Debate",
"THE": "The Protocol",
"THE9": "THE9",
"THEAICOIN": "AI",
"THEB": "The Boys Club",
@ -13697,7 +13789,9 @@
"THEN": "THENA",
"THEO": "Theopetra",
"THEOS": "Theos",
"THEP": "The Protocol",
"THES": "The Standard Protocol (USDS)",
"THESTANDARD": "Standard Token",
"THETA": "Theta Network",
"THETAN": "Thetan Coin",
"THETRIBE": "The Tribe",
@ -13751,7 +13845,8 @@
"TIM": "TIMTIM GAMES",
"TIME": "Chrono.tech",
"TIMES": "DARKTIMES",
"TIMI": "Timicoin",
"TIMI": "This Is My Iguana",
"TIMICOIN": "Timicoin",
"TIN": "Token IN",
"TINC": "Tiny Coin",
"TINKU": "TinkuCoin",
@ -14023,7 +14118,7 @@
"TRUM": "TrumpBucks",
"TRUMAGA": "TrumpMAGA",
"TRUMATIC": "TruFin Staked MATIC",
"TRUMP": "MAGA",
"TRUMP": "OFFICIAL TRUMP",
"TRUMP2": "Trump2024",
"TRUMP2024": "Donald Trump",
"TRUMP3": "Trump MP3",
@ -14048,7 +14143,8 @@
"TRUMPHAT": "Trump Hat",
"TRUMPINU": "Trump Inu",
"TRUMPJ": "TRUMPJR",
"TRUMPJR": "TrumpJr",
"TRUMPJR": "OFFICIAL TRUMP JR",
"TRUMPJRVIP": "TrumpJr",
"TRUMPM": "TRUMP MAGA PRESIDENT",
"TRUMPMA": "TRUMP MAGA SUPER",
"TRUMPMAGA": "President Trump MAGA",
@ -14094,6 +14190,7 @@
"TSLT": "Tamkin",
"TSN": "Tsunami Exchange Token",
"TSR": "Tesra",
"TST": "Teleport System Token",
"TSUBASAUT": "TSUBASA Utility Token",
"TSUGT": "Captain Tsubasa",
"TSUJI": "Tsutsuji",
@ -14234,6 +14331,7 @@
"UETL": "Useless Eth Token Lite",
"UFARM": "UniFarm",
"UFC": "Union Fair Coin",
"UFD": "Unicorn Fart Dust",
"UFFYI": "Unlimited FiscusFYI",
"UFI": "PureFi",
"UFO": "UFO Gaming",
@ -14306,6 +14404,7 @@
"UNICORN": "UNICORN Token",
"UNIDEXAI": "UniDexAI",
"UNIDX": "UniDex",
"UNIDXV1": "UniDex v1",
"UNIE": "Uniswap Protocol Token (Avalanche Bridge)",
"UNIETH": "Universal ETH",
"UNIFY": "Unify",
@ -14376,6 +14475,7 @@
"USCC": "USC",
"USCOIN": "USCoin",
"USD0": "Usual",
"USD1": "USD1",
"USD3": "Web 3 Dollar",
"USDA": "USDA",
"USDAP": "Bond Appetite USD",
@ -14447,6 +14547,7 @@
"USTCW": "TerraClassicUSD Wormhole",
"USTX": "UpStableToken",
"USUAL": "Usual",
"USUALX": "USUALx",
"USV": "Universal Store of Value",
"USX": "USX Quantum",
"USYC": "Hashnote USYC",
@ -15194,6 +15295,7 @@
"WORX": "Worx",
"WOS": "Wolf Of Solana",
"WOT": "World Of Trump",
"WOULD": "would",
"WOW": "WOWswap",
"WOWS": "Wolves of Wall Street",
"WOZX": "Efforce",
@ -15241,6 +15343,7 @@
"WSTORV1": "StorageChain v1",
"WSTR": "Wrapped Star",
"WSTUSDT": "wstUSDT",
"WSTUSR": "Resolv wstUSR",
"WSX": "WeAreSatoshi",
"WT": "WeToken",
"WTAO": "Wrapped TAO",
@ -15260,6 +15363,7 @@
"WUF": "WUFFI",
"WUK": "WUKONG",
"WUKONG": "Sun Wukong",
"WULFY": "Wulfy",
"WUSD": "Worldwide USD",
"WUST": "Wrapped UST Token",
"WVG0": "Wrapped Virgin Gen-0 CryptoKittties",
@ -15721,6 +15825,8 @@
"YIELD": "Yield Protocol",
"YIELDX": "Yield Finance",
"YIKES": "Yikes Dog",
"YILONG": "Yi Long Ma",
"YILONGMA": "Chinese Elon Musk",
"YIN": "YIN Finance",
"YINBI": "Yinbi",
"YLAY": "Yelay",
@ -15729,6 +15835,7 @@
"YLDY": "Yieldly",
"YMC": "YamahaCoin",
"YMS": "Yeni Malatyaspor Token",
"YNE": "yesnoerror",
"YNETH": "YieldNest Restaked ETH",
"YO": "Yobit Token",
"YOBASE": "All Your Base",
@ -15920,6 +16027,7 @@
"ZKDX": "ZKDX",
"ZKE": "zkEra Finance",
"ZKEVM": "zkEVMChain (BSC)",
"ZKEX": "zkExchange",
"ZKF": "ZKFair",
"ZKGROK": "ZKGROK",
"ZKGUN": "zkGUN",

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

@ -504,12 +504,10 @@
<loc>https://ghostfol.io/pl/o-ghostfolio</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<!--
<url>
<loc>https://ghostfol.io/pl/open</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
-->
<url>
<loc>https://ghostfol.io/pl/rynki</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>

8
apps/api/src/services/cryptocurrency/cryptocurrency.service.ts

@ -1,3 +1,5 @@
import { DEFAULT_CURRENCY } from '@ghostfolio/common/config';
import { Injectable } from '@nestjs/common';
const cryptocurrencies = require('../../assets/cryptocurrencies/cryptocurrencies.json');
@ -9,7 +11,11 @@ export class CryptocurrencyService {
public isCryptocurrency(aSymbol = '') {
const cryptocurrencySymbol = aSymbol.substring(0, aSymbol.length - 3);
return this.getCryptocurrencies().includes(cryptocurrencySymbol);
return (
aSymbol.endsWith(DEFAULT_CURRENCY) &&
this.getCryptocurrencies().includes(cryptocurrencySymbol)
);
}
private getCryptocurrencies() {

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

@ -1,4 +1,5 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service';
import {
DataProviderInterface,
GetDividendsParams,
@ -10,7 +11,6 @@ import {
IDataProviderHistoricalResponse,
IDataProviderResponse
} from '@ghostfolio/api/services/interfaces/interfaces';
import { DEFAULT_CURRENCY } from '@ghostfolio/common/config';
import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper';
import {
DataProviderInfo,
@ -19,16 +19,32 @@ import {
} from '@ghostfolio/common/interfaces';
import { Injectable, Logger } from '@nestjs/common';
import { DataSource, SymbolProfile } from '@prisma/client';
import { format, isAfter, isBefore, isSameDay } from 'date-fns';
import {
AssetClass,
AssetSubClass,
DataSource,
SymbolProfile
} from '@prisma/client';
import { isISIN } from 'class-validator';
import { countries } from 'countries-list';
import {
addDays,
addYears,
format,
isAfter,
isBefore,
isSameDay,
parseISO
} from 'date-fns';
@Injectable()
export class FinancialModelingPrepService implements DataProviderInterface {
private apiKey: string;
private readonly URL = 'https://financialmodelingprep.com/api/v3';
private readonly URL = this.getUrl({ version: 3 });
public constructor(
private readonly configurationService: ConfigurationService
private readonly configurationService: ConfigurationService,
private readonly cryptocurrencyService: CryptocurrencyService
) {
this.apiKey = this.configurationService.get(
'API_KEY_FINANCIAL_MODELING_PREP'
@ -44,10 +60,165 @@ export class FinancialModelingPrepService implements DataProviderInterface {
}: {
symbol: string;
}): Promise<Partial<SymbolProfile>> {
return {
const response: Partial<SymbolProfile> = {
symbol,
dataSource: this.getName()
};
try {
if (this.cryptocurrencyService.isCryptocurrency(symbol)) {
const [quote] = await fetch(
`${this.URL}/quote/${symbol}?apikey=${this.apiKey}`,
{
signal: AbortSignal.timeout(
this.configurationService.get('REQUEST_TIMEOUT')
)
}
).then((res) => res.json());
response.assetClass = AssetClass.LIQUIDITY;
response.assetSubClass = AssetSubClass.CRYPTOCURRENCY;
response.currency = symbol.substring(symbol.length - 3);
response.name = quote.name;
} else {
const [assetProfile] = await fetch(
`${this.URL}/profile/${symbol}?apikey=${this.apiKey}`,
{
signal: AbortSignal.timeout(
this.configurationService.get('REQUEST_TIMEOUT')
)
}
).then((res) => res.json());
const { assetClass, assetSubClass } =
this.parseAssetClass(assetProfile);
response.assetClass = assetClass;
response.assetSubClass = assetSubClass;
if (assetSubClass === AssetSubClass.ETF) {
const etfCountryWeightings = await fetch(
`${this.URL}/etf-country-weightings/${symbol}?apikey=${this.apiKey}`,
{
signal: AbortSignal.timeout(
this.configurationService.get('REQUEST_TIMEOUT')
)
}
).then((res) => res.json());
response.countries = etfCountryWeightings.map(
({ country: countryName, weightPercentage }) => {
let countryCode: string;
for (const [code, country] of Object.entries(countries)) {
if (country.name === countryName) {
countryCode = code;
break;
}
}
return {
code: countryCode,
weight: parseFloat(weightPercentage.slice(0, -1)) / 100
};
}
);
const [etfInformation] = await fetch(
`${this.getUrl({ version: 4 })}/etf-info?symbol=${symbol}&apikey=${this.apiKey}`,
{
signal: AbortSignal.timeout(
this.configurationService.get('REQUEST_TIMEOUT')
)
}
).then((res) => res.json());
if (etfInformation.website) {
response.url = etfInformation.website;
}
const [portfolioDate] = await fetch(
`${this.getUrl({ version: 4 })}/etf-holdings/portfolio-date?symbol=${symbol}&apikey=${this.apiKey}`,
{
signal: AbortSignal.timeout(
this.configurationService.get('REQUEST_TIMEOUT')
)
}
).then((res) => res.json());
if (portfolioDate) {
const etfHoldings = await fetch(
`${this.getUrl({ version: 4 })}/etf-holdings?date=${portfolioDate.date}&symbol=${symbol}&apikey=${this.apiKey}`,
{
signal: AbortSignal.timeout(
this.configurationService.get('REQUEST_TIMEOUT')
)
}
).then((res) => res.json());
const sortedTopHoldings = etfHoldings
.sort((a, b) => {
return b.pctVal - a.pctVal;
})
.slice(0, 10);
response.holdings = sortedTopHoldings.map(({ name, pctVal }) => {
return { name, weight: pctVal / 100 };
});
}
const etfSectorWeightings = await fetch(
`${this.URL}/etf-sector-weightings/${symbol}?apikey=${this.apiKey}`,
{
signal: AbortSignal.timeout(
this.configurationService.get('REQUEST_TIMEOUT')
)
}
).then((res) => res.json());
response.sectors = etfSectorWeightings.map(
({ sector, weightPercentage }) => {
return {
name: sector,
weight: parseFloat(weightPercentage.slice(0, -1)) / 100
};
}
);
} else if (assetSubClass === AssetSubClass.STOCK) {
if (assetProfile.country) {
response.countries = [{ code: assetProfile.country, weight: 1 }];
}
if (assetProfile.sector) {
response.sectors = [{ name: assetProfile.sector, weight: 1 }];
}
}
response.currency = assetProfile.currency;
if (assetProfile.isin) {
response.isin = assetProfile.isin;
}
response.name = assetProfile.companyName;
if (assetProfile.website) {
response.url = assetProfile.website;
}
}
} catch (error) {
let message = error;
if (error?.name === 'AbortError') {
message = `RequestError: The operation to get the asset profile for ${symbol} was aborted because the request to the data provider took more than ${(
this.configurationService.get('REQUEST_TIMEOUT') / 1000
).toFixed(3)} seconds`;
}
Logger.error(message, 'FinancialModelingPrepService');
}
return response;
}
public getDataProviderInfo(): DataProviderInfo {
@ -58,9 +229,55 @@ export class FinancialModelingPrepService implements DataProviderInterface {
};
}
public async getDividends({}: GetDividendsParams) {
public async getDividends({
from,
requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'),
symbol,
to
}: GetDividendsParams) {
if (isSameDay(from, to)) {
to = addDays(to, 1);
}
try {
const response: {
[date: string]: IDataProviderHistoricalResponse;
} = {};
const { historical } = await fetch(
`${this.URL}/historical-price-full/stock_dividend/${symbol}?apikey=${this.apiKey}`,
{
signal: AbortSignal.timeout(requestTimeout)
}
).then((res) => res.json());
historical
.filter(({ date }) => {
return (
(isSameDay(parseISO(date), from) ||
isAfter(parseISO(date), from)) &&
isBefore(parseISO(date), to)
);
})
.forEach(({ adjDividend, date }) => {
response[date] = {
marketPrice: adjDividend
};
});
return response;
} catch (error) {
Logger.error(
`Could not get dividends for ${symbol} (${this.getName()}) from ${format(
from,
DATE_FORMAT
)} to ${format(to, DATE_FORMAT)}: [${error.name}] ${error.message}`,
'FinancialModelingPrepService'
);
return {};
}
}
public async getHistorical({
from,
@ -70,32 +287,46 @@ export class FinancialModelingPrepService implements DataProviderInterface {
}: GetHistoricalParams): Promise<{
[symbol: string]: { [date: string]: IDataProviderHistoricalResponse };
}> {
const MAX_YEARS_PER_REQUEST = 5;
const result: {
[symbol: string]: { [date: string]: IDataProviderHistoricalResponse };
} = {
[symbol]: {}
};
let currentFrom = from;
try {
while (isBefore(currentFrom, to) || isSameDay(currentFrom, to)) {
const currentTo = isBefore(
addYears(currentFrom, MAX_YEARS_PER_REQUEST),
to
)
? addYears(currentFrom, MAX_YEARS_PER_REQUEST)
: to;
const { historical } = await fetch(
`${this.URL}/historical-price-full/${symbol}?apikey=${this.apiKey}`,
`${this.URL}/historical-price-full/${symbol}?apikey=${this.apiKey}&from=${format(currentFrom, DATE_FORMAT)}&to=${format(currentTo, DATE_FORMAT)}`,
{
signal: AbortSignal.timeout(requestTimeout)
}
).then((res) => res.json());
const result: {
[symbol: string]: { [date: string]: IDataProviderHistoricalResponse };
} = {
[symbol]: {}
};
for (const { close, date } of historical) {
for (const { adjClose, date } of historical) {
if (
(isSameDay(parseDate(date), from) ||
isAfter(parseDate(date), from)) &&
isBefore(parseDate(date), to)
(isSameDay(parseDate(date), currentFrom) ||
isAfter(parseDate(date), currentFrom)) &&
isBefore(parseDate(date), currentTo)
) {
result[symbol][date] = {
marketPrice: close
marketPrice: adjClose
};
}
}
currentFrom = addYears(currentFrom, MAX_YEARS_PER_REQUEST);
}
return result;
} catch (error) {
throw new Error(
@ -130,8 +361,10 @@ export class FinancialModelingPrepService implements DataProviderInterface {
).then((res) => res.json());
for (const { price, symbol } of quotes) {
const { currency } = await this.getAssetProfile({ symbol });
response[symbol] = {
currency: DEFAULT_CURRENCY,
currency,
dataProviderInfo: this.getDataProviderInfo(),
dataSource: DataSource.FINANCIAL_MODELING_PREP,
marketPrice: price,
@ -161,6 +394,28 @@ export class FinancialModelingPrepService implements DataProviderInterface {
let items: LookupItem[] = [];
try {
if (isISIN(query)) {
const result = await fetch(
`${this.getUrl({ version: 4 })}/search/isin?isin=${query}&apikey=${this.apiKey}`,
{
signal: AbortSignal.timeout(
this.configurationService.get('REQUEST_TIMEOUT')
)
}
).then((res) => res.json());
items = result.map(({ companyName, currency, symbol }) => {
return {
currency,
symbol,
assetClass: undefined, // TODO
assetSubClass: undefined, // TODO
dataProviderInfo: this.getDataProviderInfo(),
dataSource: this.getName(),
name: companyName
};
});
} else {
const result = await fetch(
`${this.URL}/search?query=${query}&apikey=${this.apiKey}`,
{
@ -172,14 +427,16 @@ export class FinancialModelingPrepService implements DataProviderInterface {
items = result.map(({ currency, name, symbol }) => {
return {
// TODO: Add assetClass
// TODO: Add assetSubClass
currency,
name,
symbol,
assetClass: undefined, // TODO
assetSubClass: undefined, // TODO
dataProviderInfo: this.getDataProviderInfo(),
dataSource: this.getName()
};
});
}
} catch (error) {
let message = error;
@ -194,4 +451,29 @@ export class FinancialModelingPrepService implements DataProviderInterface {
return { items };
}
private getUrl({ version }: { version: number }) {
return `https://financialmodelingprep.com/api/v${version}`;
}
private parseAssetClass(profile: any): {
assetClass: AssetClass;
assetSubClass: AssetSubClass;
} {
let assetClass: AssetClass;
let assetSubClass: AssetSubClass;
if (profile.isEtf) {
assetClass = AssetClass.EQUITY;
assetSubClass = AssetSubClass.ETF;
} else if (profile.isFund) {
assetClass = AssetClass.EQUITY;
assetSubClass = AssetSubClass.MUTUALFUND;
} else {
assetClass = AssetClass.EQUITY;
assetSubClass = AssetSubClass.STOCK;
}
return { assetClass, assetSubClass };
}
}

2
apps/api/src/services/data-provider/manual/manual.service.ts

@ -282,7 +282,7 @@ export class ManualService implements DataProviderInterface {
)
});
if (response.headers['content-type']?.includes('application/json')) {
if (response.headers.get('content-type')?.includes('application/json')) {
const data = await response.json();
const value = String(

42
apps/api/src/services/symbol-profile/symbol-profile.service.ts

@ -177,9 +177,13 @@ export class SymbolProfileService {
symbolProfile?.countries as unknown as Prisma.JsonArray
),
dateOfFirstActivity: undefined as Date,
holdings: this.getHoldings(symbolProfile),
holdings: this.getHoldings(
symbolProfile?.holdings as unknown as Prisma.JsonArray
),
scraperConfiguration: this.getScraperConfiguration(symbolProfile),
sectors: this.getSectors(symbolProfile),
sectors: this.getSectors(
symbolProfile?.sectors as unknown as Prisma.JsonArray
),
symbolMapping: this.getSymbolMapping(symbolProfile)
};
@ -209,8 +213,9 @@ export class SymbolProfileService {
(item.SymbolProfileOverrides.holdings as unknown as Holding[])
?.length > 0
) {
item.holdings = item.SymbolProfileOverrides
.holdings as unknown as Holding[];
item.holdings = this.getHoldings(
item.SymbolProfileOverrides?.holdings as unknown as Prisma.JsonArray
);
}
item.name = item.SymbolProfileOverrides?.name ?? item.name;
@ -219,8 +224,9 @@ export class SymbolProfileService {
(item.SymbolProfileOverrides.sectors as unknown as Sector[])?.length >
0
) {
item.sectors = item.SymbolProfileOverrides
.sectors as unknown as Sector[];
item.sectors = this.getSectors(
item.SymbolProfileOverrides?.sectors as unknown as Prisma.JsonArray
);
}
item.url = item.SymbolProfileOverrides?.url ?? item.url;
@ -249,9 +255,12 @@ export class SymbolProfileService {
});
}
private getHoldings(symbolProfile: SymbolProfile): Holding[] {
return ((symbolProfile?.holdings as Prisma.JsonArray) ?? []).map(
(holding) => {
private getHoldings(aHoldings: Prisma.JsonArray = []): Holding[] {
if (aHoldings === null) {
return [];
}
return aHoldings.map((holding) => {
const { name, weight } = holding as Prisma.JsonObject;
return {
@ -259,8 +268,7 @@ export class SymbolProfileService {
name: (name as string) ?? UNKNOWN_KEY,
valueInBaseCurrency: undefined
};
}
);
});
}
private getScraperConfiguration(
@ -285,17 +293,19 @@ export class SymbolProfileService {
return null;
}
private getSectors(symbolProfile: SymbolProfile): Sector[] {
return ((symbolProfile?.sectors as Prisma.JsonArray) ?? []).map(
(sector) => {
private getSectors(aSectors: Prisma.JsonArray = []): Sector[] {
if (aSectors === null) {
return [];
}
return aSectors.map((sector) => {
const { name, weight } = sector as Prisma.JsonObject;
return {
name: (name as string) ?? UNKNOWN_KEY,
weight: weight as number
};
}
);
});
}
private getSymbolMapping(symbolProfile: SymbolProfile) {

46
apps/client/.eslintrc.json

@ -1,46 +0,0 @@
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"parserOptions": {
"project": ["apps/client/tsconfig.*?.json"]
},
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts"],
"rules": {
"@angular-eslint/prefer-standalone": "off"
}
}
],
"plugins": ["@angular-eslint/eslint-plugin", "@typescript-eslint"],
"rules": {
"@angular-eslint/component-selector": [
"error",
{
"type": "element",
"prefix": "gf",
"style": "kebab-case"
}
],
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "gf",
"style": "camelCase"
}
]
}
}

62
apps/client/eslint.config.cjs

@ -0,0 +1,62 @@
const baseConfig = require('../../eslint.config.cjs');
const angularEslintPlugin = require('@angular-eslint/eslint-plugin');
const typescriptEslintPlugin = require('@typescript-eslint/eslint-plugin');
module.exports = [
{
ignores: ['**/dist']
},
...baseConfig,
{
plugins: {
'@angular-eslint': angularEslintPlugin,
'@typescript-eslint': typescriptEslintPlugin
}
},
{
rules: {
'@angular-eslint/component-selector': [
'error',
{
type: 'element',
prefix: 'gf',
style: 'kebab-case'
}
],
'@angular-eslint/directive-selector': [
'error',
{
type: 'attribute',
prefix: 'gf',
style: 'camelCase'
}
]
}
},
{
files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
// Override or add rules here
rules: {},
languageOptions: {
parserOptions: {
project: ['apps/client/tsconfig.*?.json']
}
}
},
{
files: ['**/*.ts', '**/*.tsx'],
// Override or add rules here
rules: {}
},
{
files: ['**/*.js', '**/*.jsx'],
// Override or add rules here
rules: {}
},
{
files: ['**/*.ts'],
rules: {
'@angular-eslint/prefer-standalone': 'off'
}
}
];

4
apps/client/src/app/components/admin-settings/admin-settings.component.html

@ -12,7 +12,9 @@
[href]="pricingUrl"
>
@if (isGhostfolioApiKeyValid === false) {
<span class="badge badge-warning mr-1" i18n>NEW</span>
<span class="badge badge-warning mr-1" i18n
>Early Access</span
>
}
Ghostfolio Premium
<gf-premium-indicator

2
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts

@ -296,7 +296,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
if (Number.isInteger(this.quantity)) {
this.quantityPrecision = 0;
} else if (this.SymbolProfile?.assetSubClass === 'CRYPTOCURRENCY') {
} else if (SymbolProfile?.assetSubClass === 'CRYPTOCURRENCY') {
if (this.quantity < 1) {
this.quantityPrecision = 7;
} else if (this.quantity < 1000) {

2
apps/client/src/app/components/user-account-settings/user-account-settings.html

@ -100,12 +100,10 @@
>Nederlands (<ng-container i18n>Community</ng-container
>)</mat-option
>
@if (user?.settings?.isExperimentalFeatures) {
<mat-option value="pl"
>Polski (<ng-container i18n>Community</ng-container
>)</mat-option
>
}
<mat-option value="pt"
>Português (<ng-container i18n>Community</ng-container
>)</mat-option

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

@ -244,9 +244,8 @@
Use Ghostfolio in multiple languages: English,
<!-- Català, -->
<!-- Chinese, -->
Dutch, French, German, Italian,
<!-- Polish, -->
Portuguese, Spanish and Turkish
Dutch, French, German, Italian, Polish, Portuguese, Spanish
and Turkish
<!-- and Ukrainian -->
are currently supported.
</p>

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

@ -334,23 +334,23 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">105</context>
<context context-type="linenumber">104</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">108</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">112</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">119</context>
<context context-type="linenumber">117</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">261</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="0275b6f6c30c7b70cff02cb06c355ebd10724f86" datatype="html">
@ -2203,7 +2203,7 @@
<target state="translated">Plataformes</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">79</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">
@ -2211,7 +2211,7 @@
<target state="translated">Etiquetes</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">85</context>
<context context-type="linenumber">87</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -2831,7 +2831,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">257</context>
<context context-type="linenumber">255</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
@ -3303,7 +3303,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">230</context>
<context context-type="linenumber">228</context>
</context-group>
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -3459,7 +3459,7 @@
<target state="new">Locale</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">129</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -3467,7 +3467,7 @@
<target state="new">Date and number format</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">131</context>
<context context-type="linenumber">129</context>
</context-group>
</trans-unit>
<trans-unit id="bbe41ac2ea4a6c00ea941a41b33105048f8e9f13" datatype="html">
@ -3475,7 +3475,7 @@
<target state="new">Appearance</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">152</context>
</context-group>
</trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -3483,7 +3483,7 @@
<target state="new">Auto</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">168</context>
<context context-type="linenumber">166</context>
</context-group>
</trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -3491,7 +3491,7 @@
<target state="new">Light</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">167</context>
</context-group>
</trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -3499,7 +3499,7 @@
<target state="new">Dark</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">170</context>
<context context-type="linenumber">168</context>
</context-group>
</trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -3507,7 +3507,7 @@
<target state="new">Zen Mode</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">179</context>
<context context-type="linenumber">177</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -3519,7 +3519,7 @@
<target state="new"> Distraction-free experience for turbulent times </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">178</context>
</context-group>
</trans-unit>
<trans-unit id="fa22693b23a8bed32d787023df105a7b40002f9c" datatype="html">
@ -3527,7 +3527,7 @@
<target state="new">Biometric Authentication</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">194</context>
</context-group>
</trans-unit>
<trans-unit id="9ae348ee3a7319c2fc4794fa8bc425999d355f8f" datatype="html">
@ -3535,7 +3535,7 @@
<target state="new">Sign in with fingerprint</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">197</context>
<context context-type="linenumber">195</context>
</context-group>
</trans-unit>
<trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html">
@ -3543,7 +3543,7 @@
<target state="new">Experimental Features</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">211</context>
</context-group>
</trans-unit>
<trans-unit id="7f44fdbb881db76676fff811a21dc3eadcf11a33" datatype="html">
@ -3551,7 +3551,7 @@
<target state="new"> Sneak peek at upcoming functionality </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">214</context>
<context context-type="linenumber">212</context>
</context-group>
</trans-unit>
<trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html">
@ -3559,7 +3559,7 @@
<target state="new">Export Data</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">238</context>
<context context-type="linenumber">236</context>
</context-group>
</trans-unit>
<trans-unit id="85614ebfd89fe16873dfcf593a05f18b7468daac" datatype="html">
@ -3567,7 +3567,7 @@
<target state="new">Danger Zone</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">250</context>
<context context-type="linenumber">248</context>
</context-group>
</trans-unit>
<trans-unit id="3c1ef66d62e3ecb5f661c8ffb89e1b1c46275684" datatype="html">
@ -3575,7 +3575,7 @@
<target state="new">Close Account</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">285</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="4190182554887994764" datatype="html">
@ -4087,7 +4087,7 @@
<target state="new">Open Source Software</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">279</context>
</context-group>
</trans-unit>
<trans-unit id="802222cb4754d74846b18f651b1f94e21576185d" datatype="html">
@ -4095,7 +4095,7 @@
<target state="new">Get Started</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">304</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -6731,7 +6731,7 @@
<target state="new">Valid until</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.html</context>
@ -7334,20 +7334,12 @@
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="b082171edef6d502186c4577e201b2ef7935e955" datatype="html">
<source>NEW</source>
<target state="new">NEW</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="8af1a18460a6a5a33c19443ae14a0417c3a9c023" datatype="html">
<source>Set API key</source>
<target state="new">Set API key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">68</context>
<context context-type="linenumber">70</context>
</context-group>
</trans-unit>
<trans-unit id="2fcf96765ae87821e12fe4f6900ba1a218742cfc" datatype="html">
@ -7469,7 +7461,7 @@
<target state="new">of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">40</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="d666fa5e7e930b82f6c790ccdfe03526664229de" datatype="html">
@ -7477,7 +7469,7 @@
<target state="new">daily requests</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="ab92acbb19a07fb231c67bb8b89c5840087570aa" datatype="html">
@ -7485,7 +7477,7 @@
<target state="new">Remove API key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">56</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="5649402767950535555" datatype="html">
@ -7664,6 +7656,14 @@
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="4499ce8c46ad55564b23a42ed752e72984c0248f" datatype="html">
<source>Early Access</source>
<target state="new">Early Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

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

@ -1026,7 +1026,7 @@
<target state="translated">Registrieren</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">304</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -1090,7 +1090,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">257</context>
<context context-type="linenumber">255</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
@ -1354,7 +1354,7 @@
<target state="translated">Tags</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">85</context>
<context context-type="linenumber">87</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -1770,7 +1770,7 @@
<target state="translated">Lokalität</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">129</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -1778,7 +1778,7 @@
<target state="translated">Datums- und Zahlenformat</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">131</context>
<context context-type="linenumber">129</context>
</context-group>
</trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -1786,7 +1786,7 @@
<target state="translated">Zen Modus</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">179</context>
<context context-type="linenumber">177</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -1798,7 +1798,7 @@
<target state="translated"> Einloggen mit Fingerabdruck </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">197</context>
<context context-type="linenumber">195</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -1810,7 +1810,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">230</context>
<context context-type="linenumber">228</context>
</context-group>
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -2910,7 +2910,7 @@
<target state="translated">Experimentelle Funktionen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">211</context>
</context-group>
</trans-unit>
<trans-unit id="44fcf77e86dc038202ebad6b46d1d833d60d781b" datatype="html">
@ -2958,7 +2958,7 @@
<target state="translated">Aussehen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">152</context>
</context-group>
</trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -2966,7 +2966,7 @@
<target state="translated">Automatisch</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">168</context>
<context context-type="linenumber">166</context>
</context-group>
</trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -2974,7 +2974,7 @@
<target state="translated">Hell</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">167</context>
</context-group>
</trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -2982,7 +2982,7 @@
<target state="translated">Dunkel</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">170</context>
<context context-type="linenumber">168</context>
</context-group>
</trans-unit>
<trans-unit id="112783260724635106" datatype="html">
@ -3270,23 +3270,23 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">105</context>
<context context-type="linenumber">104</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">108</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">112</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">119</context>
<context context-type="linenumber">117</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">261</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="064d88bead9e71bd849ecaefd8b38cca8f195a88" datatype="html">
@ -3450,7 +3450,7 @@
<target state="translated">Gültig bis</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.html</context>
@ -3518,7 +3518,7 @@
<target state="translated"> Unbeschwertes Erlebnis für turbulente Zeiten </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">178</context>
</context-group>
</trans-unit>
<trans-unit id="7f44fdbb881db76676fff811a21dc3eadcf11a33" datatype="html">
@ -3526,7 +3526,7 @@
<target state="translated"> Vorschau auf kommende Funktionalität </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">214</context>
<context context-type="linenumber">212</context>
</context-group>
</trans-unit>
<trans-unit id="2573979fd7d8602db44b7b4ad493428bc354d2f5" datatype="html">
@ -4010,7 +4010,7 @@
<target state="translated">Plattformen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">79</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="f4e44195c1fc545934be51e9abfba1202911462a" datatype="html">
@ -4358,7 +4358,7 @@
<target state="translated">Open Source Software</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">279</context>
</context-group>
</trans-unit>
<trans-unit id="4230401090765872563" datatype="html">
@ -4766,7 +4766,7 @@
<target state="translated">Biometrische Authentifizierung</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">194</context>
</context-group>
</trans-unit>
<trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html">
@ -4850,7 +4850,7 @@
<target state="translated">Daten exportieren</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">238</context>
<context context-type="linenumber">236</context>
</context-group>
</trans-unit>
<trans-unit id="8298612418414367990" datatype="html">
@ -6659,7 +6659,7 @@
<target state="translated">Gefahrenzone</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">250</context>
<context context-type="linenumber">248</context>
</context-group>
</trans-unit>
<trans-unit id="3c1ef66d62e3ecb5f661c8ffb89e1b1c46275684" datatype="html">
@ -6667,7 +6667,7 @@
<target state="translate">Konto schliessen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">285</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="9d11f76485fd1306f47e2c2d585183ea844760f4" datatype="html">
@ -7334,20 +7334,12 @@
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="b082171edef6d502186c4577e201b2ef7935e955" datatype="html">
<source>NEW</source>
<target state="translated">NEU</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="8af1a18460a6a5a33c19443ae14a0417c3a9c023" datatype="html">
<source>Set API key</source>
<target state="translated">API-Schlüssel setzen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">68</context>
<context context-type="linenumber">70</context>
</context-group>
</trans-unit>
<trans-unit id="2fcf96765ae87821e12fe4f6900ba1a218742cfc" datatype="html">
@ -7469,7 +7461,7 @@
<target state="translated">von</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">40</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="d666fa5e7e930b82f6c790ccdfe03526664229de" datatype="html">
@ -7477,7 +7469,7 @@
<target state="translated">täglichen Anfragen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="ab92acbb19a07fb231c67bb8b89c5840087570aa" datatype="html">
@ -7485,7 +7477,7 @@
<target state="translated">API-Schlüssel löschen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">56</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="5649402767950535555" datatype="html">
@ -7664,6 +7656,14 @@
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="4499ce8c46ad55564b23a42ed752e72984c0248f" datatype="html">
<source>Early Access</source>
<target state="new">Early Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

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

@ -1027,7 +1027,7 @@
<target state="translated">Empezar</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">304</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -1091,7 +1091,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">257</context>
<context context-type="linenumber">255</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
@ -1355,7 +1355,7 @@
<target state="translated">Etiquetas</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">85</context>
<context context-type="linenumber">87</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -1771,7 +1771,7 @@
<target state="translated">Ubicación</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">129</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -1779,7 +1779,7 @@
<target state="translated">Formato de fecha y número</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">131</context>
<context context-type="linenumber">129</context>
</context-group>
</trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -1787,7 +1787,7 @@
<target state="translated">Modo Zen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">179</context>
<context context-type="linenumber">177</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -1799,7 +1799,7 @@
<target state="translated"> Iniciar sesión con huella digital </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">197</context>
<context context-type="linenumber">195</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -1811,7 +1811,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">230</context>
<context context-type="linenumber">228</context>
</context-group>
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -2911,7 +2911,7 @@
<target state="translated">Funcionalidades experimentales</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">211</context>
</context-group>
</trans-unit>
<trans-unit id="1931353503905413384" datatype="html">
@ -2959,7 +2959,7 @@
<target state="translated">Apariencia</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">152</context>
</context-group>
</trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -2967,7 +2967,7 @@
<target state="translated">Automático</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">168</context>
<context context-type="linenumber">166</context>
</context-group>
</trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -2975,7 +2975,7 @@
<target state="translated">Claro</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">167</context>
</context-group>
</trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -2983,7 +2983,7 @@
<target state="translated">Oscuro</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">170</context>
<context context-type="linenumber">168</context>
</context-group>
</trans-unit>
<trans-unit id="112783260724635106" datatype="html">
@ -3271,23 +3271,23 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">105</context>
<context context-type="linenumber">104</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">108</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">112</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">119</context>
<context context-type="linenumber">117</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">261</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="064d88bead9e71bd849ecaefd8b38cca8f195a88" datatype="html">
@ -3451,7 +3451,7 @@
<target state="translated">Válido hasta</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.html</context>
@ -3519,7 +3519,7 @@
<target state="translated"> Experiencia sin distracciones para tiempos turbulentos </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">178</context>
</context-group>
</trans-unit>
<trans-unit id="7f44fdbb881db76676fff811a21dc3eadcf11a33" datatype="html">
@ -3527,7 +3527,7 @@
<target state="translated"> Un adelanto de las próximas funciones </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">214</context>
<context context-type="linenumber">212</context>
</context-group>
</trans-unit>
<trans-unit id="2573979fd7d8602db44b7b4ad493428bc354d2f5" datatype="html">
@ -4011,7 +4011,7 @@
<target state="new">Platforms</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">79</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="f4e44195c1fc545934be51e9abfba1202911462a" datatype="html">
@ -4359,7 +4359,7 @@
<target state="new">Open Source Software</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">279</context>
</context-group>
</trans-unit>
<trans-unit id="4230401090765872563" datatype="html">
@ -4767,7 +4767,7 @@
<target state="new">Biometric Authentication</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">194</context>
</context-group>
</trans-unit>
<trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html">
@ -4851,7 +4851,7 @@
<target state="new">Export Data</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">238</context>
<context context-type="linenumber">236</context>
</context-group>
</trans-unit>
<trans-unit id="8298612418414367990" datatype="html">
@ -6660,7 +6660,7 @@
<target state="translated">Zona peligrosa</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">250</context>
<context context-type="linenumber">248</context>
</context-group>
</trans-unit>
<trans-unit id="3c1ef66d62e3ecb5f661c8ffb89e1b1c46275684" datatype="html">
@ -6668,7 +6668,7 @@
<target state="translated">Eliminar cuenta</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">285</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="9d11f76485fd1306f47e2c2d585183ea844760f4" datatype="html">
@ -7335,20 +7335,12 @@
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="b082171edef6d502186c4577e201b2ef7935e955" datatype="html">
<source>NEW</source>
<target state="new">NEW</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="8af1a18460a6a5a33c19443ae14a0417c3a9c023" datatype="html">
<source>Set API key</source>
<target state="new">Set API key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">68</context>
<context context-type="linenumber">70</context>
</context-group>
</trans-unit>
<trans-unit id="2fcf96765ae87821e12fe4f6900ba1a218742cfc" datatype="html">
@ -7470,7 +7462,7 @@
<target state="new">of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">40</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="d666fa5e7e930b82f6c790ccdfe03526664229de" datatype="html">
@ -7478,7 +7470,7 @@
<target state="new">daily requests</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="ab92acbb19a07fb231c67bb8b89c5840087570aa" datatype="html">
@ -7486,7 +7478,7 @@
<target state="new">Remove API key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">56</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="5649402767950535555" datatype="html">
@ -7665,6 +7657,14 @@
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="4499ce8c46ad55564b23a42ed752e72984c0248f" datatype="html">
<source>Early Access</source>
<target state="new">Early Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

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

@ -966,7 +966,7 @@
<target state="translated">Étiquettes</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">85</context>
<context context-type="linenumber">87</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -1450,7 +1450,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">257</context>
<context context-type="linenumber">255</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
@ -2066,23 +2066,23 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">105</context>
<context context-type="linenumber">104</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">108</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">112</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">119</context>
<context context-type="linenumber">117</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">261</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="6b939b00e8481ed8aa8a24d8add7a209d7116759" datatype="html">
@ -2090,7 +2090,7 @@
<target state="translated">Paramètres régionaux</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">129</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -2098,7 +2098,7 @@
<target state="translated">Format de date et d’heure</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">131</context>
<context context-type="linenumber">129</context>
</context-group>
</trans-unit>
<trans-unit id="bbe41ac2ea4a6c00ea941a41b33105048f8e9f13" datatype="html">
@ -2106,7 +2106,7 @@
<target state="translated">Apparence</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">152</context>
</context-group>
</trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -2114,7 +2114,7 @@
<target state="translated">Auto</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">168</context>
<context context-type="linenumber">166</context>
</context-group>
</trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -2122,7 +2122,7 @@
<target state="translated">Clair</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">167</context>
</context-group>
</trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -2130,7 +2130,7 @@
<target state="translated">Sombre</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">170</context>
<context context-type="linenumber">168</context>
</context-group>
</trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -2138,7 +2138,7 @@
<target state="translated">Mode Zen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">179</context>
<context context-type="linenumber">177</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -2150,7 +2150,7 @@
<target state="translated"> Se connecter avec empreinte </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">197</context>
<context context-type="linenumber">195</context>
</context-group>
</trans-unit>
<trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html">
@ -2158,7 +2158,7 @@
<target state="translated">Fonctionnalités expérimentales</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">211</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -2170,7 +2170,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">230</context>
<context context-type="linenumber">228</context>
</context-group>
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -2910,7 +2910,7 @@
<target state="translated">Démarrer</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">304</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -3450,7 +3450,7 @@
<target state="translated">Valide jusqu’au</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.html</context>
@ -3518,7 +3518,7 @@
<target state="translated"> Expérience sans distraction pour les périodes tumultueuses </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">178</context>
</context-group>
</trans-unit>
<trans-unit id="7f44fdbb881db76676fff811a21dc3eadcf11a33" datatype="html">
@ -3526,7 +3526,7 @@
<target state="translated"> Avant-première de fonctionnalités futures </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">214</context>
<context context-type="linenumber">212</context>
</context-group>
</trans-unit>
<trans-unit id="2573979fd7d8602db44b7b4ad493428bc354d2f5" datatype="html">
@ -4010,7 +4010,7 @@
<target state="translated">Platformes</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">79</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="f4e44195c1fc545934be51e9abfba1202911462a" datatype="html">
@ -4358,7 +4358,7 @@
<target state="translated">Logiciel Open Source</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">279</context>
</context-group>
</trans-unit>
<trans-unit id="4230401090765872563" datatype="html">
@ -4766,7 +4766,7 @@
<target state="translated">Authentication biométrique</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">194</context>
</context-group>
</trans-unit>
<trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html">
@ -4850,7 +4850,7 @@
<target state="translated">Exporter les Data</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">238</context>
<context context-type="linenumber">236</context>
</context-group>
</trans-unit>
<trans-unit id="8298612418414367990" datatype="html">
@ -6659,7 +6659,7 @@
<target state="translated">Zone de danger</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">250</context>
<context context-type="linenumber">248</context>
</context-group>
</trans-unit>
<trans-unit id="3c1ef66d62e3ecb5f661c8ffb89e1b1c46275684" datatype="html">
@ -6667,7 +6667,7 @@
<target state="translated">Supprimer le compte</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">285</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="9d11f76485fd1306f47e2c2d585183ea844760f4" datatype="html">
@ -7334,20 +7334,12 @@
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="b082171edef6d502186c4577e201b2ef7935e955" datatype="html">
<source>NEW</source>
<target state="new">NEW</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="8af1a18460a6a5a33c19443ae14a0417c3a9c023" datatype="html">
<source>Set API key</source>
<target state="new">Set API key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">68</context>
<context context-type="linenumber">70</context>
</context-group>
</trans-unit>
<trans-unit id="2fcf96765ae87821e12fe4f6900ba1a218742cfc" datatype="html">
@ -7469,7 +7461,7 @@
<target state="new">of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">40</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="d666fa5e7e930b82f6c790ccdfe03526664229de" datatype="html">
@ -7477,7 +7469,7 @@
<target state="new">daily requests</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="ab92acbb19a07fb231c67bb8b89c5840087570aa" datatype="html">
@ -7485,7 +7477,7 @@
<target state="new">Remove API key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">56</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="5649402767950535555" datatype="html">
@ -7664,6 +7656,14 @@
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="4499ce8c46ad55564b23a42ed752e72984c0248f" datatype="html">
<source>Early Access</source>
<target state="new">Early Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

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

@ -1027,7 +1027,7 @@
<target state="translated">Inizia</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">304</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -1091,7 +1091,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">257</context>
<context context-type="linenumber">255</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
@ -1355,7 +1355,7 @@
<target state="translated">Tag</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">85</context>
<context context-type="linenumber">87</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -1771,7 +1771,7 @@
<target state="translated">Locale</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">129</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -1779,7 +1779,7 @@
<target state="translated">Formato data e numero</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">131</context>
<context context-type="linenumber">129</context>
</context-group>
</trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -1787,7 +1787,7 @@
<target state="translated">Modalità Zen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">179</context>
<context context-type="linenumber">177</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -1799,7 +1799,7 @@
<target state="translated">Accesso con impronta digitale</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">197</context>
<context context-type="linenumber">195</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -1811,7 +1811,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">230</context>
<context context-type="linenumber">228</context>
</context-group>
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -2911,7 +2911,7 @@
<target state="translated">Funzionalità sperimentali</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">211</context>
</context-group>
</trans-unit>
<trans-unit id="1931353503905413384" datatype="html">
@ -2959,7 +2959,7 @@
<target state="translated">Aspetto</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">152</context>
</context-group>
</trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -2967,7 +2967,7 @@
<target state="translated">Auto</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">168</context>
<context context-type="linenumber">166</context>
</context-group>
</trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -2975,7 +2975,7 @@
<target state="translated">Chiaro</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">167</context>
</context-group>
</trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -2983,7 +2983,7 @@
<target state="translated">Scuro</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">170</context>
<context context-type="linenumber">168</context>
</context-group>
</trans-unit>
<trans-unit id="112783260724635106" datatype="html">
@ -3271,23 +3271,23 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">105</context>
<context context-type="linenumber">104</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">108</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">112</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">119</context>
<context context-type="linenumber">117</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">261</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="064d88bead9e71bd849ecaefd8b38cca8f195a88" datatype="html">
@ -3451,7 +3451,7 @@
<target state="translated">Valido fino a</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.html</context>
@ -3519,7 +3519,7 @@
<target state="translated"> Esperienza priva di distrazioni per i periodi più turbolenti </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">178</context>
</context-group>
</trans-unit>
<trans-unit id="7f44fdbb881db76676fff811a21dc3eadcf11a33" datatype="html">
@ -3527,7 +3527,7 @@
<target state="translated"> Un’anteprima delle funzionalità in arrivo </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">214</context>
<context context-type="linenumber">212</context>
</context-group>
</trans-unit>
<trans-unit id="2573979fd7d8602db44b7b4ad493428bc354d2f5" datatype="html">
@ -4011,7 +4011,7 @@
<target state="translated">Piattaforme</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">79</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="f4e44195c1fc545934be51e9abfba1202911462a" datatype="html">
@ -4359,7 +4359,7 @@
<target state="translated">Software open source</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">279</context>
</context-group>
</trans-unit>
<trans-unit id="4230401090765872563" datatype="html">
@ -4767,7 +4767,7 @@
<target state="translated">Autenticazione biometrica</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">194</context>
</context-group>
</trans-unit>
<trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html">
@ -4851,7 +4851,7 @@
<target state="translated">Esporta dati</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">238</context>
<context context-type="linenumber">236</context>
</context-group>
</trans-unit>
<trans-unit id="8298612418414367990" datatype="html">
@ -6660,7 +6660,7 @@
<target state="translated">Zona di Pericolo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">250</context>
<context context-type="linenumber">248</context>
</context-group>
</trans-unit>
<trans-unit id="3c1ef66d62e3ecb5f661c8ffb89e1b1c46275684" datatype="html">
@ -6668,7 +6668,7 @@
<target state="translated">Chiudi l&apos;account</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">285</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="9d11f76485fd1306f47e2c2d585183ea844760f4" datatype="html">
@ -7335,20 +7335,12 @@
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="b082171edef6d502186c4577e201b2ef7935e955" datatype="html">
<source>NEW</source>
<target state="translated">NUOVO</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="8af1a18460a6a5a33c19443ae14a0417c3a9c023" datatype="html">
<source>Set API key</source>
<target state="new">Imposta API Key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">68</context>
<context context-type="linenumber">70</context>
</context-group>
</trans-unit>
<trans-unit id="2fcf96765ae87821e12fe4f6900ba1a218742cfc" datatype="html">
@ -7470,7 +7462,7 @@
<target state="new">of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">40</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="d666fa5e7e930b82f6c790ccdfe03526664229de" datatype="html">
@ -7478,7 +7470,7 @@
<target state="new">daily requests</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="ab92acbb19a07fb231c67bb8b89c5840087570aa" datatype="html">
@ -7486,7 +7478,7 @@
<target state="new">Remove API key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">56</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="5649402767950535555" datatype="html">
@ -7665,6 +7657,14 @@
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="4499ce8c46ad55564b23a42ed752e72984c0248f" datatype="html">
<source>Early Access</source>
<target state="new">Early Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

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

@ -1026,7 +1026,7 @@
<target state="translated">Aan de slag</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">304</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -1090,7 +1090,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">257</context>
<context context-type="linenumber">255</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
@ -1354,7 +1354,7 @@
<target state="translated">Tags</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">85</context>
<context context-type="linenumber">87</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -1770,7 +1770,7 @@
<target state="translated">Locatie</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">129</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -1778,7 +1778,7 @@
<target state="translated">Datum- en getalnotatie</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">131</context>
<context context-type="linenumber">129</context>
</context-group>
</trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -1786,7 +1786,7 @@
<target state="translated">Zen-modus</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">179</context>
<context context-type="linenumber">177</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -1798,7 +1798,7 @@
<target state="new"> Aanmelden met vingerafdruk </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">197</context>
<context context-type="linenumber">195</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -1810,7 +1810,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">230</context>
<context context-type="linenumber">228</context>
</context-group>
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -2910,7 +2910,7 @@
<target state="translated">Experimentele functies</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">211</context>
</context-group>
</trans-unit>
<trans-unit id="1931353503905413384" datatype="html">
@ -2958,7 +2958,7 @@
<target state="translated">Weergave</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">152</context>
</context-group>
</trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -2966,7 +2966,7 @@
<target state="translated">Automatisch</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">168</context>
<context context-type="linenumber">166</context>
</context-group>
</trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -2974,7 +2974,7 @@
<target state="translated">Licht</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">167</context>
</context-group>
</trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -2982,7 +2982,7 @@
<target state="translated">Donker</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">170</context>
<context context-type="linenumber">168</context>
</context-group>
</trans-unit>
<trans-unit id="112783260724635106" datatype="html">
@ -3270,23 +3270,23 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">105</context>
<context context-type="linenumber">104</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">108</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">112</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">119</context>
<context context-type="linenumber">117</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">261</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="064d88bead9e71bd849ecaefd8b38cca8f195a88" datatype="html">
@ -3450,7 +3450,7 @@
<target state="translated">Geldig tot</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.html</context>
@ -3518,7 +3518,7 @@
<target state="new"> Afleidingsvrije ervaring voor roerige tijden </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">178</context>
</context-group>
</trans-unit>
<trans-unit id="7f44fdbb881db76676fff811a21dc3eadcf11a33" datatype="html">
@ -3526,7 +3526,7 @@
<target state="new"> Voorproefje van nieuwe functionaliteit </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">214</context>
<context context-type="linenumber">212</context>
</context-group>
</trans-unit>
<trans-unit id="2573979fd7d8602db44b7b4ad493428bc354d2f5" datatype="html">
@ -4010,7 +4010,7 @@
<target state="translated">Platforms</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">79</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="f4e44195c1fc545934be51e9abfba1202911462a" datatype="html">
@ -4358,7 +4358,7 @@
<target state="translated">Open Source Software</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">279</context>
</context-group>
</trans-unit>
<trans-unit id="4230401090765872563" datatype="html">
@ -4766,7 +4766,7 @@
<target state="translated">Biometrische authenticatie</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">194</context>
</context-group>
</trans-unit>
<trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html">
@ -4850,7 +4850,7 @@
<target state="translated">Exporteer Data</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">238</context>
<context context-type="linenumber">236</context>
</context-group>
</trans-unit>
<trans-unit id="8298612418414367990" datatype="html">
@ -6659,7 +6659,7 @@
<target state="new">Danger Zone</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">250</context>
<context context-type="linenumber">248</context>
</context-group>
</trans-unit>
<trans-unit id="3c1ef66d62e3ecb5f661c8ffb89e1b1c46275684" datatype="html">
@ -6667,7 +6667,7 @@
<target state="new">Close Account</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">285</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="9d11f76485fd1306f47e2c2d585183ea844760f4" datatype="html">
@ -7334,20 +7334,12 @@
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="b082171edef6d502186c4577e201b2ef7935e955" datatype="html">
<source>NEW</source>
<target state="new">NEW</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="8af1a18460a6a5a33c19443ae14a0417c3a9c023" datatype="html">
<source>Set API key</source>
<target state="new">Set API key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">68</context>
<context context-type="linenumber">70</context>
</context-group>
</trans-unit>
<trans-unit id="2fcf96765ae87821e12fe4f6900ba1a218742cfc" datatype="html">
@ -7469,7 +7461,7 @@
<target state="new">of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">40</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="d666fa5e7e930b82f6c790ccdfe03526664229de" datatype="html">
@ -7477,7 +7469,7 @@
<target state="new">daily requests</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="ab92acbb19a07fb231c67bb8b89c5840087570aa" datatype="html">
@ -7485,7 +7477,7 @@
<target state="new">Remove API key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">56</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="5649402767950535555" datatype="html">
@ -7664,6 +7656,14 @@
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="4499ce8c46ad55564b23a42ed752e72984c0248f" datatype="html">
<source>Early Access</source>
<target state="new">Early Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

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

@ -751,23 +751,23 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">105</context>
<context context-type="linenumber">104</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">108</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">112</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">119</context>
<context context-type="linenumber">117</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">261</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="0275b6f6c30c7b70cff02cb06c355ebd10724f86" datatype="html">
@ -2031,7 +2031,7 @@
<target state="translated">Platformy</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">79</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">
@ -2039,7 +2039,7 @@
<target state="translated">Tagi</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">85</context>
<context context-type="linenumber">87</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -2479,7 +2479,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">257</context>
<context context-type="linenumber">255</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
@ -3159,7 +3159,7 @@
<target state="translated">Ustawienia Regionalne</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">129</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -3167,7 +3167,7 @@
<target state="translated">Format daty i liczb</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">131</context>
<context context-type="linenumber">129</context>
</context-group>
</trans-unit>
<trans-unit id="bbe41ac2ea4a6c00ea941a41b33105048f8e9f13" datatype="html">
@ -3175,7 +3175,7 @@
<target state="translated">Wygląd (tryb)</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">152</context>
</context-group>
</trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -3183,7 +3183,7 @@
<target state="translated">Auto</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">168</context>
<context context-type="linenumber">166</context>
</context-group>
</trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -3191,7 +3191,7 @@
<target state="translated">Jasny</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">167</context>
</context-group>
</trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -3199,7 +3199,7 @@
<target state="translated">Ciemny</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">170</context>
<context context-type="linenumber">168</context>
</context-group>
</trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -3207,7 +3207,7 @@
<target state="translated">Tryb Zen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">179</context>
<context context-type="linenumber">177</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -3219,7 +3219,7 @@
<target state="translated"> Doświadczenie bez zakłóceń w niespokojnych czasach </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">178</context>
</context-group>
</trans-unit>
<trans-unit id="fa22693b23a8bed32d787023df105a7b40002f9c" datatype="html">
@ -3227,7 +3227,7 @@
<target state="translated">Uwierzytelnianie Biometryczne</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">194</context>
</context-group>
</trans-unit>
<trans-unit id="9ae348ee3a7319c2fc4794fa8bc425999d355f8f" datatype="html">
@ -3235,7 +3235,7 @@
<target state="translated">Logowanie za pomocą linii papilarnych</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">197</context>
<context context-type="linenumber">195</context>
</context-group>
</trans-unit>
<trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html">
@ -3243,7 +3243,7 @@
<target state="translated">Funkcje Eksperymentalne</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">211</context>
</context-group>
</trans-unit>
<trans-unit id="7f44fdbb881db76676fff811a21dc3eadcf11a33" datatype="html">
@ -3251,7 +3251,7 @@
<target state="translated"> Podgląd nadchodzących funkcjonalności </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">214</context>
<context context-type="linenumber">212</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -3263,7 +3263,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">230</context>
<context context-type="linenumber">228</context>
</context-group>
</trans-unit>
<trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html">
@ -3271,7 +3271,7 @@
<target state="translated">Eksportuj Dane</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">238</context>
<context context-type="linenumber">236</context>
</context-group>
</trans-unit>
<trans-unit id="4190182554887994764" datatype="html">
@ -3711,7 +3711,7 @@
<target state="translated">Oprogramowanie Open Source</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">279</context>
</context-group>
</trans-unit>
<trans-unit id="802222cb4754d74846b18f651b1f94e21576185d" datatype="html">
@ -3719,7 +3719,7 @@
<target state="translated">Rozpocznij</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">304</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -6127,7 +6127,7 @@
<target state="translated">Ważność do</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.html</context>
@ -6659,7 +6659,7 @@
<target state="translated">Strefa Zagrożenia</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">250</context>
<context context-type="linenumber">248</context>
</context-group>
</trans-unit>
<trans-unit id="3c1ef66d62e3ecb5f661c8ffb89e1b1c46275684" datatype="html">
@ -6667,7 +6667,7 @@
<target state="translated">Zamknij Konto</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">285</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="9d11f76485fd1306f47e2c2d585183ea844760f4" datatype="html">
@ -7334,20 +7334,12 @@
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="b082171edef6d502186c4577e201b2ef7935e955" datatype="html">
<source>NEW</source>
<target state="translated">NOWOŚĆ</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="8af1a18460a6a5a33c19443ae14a0417c3a9c023" datatype="html">
<source>Set API key</source>
<target state="translated">Skonfiguruj klucz API</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">68</context>
<context context-type="linenumber">70</context>
</context-group>
</trans-unit>
<trans-unit id="2fcf96765ae87821e12fe4f6900ba1a218742cfc" datatype="html">
@ -7469,7 +7461,7 @@
<target state="translated">z</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">40</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="d666fa5e7e930b82f6c790ccdfe03526664229de" datatype="html">
@ -7477,7 +7469,7 @@
<target state="translated">codzienne żądania</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="ab92acbb19a07fb231c67bb8b89c5840087570aa" datatype="html">
@ -7485,7 +7477,7 @@
<target state="translated">Usuń klucz API</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">56</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="5649402767950535555" datatype="html">
@ -7664,6 +7656,14 @@
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="4499ce8c46ad55564b23a42ed752e72984c0248f" datatype="html">
<source>Early Access</source>
<target state="new">Early Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

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

@ -1326,7 +1326,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">257</context>
<context context-type="linenumber">255</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
@ -1662,7 +1662,7 @@
<target state="translated">Marcadores</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">85</context>
<context context-type="linenumber">87</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -2034,7 +2034,7 @@
<target state="translated">Localidade</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">129</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -2042,7 +2042,7 @@
<target state="translated">Formato de números e datas</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">131</context>
<context context-type="linenumber">129</context>
</context-group>
</trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -2050,7 +2050,7 @@
<target state="translated">Modo Zen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">179</context>
<context context-type="linenumber">177</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -2062,7 +2062,7 @@
<target state="translated">Aparência</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">152</context>
</context-group>
</trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -2070,7 +2070,7 @@
<target state="translated">Auto</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">168</context>
<context context-type="linenumber">166</context>
</context-group>
</trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -2078,7 +2078,7 @@
<target state="translated">Claro</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">167</context>
</context-group>
</trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -2086,7 +2086,7 @@
<target state="translated">Escuro</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">170</context>
<context context-type="linenumber">168</context>
</context-group>
</trans-unit>
<trans-unit id="9ae348ee3a7319c2fc4794fa8bc425999d355f8f" datatype="html">
@ -2094,7 +2094,7 @@
<target state="translated"> Iniciar sessão com impressão digital </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">197</context>
<context context-type="linenumber">195</context>
</context-group>
</trans-unit>
<trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html">
@ -2102,7 +2102,7 @@
<target state="translated">Funcionalidades Experimentais</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">211</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -2114,7 +2114,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">230</context>
<context context-type="linenumber">228</context>
</context-group>
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -2806,7 +2806,7 @@
<target state="translated">Começar</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">304</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -3314,23 +3314,23 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">105</context>
<context context-type="linenumber">104</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">108</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">112</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">119</context>
<context context-type="linenumber">117</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">261</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="4798457301875181136" datatype="html">
@ -3450,7 +3450,7 @@
<target state="translated">Válido até</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.html</context>
@ -3518,7 +3518,7 @@
<target state="translated"> Experiência sem distrações para tempos turbulentos </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">178</context>
</context-group>
</trans-unit>
<trans-unit id="7f44fdbb881db76676fff811a21dc3eadcf11a33" datatype="html">
@ -3526,7 +3526,7 @@
<target state="translated"> Acesso antecipado a funcionalidades futuras </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">214</context>
<context context-type="linenumber">212</context>
</context-group>
</trans-unit>
<trans-unit id="2573979fd7d8602db44b7b4ad493428bc354d2f5" datatype="html">
@ -4010,7 +4010,7 @@
<target state="translated">Plataformas</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">79</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="f4e44195c1fc545934be51e9abfba1202911462a" datatype="html">
@ -4358,7 +4358,7 @@
<target state="translated">Software de código aberto</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">279</context>
</context-group>
</trans-unit>
<trans-unit id="4230401090765872563" datatype="html">
@ -4766,7 +4766,7 @@
<target state="translated">Autenticação biométrica</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">194</context>
</context-group>
</trans-unit>
<trans-unit id="8d0f35e084b3902a5b04ee86cfde0d4b991a93af" datatype="html">
@ -4850,7 +4850,7 @@
<target state="translated">Exportar dados</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">238</context>
<context context-type="linenumber">236</context>
</context-group>
</trans-unit>
<trans-unit id="8298612418414367990" datatype="html">
@ -6659,7 +6659,7 @@
<target state="new">Danger Zone</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">250</context>
<context context-type="linenumber">248</context>
</context-group>
</trans-unit>
<trans-unit id="3c1ef66d62e3ecb5f661c8ffb89e1b1c46275684" datatype="html">
@ -6667,7 +6667,7 @@
<target state="new">Close Account</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">285</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="9d11f76485fd1306f47e2c2d585183ea844760f4" datatype="html">
@ -7334,20 +7334,12 @@
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="b082171edef6d502186c4577e201b2ef7935e955" datatype="html">
<source>NEW</source>
<target state="new">NEW</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="8af1a18460a6a5a33c19443ae14a0417c3a9c023" datatype="html">
<source>Set API key</source>
<target state="new">Set API key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">68</context>
<context context-type="linenumber">70</context>
</context-group>
</trans-unit>
<trans-unit id="2fcf96765ae87821e12fe4f6900ba1a218742cfc" datatype="html">
@ -7469,7 +7461,7 @@
<target state="new">of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">40</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="d666fa5e7e930b82f6c790ccdfe03526664229de" datatype="html">
@ -7477,7 +7469,7 @@
<target state="new">daily requests</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="ab92acbb19a07fb231c67bb8b89c5840087570aa" datatype="html">
@ -7485,7 +7477,7 @@
<target state="new">Remove API key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">56</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="5649402767950535555" datatype="html">
@ -7664,6 +7656,14 @@
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="4499ce8c46ad55564b23a42ed752e72984c0248f" datatype="html">
<source>Early Access</source>
<target state="new">Early Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

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

@ -727,23 +727,23 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">105</context>
<context context-type="linenumber">104</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">108</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">112</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">119</context>
<context context-type="linenumber">117</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">261</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="0275b6f6c30c7b70cff02cb06c355ebd10724f86" datatype="html">
@ -1779,7 +1779,7 @@
<target state="translated">Etiketler</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">85</context>
<context context-type="linenumber">87</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -1943,7 +1943,7 @@
<target state="translated">Platformlar</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">79</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="2817099043823177227" datatype="html">
@ -2331,7 +2331,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">257</context>
<context context-type="linenumber">255</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
@ -3239,7 +3239,7 @@
<target state="translated">Zen Modu</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">179</context>
<context context-type="linenumber">177</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -3275,7 +3275,7 @@
<target state="translated">Açık Kaynak Yazılım</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">279</context>
</context-group>
</trans-unit>
<trans-unit id="802222cb4754d74846b18f651b1f94e21576185d" datatype="html">
@ -3283,7 +3283,7 @@
<target state="translated">Başla</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">304</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -4995,7 +4995,7 @@
<target state="translated">Geçerli tarih</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.html</context>
@ -5067,7 +5067,7 @@
<target state="translated">Yerel Ayarlar</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">129</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -5075,7 +5075,7 @@
<target state="translated">Tarih ve Sayı Formatları</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">131</context>
<context context-type="linenumber">129</context>
</context-group>
</trans-unit>
<trans-unit id="bbe41ac2ea4a6c00ea941a41b33105048f8e9f13" datatype="html">
@ -5083,7 +5083,7 @@
<target state="translated">Görünüm</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">152</context>
</context-group>
</trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -5091,7 +5091,7 @@
<target state="translated">Otomatik</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">168</context>
<context context-type="linenumber">166</context>
</context-group>
</trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -5099,7 +5099,7 @@
<target state="translated">Açık</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">167</context>
</context-group>
</trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -5107,7 +5107,7 @@
<target state="translated">Koyu</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">170</context>
<context context-type="linenumber">168</context>
</context-group>
</trans-unit>
<trans-unit id="071f26a758dfeaed37626c8758754707c35e3915" datatype="html">
@ -5115,7 +5115,7 @@
<target state="translated">Çalkantılı zamanlar için dikkat dağıtmayan bir deneyim</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">178</context>
</context-group>
</trans-unit>
<trans-unit id="fa22693b23a8bed32d787023df105a7b40002f9c" datatype="html">
@ -5123,7 +5123,7 @@
<target state="translated">Biyometrik Kimlik Doğrulama</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">194</context>
</context-group>
</trans-unit>
<trans-unit id="9ae348ee3a7319c2fc4794fa8bc425999d355f8f" datatype="html">
@ -5131,7 +5131,7 @@
<target state="translated">Parmak iziyle oturum aç</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">197</context>
<context context-type="linenumber">195</context>
</context-group>
</trans-unit>
<trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html">
@ -5139,7 +5139,7 @@
<target state="translated">Deneysel Özellikler</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">211</context>
</context-group>
</trans-unit>
<trans-unit id="7f44fdbb881db76676fff811a21dc3eadcf11a33" datatype="html">
@ -5147,7 +5147,7 @@
<target state="translated">Gelecek özelliklere göz atın</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">214</context>
<context context-type="linenumber">212</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -5159,7 +5159,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">230</context>
<context context-type="linenumber">228</context>
</context-group>
</trans-unit>
<trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html">
@ -5167,7 +5167,7 @@
<target state="translated">Verileri Dışa Aktar</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">238</context>
<context context-type="linenumber">236</context>
</context-group>
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -6659,7 +6659,7 @@
<target state="new">Danger Zone</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">250</context>
<context context-type="linenumber">248</context>
</context-group>
</trans-unit>
<trans-unit id="3c1ef66d62e3ecb5f661c8ffb89e1b1c46275684" datatype="html">
@ -6667,7 +6667,7 @@
<target state="new">Close Account</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">285</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="9d11f76485fd1306f47e2c2d585183ea844760f4" datatype="html">
@ -7334,20 +7334,12 @@
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="b082171edef6d502186c4577e201b2ef7935e955" datatype="html">
<source>NEW</source>
<target state="new">NEW</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="8af1a18460a6a5a33c19443ae14a0417c3a9c023" datatype="html">
<source>Set API key</source>
<target state="new">Set API key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">68</context>
<context context-type="linenumber">70</context>
</context-group>
</trans-unit>
<trans-unit id="2fcf96765ae87821e12fe4f6900ba1a218742cfc" datatype="html">
@ -7469,7 +7461,7 @@
<target state="new">of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">40</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="d666fa5e7e930b82f6c790ccdfe03526664229de" datatype="html">
@ -7477,7 +7469,7 @@
<target state="new">daily requests</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="ab92acbb19a07fb231c67bb8b89c5840087570aa" datatype="html">
@ -7485,7 +7477,7 @@
<target state="new">Remove API key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">56</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="5649402767950535555" datatype="html">
@ -7664,6 +7656,14 @@
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="4499ce8c46ad55564b23a42ed752e72984c0248f" datatype="html">
<source>Early Access</source>
<target state="new">Early Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

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

@ -334,23 +334,23 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">105</context>
<context context-type="linenumber">104</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">108</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">112</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">119</context>
<context context-type="linenumber">117</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">261</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="0275b6f6c30c7b70cff02cb06c355ebd10724f86" datatype="html">
@ -2194,20 +2194,12 @@
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="b082171edef6d502186c4577e201b2ef7935e955" datatype="html">
<source>NEW</source>
<target state="translated">НОВИЙ</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html">
<source>Valid until</source>
<target state="translated">Дійсне до</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.html</context>
@ -2219,7 +2211,7 @@
<target state="translated">з</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">40</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="d666fa5e7e930b82f6c790ccdfe03526664229de" datatype="html">
@ -2227,7 +2219,7 @@
<target state="translated">щоденних запитів</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="ab92acbb19a07fb231c67bb8b89c5840087570aa" datatype="html">
@ -2235,7 +2227,7 @@
<target state="translated">Вилучити ключ API</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">56</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="8af1a18460a6a5a33c19443ae14a0417c3a9c023" datatype="html">
@ -2243,7 +2235,7 @@
<target state="translated">Встановити ключ API</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">68</context>
<context context-type="linenumber">70</context>
</context-group>
</trans-unit>
<trans-unit id="6ee0b8778b1e61a6434b8f1a92febacca34112a7" datatype="html">
@ -2251,7 +2243,7 @@
<target state="translated">Платформи</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">79</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">
@ -2259,7 +2251,7 @@
<target state="translated">Теги</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">85</context>
<context context-type="linenumber">87</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -2456,7 +2448,7 @@
</trans-unit>
<trans-unit id="3cc9c2ae277393b3946b38c088dabff671b1ee1b" datatype="html">
<source>Performance</source>
<target state="translated">Продуктивність</target>
<target state="translated">Прибутковість</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html</context>
<context context-type="linenumber">6</context>
@ -2648,7 +2640,7 @@
</trans-unit>
<trans-unit id="76897e07c5670ce3b7710cc10c5e1c08b5f6a83a" datatype="html">
<source><x id="START_BLOCK_IF" equiv-text="Currency !== SymbolProfile?.currency ) {"/> Change with currency effect <x id="CLOSE_BLOCK_IF" equiv-text="}"/><x id="START_BLOCK_ELSE" equiv-text="@else {"/> Change <x id="CLOSE_BLOCK_ELSE" equiv-text="}"/></source>
<target state="new"><x id="START_BLOCK_IF" equiv-text="seCurrency !== SymbolProfile?.currency ) {"/> Зміна з урахуванням валютного ефекту <x id="CLOSE_BLOCK_IF" equiv-text="}"/><x id="START_BLOCK_ELSE" equiv-text="@else {"/> Змінити <x id="CLOSE_BLOCK_ELSE" equiv-text="}"/></target>
<target state="translated"><x id="START_BLOCK_IF" equiv-text="seCurrency !== SymbolProfile?.currency ) {"/> Зміна з урахуванням валютного ефекту <x id="CLOSE_BLOCK_IF" equiv-text="}"/><x id="START_BLOCK_ELSE" equiv-text="@else {"/> Зміна <x id="CLOSE_BLOCK_ELSE" equiv-text="}"/></target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">50</context>
@ -2656,7 +2648,7 @@
</trans-unit>
<trans-unit id="65ff514a2e167229e1a34b3712f2cf2908576d0f" datatype="html">
<source><x id="START_BLOCK_IF" equiv-text="Currency !== SymbolProfile?.currency ) {"/> Performance with currency effect <x id="CLOSE_BLOCK_IF" equiv-text="}"/><x id="START_BLOCK_ELSE" equiv-text="@else {"/> Performance <x id="CLOSE_BLOCK_ELSE" equiv-text="}"/></source>
<target state="new"><x id="START_BLOCK_IF" equiv-text="seCurrency !== SymbolProfile?.currency ) {"/> Продуктивність з урахуванням валютного ефекту валюти <x id="CLOSE_BLOCK_IF" equiv-text="}"/><x id="START_BLOCK_ELSE" equiv-text="@else {"/> Продуктивність <x id="CLOSE_BLOCK_ELSE" equiv-text="}"/></target>
<target state="translated"><x id="START_BLOCK_IF" equiv-text="seCurrency !== SymbolProfile?.currency ) {"/> Прибутковість з урахуванням валютного ефекту валюти <x id="CLOSE_BLOCK_IF" equiv-text="}"/><x id="START_BLOCK_ELSE" equiv-text="@else {"/> Прибутковість <x id="CLOSE_BLOCK_ELSE" equiv-text="}"/></target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">69</context>
@ -2704,7 +2696,7 @@
</trans-unit>
<trans-unit id="9bbc9e4cebf91162be7d3e324ca5984d576e462c" datatype="html">
<source>Investment</source>
<target state="translated">Інвестиція</target>
<target state="translated">Інвестиції</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">152</context>
@ -2716,7 +2708,7 @@
</trans-unit>
<trans-unit id="d3aa83bd247983dd056a62f56ffb25269bd98d47" datatype="html">
<source>Dividend</source>
<target state="translated">Дивіденд</target>
<target state="translated">Дивіденди</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">165</context>
@ -2892,7 +2884,7 @@
</trans-unit>
<trans-unit id="80c8f0ef9eb8f28bdb327674ce54dfc2431d3959" datatype="html">
<source>Record your investment activities to keep your portfolio up to date.</source>
<target state="translated">Записуйте ваші інвестиційні активності, щоб підтримувати актуальність вашого портфеля.</target>
<target state="translated">Записуйте ваші інвестиційні дії, щоб підтримувати актуальність вашого портфеля.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-overview/home-overview.html</context>
<context context-type="linenumber">26</context>
@ -2936,7 +2928,7 @@
</trans-unit>
<trans-unit id="a8233de047500bf0f0d9f9f1712ddb071501a283" datatype="html">
<source>Summary</source>
<target state="translated">Резюме</target>
<target state="translated">Зведення</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/home-summary/home-summary.html</context>
<context context-type="linenumber">2</context>
@ -2967,7 +2959,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">257</context>
<context context-type="linenumber">255</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
@ -3024,7 +3016,7 @@
</trans-unit>
<trans-unit id="ebf471e68247ca2110cdc5c98538e2e2bbf6e56e" datatype="html">
<source>{VAR_PLURAL, plural, =1 {activity} other {activities}}</source>
<target state="translated">{VAR_PLURAL, plural, =1 {актив} other {активи}}</target>
<target state="translated">{VAR_PLURAL, plural, =1 {дія} other {дій}}</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html</context>
<context context-type="linenumber">14</context>
@ -3032,7 +3024,7 @@
</trans-unit>
<trans-unit id="1befce3c6f0c468b06ae5199116e5b096a35a3ef" datatype="html">
<source>Buy</source>
<target state="translated">Купити</target>
<target state="translated">Купівля</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html</context>
<context context-type="linenumber">31</context>
@ -3040,7 +3032,7 @@
</trans-unit>
<trans-unit id="fe708b572beec788b18edd1b5852d63c07dfaead" datatype="html">
<source>Sell</source>
<target state="translated">Продати</target>
<target state="translated">Продаж</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html</context>
<context context-type="linenumber">43</context>
@ -3048,7 +3040,7 @@
</trans-unit>
<trans-unit id="a64cd8d0131a583e3de081c9e6458af7aecdafbc" datatype="html">
<source>Absolute Gross Performance</source>
<target state="translated">Абсолютна валова продуктивність</target>
<target state="translated">Абсолютний валовий дохід</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html</context>
<context context-type="linenumber">70</context>
@ -3056,7 +3048,7 @@
</trans-unit>
<trans-unit id="de518fa0cd3a454e84102c0d9984c4a3cfdb590d" datatype="html">
<source>Absolute Net Performance</source>
<target state="translated">Абсолютна чиста продуктивність</target>
<target state="translated">Абсолютний чистий прибуток</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html</context>
<context context-type="linenumber">102</context>
@ -3064,7 +3056,7 @@
</trans-unit>
<trans-unit id="26de2fb4d52a11f78e22587a48690cba0fc6fa58" datatype="html">
<source>Net Performance</source>
<target state="translated">Чиста продуктивність</target>
<target state="translated">Чистий прибуток</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html</context>
<context context-type="linenumber">117</context>
@ -3148,7 +3140,7 @@
</trans-unit>
<trans-unit id="67251f04518ae452230c68a748b3fa2838b4db74" datatype="html">
<source>Net Worth</source>
<target state="translated">Чистий капітал</target>
<target state="translated">Чиста вартість</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html</context>
<context context-type="linenumber">273</context>
@ -3156,7 +3148,7 @@
</trans-unit>
<trans-unit id="e702514cebbfb335331b6d6156ffeacb8c3b14e4" datatype="html">
<source> Annualized Performance </source>
<target state="translated"> Річна продуктивність </target>
<target state="translated"> Річна доходність </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html</context>
<context context-type="linenumber">285</context>
@ -3487,7 +3479,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">230</context>
<context context-type="linenumber">228</context>
</context-group>
</trans-unit>
<trans-unit id="7156797854368699223" datatype="html">
@ -3715,7 +3707,7 @@
<target state="translated">Локалізація</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">129</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -3723,7 +3715,7 @@
<target state="translated">Формат дати та чисел</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">131</context>
<context context-type="linenumber">129</context>
</context-group>
</trans-unit>
<trans-unit id="bbe41ac2ea4a6c00ea941a41b33105048f8e9f13" datatype="html">
@ -3731,7 +3723,7 @@
<target state="translated">Зовнішній вигляд</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">152</context>
</context-group>
</trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -3739,7 +3731,7 @@
<target state="translated">Автоматичний</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">168</context>
<context context-type="linenumber">166</context>
</context-group>
</trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -3747,7 +3739,7 @@
<target state="translated">Світлий</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">167</context>
</context-group>
</trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -3755,7 +3747,7 @@
<target state="translated">Темний</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">170</context>
<context context-type="linenumber">168</context>
</context-group>
</trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -3763,7 +3755,7 @@
<target state="translated">Режим дзен</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">179</context>
<context context-type="linenumber">177</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -3775,7 +3767,7 @@
<target state="translated"> Досвід без відволікань для неспокійних часів </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">178</context>
</context-group>
</trans-unit>
<trans-unit id="fa22693b23a8bed32d787023df105a7b40002f9c" datatype="html">
@ -3783,7 +3775,7 @@
<target state="translated">Біометрична аутентифікація</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">194</context>
</context-group>
</trans-unit>
<trans-unit id="9ae348ee3a7319c2fc4794fa8bc425999d355f8f" datatype="html">
@ -3791,7 +3783,7 @@
<target state="translated">Увійти з відбитком пальця</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">197</context>
<context context-type="linenumber">195</context>
</context-group>
</trans-unit>
<trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html">
@ -3799,7 +3791,7 @@
<target state="translated">Експериментальні функції</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">211</context>
</context-group>
</trans-unit>
<trans-unit id="7f44fdbb881db76676fff811a21dc3eadcf11a33" datatype="html">
@ -3807,7 +3799,7 @@
<target state="translated"> Попередній перегляд майбутніх функцій </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">214</context>
<context context-type="linenumber">212</context>
</context-group>
</trans-unit>
<trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html">
@ -3815,7 +3807,7 @@
<target state="translated">Експортувати дані</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">238</context>
<context context-type="linenumber">236</context>
</context-group>
</trans-unit>
<trans-unit id="85614ebfd89fe16873dfcf593a05f18b7468daac" datatype="html">
@ -3823,7 +3815,7 @@
<target state="translated">Зона небезпеки</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">250</context>
<context context-type="linenumber">248</context>
</context-group>
</trans-unit>
<trans-unit id="3c1ef66d62e3ecb5f661c8ffb89e1b1c46275684" datatype="html">
@ -3831,7 +3823,7 @@
<target state="translated">Закрити обліковий запис</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">285</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="4190182554887994764" datatype="html">
@ -4335,7 +4327,7 @@
<target state="translated">Програмне забезпечення з відкритим кодом</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">279</context>
</context-group>
</trans-unit>
<trans-unit id="802222cb4754d74846b18f651b1f94e21576185d" datatype="html">
@ -4343,7 +4335,7 @@
<target state="translated">Почати</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">304</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -4372,7 +4364,7 @@
</trans-unit>
<trans-unit id="4739818603756173797" datatype="html">
<source>Summary</source>
<target state="translated">Резюме</target>
<target state="translated">Зведення</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/home/home-page-routing.module.ts</context>
<context context-type="linenumber">33</context>
@ -5352,7 +5344,7 @@
</trans-unit>
<trans-unit id="7765499580020598783" datatype="html">
<source>Dividend</source>
<target state="translated">Дивіденд</target>
<target state="translated">Дивіденди</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">41</context>
@ -5364,7 +5356,7 @@
</trans-unit>
<trans-unit id="8580549503047096056" datatype="html">
<source>Investment</source>
<target state="translated">Інвестиція</target>
<target state="translated">Інвестиції</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">46</context>
@ -5404,7 +5396,7 @@
</trans-unit>
<trans-unit id="e19955db970092b9cde70be2cea163ab6adfac97" datatype="html">
<source>Absolute Asset Performance</source>
<target state="translated">Абсолютна продуктивність активів</target>
<target state="translated">Абсолютна прибутковість активів</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">60</context>
@ -5412,7 +5404,7 @@
</trans-unit>
<trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html">
<source> Asset Performance </source>
<target state="translated"> Продуктивність активів </target>
<target state="translated"> Прибутковість активів </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">81</context>
@ -5420,7 +5412,7 @@
</trans-unit>
<trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html">
<source>Absolute Currency Performance</source>
<target state="translated">Абсолютна продуктивність валюти</target>
<target state="translated">Абсолютна прибутковість валюти</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">103</context>
@ -5428,7 +5420,7 @@
</trans-unit>
<trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html">
<source> Currency Performance </source>
<target state="translated"> Продуктивність валюти </target>
<target state="translated"> Прибутковість валюти </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">127</context>
@ -5436,7 +5428,7 @@
</trans-unit>
<trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html">
<source> Absolute Net Performance </source>
<target state="translated"> Абсолютна чиста продуктивність </target>
<target state="translated"> Абсолютна чиста прибутковість </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">150</context>
@ -5444,7 +5436,7 @@
</trans-unit>
<trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html">
<source> Net Performance </source>
<target state="translated"> Чиста продуктивність </target>
<target state="translated"> Чиста прибутковість </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">169</context>
@ -5676,7 +5668,7 @@
</trans-unit>
<trans-unit id="60d7aee1c199a9995a318cfce24cbccbcfb52863" datatype="html">
<source>Portfolio Performance</source>
<target state="translated">Продуктивність портфеля</target>
<target state="translated">Прибутковість портфеля</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/pricing/pricing-page.html</context>
<context context-type="linenumber">53</context>
@ -6854,7 +6846,7 @@
</trans-unit>
<trans-unit id="c81076431c2d98928ac370ca3e57092ae77366d7" datatype="html">
<source>Change from All Time High</source>
<target state="translated">Зміна від рекордного максимуму</target>
<target state="translated">Зміна від Історичного Максимуму</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context>
<context context-type="linenumber">81</context>
@ -6862,7 +6854,7 @@
</trans-unit>
<trans-unit id="4bbe89749f1580cdca7f9238cb67ba2bd6968126" datatype="html">
<source>from ATH</source>
<target state="translated">від РМ</target>
<target state="translated">від ІМ</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context>
<context context-type="linenumber">83</context>
@ -6954,7 +6946,7 @@
</trans-unit>
<trans-unit id="2ee26d58f2707416e636887111d5603b35346c4a" datatype="html">
<source>Allocation</source>
<target state="translated">Алоція</target>
<target state="translated">Розподіл</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/holdings-table/holdings-table.component.html</context>
<context context-type="linenumber">98</context>
@ -7018,7 +7010,7 @@
</trans-unit>
<trans-unit id="8903954975609359428" datatype="html">
<source>Buy and sell</source>
<target state="translated">Купити та продати</target>
<target state="translated">Купівля та продаж</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">8</context>
@ -7664,6 +7656,14 @@
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="4499ce8c46ad55564b23a42ed752e72984c0248f" datatype="html">
<source>Early Access</source>
<target state="translated">Ранній доступ</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

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

@ -729,23 +729,23 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">105</context>
<context context-type="linenumber">104</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">108</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">112</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">119</context>
<context context-type="linenumber">117</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">261</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="0275b6f6c30c7b70cff02cb06c355ebd10724f86" datatype="html">
@ -1929,14 +1929,14 @@
<source>Platforms</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">79</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">
<source>Tags</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">85</context>
<context context-type="linenumber">87</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -2330,7 +2330,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">257</context>
<context context-type="linenumber">255</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
@ -2945,49 +2945,49 @@
<source>Locale</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">129</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
<source>Date and number format</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">131</context>
<context context-type="linenumber">129</context>
</context-group>
</trans-unit>
<trans-unit id="bbe41ac2ea4a6c00ea941a41b33105048f8e9f13" datatype="html">
<source>Appearance</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">152</context>
</context-group>
</trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
<source>Auto</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">168</context>
<context context-type="linenumber">166</context>
</context-group>
</trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
<source>Light</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">167</context>
</context-group>
</trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
<source>Dark</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">170</context>
<context context-type="linenumber">168</context>
</context-group>
</trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
<source>Zen Mode</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">179</context>
<context context-type="linenumber">177</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -2998,35 +2998,35 @@
<source> Distraction-free experience for turbulent times </source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">178</context>
</context-group>
</trans-unit>
<trans-unit id="fa22693b23a8bed32d787023df105a7b40002f9c" datatype="html">
<source>Biometric Authentication</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">194</context>
</context-group>
</trans-unit>
<trans-unit id="9ae348ee3a7319c2fc4794fa8bc425999d355f8f" datatype="html">
<source>Sign in with fingerprint</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">197</context>
<context context-type="linenumber">195</context>
</context-group>
</trans-unit>
<trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html">
<source>Experimental Features</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">211</context>
</context-group>
</trans-unit>
<trans-unit id="7f44fdbb881db76676fff811a21dc3eadcf11a33" datatype="html">
<source> Sneak peek at upcoming functionality </source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">214</context>
<context context-type="linenumber">212</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -3037,14 +3037,14 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">230</context>
<context context-type="linenumber">228</context>
</context-group>
</trans-unit>
<trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html">
<source>Export Data</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">238</context>
<context context-type="linenumber">236</context>
</context-group>
</trans-unit>
<trans-unit id="4190182554887994764" datatype="html">
@ -3440,14 +3440,14 @@
<source>Open Source Software</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">279</context>
</context-group>
</trans-unit>
<trans-unit id="802222cb4754d74846b18f651b1f94e21576185d" datatype="html">
<source>Get Started</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">304</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -5636,7 +5636,7 @@
<source>Valid until</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.html</context>
@ -6044,7 +6044,7 @@
<source>Close Account</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">285</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="4941836956820527118" datatype="html">
@ -6058,7 +6058,7 @@
<source>Danger Zone</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">250</context>
<context context-type="linenumber">248</context>
</context-group>
</trans-unit>
<trans-unit id="3d30a34e40fd0afa4f0233005752e4ab615e83a0" datatype="html">
@ -6653,7 +6653,7 @@
<source>Set API key</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">68</context>
<context context-type="linenumber">70</context>
</context-group>
</trans-unit>
<trans-unit id="8908015589937012101" datatype="html">
@ -6663,13 +6663,6 @@
<context context-type="linenumber">24</context>
</context-group>
</trans-unit>
<trans-unit id="b082171edef6d502186c4577e201b2ef7935e955" datatype="html">
<source>NEW</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="be839b9dc1563aec0f80f5b55c8bde1a1dd10ca1" datatype="html">
<source>Data Providers</source>
<context-group purpose="location">
@ -6769,7 +6762,7 @@
<source>of</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">40</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="1b53d197b1067954e0c294f6884e74edacc0c644" datatype="html">
@ -6797,14 +6790,14 @@
<source>Remove API key</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">56</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="d666fa5e7e930b82f6c790ccdfe03526664229de" datatype="html">
<source>daily requests</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="0ad3c057fbf21b81a1f1d0bad8b9ee4b284139ab" datatype="html">
@ -6933,6 +6926,13 @@
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="4499ce8c46ad55564b23a42ed752e72984c0248f" datatype="html">
<source>Early Access</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

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

@ -752,23 +752,23 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">105</context>
<context context-type="linenumber">104</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">110</context>
<context context-type="linenumber">108</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">114</context>
<context context-type="linenumber">112</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">119</context>
<context context-type="linenumber">117</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">261</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="0275b6f6c30c7b70cff02cb06c355ebd10724f86" datatype="html">
@ -2048,7 +2048,7 @@
<target state="translated">平台</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">79</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">
@ -2056,7 +2056,7 @@
<target state="translated">标签</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">85</context>
<context context-type="linenumber">87</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -2496,7 +2496,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">257</context>
<context context-type="linenumber">255</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html</context>
@ -3176,7 +3176,7 @@
<target state="translated">语言环境</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">129</context>
<context context-type="linenumber">127</context>
</context-group>
</trans-unit>
<trans-unit id="4402006eb2c97591dd8c87a5bd8f721fe9e4dc00" datatype="html">
@ -3184,7 +3184,7 @@
<target state="translated">日期和数字格式</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">131</context>
<context context-type="linenumber">129</context>
</context-group>
</trans-unit>
<trans-unit id="bbe41ac2ea4a6c00ea941a41b33105048f8e9f13" datatype="html">
@ -3192,7 +3192,7 @@
<target state="translated">外貌</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">152</context>
</context-group>
</trans-unit>
<trans-unit id="5fb13fb4a8447e59cdf05dc196ade39c02a6f8aa" datatype="html">
@ -3200,7 +3200,7 @@
<target state="translated">自动</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">168</context>
<context context-type="linenumber">166</context>
</context-group>
</trans-unit>
<trans-unit id="693d14f486a25e86bc515dfcfc4462d5201217ef" datatype="html">
@ -3208,7 +3208,7 @@
<target state="translated">明亮</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">167</context>
</context-group>
</trans-unit>
<trans-unit id="adb4562d2dbd3584370e44496969d58c511ecb63" datatype="html">
@ -3216,7 +3216,7 @@
<target state="translated">黑暗</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">170</context>
<context context-type="linenumber">168</context>
</context-group>
</trans-unit>
<trans-unit id="b5dc65493e3e15fbe15b7d9c17f7626321d82e76" datatype="html">
@ -3224,7 +3224,7 @@
<target state="translated">极简模式</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">179</context>
<context context-type="linenumber">177</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
@ -3236,7 +3236,7 @@
<target state="translated">动荡时期的无干扰体验</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">180</context>
<context context-type="linenumber">178</context>
</context-group>
</trans-unit>
<trans-unit id="fa22693b23a8bed32d787023df105a7b40002f9c" datatype="html">
@ -3244,7 +3244,7 @@
<target state="translated">生物识别认证</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">196</context>
<context context-type="linenumber">194</context>
</context-group>
</trans-unit>
<trans-unit id="9ae348ee3a7319c2fc4794fa8bc425999d355f8f" datatype="html">
@ -3252,7 +3252,7 @@
<target state="translated">使用指纹登录</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">197</context>
<context context-type="linenumber">195</context>
</context-group>
</trans-unit>
<trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html">
@ -3260,7 +3260,7 @@
<target state="translated">实验性功能</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">211</context>
</context-group>
</trans-unit>
<trans-unit id="7f44fdbb881db76676fff811a21dc3eadcf11a33" datatype="html">
@ -3268,7 +3268,7 @@
<target state="translated">预览即将推出的功能</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">214</context>
<context context-type="linenumber">212</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -3280,7 +3280,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">230</context>
<context context-type="linenumber">228</context>
</context-group>
</trans-unit>
<trans-unit id="35a09ebb1f8ae079a58f2ab952be62e354a51672" datatype="html">
@ -3288,7 +3288,7 @@
<target state="translated">导出数据</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">238</context>
<context context-type="linenumber">236</context>
</context-group>
</trans-unit>
<trans-unit id="4190182554887994764" datatype="html">
@ -3728,7 +3728,7 @@
<target state="translated">开源软件</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">279</context>
</context-group>
</trans-unit>
<trans-unit id="802222cb4754d74846b18f651b1f94e21576185d" datatype="html">
@ -3736,7 +3736,7 @@
<target state="translated">立即开始</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/features/features-page.html</context>
<context context-type="linenumber">305</context>
<context context-type="linenumber">304</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -6192,7 +6192,7 @@
<target state="translated">有效期至</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">28</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.html</context>
@ -6660,7 +6660,7 @@
<target state="new">Danger Zone</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">250</context>
<context context-type="linenumber">248</context>
</context-group>
</trans-unit>
<trans-unit id="3c1ef66d62e3ecb5f661c8ffb89e1b1c46275684" datatype="html">
@ -6668,7 +6668,7 @@
<target state="new">Close Account</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">285</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="9d11f76485fd1306f47e2c2d585183ea844760f4" datatype="html">
@ -7335,20 +7335,12 @@
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="b082171edef6d502186c4577e201b2ef7935e955" datatype="html">
<source>NEW</source>
<target state="new">NEW</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="8af1a18460a6a5a33c19443ae14a0417c3a9c023" datatype="html">
<source>Set API key</source>
<target state="new">Set API key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">68</context>
<context context-type="linenumber">70</context>
</context-group>
</trans-unit>
<trans-unit id="2fcf96765ae87821e12fe4f6900ba1a218742cfc" datatype="html">
@ -7470,7 +7462,7 @@
<target state="new">of</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">40</context>
<context context-type="linenumber">42</context>
</context-group>
</trans-unit>
<trans-unit id="d666fa5e7e930b82f6c790ccdfe03526664229de" datatype="html">
@ -7478,7 +7470,7 @@
<target state="new">daily requests</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">42</context>
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="ab92acbb19a07fb231c67bb8b89c5840087570aa" datatype="html">
@ -7486,7 +7478,7 @@
<target state="new">Remove API key</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">56</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="5649402767950535555" datatype="html">
@ -7665,6 +7657,14 @@
<context context-type="linenumber">64</context>
</context-group>
</trans-unit>
<trans-unit id="4499ce8c46ad55564b23a42ed752e72984c0248f" datatype="html">
<source>Early Access</source>
<target state="new">Early Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-settings/admin-settings.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

20
apps/ui-e2e/.eslintrc.json

@ -1,20 +0,0 @@
{
"extends": ["plugin:cypress/recommended", "../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"parserOptions": {
"project": ["apps/ui-e2e/tsconfig.json"]
},
"rules": {}
},
{
"files": ["src/plugins/index.js"],
"rules": {
"@typescript-eslint/no-var-requires": "off",
"no-undef": "off"
}
}
]
}

33
apps/ui-e2e/eslint.config.cjs

@ -0,0 +1,33 @@
const { FlatCompat } = require('@eslint/eslintrc');
const js = require('@eslint/js');
const baseConfig = require('../../eslint.config.cjs');
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended
});
module.exports = [
{
ignores: ['**/dist']
},
...baseConfig,
...compat.extends('plugin:cypress/recommended'),
{
files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
// Override or add rules here
rules: {},
languageOptions: {
parserOptions: {
project: ['apps/ui-e2e/tsconfig.json']
}
}
},
{
files: ['src/plugins/index.js'],
rules: {
'@typescript-eslint/no-var-requires': 'off',
'no-undef': 'off'
}
}
];

196
eslint.config.cjs

@ -0,0 +1,196 @@
const { FlatCompat } = require('@eslint/eslintrc');
const js = require('@eslint/js');
const nxEslintPlugin = require('@nx/eslint-plugin');
const storybook = require('eslint-plugin-storybook');
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended
});
module.exports = [
{
ignores: ['**/dist']
},
...storybook.configs['flat/recommended'],
{ plugins: { '@nx': nxEslintPlugin } },
{
files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
rules: {
'@nx/enforce-module-boundaries': [
'warn',
{
enforceBuildableLibDependency: true,
allow: [],
depConstraints: [
{
sourceTag: '*',
onlyDependOnLibsWithTags: ['*']
}
]
}
],
'@typescript-eslint/no-extra-semi': 'error',
'no-extra-semi': 'off'
}
},
...compat
.config({
extends: ['plugin:@nx/typescript']
})
.map((config) => ({
...config,
files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],
rules: {
...config.rules
}
})),
...compat
.config({
extends: ['plugin:@nx/javascript']
})
.map((config) => ({
...config,
files: ['**/*.js', '**/*.jsx', '**/*.cjs', '**/*.mjs'],
rules: {
...config.rules
}
})),
...compat
.config({
plugins: ['eslint-plugin-import', '@typescript-eslint'],
extends: [
'plugin:@typescript-eslint/recommended-type-checked',
'plugin:@typescript-eslint/stylistic-type-checked'
]
})
.map((config) => ({
...config,
files: ['**/*.ts'],
rules: {
...config.rules,
'@typescript-eslint/consistent-indexed-object-style': 'off',
'@typescript-eslint/dot-notation': 'off',
'@typescript-eslint/explicit-member-accessibility': [
'off',
{
accessibility: 'explicit'
}
],
'@typescript-eslint/member-ordering': 'warn',
'@typescript-eslint/naming-convention': [
'off',
{
selector: 'default',
format: ['camelCase'],
leadingUnderscore: 'allow',
trailingUnderscore: 'allow'
},
{
selector: ['variable', 'classProperty', 'typeProperty'],
format: ['camelCase', 'UPPER_CASE'],
leadingUnderscore: 'allow',
trailingUnderscore: 'allow'
},
{
selector: 'objectLiteralProperty',
format: null
},
{
selector: 'enumMember',
format: ['camelCase', 'UPPER_CASE', 'PascalCase']
},
{
selector: 'typeLike',
format: ['PascalCase']
}
],
'@typescript-eslint/no-empty-interface': 'warn',
'@typescript-eslint/no-inferrable-types': [
'warn',
{
ignoreParameters: true
}
],
'@typescript-eslint/no-non-null-assertion': 'warn',
'@typescript-eslint/no-shadow': [
'warn',
{
hoist: 'all'
}
],
'@typescript-eslint/unified-signatures': 'error',
'@typescript-eslint/no-loss-of-precision': 'warn',
'@typescript-eslint/no-var-requires': 'warn',
'arrow-body-style': 'off',
'constructor-super': 'error',
eqeqeq: ['error', 'smart'],
'guard-for-in': 'warn',
'id-blacklist': 'off',
'id-match': 'off',
'import/no-deprecated': 'warn',
'no-bitwise': 'error',
'no-caller': 'error',
'no-debugger': 'error',
'no-empty': 'off',
'no-eval': 'error',
'no-fallthrough': 'error',
'no-new-wrappers': 'error',
'no-restricted-imports': ['error', 'rxjs/Rx'],
'no-undef-init': 'error',
'no-underscore-dangle': 'off',
'no-var': 'error',
radix: 'error',
'no-unsafe-optional-chaining': 'warn',
'no-extra-boolean-cast': 'warn',
'no-empty-pattern': 'warn',
'no-useless-catch': 'warn',
'no-unsafe-finally': 'warn',
'no-prototype-builtins': 'warn',
'no-async-promise-executor': 'warn',
'no-constant-condition': 'warn',
// The following rules are part of eslint:recommended
// and can be remove once solved
'no-constant-binary-expression': 'warn',
'no-loss-of-precision': 'warn',
// The following rules are part of @typescript-eslint/recommended-type-checked
// and can be remove once solved
'@typescript-eslint/await-thenable': 'warn',
'@typescript-eslint/ban-ts-comment': 'warn',
'@typescript-eslint/no-base-to-string': 'warn',
'@typescript-eslint/no-empty-object-type': 'warn',
'@typescript-eslint/no-explicit-any': 'warn',
'@typescript-eslint/no-floating-promises': 'warn',
'@typescript-eslint/no-misused-promises': 'warn',
'@typescript-eslint/no-redundant-type-constituents': 'warn',
'@typescript-eslint/no-require-imports': 'warn',
'@typescript-eslint/no-unnecessary-type-assertion': 'warn',
'@typescript-eslint/no-unsafe-argument': 'warn',
'@typescript-eslint/no-unsafe-assignment': 'warn',
'@typescript-eslint/no-unsafe-enum-comparison': 'warn',
'@typescript-eslint/no-unsafe-function-type': 'warn',
'@typescript-eslint/no-unsafe-member-access': 'warn',
'@typescript-eslint/no-unsafe-return': 'warn',
'@typescript-eslint/no-unsafe-call': 'warn',
'@typescript-eslint/no-unused-vars': [
'error',
{
caughtErrors: 'none'
}
],
'@typescript-eslint/no-wrapper-object-types': 'warn',
'@typescript-eslint/only-throw-error': 'warn',
'@typescript-eslint/prefer-promise-reject-errors': 'warn',
'@typescript-eslint/require-await': 'warn',
'@typescript-eslint/restrict-template-expressions': 'warn',
'@typescript-eslint/unbound-method': 'warn',
// The following rules are part of @typescript-eslint/stylistic-type-checked
// and can be remove once solved
'@typescript-eslint/prefer-nullish-coalescing': 'warn', // TODO: Requires strictNullChecks: true
'@typescript-eslint/prefer-regexp-exec': 'warn'
}
}))
];

21
libs/common/.eslintrc.json

@ -1,21 +0,0 @@
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"parserOptions": {
"project": ["libs/common/tsconfig.*?.json"]
},
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
}
]
}

28
libs/common/eslint.config.cjs

@ -0,0 +1,28 @@
const baseConfig = require('../../eslint.config.cjs');
module.exports = [
{
ignores: ['**/dist']
},
...baseConfig,
{
files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
// Override or add rules here
rules: {},
languageOptions: {
parserOptions: {
project: ['libs/common/tsconfig.*?.json']
}
}
},
{
files: ['**/*.ts', '**/*.tsx'],
// Override or add rules here
rules: {}
},
{
files: ['**/*.js', '**/*.jsx'],
// Override or add rules here
rules: {}
}
];

82
libs/common/src/lib/helper.spec.ts

@ -1,4 +1,7 @@
import { extractNumberFromString } from '@ghostfolio/common/helper';
import {
extractNumberFromString,
getNumberFormatGroup
} from '@ghostfolio/common/helper';
describe('Helper', () => {
describe('Extract number from string', () => {
@ -32,8 +35,85 @@ describe('Helper', () => {
).toEqual(99999.99);
});
it('Get decimal number (comma notation) for locale where currency is not grouped by default', () => {
expect(
extractNumberFromString({ locale: 'es-ES', value: '999,99' })
).toEqual(999.99);
});
it('Not a number', () => {
expect(extractNumberFromString({ value: 'X' })).toEqual(NaN);
});
});
describe('Get number format group', () => {
let languageGetter: jest.SpyInstance<string, [], any>;
beforeEach(() => {
languageGetter = jest.spyOn(window.navigator, 'language', 'get');
});
it('Get de-CH number format group', () => {
expect(getNumberFormatGroup('de-CH')).toEqual('’');
});
it('Get de-CH number format group when it is default', () => {
languageGetter.mockReturnValue('de-CH');
expect(getNumberFormatGroup()).toEqual('’');
});
it('Get de-DE number format group', () => {
expect(getNumberFormatGroup('de-DE')).toEqual('.');
});
it('Get de-DE number format group when it is default', () => {
languageGetter.mockReturnValue('de-DE');
expect(getNumberFormatGroup()).toEqual('.');
});
it('Get en-GB number format group', () => {
expect(getNumberFormatGroup('en-GB')).toEqual(',');
});
it('Get en-GB number format group when it is default', () => {
languageGetter.mockReturnValue('en-GB');
expect(getNumberFormatGroup()).toEqual(',');
});
it('Get en-US number format group', () => {
expect(getNumberFormatGroup('en-US')).toEqual(',');
});
it('Get en-US number format group when it is default', () => {
languageGetter.mockReturnValue('en-US');
expect(getNumberFormatGroup()).toEqual(',');
});
it('Get es-ES number format group', () => {
expect(getNumberFormatGroup('es-ES')).toEqual('.');
});
it('Get es-ES number format group when it is default', () => {
languageGetter.mockReturnValue('es-ES');
expect(getNumberFormatGroup()).toEqual('.');
});
it('Get ru-RU number format group', () => {
expect(getNumberFormatGroup('ru-RU')).toEqual(' ');
});
it('Get ru-RU number format group when it is default', () => {
languageGetter.mockReturnValue('ru-RU');
expect(getNumberFormatGroup()).toEqual(' ');
});
it('Get zh-CN number format group', () => {
expect(getNumberFormatGroup('zh-CN')).toEqual(',');
});
it('Get zh-CN number format group when it is default', () => {
languageGetter.mockReturnValue('zh-CN');
expect(getNumberFormatGroup()).toEqual(',');
});
});
});

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

@ -251,7 +251,9 @@ export function getNumberFormatDecimal(aLocale?: string) {
}
export function getNumberFormatGroup(aLocale = getLocale()) {
const formatObject = new Intl.NumberFormat(aLocale).formatToParts(9999.99);
const formatObject = new Intl.NumberFormat(aLocale, {
useGrouping: true
}).formatToParts(9999.99);
return formatObject.find((object) => {
return object.type === 'group';

2
libs/common/src/lib/interfaces/holding.interface.ts

@ -1,5 +1,5 @@
export interface Holding {
allocationInPercentage?: number;
allocationInPercentage: number;
name: string;
valueInBaseCurrency: number;
}

40
libs/ui/.eslintrc.json

@ -1,40 +0,0 @@
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*", "**/*.stories.ts"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"parserOptions": {
"project": ["libs/ui/tsconfig.*?.json"]
},
"extends": [
"plugin:@nx/angular",
"plugin:@angular-eslint/template/process-inline-templates"
],
"rules": {
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "gf",
"style": "camelCase"
}
],
"@angular-eslint/component-selector": [
"error",
{
"type": "element",
"prefix": "gf",
"style": "kebab-case"
}
],
"@angular-eslint/prefer-standalone": "off"
}
},
{
"files": ["*.html"],
"extends": ["plugin:@nx/angular-template"],
"rules": {}
}
]
}

65
libs/ui/eslint.config.cjs

@ -0,0 +1,65 @@
const { FlatCompat } = require('@eslint/eslintrc');
const js = require('@eslint/js');
const baseConfig = require('../../eslint.config.cjs');
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended
});
module.exports = [
{
ignores: ['**/dist']
},
...baseConfig,
...compat
.config({
extends: [
'plugin:@nx/angular',
'plugin:@angular-eslint/template/process-inline-templates'
]
})
.map((config) => ({
...config,
files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
rules: {
...config.rules,
'@angular-eslint/directive-selector': [
'error',
{
type: 'attribute',
prefix: 'gf',
style: 'camelCase'
}
],
'@angular-eslint/component-selector': [
'error',
{
type: 'element',
prefix: 'gf',
style: 'kebab-case'
}
],
'@angular-eslint/prefer-standalone': 'off'
},
languageOptions: {
parserOptions: {
project: ['libs/ui/tsconfig.*?.json']
}
}
})),
...compat
.config({
extends: ['plugin:@nx/angular-template']
})
.map((config) => ({
...config,
files: ['**/*.html'],
rules: {
...config.rules
}
})),
{
ignores: ['**/*.stories.ts']
}
];

8
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts

@ -77,7 +77,7 @@ export class GfPortfolioProportionChartComponent
@ViewChild('chartCanvas') chartCanvas: ElementRef<HTMLCanvasElement>;
public chart: Chart<'pie'>;
public chart: Chart<'doughnut'>;
public isLoading = true;
private readonly OTHER_KEY = 'OTHER';
@ -257,7 +257,7 @@ export class GfPortfolioProportionChartComponent
});
});
const datasets: ChartConfiguration['data']['datasets'] = [
const datasets: ChartConfiguration<'doughnut'>['data']['datasets'] = [
{
backgroundColor: chartDataSorted.map(([, item]) => {
return item.color;
@ -295,7 +295,7 @@ export class GfPortfolioProportionChartComponent
datasets[1].data[1] = Number.MAX_SAFE_INTEGER;
}
const data: ChartConfiguration['data'] = {
const data: ChartConfiguration<'doughnut'>['data'] = {
datasets,
labels
};
@ -308,7 +308,7 @@ export class GfPortfolioProportionChartComponent
) as unknown;
this.chart.update();
} else {
this.chart = new Chart(this.chartCanvas.nativeElement, {
this.chart = new Chart<'doughnut'>(this.chartCanvas.nativeElement, {
data,
options: {
animation: false,

2
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts

@ -196,7 +196,7 @@ export class GfTreemapChartComponent
min: Math.min(...negativeNetPerformancePercents)
};
const data: ChartConfiguration['data'] = {
const data: ChartConfiguration<'treemap'>['data'] = {
datasets: [
{
backgroundColor: (ctx) => {

1
nx.json

@ -63,6 +63,7 @@
"!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)",
"!{projectRoot}/**/*.stories.@(js|jsx|ts|tsx|mdx)",
"!{projectRoot}/.storybook/**/*",
"!{projectRoot}/eslint.config.cjs",
"!{projectRoot}/jest.config.[jt]s",
"!{projectRoot}/src/test-setup.[jt]s",
"!{projectRoot}/tsconfig.storybook.json",

3586
package-lock.json

File diff suppressed because it is too large

91
package.json

@ -1,6 +1,6 @@
{
"name": "ghostfolio",
"version": "2.134.0",
"version": "2.136.0",
"homepage": "https://ghostfol.io",
"license": "AGPL-3.0",
"repository": "https://github.com/ghostfolio/ghostfolio",
@ -75,17 +75,17 @@
"@dfinity/principal": "0.15.7",
"@dinero.js/currencies": "2.0.0-alpha.8",
"@internationalized/number": "3.6.0",
"@nestjs/bull": "10.0.1",
"@nestjs/cache-manager": "2.2.2",
"@nestjs/common": "10.1.3",
"@nestjs/config": "3.0.0",
"@nestjs/core": "10.1.3",
"@nestjs/event-emitter": "2.0.4",
"@nestjs/jwt": "10.1.0",
"@nestjs/bull": "10.2.3",
"@nestjs/cache-manager": "2.3.0",
"@nestjs/common": "10.4.15",
"@nestjs/config": "3.3.0",
"@nestjs/core": "10.4.15",
"@nestjs/event-emitter": "2.1.1",
"@nestjs/jwt": "10.2.0",
"@nestjs/passport": "10.0.3",
"@nestjs/platform-express": "10.1.3",
"@nestjs/schedule": "3.0.2",
"@nestjs/serve-static": "4.0.0",
"@nestjs/platform-express": "10.4.15",
"@nestjs/schedule": "4.1.2",
"@nestjs/serve-static": "4.0.2",
"@prisma/client": "6.2.1",
"@simplewebauthn/browser": "9.0.1",
"@simplewebauthn/server": "9.0.3",
@ -93,13 +93,13 @@
"alphavantage": "2.2.0",
"big.js": "6.2.2",
"bootstrap": "4.6.0",
"bull": "4.16.2",
"bull": "4.16.5",
"cache-manager": "5.7.6",
"cache-manager-redis-yet": "5.1.4",
"chart.js": "4.2.0",
"chart.js": "4.4.7",
"chartjs-adapter-date-fns": "3.0.0",
"chartjs-chart-treemap": "2.3.1",
"chartjs-plugin-annotation": "2.1.2",
"chartjs-chart-treemap": "3.1.0",
"chartjs-plugin-annotation": "3.1.0",
"chartjs-plugin-datalabels": "2.2.0",
"cheerio": "1.0.0",
"class-transformer": "0.5.1",
@ -108,7 +108,7 @@
"countries-and-timezones": "3.7.2",
"countries-list": "3.1.1",
"countup.js": "2.8.0",
"date-fns": "3.6.0",
"date-fns": "4.1.0",
"envalid": "8.0.0",
"google-spreadsheet": "3.2.0",
"helmet": "7.0.0",
@ -118,7 +118,7 @@
"lodash": "4.17.21",
"marked": "15.0.4",
"ms": "3.0.0-canary.1",
"ng-extract-i18n-merge": "2.13.1",
"ng-extract-i18n-merge": "2.14.1",
"ngx-device-detector": "9.0.0",
"ngx-markdown": "19.0.0",
"ngx-skeleton-loader": "9.0.0",
@ -129,12 +129,12 @@
"passport-google-oauth20": "2.0.0",
"passport-headerapikey": "1.2.2",
"passport-jwt": "4.0.1",
"reflect-metadata": "0.1.13",
"rxjs": "7.5.6",
"reflect-metadata": "0.2.2",
"rxjs": "7.8.1",
"stripe": "17.3.0",
"svgmap": "2.6.0",
"twitter-api-v2": "1.14.2",
"uuid": "11.0.2",
"uuid": "11.0.5",
"yahoo-finance2": "2.11.3",
"zone.js": "0.15.0"
},
@ -150,26 +150,28 @@
"@angular/language-service": "19.0.5",
"@angular/localize": "19.0.5",
"@angular/pwa": "19.0.6",
"@nestjs/schematics": "10.0.1",
"@nestjs/testing": "10.1.3",
"@nx/angular": "20.3.0",
"@nx/cypress": "20.3.0",
"@nx/eslint-plugin": "20.3.0",
"@nx/jest": "20.3.0",
"@nx/js": "20.3.0",
"@nx/module-federation": "20.3.0",
"@nx/nest": "20.3.0",
"@nx/node": "20.3.0",
"@nx/storybook": "20.3.0",
"@nx/web": "20.3.0",
"@nx/workspace": "20.3.0",
"@eslint/eslintrc": "3.2.0",
"@eslint/js": "9.18.0",
"@nestjs/schematics": "10.2.3",
"@nestjs/testing": "10.4.15",
"@nx/angular": "20.3.2",
"@nx/cypress": "20.3.2",
"@nx/eslint-plugin": "20.3.2",
"@nx/jest": "20.3.2",
"@nx/js": "20.3.2",
"@nx/module-federation": "20.3.2",
"@nx/nest": "20.3.2",
"@nx/node": "20.3.2",
"@nx/storybook": "20.3.2",
"@nx/web": "20.3.2",
"@nx/workspace": "20.3.2",
"@schematics/angular": "19.0.6",
"@simplewebauthn/types": "9.0.1",
"@storybook/addon-essentials": "8.4.7",
"@storybook/addon-interactions": "8.4.7",
"@storybook/angular": "8.4.7",
"@storybook/core-server": "8.4.7",
"@trivago/prettier-plugin-sort-imports": "4.3.0",
"@trivago/prettier-plugin-sort-imports": "5.2.1",
"@types/big.js": "6.2.2",
"@types/cache-manager": "4.0.6",
"@types/color": "4.2.0",
@ -179,20 +181,20 @@
"@types/node": "20.14.10",
"@types/papaparse": "5.3.7",
"@types/passport-google-oauth20": "2.0.16",
"@typescript-eslint/eslint-plugin": "6.21.0",
"@typescript-eslint/parser": "6.21.0",
"@typescript-eslint/eslint-plugin": "8.20.0",
"@typescript-eslint/parser": "8.20.0",
"codelyzer": "6.0.1",
"cypress": "6.2.1",
"eslint": "8.57.0",
"eslint": "9.18.0",
"eslint-config-prettier": "9.1.0",
"eslint-plugin-cypress": "2.15.1",
"eslint-plugin-import": "2.29.1",
"eslint-plugin-storybook": "0.6.15",
"eslint-plugin-cypress": "3.2.0",
"eslint-plugin-import": "2.31.0",
"eslint-plugin-storybook": "0.10.2",
"husky": "9.1.7",
"jest": "29.7.0",
"jest-environment-jsdom": "29.7.0",
"jest-preset-angular": "14.4.2",
"nx": "20.3.0",
"nx": "20.3.2",
"prettier": "3.4.2",
"prettier-plugin-organize-attributes": "1.0.0",
"prisma": "6.2.1",
@ -203,7 +205,7 @@
"storybook": "8.4.7",
"ts-jest": "29.1.0",
"ts-node": "10.9.2",
"tslib": "2.6.0",
"tslib": "2.8.1",
"typescript": "5.6.3",
"webpack-bundle-analyzer": "4.10.2"
},
@ -211,9 +213,6 @@
"node": ">=20"
},
"prisma": {
"seed": "node prisma/seed.js"
},
"resolutions": {
"rxjs": "7.5.6"
"seed": "ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts"
}
}

3
prisma/seed.js → prisma/seed.ts

@ -1,4 +1,5 @@
const { PrismaClient } = require('@prisma/client');
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function main() {
Loading…
Cancel
Save