--- title: Internationalization icon: material-symbols-light:language createTime: 2025/10/08 10:01:26 permalink: /en/guide/locales/ tags: - Guide - i18n --- This guide will help you quickly configure multi-language support for your VuePress theme. With simple directory structure and configuration adjustments, you can achieve a professional internationalized site. ## Directory Structure Planning First, create a directory structure that meets multi-language requirements. The following example shows a project layout supporting Chinese, English, and French: ::: file-tree - docs - **en** # English documentation directory - foo.md - README.md # English homepage - **fr** # French documentation directory - foo.md - README.md # French homepage - foo.md - README.md # Chinese homepage ::: **Directory Structure Explanation**: - `docs/en/` - Stores English version documents - `docs/fr/` - Stores French version documents - `docs/` - Stores default language (Chinese) documents ::: Important Maintain File Structure Consistency Maintain identical file names and directory structures across different language directories. This ensures the theme can correctly navigate to the corresponding language version of documents during language switching. ::: ## VuePress Basic Configuration ### Setting Default Language Declare the default language in the configuration file `.vuepress/config.ts`: ```ts title=".vuepress/config.ts" twoslash import { defineUserConfig } from 'vuepress' export default defineUserConfig({ // Set default language code lang: 'zh-CN', // [!code ++] // Configure multi-language support locales: { '/': { lang: 'zh-CN', title: 'Blog' }, // Simplified Chinese as default language } }) ``` ### Adding Other Language Support Extend the `locales` configuration to support more languages: ```ts title=".vuepress/config.ts" twoslash import { defineUserConfig } from 'vuepress' export default defineUserConfig({ lang: 'zh-CN', locales: { '/': { lang: 'zh-CN', title: 'Blog' }, // Simplified Chinese '/en/': { lang: 'en-US', title: 'Blog' }, // American English // [!code ++] '/fr/': { lang: 'fr-FR', title: 'Le blog' }, // French // [!code ++] } }) ``` **Configuration Key Points**: - The keys in `locales` (such as `/en/`) correspond to language folder names in the documentation directory - These keys also serve as access path prefixes for each language's pages - Each language must have the correct `lang` attribute set, even if only using a single language ::: Tip Language Code Standards - **Path Keys**: Follow [ISO 639](https://en.wikipedia.org/wiki/ISO_639-1) standard (e.g., use `/en/` for English) - **Language Codes**: Use [BCP47](https://www.ietf.org/rfc/bcp/bcp47.txt) standard format (e.g., use `en-US` for English) ::: ## Theme Multi-language Configuration Customize interface elements for each language through the `locales` field in theme configuration: ```ts title=".vuepress/config.ts" twoslash import { defineUserConfig } from 'vuepress' import { plumeTheme } from 'vuepress-theme-plume' export default defineUserConfig({ lang: 'zh-CN', // [!code focus:6] locales: { '/': { lang: 'zh-CN', title: 'Blog' }, '/en/': { lang: 'en-US', title: 'Blog' }, '/fr/': { lang: 'fr-FR', title: 'Le blog' }, }, theme: plumeTheme({ // Theme-level multi-language configuration locales: { // [!code focus:20] // Simplified Chinese configuration '/': { selectLanguageName: '简体中文', navbar: [ { text: '首页', link: '/' }, { text: '博客', link: '/blog/' }, ] }, // English configuration '/en/': { selectLanguageName: 'English', navbar: [ { text: 'Home', link: '/en/' }, { text: 'Blog', link: '/en/blog/' }, ] }, // French configuration '/fr/': { // [!code focus:7] selectLanguageName: 'Français', navbar: [ { text: 'Accueil', link: '/fr/' }, { text: 'Le Blog', link: '/fr/blog/' }, ] } } }) }) ``` **Key Configuration Items**: - `selectLanguageName`: Language name displayed in the language selector - `navbar`: Navigation bar configuration unique to each language - All theme configuration items support overriding by language in `locales` ## Configuration Consistency Requirements Ensure path keys in VuePress configuration exactly match those in theme configuration: ```ts export default { // VuePress configuration locales: { '/': { /* Chinese configuration */ }, '/en/': { /* English configuration */ }, }, // Theme configuration theme: plumeTheme({ locales: { '/': { /* Chinese theme configuration */ }, '/en/': { /* English theme configuration */ } } }) } ``` ## Further Reading - [Theme Locales Configuration](../../config/theme.md#locale-configuration) - Learn about language-specific theme behavior configurations - [Multi-language Text Configuration](../../config/locales.md) - Master internationalization customization methods for interface text With the above configurations, your documentation site will have complete multi-language support capabilities, providing users with a more friendly internationalized access experience.