Browse Source

Feature/setup espanol (#1293)

* Setup Español

* Update changelog
pull/1297/head
Thomas Kaul 2 years ago
committed by GitHub
parent
commit
e3916e1ba3
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      CHANGELOG.md
  2. 12
      angular.json
  3. 14
      apps/api/src/app/frontend.middleware.ts
  4. 2
      apps/client/src/app/pages/account/account-page.component.ts
  5. 1
      apps/client/src/app/pages/account/account-page.html
  6. 4
      apps/client/src/app/pages/features/features-page.html
  7. 4
      libs/common/src/lib/helper.ts

6
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/), 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). 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 ## 1.198.0 - 25.09.2022
### Added ### Added

12
angular.json

@ -136,6 +136,10 @@
"baseHref": "/en/", "baseHref": "/en/",
"localize": ["en"] "localize": ["en"]
}, },
"development-es": {
"baseHref": "/es/",
"localize": ["es"]
},
"development-it": { "development-it": {
"baseHref": "/it/", "baseHref": "/it/",
"localize": ["it"] "localize": ["it"]
@ -188,6 +192,9 @@
"development-en": { "development-en": {
"browserTarget": "client:build:development-en" "browserTarget": "client:build:development-en"
}, },
"development-es": {
"browserTarget": "client:build:development-es"
},
"development-it": { "development-it": {
"browserTarget": "client:build:development-it" "browserTarget": "client:build:development-it"
}, },
@ -207,6 +214,7 @@
"outputPath": "src/locales", "outputPath": "src/locales",
"targetFiles": [ "targetFiles": [
"messages.de.xlf", "messages.de.xlf",
"messages.es.xlf",
"messages.it.xlf", "messages.it.xlf",
"messages.nl.xlf" "messages.nl.xlf"
] ]
@ -233,6 +241,10 @@
"baseHref": "/de/", "baseHref": "/de/",
"translation": "apps/client/src/locales/messages.de.xlf" "translation": "apps/client/src/locales/messages.de.xlf"
}, },
"es": {
"baseHref": "/es/",
"translation": "apps/client/src/locales/messages.es.xlf"
},
"it": { "it": {
"baseHref": "/it/", "baseHref": "/it/",
"translation": "apps/client/src/locales/messages.it.xlf" "translation": "apps/client/src/locales/messages.it.xlf"

14
apps/api/src/app/frontend.middleware.ts

@ -11,6 +11,7 @@ import { NextFunction, Request, Response } from 'express';
export class FrontendMiddleware implements NestMiddleware { export class FrontendMiddleware implements NestMiddleware {
public indexHtmlDe = ''; public indexHtmlDe = '';
public indexHtmlEn = ''; public indexHtmlEn = '';
public indexHtmlEs = '';
public indexHtmlIt = ''; public indexHtmlIt = '';
public indexHtmlNl = ''; public indexHtmlNl = '';
public isProduction: boolean; public isProduction: boolean;
@ -34,6 +35,10 @@ export class FrontendMiddleware implements NestMiddleware {
this.getPathOfIndexHtmlFile(DEFAULT_LANGUAGE_CODE), this.getPathOfIndexHtmlFile(DEFAULT_LANGUAGE_CODE),
'utf8' 'utf8'
); );
this.indexHtmlEs = fs.readFileSync(
this.getPathOfIndexHtmlFile('es'),
'utf8'
);
this.indexHtmlIt = fs.readFileSync( this.indexHtmlIt = fs.readFileSync(
this.getPathOfIndexHtmlFile('it'), this.getPathOfIndexHtmlFile('it'),
'utf8' 'utf8'
@ -71,6 +76,15 @@ export class FrontendMiddleware implements NestMiddleware {
rootUrl: this.configurationService.get('ROOT_URL') 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/')) { } else if (req.path === '/it' || req.path.startsWith('/it/')) {
res.send( res.send(
this.interpolate(this.indexHtmlIt, { this.interpolate(this.indexHtmlIt, {

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

@ -54,7 +54,7 @@ export class AccountPageComponent implements OnDestroy, OnInit {
public hasPermissionToUpdateViewMode: boolean; public hasPermissionToUpdateViewMode: boolean;
public hasPermissionToUpdateUserSettings: boolean; public hasPermissionToUpdateUserSettings: boolean;
public language = document.documentElement.lang; 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 price: number;
public priceId: string; public priceId: string;
public snackBarRef: MatSnackBarRef<TextOnlySnackBar>; public snackBarRef: MatSnackBarRef<TextOnlySnackBar>;

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

@ -132,6 +132,7 @@
<mat-option [value]="null"></mat-option> <mat-option [value]="null"></mat-option>
<mat-option value="de">Deutsch</mat-option> <mat-option value="de">Deutsch</mat-option>
<mat-option value="en">English</mat-option> <mat-option value="en">English</mat-option>
<mat-option value="es">Español</mat-option>
<mat-option value="it">Italiano</mat-option> <mat-option value="it">Italiano</mat-option>
<mat-option value="nl">Nederlands</mat-option> <mat-option value="nl">Nederlands</mat-option>
</mat-select> </mat-select>

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

@ -197,8 +197,8 @@
<div class="flex-grow-1"> <div class="flex-grow-1">
<h4>Multi-Language</h4> <h4>Multi-Language</h4>
<p class="m-0"> <p class="m-0">
Use Ghostfolio in multiple languages: English, German and Use Ghostfolio in multiple languages: English, Dutch, German,
Italian are currently supported. Italian and Spanish are currently supported.
</p> </p>
</div> </div>
</mat-card> </mat-card>

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

@ -1,7 +1,7 @@
import * as currencies from '@dinero.js/currencies'; import * as currencies from '@dinero.js/currencies';
import { DataSource } from '@prisma/client'; import { DataSource } from '@prisma/client';
import { getDate, getMonth, getYear, parse, subDays } from 'date-fns'; 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 { ghostfolioScraperApiSymbolPrefix, locale } from './config';
import { Benchmark } from './interfaces'; import { Benchmark } from './interfaces';
@ -75,6 +75,8 @@ export function getCssVariable(aCssVariable: string) {
export function getDateFnsLocale(aLanguageCode: string) { export function getDateFnsLocale(aLanguageCode: string) {
if (aLanguageCode === 'de') { if (aLanguageCode === 'de') {
return de; return de;
} else if (aLanguageCode === 'es') {
return es;
} else if (aLanguageCode === 'it') { } else if (aLanguageCode === 'it') {
return it; return it;
} else if (aLanguageCode === 'nl') { } else if (aLanguageCode === 'nl') {

Loading…
Cancel
Save