diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js
index 066f3fe..97de03b 100644
--- a/docs/.vuepress/config.js
+++ b/docs/.vuepress/config.js
@@ -8,8 +8,10 @@ export default defineUserConfig({
theme,
plugins,
base: process.env.VUEPRESS_BASE ?? '/',
- locales: {
- '/': {
+ locales:{
+ // The key is the path for the locale to be nested under.
+ // As a special case, the default locale can use '/' as its path.
+ '/de/': {
lang: 'de-DE',
},
'/en/': {
diff --git a/docs/.vuepress/config/plugins.js b/docs/.vuepress/config/plugins.js
index c4d4eae..fa303d1 100644
--- a/docs/.vuepress/config/plugins.js
+++ b/docs/.vuepress/config/plugins.js
@@ -1,4 +1,5 @@
import { searchProPlugin } from 'vuepress-plugin-search-pro'
+import { redirectPlugin } from 'vuepress-plugin-redirect'
export default [
searchProPlugin({
@@ -15,4 +16,7 @@ export default [
},
],
}),
+ redirectPlugin({
+ autoLocale: true,
+ })
]
\ No newline at end of file
diff --git a/docs/.vuepress/config/theme.js b/docs/.vuepress/config/theme.js
index 1430c3f..9ba40cb 100644
--- a/docs/.vuepress/config/theme.js
+++ b/docs/.vuepress/config/theme.js
@@ -20,10 +20,10 @@ export default hopeTheme({
locales:{
// The key is the path for the locale to be nested under.
// As a special case, the default locale can use '/' as its path.
- '/': {
+ '/de/': {
lang: 'de-DE',
title: 'Ocelot.Social',
- copyright: '© von busFaktor() e.V. & Authoren | Impressum',
+ copyright: '© von busFaktor() e.V. & Authoren | Impressum',
footer: 'Unter der MIT Lizenz ausgeliefert.',
navbar: [
{
@@ -38,7 +38,7 @@ export default hopeTheme({
},
{
text: 'Impressum',
- link: '/impressum/'
+ link: '/de/impressum/'
},
],
},
diff --git a/docs/README.md b/docs/de/README.md
similarity index 100%
rename from docs/README.md
rename to docs/de/README.md
diff --git a/docs/impressum/README.md b/docs/de/impressum/README.md
similarity index 100%
rename from docs/impressum/README.md
rename to docs/de/impressum/README.md
diff --git a/package-lock.json b/package-lock.json
index 9d0793a..8757068 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -25,6 +25,7 @@
"textlint-rule-period-in-list-item": "^1.0.1",
"textlint-rule-write-good": "^2.0.0",
"vuepress": "^2.0.0-rc.0",
+ "vuepress-plugin-redirect": "^2.0.0-rc.1",
"vuepress-plugin-search-pro": "^2.0.0-rc.0",
"vuepress-theme-hope": "^2.0.0-rc.0"
}
@@ -10699,6 +10700,169 @@
}
}
},
+ "node_modules/vuepress-plugin-redirect": {
+ "version": "2.0.0-rc.1",
+ "resolved": "https://registry.npmjs.org/vuepress-plugin-redirect/-/vuepress-plugin-redirect-2.0.0-rc.1.tgz",
+ "integrity": "sha512-bmRKSEDPKjx1mkaJ6AOGUOtKvmS9yVbnwdGPe7FqjeD/bbTMPDSPrER1V+ztPqK8yzZDYf/oroGiWFwdBhr/Tg==",
+ "dev": true,
+ "dependencies": {
+ "@vuepress/cli": "2.0.0-rc.0",
+ "@vuepress/client": "2.0.0-rc.0",
+ "@vuepress/core": "2.0.0-rc.0",
+ "@vuepress/shared": "2.0.0-rc.0",
+ "@vuepress/utils": "2.0.0-rc.0",
+ "@vueuse/core": "^10.6.1",
+ "cac": "^6.7.14",
+ "vue": "^3.3.9",
+ "vue-router": "^4.2.5",
+ "vuepress-plugin-sass-palette": "2.0.0-rc.1",
+ "vuepress-shared": "2.0.0-rc.1"
+ },
+ "bin": {
+ "vp-redirect": "lib/cli/index.js"
+ },
+ "engines": {
+ "node": ">=18.16.0",
+ "npm": ">=8",
+ "pnpm": ">=7",
+ "yarn": ">=2"
+ },
+ "peerDependencies": {
+ "sass-loader": "^13.3.2",
+ "vuepress": "2.0.0-rc.0",
+ "vuepress-vite": "2.0.0-rc.0",
+ "vuepress-webpack": "2.0.0-rc.0"
+ },
+ "peerDependenciesMeta": {
+ "sass-loader": {
+ "optional": true
+ },
+ "vuepress": {
+ "optional": true
+ },
+ "vuepress-vite": {
+ "optional": true
+ },
+ "vuepress-webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vuepress-plugin-redirect/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vuepress-plugin-redirect/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vuepress-plugin-redirect/node_modules/vuepress-plugin-sass-palette": {
+ "version": "2.0.0-rc.1",
+ "resolved": "https://registry.npmjs.org/vuepress-plugin-sass-palette/-/vuepress-plugin-sass-palette-2.0.0-rc.1.tgz",
+ "integrity": "sha512-3QI7mYFaCI6ynbW0EJ8Qf/3hJiryPOI0B+AJ8iJj06VCZTutQBpQvnsu4LfF02h3j2YNuWWs0UqIqc5fCi+Czg==",
+ "dev": true,
+ "dependencies": {
+ "@vuepress/shared": "2.0.0-rc.0",
+ "@vuepress/utils": "2.0.0-rc.0",
+ "chokidar": "^3.5.3",
+ "sass": "^1.69.5",
+ "vuepress-shared": "2.0.0-rc.1"
+ },
+ "engines": {
+ "node": ">=18.16.0",
+ "npm": ">=8",
+ "pnpm": ">=7",
+ "yarn": ">=2"
+ },
+ "peerDependencies": {
+ "sass-loader": "^13.3.2",
+ "vuepress": "2.0.0-rc.0",
+ "vuepress-vite": "2.0.0-rc.0",
+ "vuepress-webpack": "2.0.0-rc.0"
+ },
+ "peerDependenciesMeta": {
+ "sass-loader": {
+ "optional": true
+ },
+ "vuepress": {
+ "optional": true
+ },
+ "vuepress-vite": {
+ "optional": true
+ },
+ "vuepress-webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vuepress-plugin-redirect/node_modules/vuepress-shared": {
+ "version": "2.0.0-rc.1",
+ "resolved": "https://registry.npmjs.org/vuepress-shared/-/vuepress-shared-2.0.0-rc.1.tgz",
+ "integrity": "sha512-WhtuaP3LCW42Xtu1pK6+NY3oe8BVpPzMgaVn5OnDBqupula0IViY6YgTI86YhCSarhl56sMmvnq1KeuLXPt7uA==",
+ "dev": true,
+ "dependencies": {
+ "@vuepress/client": "2.0.0-rc.0",
+ "@vuepress/shared": "2.0.0-rc.0",
+ "@vuepress/utils": "2.0.0-rc.0",
+ "@vueuse/core": "^10.6.1",
+ "cheerio": "1.0.0-rc.12",
+ "dayjs": "^1.11.10",
+ "execa": "^8.0.1",
+ "fflate": "^0.8.1",
+ "gray-matter": "^4.0.3",
+ "semver": "^7.5.4",
+ "striptags": "^3.2.0",
+ "vue": "^3.3.9",
+ "vue-router": "^4.2.5"
+ },
+ "engines": {
+ "node": ">=18.16.0",
+ "npm": ">=8",
+ "pnpm": ">=7",
+ "yarn": ">=2"
+ },
+ "peerDependencies": {
+ "vuepress": "2.0.0-rc.0",
+ "vuepress-vite": "2.0.0-rc.0",
+ "vuepress-webpack": "2.0.0-rc.0"
+ },
+ "peerDependenciesMeta": {
+ "vuepress": {
+ "optional": true
+ },
+ "vuepress-vite": {
+ "optional": true
+ },
+ "vuepress-webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vuepress-plugin-redirect/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
"node_modules/vuepress-plugin-rtl": {
"version": "2.0.0-rc.0",
"resolved": "https://registry.npmjs.org/vuepress-plugin-rtl/-/vuepress-plugin-rtl-2.0.0-rc.0.tgz",
diff --git a/package.json b/package.json
index 092ab52..e833564 100644
--- a/package.json
+++ b/package.json
@@ -35,6 +35,7 @@
"textlint-rule-period-in-list-item": "^1.0.1",
"textlint-rule-write-good": "^2.0.0",
"vuepress": "^2.0.0-rc.0",
+ "vuepress-plugin-redirect": "^2.0.0-rc.1",
"vuepress-plugin-search-pro": "^2.0.0-rc.0",
"vuepress-theme-hope": "^2.0.0-rc.0"
}