diff --git a/CHANGELOG.md b/CHANGELOG.md index d5969101b..2ac67bf76 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 Português (`pt`) + ## 1.223.0 - 2023-01-01 ### Added diff --git a/apps/api/src/app/frontend.middleware.ts b/apps/api/src/app/frontend.middleware.ts index 6cb8293de..03443611e 100644 --- a/apps/api/src/app/frontend.middleware.ts +++ b/apps/api/src/app/frontend.middleware.ts @@ -16,6 +16,7 @@ export class FrontendMiddleware implements NestMiddleware { public indexHtmlEs = ''; public indexHtmlIt = ''; public indexHtmlNl = ''; + public indexHtmlPt = ''; public isProduction: boolean; public constructor( @@ -49,6 +50,10 @@ export class FrontendMiddleware implements NestMiddleware { this.getPathOfIndexHtmlFile('nl'), 'utf8' ); + this.indexHtmlPt = fs.readFileSync( + this.getPathOfIndexHtmlFile('pt'), + 'utf8' + ); } catch {} } @@ -126,6 +131,15 @@ export class FrontendMiddleware implements NestMiddleware { rootUrl: this.configurationService.get('ROOT_URL') }) ); + } else if (request.path === '/pt' || request.path.startsWith('/pt/')) { + response.send( + this.interpolate(this.indexHtmlPt, { + featureGraphicPath, + languageCode: 'pt', + path: request.path, + rootUrl: this.configurationService.get('ROOT_URL') + }) + ); } else { response.send( this.interpolate(this.indexHtmlEn, { diff --git a/apps/client/project.json b/apps/client/project.json index 0fd3d577c..a8d02ce33 100644 --- a/apps/client/project.json +++ b/apps/client/project.json @@ -97,6 +97,10 @@ "baseHref": "/nl/", "localize": ["nl"] }, + "development-pt": { + "baseHref": "/pt/", + "localize": ["pt"] + }, "production": { "fileReplacements": [ { @@ -150,6 +154,9 @@ "development-nl": { "browserTarget": "client:build:development-nl" }, + "development-pt": { + "browserTarget": "client:build:development-pt" + }, "production": { "browserTarget": "client:build:production" } @@ -165,7 +172,8 @@ "messages.de.xlf", "messages.es.xlf", "messages.it.xlf", - "messages.nl.xlf" + "messages.nl.xlf", + "messages.pt.xlf" ] } }, @@ -201,6 +209,10 @@ "nl": { "baseHref": "/nl/", "translation": "apps/client/src/locales/messages.nl.xlf" + }, + "pt": { + "baseHref": "/pt/", + "translation": "apps/client/src/locales/messages.pt.xlf" } }, "sourceLocale": "en" 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 2dc757397..ab1dc6d2d 100644 --- a/apps/client/src/app/pages/account/account-page.component.ts +++ b/apps/client/src/app/pages/account/account-page.component.ts @@ -55,7 +55,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', 'es', 'it', 'nl']; + public locales = ['de', 'de-CH', 'en-GB', 'en-US', 'es', 'it', 'nl', 'pt']; 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 e41d8ef0f..29211d93d 100644 --- a/apps/client/src/app/pages/account/account-page.html +++ b/apps/client/src/app/pages/account/account-page.html @@ -143,6 +143,10 @@ >Nederlands (Community) + diff --git a/apps/client/src/app/pages/features/features-page.html b/apps/client/src/app/pages/features/features-page.html index 8d0488e7f..415e5d850 100644 --- a/apps/client/src/app/pages/features/features-page.html +++ b/apps/client/src/app/pages/features/features-page.html @@ -198,7 +198,8 @@

Multi-Language

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

diff --git a/libs/common/src/lib/helper.ts b/libs/common/src/lib/helper.ts index c1c05103c..3ea766e02 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, es, it, nl } from 'date-fns/locale'; +import { de, es, it, nl, pt } from 'date-fns/locale'; import { ghostfolioScraperApiSymbolPrefix, locale } from './config'; import { Benchmark } from './interfaces'; @@ -83,6 +83,8 @@ export function getDateFnsLocale(aLanguageCode: string) { return it; } else if (aLanguageCode === 'nl') { return nl; + } else if (aLanguageCode === 'pt') { + return pt; } return undefined;