diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5153ab476..863df020b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Added a link to manage the benchmarks to the benchmark comparator
+- Added support for localized routes
## 1.272.0 - 2023-05-26
diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts
index b4b2792b8..e824862f7 100644
--- a/apps/client/src/app/app-routing.module.ts
+++ b/apps/client/src/app/app-routing.module.ts
@@ -5,25 +5,27 @@ import { PageTitleStrategy } from '@ghostfolio/client/services/page-title.strate
import { ModulePreloadService } from './core/module-preload.service';
const routes: Routes = [
- {
- path: 'about',
+ ...['about', 'ueber-uns'].map((path) => ({
+ path,
loadChildren: () =>
import('./pages/about/about-page.module').then((m) => m.AboutPageModule)
- },
- {
- path: 'about/changelog',
+ })),
+ ...['about/changelog', 'ueber-uns/changelog'].map((path) => ({
+ path,
loadChildren: () =>
import('./pages/about/changelog/changelog-page.module').then(
(m) => m.ChangelogPageModule
)
- },
- {
- path: 'about/privacy-policy',
- loadChildren: () =>
- import('./pages/about/privacy-policy/privacy-policy-page.module').then(
- (m) => m.PrivacyPolicyPageModule
- )
- },
+ })),
+ ...['about/privacy-policy', 'ueber-uns/datenschutzbestimmungen'].map(
+ (path) => ({
+ path,
+ loadChildren: () =>
+ import('./pages/about/privacy-policy/privacy-policy-page.module').then(
+ (m) => m.PrivacyPolicyPageModule
+ )
+ })
+ ),
{
path: 'account',
loadChildren: () =>
@@ -48,11 +50,11 @@ const routes: Routes = [
loadChildren: () =>
import('./pages/auth/auth-page.module').then((m) => m.AuthPageModule)
},
- {
- path: 'blog',
+ ...['blog'].map((path) => ({
+ path,
loadChildren: () =>
import('./pages/blog/blog-page.module').then((m) => m.BlogPageModule)
- },
+ })),
{
path: 'blog/2021/07/hallo-ghostfolio',
loadChildren: () =>
@@ -149,30 +151,30 @@ const routes: Routes = [
loadChildren: () =>
import('./pages/demo/demo-page.module').then((m) => m.DemoPageModule)
},
- {
- path: 'faq',
+ ...['faq', 'haeufig-gestellte-fragen'].map((path) => ({
+ path,
loadChildren: () =>
import('./pages/faq/faq-page.module').then((m) => m.FaqPageModule)
- },
- {
- path: 'features',
+ })),
+ ...['features'].map((path) => ({
+ path,
loadChildren: () =>
import('./pages/features/features-page.module').then(
(m) => m.FeaturesPageModule
)
- },
+ })),
{
path: 'home',
loadChildren: () =>
import('./pages/home/home-page.module').then((m) => m.HomePageModule)
},
- {
- path: 'markets',
+ ...['markets', 'maerkte'].map((path) => ({
+ path,
loadChildren: () =>
import('./pages/markets/markets-page.module').then(
(m) => m.MarketsPageModule
)
- },
+ })),
{
path: 'open',
loadChildren: () =>
@@ -192,27 +194,27 @@ const routes: Routes = [
(m) => m.PortfolioPageModule
)
},
- {
- path: 'pricing',
+ ...['pricing', 'preise'].map((path) => ({
+ path,
loadChildren: () =>
import('./pages/pricing/pricing-page.module').then(
(m) => m.PricingPageModule
)
- },
- {
- path: 'register',
+ })),
+ ...['register', 'registrierung'].map((path) => ({
+ path,
loadChildren: () =>
import('./pages/register/register-page.module').then(
(m) => m.RegisterPageModule
)
- },
- {
- path: 'resources',
+ })),
+ ...['resources', 'ressourcen'].map((path) => ({
+ path,
loadChildren: () =>
import('./pages/resources/resources-page.module').then(
(m) => m.ResourcesPageModule
)
- },
+ })),
{
path: 'start',
loadChildren: () =>
diff --git a/apps/client/src/assets/robots.txt b/apps/client/src/assets/robots.txt
index 059aea258..3b0250e72 100644
--- a/apps/client/src/assets/robots.txt
+++ b/apps/client/src/assets/robots.txt
@@ -1,6 +1,19 @@
User-agent: *
Allow: /
+Disallow: /de/about/*
+Disallow: /de/faq
+Disallow: /de/markets
+Disallow: /de/portfolio/*
+Disallow: /de/pricing
+Disallow: /de/register
+Disallow: /de/resources
+Disallow: /de/ueber-uns/datenschutzbestimmungen
Disallow: /en/about/privacy-policy
Disallow: /en/p/*
+Disallow: /en/portfolio/*
+Disallow: /portfolio/*
+Disallow: /pricing/*
+Disallow: /register/*
+Disallow: /resources/*
Sitemap: https://ghostfol.io/sitemap.xml
diff --git a/apps/client/src/assets/sitemap.xml b/apps/client/src/assets/sitemap.xml
index 8e4f8725e..98d5bf777 100644
--- a/apps/client/src/assets/sitemap.xml
+++ b/apps/client/src/assets/sitemap.xml
@@ -6,110 +6,142 @@
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
https://ghostfol.io
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/de/blog
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/de/blog/2021/07/hallo-ghostfolio
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/de/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
-
- https://ghostfol.io/de/pricing
- 2023-05-20T00:00:00+00:00
+
+ https://ghostfol.io/de/features
+ 2023-05-27T00:00:00+00:00
+
+
+ https://ghostfol.io/de/haeufig-gestellte-fragen
+ 2023-05-27T00:00:00+00:00
+
+
+ https://ghostfol.io/de/maerkte
+ 2023-05-27T00:00:00+00:00
+
+
+ https://ghostfol.io/de/open
+ 2023-05-27T00:00:00+00:00
+
+
+ https://ghostfol.io/de/preise
+ 2023-05-27T00:00:00+00:00
+
+
+ https://ghostfol.io/de/registrierung
+ 2023-05-27T00:00:00+00:00
+
+
+ https://ghostfol.io/de/ressourcen
+ 2023-05-27T00:00:00+00:00
+
+
+ https://ghostfol.io/de/ueber-uns
+ 2023-05-27T00:00:00+00:00
+
+
+ https://ghostfol.io/de/ueber-uns/changelog
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/about
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/about/changelog
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/blog
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/blog/2021/07/hello-ghostfolio
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/blog/2022/01/ghostfolio-first-months-in-open-source
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/blog/2022/07/ghostfolio-meets-internet-identity
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/blog/2022/07/how-do-i-get-my-finances-in-order
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/blog/2022/08/500-stars-on-github
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/blog/2022/10/hacktoberfest-2022
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/blog/2022/11/black-friday-2022
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/blog/2022/12/the-importance-of-tracking-your-personal-finances
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/blog/2023/02/ghostfolio-meets-umbrel
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/blog/2023/03/ghostfolio-reaches-1000-stars-on-github
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/blog/2023/05/unlock-your-financial-potential-with-ghostfolio
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/demo
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/faq
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/features
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/markets
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/open
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/pricing
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/register
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00
https://ghostfol.io/en/resources
- 2023-05-20T00:00:00+00:00
+ 2023-05-27T00:00:00+00:00