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" }