i18next

The internationalization framework for JavaScript, with zero runtime dependencies and a pluggable ecosystem for every environment.

Library
npm
v26.5.7
8,648 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
90 /100 Excellent
Development Activity 100
Maintenance 96
Community 64
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
81 /100 Excellent
Architecture 88
Code Quality 85
Innovation 82
Learning Curve 70

i18next is a mature, widely-adopted internationalization (i18n) framework for JavaScript that provides everything needed to translate an application: pluralization, context, nesting, interpolation, and language detection. It runs in the browser, Node.js, Deno, and React Native, and ships with zero runtime dependencies, keeping it lightweight and portable across build targets.

What sets i18next apart is its plugin architecture: translation loading (backends), language detection, formatting, and post-processing are all pluggable via a single .use() API, letting teams swap in HTTP/filesystem backends, browser language detectors, or custom formatters without touching core code. A large companion ecosystem (react-i18next, i18next-http-backend, i18next-browser-languagedetector, and more) builds on this same interface, making it the default choice for internationalizing React, Vue, Angular, and vanilla JS projects alike.

What You Get

  • A t() translation function with key nesting, interpolation ({{variable}}), and context/pluralization support out of the box
  • A .use() plugin API for backends (HTTP, filesystem, in-memory), language detectors, formatters, and post-processors
  • Automatic language and namespace resolution with fallback chains, so missing translations degrade gracefully instead of breaking the UI
  • cloneInstance() and getFixedT() for multi-tenant/SSR apps that need isolated or namespace-scoped translator instances per request
  • First-class TypeScript definitions (hand-authored .d.ts/.d.mts) covering the full options and API surface, including typed selector-based key lookups

Common Use Cases

  • Translating a React, Vue, or Angular single-page app via the matching companion binding (react-i18next, vue-i18next, angular-i18next)
  • Server-side rendered apps that need a fresh, request-scoped translator instance (via cloneInstance) to avoid leaking state across requests
  • Loading translation JSON over HTTP or from the filesystem via i18next-http-backend / i18next-fs-backend, with lazy per-namespace loading
  • Detecting a visitor’s preferred language from the browser, cookies, or query string using i18next-browser-languagedetector
  • Applying locale-aware pluralization and number/date formatting through the built-in Formatter and PluralResolver modules

Under The Hood

Architecture The I18n class in src/i18next.js extends a small custom EventEmitter and owns instance lifecycle (init, changeLanguage, cloneInstance). On init() it wires up a set of single-responsibility services — LanguageUtils for locale-code resolution, PluralResolver for CLDR-style plural rules, Interpolator for {{var}}/nesting substitution, Formatter for value formatting, and BackendConnector (src/BackendConnector.js) which queues and dedupes async loads of translation resources per language/namespace pair. A Translator (src/Translator.js, the largest module at 645 lines) is the actual t() implementation: it resolves keys against the in-memory ResourceStore, triggers backend loads for missing namespaces, then pipes the result through interpolation, pluralization, and a registered postProcessor chain (e.g. sprintf-style formatting). Extension points (backend, languageDetector, i18nFormat, formatter, postProcessor, 3rdParty) are all registered through one .use(module) call keyed off a module.type string, which is what lets the ecosystem of companion packages plug into the same core without forking it. Tech Stack The package has zero runtime dependencies — package.json declares only an optional typescript peer dependency for consumers who want type-checking. Source is plain ES modules (no TS at the source level); the public API surface is instead hand-maintained in index.d.ts/index.d.mts (19KB), which is unusual for a package this size and signals deliberate API-surface control. The build pipeline uses Rollup (rollup.config.mjs) to emit CJS, ESM, and UMD bundles, with Babel handling syntax transforms for older test targets. Tests run on Vitest 4.x across three separate workspace configs (runtime, compatibility, typescript), the last of which uses @arktype/attest to assert inferred TypeScript types, not just runtime behavior. Code Quality The test/ directory holds 66 test files spanning interpolation, pluralization, backend concurrency, language detection, selector-based key access, and a dedicated security.test.js. Several non-trivial async races are documented inline with direct references to the originating GitHub issue numbers (e.g. the init/changeLanguage ordering fix referenced at src/i18next.js lines 214-216, and the selector-scoping logic at lines 406-419) — evidence of a codebase that has absorbed a decade of real-world edge cases rather than one written in a vacuum. Naming is consistent and each module (ResourceStore, LanguageUtils, BackendConnector) has a narrow, single responsibility, which keeps the 3,148-line src/ tree easy to navigate despite its age. API Design The .use().use().init({...}) chaining pattern is the standout DX decision: adding a backend and a language detector is two .use() calls before init(), and the same pattern is what every companion package (react-i18next, i18next-http-backend) targets, so the mental model transfers across the whole ecosystem. getFixedT(lng, ns, keyPrefix) gives callers a pre-scoped t function for a given namespace/language without re-passing options on every call, and hasLoadedNamespace() supports Suspense-style loading gates in frameworks like React. The trade-off is that a zero-dependency core means common needs (fetching translations over HTTP, detecting browser language) require pulling in a companion package rather than working out of the box, which adds a small amount of assembly for newcomers relative to a more batteries-included i18n library.

