Skip to content

s00d/nuxt-i18n-micro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,958 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

npm version npm downloads License Donate

logo

Nuxt I18n Micro

Nuxt I18n Micro is a fast, simple, and lightweight internationalization (i18n) module for Nuxt. Despite its compact size, it's designed with large projects in mind, offering significant performance improvements over traditional i18n solutions like nuxt-i18n. The module was built from the ground up to be highly efficient, focusing on minimizing build times, reducing server load, and shrinking bundle sizes.

Why Nuxt I18n Micro?

The Nuxt I18n Micro module was created to address critical performance issues found in the original nuxt-i18n module, particularly in high-traffic environments and projects with large translation files. Key issues with nuxt-i18n include:

  • High Memory Consumption: Consumes significant memory during both build and runtime, leading to performance bottlenecks.
  • Slow Performance: Especially with large translation files, it causes noticeable slowdowns in build times and server response.
  • Large Bundle Size: Generates a large bundle, negatively impacting application performance.
  • Memory Leaks and Bugs: Known for memory leaks and unpredictable behavior under heavy load.

Performance Comparison

To showcase the efficiency of Nuxt I18n Micro, we conducted tests under identical conditions. Both modules were tested with a 10MB translation file on the same hardware. We also include a plain-nuxt baseline (no i18n module) to measure the real overhead.

Build Time and Resource Consumption

Note: The plain-nuxt baseline is a minimal implementation created solely for benchmarking purposes. It loads data directly from JSON files without any i18n logic. Real-world applications will have more complexity and higher resource usage.

Project Build Time Code Bundle Max Memory Max CPU
plain-nuxt (baseline) 6.50s 1.35 MB 745 MB 195%
i18n-micro 14.95s 1.48 MB 1,175 MB 243%
i18n v10 82.26s 19.24 MB 9,117 MB 419%

Code Bundle = JavaScript/CSS code only (excludes translation JSON files). i18n-micro stores translations as lazy-loaded JSON files, keeping the code bundle minimal.

  • i18n-micro vs baseline: +8.45s build, +131 KB code, +430 MB memory
  • i18n v10 vs baseline: +75.76s build, +17.89 MB code, +8,372 MB memory

Stress Test Results (Requests per Second)

Project Avg Response RPS (Artillery) Max Memory
plain-nuxt 453 ms 274 324 MB
i18n-micro 437 ms 278 275 MB
i18n v10 1,177 ms 51 1,095 MB

Comparison: i18n v10 vs i18n-micro

  • Code Bundle: 17.76 MB smaller (i18n-micro: 1.48 MB vs i18n v10: 19.24 MB)
  • Build Time: 67.31s faster (i18n-micro: 14.95s vs i18n v10: 82.26s)
  • Max Memory (build): 7,942 MB less (i18n-micro: 1,175 MB vs i18n v10: 9,117 MB)
  • Average Response Time: 740 ms faster (i18n-micro: 437 ms vs i18n v10: 1,177 ms)
  • Requests Per Second: 227 more (i18n-micro: 278 vs i18n v10: 51)

These results clearly demonstrate that Nuxt I18n Micro significantly outperforms the original module in every critical area while staying close to the plain Nuxt baseline. See the full benchmark report for methodology and charts.

Key Features

  • 🌐 Compact Yet Powerful: Despite its small size, Nuxt I18n Micro is designed for large-scale projects, focusing on performance and efficiency.
  • Optimized Build and Runtime: Reduces build times, memory usage, and server load, making it ideal for high-traffic applications.
  • 🛠 Minimalist Design: The module core is a single Nuxt module plus a small set of runtime plugins, making it easy to understand, extend, and maintain.
  • 📏 Strategy-Based Routing: Locale prefixes are handled via @i18n-micro/route-strategy (build-time) and @i18n-micro/path-strategy (runtime), with strategies such as prefix, no_prefix, prefix_except_default, and prefix_and_default.
  • 🗂 Streamlined Translation Loading: Only JSON files are supported, with translations split between a global file for common texts (e.g., menus) and page-specific files, which are auto-generated in the dev mode if not present.

Quick Setup

Install the module in your Nuxt application with:

npm install nuxt-i18n-micro

Then, add it to your nuxt.config.ts:

export default defineNuxtConfig({
  modules: [
    'nuxt-i18n-micro',
  ],
  i18n: {
    locales: [
      { code: 'en', iso: 'en-US', dir: 'ltr' },
      { code: 'fr', iso: 'fr-FR', dir: 'ltr' },
      { code: 'ar', iso: 'ar-SA', dir: 'rtl' },
    ],
    defaultLocale: 'en',
    translationDir: 'locales',
    meta: true,
  },
})

That's it! You're now ready to use Nuxt I18n Micro in your Nuxt app.

Star History

Star History Chart

Docs

Plugin Methods

Performance

Performance Test Results

Components

Layers

Seo

Migration

Contribution

About

Nuxt I18n Micro is a fast, simple, and lightweight internationalization (i18n) module for Nuxt

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors