OSS探訪

i18next — 複数形・補間・言語判定・翻訳リソースを、フレームワークから切り離して組み立てるi18n基盤

OSS健全度 93
スコアの見方

発掘スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした独自指標(上限なし)。成長モメンタムは観測期間内の同スコアの差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
8,634
主要言語
JavaScript
ライセンス
MIT
リポジトリ最終更新
2026/09/03

概要

i18nextは、browser・Node.js・Denoで使えるJavaScriptの国際化フレームワークです。翻訳キーの解決を中核に、複数形、context、nesting、interpolationを扱い、翻訳リソースの読み込み、cache、language detection、post processorなどをpluginで追加できます。React・Vue・Next.jsなどはbindingを介して接続するため、UIフレームワークをまたいで同じ翻訳モデルを持ちたいプロジェクトの基盤になります。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

単純な文字列置換ではなく、plural・context・nesting・interpolationを翻訳関数に集約する

READMEはi18nextの主要機能としてpluralization、context、nesting、variable replacementを挙げています。pluralはJavaScriptのIntl.PluralRulesに沿った形式で、言語ごとのone/otherだけでなくzero・two・few・manyなど複数の形を扱えます。動的な値は{{value}}形式で補間でき、翻訳文の構造とアプリケーション側の値を分離できます。

出典:[2][5][4]

翻訳ファイルの保存場所や言語判定をcoreへ固定せず、backend・detector・cacheをpluginとして選ぶ

i18nextは翻訳リソースの取得方法をbackend pluginとして分離し、HTTP、filesystem、localStorageなど複数の実装を組み合わせられます。language detector、cache、post processorも別componentとして選択できるため、browserとserverでresource loadingや検出方法を変えながら、t()を中心とした翻訳APIは共通化できます。

出典:[2][7]

React専用ではなく、React・Vue・Next.js・SvelteからNode/Denoまでbindingを替えて同じcoreを使う

公式ドキュメントはReact/React Native向けreact-i18next、Vue向けi18next-vue、Next.js向けnext-i18next、Node/Deno HTTP middlewareなど多数のintegrationを案内しています。core自体はbrowser、Node、Denoで動作するため、表示層ごとのbindingと翻訳resourceを分離して設計できます。packageはESMとCommonJSのentry point、TypeScript定義を持ち、TypeScript 5・6・7をoptional peer dependencyとして扱っています。

出典:[6][3]

複数の画面技術・実行環境で、翻訳キーとlocale resourceの考え方を共通化したい場合に

Web frontendとNode.js backendで共通の翻訳resourceを扱いたい場合、ReactからVueなどへUI技術が変わってもi18nの中核を維持したい場合、複数形やcontextを各画面で独自実装せず言語規則に沿って管理したい場合に向きます。小規模なJSON resourceからbackend pluginによる動的読み込みまで段階的に拡張できます。

framework bindingと周辺pluginの保守状況はcoreと別に確認する

Supported Frameworksページは、掲載されているintegration一覧そのものは公式に一括保守されておらず、各libraryのmaintainerが情報を提供していると明記しています。一部は更新停止やdeprecatedになる可能性があるため、React・Vue・Next.jsなどで採用するときはi18next coreの更新状況だけでなく、binding側の対応version、SSR/SSG、framework固有のroutingやresource loadingも確認する必要があります。

出典:[6]

補間値のescapeを無効化するとXSS対策の責任がアプリ側へ移る。Locizeも必須ではない

i18nextはinterpolation valueを既定でescapeし、XSSを軽減します。一方、escapeValue: false{{- value}}でescapeを無効化できます。公式ドキュメントは、この場合はuser inputを自分でescapeするよう警告し、外部由来の値ではskipOnVariablesをtrueのまま使うことも強く推奨しています。

READMEには開発者が提供する翻訳管理サービスLocizeへの導線がありますが、同時にi18nextはLocizeなしでも完全に動作すると明記されています。OSSのi18next本体、framework binding、翻訳resourceの運用、SaaS型translation managementを別々の選択肢として評価する方が構成を誤りにくいです。

出典:[4][2][8]

参考にした公式資料

  1. [1]i18next/i18next — GitHub repository metadata(2026-09-15)
  2. [2]i18next/i18next — README(2026-09-15)
  3. [3]i18next/i18next — package.json(2026-09-15)
  4. [4]i18next Docs — Interpolation(2026-09-15)
  5. [5]i18next Docs — Plurals(2026-09-15)
  6. [6]i18next Docs — Supported Frameworks(2026-09-15)
  7. [7]i18next Docs — Plugins and Utils(2026-09-15)
  8. [8]i18next/i18next — LICENSE(2026-09-15)
編集部からの補足

単なる文字列置換ではなく、言語ごとのplural ruleとresource loading、framework bindingを分離して組み立てられる点を評価しました。導入時はbinding/pluginの保守状況と、escapeを無効化したinterpolationのtrust boundaryを確認してください。Locizeは任意で、i18next本体だけでも利用できます。

3ステップで試す

  1. 1

    ソースを取得

    git clone --depth 1 https://github.com/i18next/i18next.git
  2. 2

    リポジトリへ移動

    cd i18next
  3. 3

    公式手順を確認

    READMEのInstallation / Quick Start / Getting Startedにある公式コマンドを続けて実行してください。

    find . -maxdepth 1 -iname 'README*' -exec sed -n '1,220p' {} \; -quit
公式READMEで確認

成長

成長の推移 · 直近30日

8,634 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
14
Open PR
0

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

カテゴリ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • translation
  • ecosystem
  • flexibility
  • internationalization
  • i18n
  • nodejs
  • deno
  • javascript
Stars
8,634
Forks
694
Watchers
83
Open Issues
2
主要言語
JavaScript
ライセンス
MIT
リポジトリ最終更新
2026/09/03
情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

i18nextとは?JavaScript国際化・複数形・翻訳リソース管理 | OSS探訪