Used by 111 apps in this directory

TypeScript
100%
Apache 2.0

ILLA Builder

Design Tools · Developer Tools · Low Code Platforms

12,333

Open-source low-code platform for building internal tools with drag-and-drop UI, reactive data bindings, and real-time collaboration.

View details
55
Repo Health
71
Technical
63
Dependency
Built with
TypeScript 100%
Updated 5 months ago
TypeScript
96%
Other

Infisical

Devops · Security

29,961

The open-source platform for secrets, certificates, privileged access, and AI agent security — all in one self-hostable system.

View details
91
Repo Health
84
Technical
64
Dependency
Built with
TypeScript 96%
Updated 6 days ago
TypeScript
93%
Apache 2.0

InsForge

Databases · Developer Tools

13,176

The all-in-one, open-source backend platform purpose-built for AI coding agents — giving your agent database, auth, storage, edge functions, a model gateway, and compute to ship full-stack apps end-to-end.

View details
86
Repo Health
81
Technical
72
Dependency
Built with
TypeScript 93%
Updated 6 days ago
TypeScript
55%
Other

Jaaz

AI Agents · AI Design Tools

6,721

Open-source AI creative agent that turns visual sketches and canvas gestures into images and videos — no text prompts required.

View details
45
Repo Health
59
Technical
71
Dependency
Built with
TypeScript 55%
Python 34%
JavaScript 10%
Updated 8 months ago
Rust
56%
Other

Jan

AI Assistants

45,052

Run LLMs 100% locally with full privacy, or connect to cloud AI — your machine, your data, your control.

View details
90
Repo Health
81
Technical
65
Dependency
Built with
Rust 56%
TypeScript 40%
Updated 6 days ago
TypeScript
73%
Apache 2.0

Jitsi Meet

Collaboration · Team Chat · Video Conferencing

30,130

Open-source, end-to-end encrypted video conferencing you can self-host or embed into any web or mobile app.

View details
96
Repo Health
85
Technical
67
Dependency
Built with
TypeScript 73%
Lua 11%
JavaScript 10%
Updated 1 weeks ago
TypeScript
92%
MIT

Kaneo

Product Management · Productivity · Project Management

9,574

Lightweight self-hosted project management that gives you kanban boards, GitHub sync, and full team collaboration without the enterprise bloat.

View details
87
Repo Health
81
Technical
70
Dependency
Built with
TypeScript 92%
Updated 6 days ago
TypeScript
98%
AGPL 3.0

Karakeep

Bookmarks Archiving

29,926

Self-hosted bookmark manager that captures links, notes, images, and PDFs with AI tagging, full-text search, and automatic archiving.

View details
88
Repo Health
76
Technical
66
Dependency
Built with
TypeScript 98%
Updated 1 weeks ago
Python
71%
MIT

Langflow

AI Agents · AI Development

155,973

Build, test, and deploy AI agents and RAG workflows visually with native API and MCP server export.

View details
90
Repo Health
85
Technical
64
Dependency
Built with
Python 71%
TypeScript 21%
Updated 6 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers