From e3916e1ba38e438097e2a6f7e5a08f0e2eeb878a Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 26 Sep 2022 18:39:11 +0200 Subject: [PATCH] Feature/setup espanol (#1293) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Setup Español * Update changelog --- CHANGELOG.md | 6 ++++++ angular.json | 12 ++++++++++++ apps/api/src/app/frontend.middleware.ts | 14 ++++++++++++++ .../app/pages/account/account-page.component.ts | 2 +- .../client/src/app/pages/account/account-page.html | 1 + .../src/app/pages/features/features-page.html | 4 ++-- libs/common/src/lib/helper.ts | 4 +++- 7 files changed, 39 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e54a1f59..4f89a0d8 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 991e64c8..1ceea18c 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 876287db..c49560c3 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 fee2b235..f741058a 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 aa0983d1..e3c446f5 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 d1a57f6b..8dc18432 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 790fb8ac..df0d5190 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') {