diff --git a/docs/.vitepress/config.mjs b/docs/.vitepress/config.mjs index 33fc8d85bd..e39d17da9c 100644 --- a/docs/.vitepress/config.mjs +++ b/docs/.vitepress/config.mjs @@ -6,9 +6,14 @@ import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'vitepress' +import * as i18n from './i18n' + export default defineConfig({ title: "3DS Hacks Guide", description: "A complete guide to 3DS custom firmware", + locales: { + root: i18n.en_US + }, vite: { resolve: { alias: [ diff --git a/docs/.vitepress/i18n/en_US.js b/docs/.vitepress/i18n/en_US.js new file mode 100644 index 0000000000..480153bffa --- /dev/null +++ b/docs/.vitepress/i18n/en_US.js @@ -0,0 +1,241 @@ +import { en_US as localeData } from './strings' + +const sidebar_common = { + text: localeData.other, + items: [ + { text: localeData.pages["contribute"], link: `/contribute` }, + { text: localeData.pages["credits"], link: `/credits` }, + { text: localeData.pages["privacy-policy"], link: `/privacy-policy` }, + { text: localeData.pages["site-navigation"], link: `/site-navigation` } + ] +} + +const themeConfig = { + langMenuLabel: localeData.langMenuLabel, + darkModeSwitchLabel: localeData.darkModeSwitchLabel, + darkModeSwitchTitle: localeData.darkModeSwitchTitle, + lightModeSwitchTitle: localeData.lightModeSwitchTitle, + sidebarMenuLabel: localeData.sidebarMenuLabel, + returnToTopLabel: localeData.returnToTopLabel, + + nav: [ + { text: localeData.pages["faq"], link: `/faq` }, + { text: localeData.pages["troubleshooting"], link: `/troubleshooting` }, + { text: localeData.pages["checking-for-cfw"], link: `/checking-for-cfw` }, + { + text: localeData.extras, + items: [ + { text: localeData.pages["godmode9-usage"], link: `/godmode9-usage` }, + { text: localeData.pages["region-changing"], link: `/region-changing` }, + { text: localeData.pages["uninstall-cfw"], link: `/uninstall-cfw` }, + ] + } + ], + sidebar: { + [`/ntrboot`]: [ + { + text: localeData.guide, + items: [ + { text: localeData.pages["key-information"], link: `/key-information` }, + { text: localeData.pages["get-started"], link: `/get-started` }, + { text: localeData.pages["ntrboot"], link: `/ntrboot` }, + { text: localeData.pages["multiple-options"] }, + { text: localeData.pages["installing-boot9strap-(ntrboot)"], link: `/installing-boot9strap-(ntrboot)` }, + { text: localeData.pages["finalizing-setup"], link: `/finalizing-setup` } + ] + }, + sidebar_common + ], + [`/flashing-ntrboot-(3ds-single-system)`]: [ + { + text: localeData.guide, + items: [ + { text: localeData.pages["key-information"], link: `/key-information` }, + { text: localeData.pages["get-started"], link: `/get-started` }, + { text: localeData.pages["ntrboot"], link: `/ntrboot` }, + { text: localeData.pages["flashing-ntrboot-(3ds-single-system)"], link: `/flashing-ntrboot-(3ds-single-system)` }, + { text: localeData.pages["installing-boot9strap-(ntrboot)"], link: `/installing-boot9strap-(ntrboot)` }, + { text: localeData.pages["finalizing-setup"], link: `/finalizing-setup` } + ] + }, + sidebar_common + ], + [`/flashing-ntrboot-(3ds-multi-system)`]: [ + { + text: localeData.guide, + items: [ + { text: localeData.pages["key-information"], link: `/key-information` }, + { text: localeData.pages["get-started"], link: `/get-started` }, + { text: localeData.pages["ntrboot"], link: `/ntrboot` }, + { text: localeData.pages["flashing-ntrboot-(3ds-multi-system)"], link: `/flashing-ntrboot-(3ds-multi-system)` }, + { text: localeData.pages["installing-boot9strap-(ntrboot)"], link: `/installing-boot9strap-(ntrboot)` }, + { text: localeData.pages["finalizing-setup"], link: `/finalizing-setup` } + ] + }, + sidebar_common + ], + [`/flashing-ntrboot-(dsi)`]: [ + { + text: localeData.guide, + items: [ + { text: localeData.pages["key-information"], link: `/key-information` }, + { text: localeData.pages["get-started"], link: `/get-started` }, + { text: localeData.pages["ntrboot"], link: `/ntrboot` }, + { text: localeData.pages["flashing-ntrboot-(dsi)"], link: `/flashing-ntrboot-(dsi)` }, + { text: localeData.pages["installing-boot9strap-(ntrboot)"], link: `/installing-boot9strap-(ntrboot)` }, + { text: localeData.pages["finalizing-setup"], link: `/finalizing-setup` } + ] + }, + sidebar_common + ], + [`/flashing-ntrboot-(nds)`]: [ + { + text: localeData.guide, + items: [ + { text: localeData.pages["key-information"], link: `/key-information` }, + { text: localeData.pages["get-started"], link: `/get-started` }, + { text: localeData.pages["ntrboot"], link: `/ntrboot` }, + { text: localeData.pages["flashing-ntrboot-(nds)"], link: `/flashing-ntrboot-(nds)` }, + { text: localeData.pages["installing-boot9strap-(ntrboot)"], link: `/installing-boot9strap-(ntrboot)` }, + { text: localeData.pages["finalizing-setup"], link: `/finalizing-setup` } + ] + }, + sidebar_common + ], + [`/installing-boot9strap-(ntrboot)`]: [ + { + text: localeData.guide, + items: [ + { text: localeData.pages["key-information"], link: `/key-information` }, + { text: localeData.pages["get-started"], link: `/get-started` }, + { text: localeData.pages["ntrboot"], link: `/ntrboot` }, + { text: localeData.pages["multiple-options"] }, + { text: localeData.pages["installing-boot9strap-(ntrboot)"], link: `/installing-boot9strap-(ntrboot)` }, + { text: localeData.pages["finalizing-setup"], link: `/finalizing-setup` } + ] + }, + sidebar_common + ], + [`/installing-boot9strap-(hardmod)`]: [ + { + text: localeData.guide, + items: [ + { text: localeData.pages["key-information"], link: `/key-information` }, + { text: localeData.pages["get-started"], link: `/get-started` }, + { text: localeData.pages["installing-boot9strap-(hardmod)"], link: `/installing-boot9strap-(hardmod)` }, + { text: localeData.pages["finalizing-setup"], link: `/finalizing-setup` } + ] + }, + sidebar_common + ], + [`/installing-boot9strap-(mset9)`]: [ + { + text: localeData.guide, + items: [ + { text: localeData.pages["key-information"], link: `/key-information` }, + { text: localeData.pages["get-started"], link: `/get-started` }, + { text: localeData.pages["installing-boot9strap-(mset9)"], link: `/installing-boot9strap-(mset9)` }, + { text: localeData.pages["multiple-options"] }, + { text: localeData.pages["finalizing-setup"], link: `/finalizing-setup` } + ] + }, + sidebar_common + ], + [`/installing-boot9strap-(mset9-cli)`]: [ + { + text: localeData.guide, + items: [ + { text: localeData.pages["key-information"], link: `/key-information` }, + { text: localeData.pages["get-started"], link: `/get-started` }, + { text: localeData.pages["installing-boot9strap-(mset9-cli)"], link: `/installing-boot9strap-(mset9-cli)` }, + { text: localeData.pages["finalizing-setup"], link: `/finalizing-setup` } + ] + }, + sidebar_common + ], + [`/installing-boot9strap-(mset9-play-store)`]: [ + { + text: localeData.guide, + items: [ + { text: localeData.pages["key-information"], link: `/key-information` }, + { text: localeData.pages["get-started"], link: `/get-started` }, + { text: localeData.pages["installing-boot9strap-(mset9-play-store)"], link: `/installing-boot9strap-(mset9-play-store)` }, + { text: localeData.pages["finalizing-setup"], link: `/finalizing-setup` } + ] + }, + sidebar_common + ], + [`/installing-boot9strap-(safecerthax)`]: [ + { + text: localeData.guide, + items: [ + { text: localeData.pages["key-information"], link: `/key-information` }, + { text: localeData.pages["get-started"], link: `/get-started` }, + { text: localeData.pages["installing-boot9strap-(safecerthax)"], link: `/installing-boot9strap-(safecerthax)` }, + { text: localeData.pages["finalizing-setup"], link: `/finalizing-setup` } + ] + }, + sidebar_common + ], + [`/installing-boot9strap-(soundhax)`]: [ + { + text: localeData.guide, + items: [ + { text: localeData.pages["key-information"], link: `/key-information` }, + { text: localeData.pages["get-started"], link: `/get-started` }, + { text: localeData.pages["installing-boot9strap-(soundhax)"], link: `/installing-boot9strap-(soundhax)` }, + { text: localeData.pages["finalizing-setup"], link: `/finalizing-setup` } + ] + }, + sidebar_common + ], + [`/installing-boot9strap-(ssloth-browser)`]: [ + { + text: localeData.guide, + items: [ + { text: localeData.pages["key-information"], link: `/key-information` }, + { text: localeData.pages["get-started"], link: `/get-started` }, + { text: localeData.pages["installing-boot9strap-(ssloth-browser)"], link: `/installing-boot9strap-(ssloth-browser)` }, + { text: localeData.pages["finalizing-setup"], link: `/finalizing-setup` } + ] + }, + sidebar_common + ], + [`/installing-boot9strap-(super-skaterhax)`]: [ + { + text: localeData.guide, + items: [ + { text: localeData.pages["key-information"], link: `/key-information` }, + { text: localeData.pages["get-started"], link: `/get-started` }, + { text: localeData.pages["installing-boot9strap-(super-skaterhax)"], link: `/installing-boot9strap-(super-skaterhax)` }, + { text: localeData.pages["finalizing-setup"], link: `/finalizing-setup` } + ] + }, + sidebar_common + ], + /* + The `/` path needs to be at the bottom as a catch all! If it is placed anywhere above, + it will select the first matching one and not parse the rest! + */ + [`/`]: [ + { + text: localeData.guide, + items: [ + { text: localeData.pages["key-information"], link: `/key-information` }, + { text: localeData.pages["get-started"], link: `/get-started` }, + { text: localeData.pages["multiple-options"] }, + { text: localeData.pages["finalizing-setup"], link: `/finalizing-setup` } + ] + }, + sidebar_common + ], + } +}; + +export default { + lang: "en", + label: localeData.language, + title: localeData.title, + description: localeData.description, + themeConfig: themeConfig +} diff --git a/docs/.vitepress/i18n/index.js b/docs/.vitepress/i18n/index.js new file mode 100644 index 0000000000..3156a8f90b --- /dev/null +++ b/docs/.vitepress/i18n/index.js @@ -0,0 +1,3 @@ +import en_US from './en_US' + +export { en_US } diff --git a/docs/.vitepress/i18n/strings/en_US.json b/docs/.vitepress/i18n/strings/en_US.json new file mode 100644 index 0000000000..8ab0aa9ae6 --- /dev/null +++ b/docs/.vitepress/i18n/strings/en_US.json @@ -0,0 +1,45 @@ +{ + "language": "English", + "title": "3DS Hacks Guide", + "description": "A complete guide to 3DS custom firmware", + "langMenuLabel": "Switch language", + "darkModeSwitchLabel": "Appearance", + "darkModeSwitchTitle": "Switch to dark theme", + "lightModeSwitchTitle": "Switch to light theme", + "sidebarMenuLabel": "Menu", + "returnToTopLabel": "Return to top", + + "guide": "Guide", + "extras": "Extras", + "other": "Other", + "pages": { + "checking-for-cfw": "Checking for CFW", + "contribute": "Contribute", + "credits": "Credits", + "faq": "FAQ", + "finalizing-setup": "Finalizing Setup", + "flashing-ntrboot-(3ds-multi-system)": "Flashing ntrboot (3DS Multi System)", + "flashing-ntrboot-(3ds-single-system)": "Flashing ntrboot (3DS Single System)", + "flashing-ntrboot-(dsi)": "Flashing ntrboot (DSi)", + "flashing-ntrboot-(nds)": "Flashing ntrboot (nds)", + "get-started": "Get Started", + "godmode9-usage": "GodMode9 Usage", + "installing-boot9strap-(hardmod)": "Installing boot9strap (Hardmod)", + "installing-boot9strap-(mset9)": "Installing boot9strap (MSET9)", + "installing-boot9strap-(mset9-cli)": "Installing boot9strap (MSET9 CLI)", + "installing-boot9strap-(mset9-play-store)": "Installing boot9strap (MSET9 Play Store)", + "installing-boot9strap-(ntrboot)": "Installing boot9strap (ntrboot)", + "installing-boot9strap-(safecerthax)": "Installing boot9strap (safecerthax)", + "installing-boot9strap-(soundhax)": "Installing boot9strap (Soundhax)", + "installing-boot9strap-(ssloth-browser)": "Installing boot9strap (SSLoth-Browser)", + "installing-boot9strap-(super-skaterhax)": "Installing boot9strap (super-skaterhax)", + "key-information": "Key Information", + "multiple-options": "Multiple Options", + "ntrboot": "ntrboot", + "privacy-policy": "Privacy Policy", + "region-changing": "Region Changing", + "site-navigation": "Site Navigation", + "troubleshooting": "Troubleshooting", + "uninstall-cfw": "Uninstall CFW" + } +} diff --git a/docs/.vitepress/i18n/strings/index.js b/docs/.vitepress/i18n/strings/index.js new file mode 100644 index 0000000000..e986e7bca6 --- /dev/null +++ b/docs/.vitepress/i18n/strings/index.js @@ -0,0 +1,3 @@ +import en_US from './en_US' with { type: 'json' } + +export { en_US } \ No newline at end of file