Vue.js & Nuxt Localization
Organize vue-i18n locale files by feature module for large projects. Rather than one locales/en.json containing every string, split into separate files for common UI, authentication, and dashboard content, and configure the nuxtjs/i18n module to lazy-load each module. Lazy loading means a French user's browser only loads the French dashboard strings when they navigate to that section, reducing the initial page payload significantly. This also makes it straightforward to assign translation work by product area.
Name translation keys by component and intent: header.nav.pricing is more maintainable than pricing_nav_link and survives restructuring without breaking translations. Avoid keys with positional or numeric meaning — they break as soon as order or content changes. For strings that embed links or formatted spans, use vue-i18n's component interpolation in the template with named slot syntax rather than splitting the sentence or embedding HTML directly inside translation values.
In Nuxt 3, configure the nuxtjs/i18n module in nuxt.config.ts. Use the prefix_except_default strategy so your default locale has clean URLs and other locales get a language prefix. Set detectBrowserLanguage with a cookie strategy to remember user locale choice across sessions. Use defineI18nRoute inside pages to restrict specific locales on routes that do not yet have translations, and enable lazy: true to activate lazy-loaded locale files.
Connect your GitHub, Bitbucket, or Azure Repos repository to Language Monster. Language Monster detects locale files in the configured directory automatically. Changed strings in your source locale are pulled, translated with Glossary and Translation Memory applied, and pushed back to a branch as a pull request. Language Hierarchy lets you define British English as the parent locale and Australian English as a child — the child inherits all parent strings and only overrides where content genuinely differs.
Enable vue-i18n's type-safe mode by generating TypeScript type definitions from your source locale file — this gives type-checked translation key usage across your entire codebase and surfaces missing keys at compile time. Language Monster's placeholder integrity checks verify that named parameters present in source strings appear in every translated string before files are committed back to your repository.
