diff --git a/CHANGELOG.md b/CHANGELOG.md index e54a1f590..4f89a0d83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Added + +- Set up the language localization for Español (`es`) + ## 1.198.0 - 25.09.2022 ### Added diff --git a/angular.json b/angular.json index 991e64c89..1ceea18c1 100644 --- a/angular.json +++ b/angular.json @@ -136,6 +136,10 @@ "baseHref": "/en/", "localize": ["en"] }, + "development-es": { + "baseHref": "/es/", + "localize": ["es"] + }, "development-it": { "baseHref": "/it/", "localize": ["it"] @@ -188,6 +192,9 @@ "development-en": { "browserTarget": "client:build:development-en" }, + "development-es": { + "browserTarget": "client:build:development-es" + }, "development-it": { "browserTarget": "client:build:development-it" }, @@ -207,6 +214,7 @@ "outputPath": "src/locales", "targetFiles": [ "messages.de.xlf", + "messages.es.xlf", "messages.it.xlf", "messages.nl.xlf" ] @@ -233,6 +241,10 @@ "baseHref": "/de/", "translation": "apps/client/src/locales/messages.de.xlf" }, + "es": { + "baseHref": "/es/", + "translation": "apps/client/src/locales/messages.es.xlf" + }, "it": { "baseHref": "/it/", "translation": "apps/client/src/locales/messages.it.xlf" diff --git a/apps/api/src/app/frontend.middleware.ts b/apps/api/src/app/frontend.middleware.ts index 876287db4..c49560c3a 100644 --- a/apps/api/src/app/frontend.middleware.ts +++ b/apps/api/src/app/frontend.middleware.ts @@ -11,6 +11,7 @@ import { NextFunction, Request, Response } from 'express'; export class FrontendMiddleware implements NestMiddleware { public indexHtmlDe = ''; public indexHtmlEn = ''; + public indexHtmlEs = ''; public indexHtmlIt = ''; public indexHtmlNl = ''; public isProduction: boolean; @@ -34,6 +35,10 @@ export class FrontendMiddleware implements NestMiddleware { this.getPathOfIndexHtmlFile(DEFAULT_LANGUAGE_CODE), 'utf8' ); + this.indexHtmlEs = fs.readFileSync( + this.getPathOfIndexHtmlFile('es'), + 'utf8' + ); this.indexHtmlIt = fs.readFileSync( this.getPathOfIndexHtmlFile('it'), 'utf8' @@ -71,6 +76,15 @@ export class FrontendMiddleware implements NestMiddleware { rootUrl: this.configurationService.get('ROOT_URL') }) ); + } else if (req.path === '/es' || req.path.startsWith('/es/')) { + res.send( + this.interpolate(this.indexHtmlIt, { + featureGraphicPath, + languageCode: 'es', + path: req.path, + rootUrl: this.configurationService.get('ROOT_URL') + }) + ); } else if (req.path === '/it' || req.path.startsWith('/it/')) { res.send( this.interpolate(this.indexHtmlIt, { diff --git a/apps/client/src/app/pages/account/account-page.component.ts b/apps/client/src/app/pages/account/account-page.component.ts index fee2b2358..f741058a9 100644 --- a/apps/client/src/app/pages/account/account-page.component.ts +++ b/apps/client/src/app/pages/account/account-page.component.ts @@ -54,7 +54,7 @@ export class AccountPageComponent implements OnDestroy, OnInit { public hasPermissionToUpdateViewMode: boolean; public hasPermissionToUpdateUserSettings: boolean; public language = document.documentElement.lang; - public locales = ['de', 'de-CH', 'en-GB', 'en-US', 'it', 'nl']; + public locales = ['de', 'de-CH', 'en-GB', 'en-US', 'es', 'it', 'nl']; public price: number; public priceId: string; public snackBarRef: MatSnackBarRef; diff --git a/apps/client/src/app/pages/account/account-page.html b/apps/client/src/app/pages/account/account-page.html index aa0983d15..e3c446f57 100644 --- a/apps/client/src/app/pages/account/account-page.html +++ b/apps/client/src/app/pages/account/account-page.html @@ -132,6 +132,7 @@ Deutsch English + Español Italiano Nederlands diff --git a/apps/client/src/app/pages/features/features-page.html b/apps/client/src/app/pages/features/features-page.html index d1a57f6b3..8dc184326 100644 --- a/apps/client/src/app/pages/features/features-page.html +++ b/apps/client/src/app/pages/features/features-page.html @@ -197,8 +197,8 @@

Multi-Language

- Use Ghostfolio in multiple languages: English, German and - Italian are currently supported. + Use Ghostfolio in multiple languages: English, Dutch, German, + Italian and Spanish are currently supported.

diff --git a/libs/common/src/lib/helper.ts b/libs/common/src/lib/helper.ts index 790fb8ac0..df0d51900 100644 --- a/libs/common/src/lib/helper.ts +++ b/libs/common/src/lib/helper.ts @@ -1,7 +1,7 @@ import * as currencies from '@dinero.js/currencies'; import { DataSource } from '@prisma/client'; import { getDate, getMonth, getYear, parse, subDays } from 'date-fns'; -import { de, it, nl } from 'date-fns/locale'; +import { de, es, it, nl } from 'date-fns/locale'; import { ghostfolioScraperApiSymbolPrefix, locale } from './config'; import { Benchmark } from './interfaces'; @@ -75,6 +75,8 @@ export function getCssVariable(aCssVariable: string) { export function getDateFnsLocale(aLanguageCode: string) { if (aLanguageCode === 'de') { return de; + } else if (aLanguageCode === 'es') { + return es; } else if (aLanguageCode === 'it') { return it; } else if (aLanguageCode === 'nl') {