@intlayer/docs 7.0.5 → 7.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/blog/ar/intlayer_with_i18next.md +72 -19
  2. package/blog/ar/intlayer_with_next-i18next.md +61 -36
  3. package/blog/ar/intlayer_with_next-intl.md +61 -13
  4. package/blog/ar/intlayer_with_react-i18next.md +67 -18
  5. package/blog/ar/intlayer_with_react-intl.md +66 -13
  6. package/blog/ar/intlayer_with_vue-i18n.md +180 -0
  7. package/blog/de/intlayer_with_i18next.md +61 -26
  8. package/blog/de/intlayer_with_next-i18next.md +66 -17
  9. package/blog/de/intlayer_with_next-intl.md +62 -13
  10. package/blog/de/intlayer_with_react-i18next.md +66 -17
  11. package/blog/de/intlayer_with_react-intl.md +66 -14
  12. package/blog/de/intlayer_with_vue-i18n.md +178 -0
  13. package/blog/en/intlayer_with_i18next.md +53 -2
  14. package/blog/en/intlayer_with_next-i18next.md +52 -16
  15. package/blog/en/intlayer_with_next-intl.md +49 -0
  16. package/blog/en/intlayer_with_react-i18next.md +50 -1
  17. package/blog/en/intlayer_with_react-intl.md +53 -0
  18. package/blog/en/intlayer_with_vue-i18n.md +178 -0
  19. package/blog/en-GB/intlayer_with_i18next.md +58 -7
  20. package/blog/en-GB/intlayer_with_next-i18next.md +55 -9
  21. package/blog/en-GB/intlayer_with_next-intl.md +55 -6
  22. package/blog/en-GB/intlayer_with_react-i18next.md +55 -6
  23. package/blog/en-GB/intlayer_with_react-intl.md +56 -3
  24. package/blog/en-GB/intlayer_with_vue-i18n.md +180 -0
  25. package/blog/es/intlayer_with_i18next.md +69 -18
  26. package/blog/es/intlayer_with_next-i18next.md +70 -24
  27. package/blog/es/intlayer_with_next-intl.md +64 -13
  28. package/blog/es/intlayer_with_react-i18next.md +61 -12
  29. package/blog/es/intlayer_with_react-intl.md +65 -12
  30. package/blog/es/intlayer_with_vue-i18n.md +178 -0
  31. package/blog/fr/intlayer_with_i18next.md +77 -16
  32. package/blog/fr/intlayer_with_next-i18next.md +55 -31
  33. package/blog/fr/intlayer_with_next-intl.md +57 -7
  34. package/blog/fr/intlayer_with_react-i18next.md +64 -7
  35. package/blog/fr/intlayer_with_react-intl.md +63 -10
  36. package/blog/fr/intlayer_with_vue-i18n.md +178 -0
  37. package/blog/hi/intlayer_with_i18next.md +67 -16
  38. package/blog/hi/intlayer_with_next-i18next.md +69 -23
  39. package/blog/hi/intlayer_with_next-intl.md +61 -8
  40. package/blog/hi/intlayer_with_react-i18next.md +63 -14
  41. package/blog/hi/intlayer_with_react-intl.md +66 -13
  42. package/blog/hi/intlayer_with_vue-i18n.md +180 -0
  43. package/blog/id/intlayer_with_i18next.md +65 -14
  44. package/blog/id/intlayer_with_next-i18next.md +58 -12
  45. package/blog/id/intlayer_with_next-intl.md +60 -11
  46. package/blog/id/intlayer_with_react-i18next.md +59 -10
  47. package/blog/id/intlayer_with_react-intl.md +66 -13
  48. package/blog/id/intlayer_with_vue-i18n.md +178 -0
  49. package/blog/it/intlayer_with_i18next.md +70 -19
  50. package/blog/it/intlayer_with_next-i18next.md +68 -22
  51. package/blog/it/intlayer_with_next-intl.md +62 -12
  52. package/blog/it/intlayer_with_react-i18next.md +65 -16
  53. package/blog/it/intlayer_with_react-intl.md +67 -14
  54. package/blog/it/intlayer_with_vue-i18n.md +178 -0
  55. package/blog/ja/intlayer_with_i18next.md +74 -24
  56. package/blog/ja/intlayer_with_next-i18next.md +60 -37
  57. package/blog/ja/intlayer_with_next-intl.md +63 -15
  58. package/blog/ja/intlayer_with_react-i18next.md +70 -21
  59. package/blog/ja/intlayer_with_react-intl.md +73 -21
  60. package/blog/ja/intlayer_with_vue-i18n.md +180 -0
  61. package/blog/ko/intlayer_with_i18next.md +60 -29
  62. package/blog/ko/intlayer_with_next-i18next.md +59 -32
  63. package/blog/ko/intlayer_with_next-intl.md +52 -23
  64. package/blog/ko/intlayer_with_react-i18next.md +65 -16
  65. package/blog/ko/intlayer_with_react-intl.md +74 -22
  66. package/blog/ko/intlayer_with_vue-i18n.md +180 -0
  67. package/blog/pl/intlayer_with_i18next.md +63 -12
  68. package/blog/pl/intlayer_with_next-i18next.md +74 -17
  69. package/blog/pl/intlayer_with_next-intl.md +59 -8
  70. package/blog/pl/intlayer_with_react-i18next.md +59 -10
  71. package/blog/pl/intlayer_with_react-intl.md +65 -12
  72. package/blog/pl/intlayer_with_vue-i18n.md +180 -0
  73. package/blog/pt/intlayer_with_i18next.md +67 -16
  74. package/blog/pt/intlayer_with_next-i18next.md +65 -19
  75. package/blog/pt/intlayer_with_next-intl.md +62 -12
  76. package/blog/pt/intlayer_with_react-i18next.md +67 -18
  77. package/blog/pt/intlayer_with_react-intl.md +62 -10
  78. package/blog/pt/intlayer_with_vue-i18n.md +178 -0
  79. package/blog/ru/intlayer_with_i18next.md +68 -15
  80. package/blog/ru/intlayer_with_next-i18next.md +71 -25
  81. package/blog/ru/intlayer_with_next-intl.md +56 -7
  82. package/blog/ru/intlayer_with_react-i18next.md +65 -16
  83. package/blog/ru/intlayer_with_react-intl.md +69 -16
  84. package/blog/ru/intlayer_with_vue-i18n.md +180 -0
  85. package/blog/tr/intlayer_with_i18next.md +67 -16
  86. package/blog/tr/intlayer_with_next-i18next.md +78 -21
  87. package/blog/tr/intlayer_with_next-intl.md +69 -18
  88. package/blog/tr/intlayer_with_react-i18next.md +65 -16
  89. package/blog/tr/intlayer_with_react-intl.md +71 -19
  90. package/blog/tr/intlayer_with_vue-i18n.md +180 -0
  91. package/blog/vi/intlayer_with_i18next.md +64 -13
  92. package/blog/vi/intlayer_with_next-i18next.md +72 -26
  93. package/blog/vi/intlayer_with_next-intl.md +62 -11
  94. package/blog/vi/intlayer_with_react-i18next.md +66 -17
  95. package/blog/vi/intlayer_with_react-intl.md +70 -17
  96. package/blog/vi/intlayer_with_vue-i18n.md +180 -0
  97. package/blog/zh/intlayer_with_i18next.md +67 -17
  98. package/blog/zh/intlayer_with_next-i18next.md +67 -22
  99. package/blog/zh/intlayer_with_next-intl.md +61 -13
  100. package/blog/zh/intlayer_with_react-i18next.md +67 -18
  101. package/blog/zh/intlayer_with_react-intl.md +69 -17
  102. package/blog/zh/intlayer_with_vue-i18n.md +180 -0
  103. package/dist/cjs/generated/blog.entry.cjs +19 -0
  104. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  105. package/dist/esm/generated/blog.entry.mjs +19 -0
  106. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  107. package/dist/types/generated/blog.entry.d.ts +1 -0
  108. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  109. package/docs/ar/intlayer_with_nextjs_15.md +36 -9
  110. package/docs/ar/intlayer_with_nextjs_16.md +36 -9
  111. package/docs/de/intlayer_with_nextjs_15.md +36 -9
  112. package/docs/de/intlayer_with_nextjs_16.md +24 -6
  113. package/docs/en/intlayer_with_nextjs_14.md +37 -9
  114. package/docs/en/intlayer_with_nextjs_15.md +40 -10
  115. package/docs/en/intlayer_with_nextjs_16.md +40 -10
  116. package/docs/en/plugins/sync-json.md +152 -55
  117. package/docs/en/releases/v7.md +1 -1
  118. package/docs/en-GB/intlayer_with_nextjs_15.md +36 -9
  119. package/docs/en-GB/intlayer_with_nextjs_16.md +36 -9
  120. package/docs/en-GB/releases/v7.md +1 -1
  121. package/docs/es/intlayer_with_nextjs_15.md +36 -9
  122. package/docs/es/intlayer_with_nextjs_16.md +36 -9
  123. package/docs/fr/intlayer_with_nextjs_15.md +36 -9
  124. package/docs/fr/intlayer_with_nextjs_16.md +37 -24
  125. package/docs/hi/intlayer_with_nextjs_15.md +36 -9
  126. package/docs/hi/intlayer_with_nextjs_16.md +36 -9
  127. package/docs/id/intlayer_with_nextjs_16.md +36 -9
  128. package/docs/it/intlayer_with_nextjs_15.md +36 -9
  129. package/docs/it/intlayer_with_nextjs_16.md +36 -9
  130. package/docs/ja/intlayer_with_nextjs_15.md +36 -9
  131. package/docs/ja/intlayer_with_nextjs_16.md +36 -9
  132. package/docs/ko/intlayer_with_nextjs_15.md +36 -9
  133. package/docs/ko/intlayer_with_nextjs_16.md +36 -9
  134. package/docs/pl/intlayer_with_nextjs_16.md +36 -9
  135. package/docs/pt/intlayer_with_nextjs_15.md +36 -9
  136. package/docs/pt/intlayer_with_nextjs_16.md +36 -9
  137. package/docs/ru/intlayer_with_nextjs_15.md +36 -9
  138. package/docs/ru/intlayer_with_nextjs_16.md +36 -9
  139. package/docs/tr/intlayer_with_nextjs_15.md +36 -9
  140. package/docs/tr/intlayer_with_nextjs_16.md +39 -21
  141. package/docs/vi/intlayer_with_nextjs_16.md +36 -9
  142. package/docs/zh/intlayer_with_nextjs_15.md +36 -9
  143. package/docs/zh/intlayer_with_nextjs_16.md +36 -9
  144. package/package.json +14 -14
  145. package/src/generated/blog.entry.ts +19 -0
@@ -16,6 +16,9 @@ slugs:
16
16
  - blog
17
17
  - intlayer-with-next-i18next
18
18
  history:
19
+ - version: 7.0.6
20
+ date: 2025-11-01
21
+ changes: loadJSON プラグインを追加
19
22
  - version: 7.0.0
20
23
  date: 2025-10-29
21
24
  changes: syncJSON プラグインへの変更と包括的な書き直し
@@ -27,32 +30,32 @@ history:
27
30
 
28
31
  <TOC/>
29
32
 
30
- ## next-i18next とは?
33
+ ## next-i18next とは何か?
31
34
 
32
35
  **next-i18next** は、Next.js アプリケーション向けの最も人気のある国際化(i18n)フレームワークの一つです。強力な **i18next** エコシステムの上に構築されており、Next.js プロジェクトにおける翻訳、ローカリゼーション、言語切り替えの管理に包括的なソリューションを提供します。
33
36
 
34
37
  しかし、next-i18next にはいくつかの課題があります:
35
38
 
36
- - **複雑な設定**:next-i18next のセットアップには複数の設定ファイルが必要であり、サーバーサイドとクライアントサイドの i18n インスタンスの慎重な設定が求められます。
39
+ - **複雑な設定**:next-i18next のセットアップには複数の設定ファイルが必要であり、サーバーサイドとクライアントサイドの i18n インスタンスを慎重に設定する必要があります。
37
40
  - **翻訳ファイルの分散**:翻訳ファイルは通常、コンポーネントとは別のディレクトリに保存されているため、一貫性の維持が難しくなります。
38
- - **名前空間の手動管理**:開発者は名前空間を手動で管理し、翻訳リソースが適切に読み込まれることを保証する必要があります。
41
+ - **手動のネームスペース管理**:開発者はネームスペースを手動で管理し、翻訳リソースの適切な読み込みを確保する必要があります。
39
42
  - **限定的な型安全性**:TypeScript のサポートには追加の設定が必要であり、翻訳の自動型生成は提供されません。
40
43
 
41
44
  ## Intlayerとは?
42
45
 
43
46
  **Intlayer** は、従来のi18nソリューションの欠点を解決するために設計された革新的なオープンソースの国際化ライブラリです。Next.jsアプリケーションにおけるコンテンツ管理に対してモダンなアプローチを提供します。
44
47
 
45
- [next-i18next vs. next-intl vs. Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md) のブログ記事で next-intl との具体的な比較をご覧ください。
48
+ 具体的な比較は、当社のブログ記事 [next-i18next vs. next-intl vs. Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md) をご覧ください。
46
49
 
47
- ## なぜ Intlayer next-i18next と組み合わせるのか?
50
+ ## なぜIntlayerをnext-i18nextと組み合わせるのか?
48
51
 
49
- Intlayerは優れた単独のi18nソリューションを提供します([Next.js統合ガイド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_with_nextjs_16.md)を参照)が、次のような理由でnext-i18nextと組み合わせたい場合があります。
52
+ Intlayerは優れた単独のi18nソリューションを提供します([Next.js統合ガイド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_with_nextjs_16.md)を参照)が、いくつかの理由でnext-i18nextと組み合わせたい場合があります。
50
53
 
51
54
  1. **既存のコードベース**: 既にnext-i18nextの実装があり、Intlayerの改善された開発者体験へ段階的に移行したい場合。
52
55
  2. **レガシー要件**: プロジェクトが既存のi18nextプラグインやワークフローとの互換性を必要とする場合。
53
56
  3. **チームの慣れ親しみ**: チームがnext-i18nextに慣れているが、より良いコンテンツ管理を望んでいる場合。
54
57
 
55
- **そのために、Intlayerはnext-i18nextのアダプターとして実装でき、CLIやCI/CDパイプラインでのJSON翻訳の自動化、翻訳のテストなどを支援します。**
58
+ **そのため、Intlayerはnext-i18nextのアダプターとして実装でき、CLIやCI/CDパイプラインでのJSON翻訳の自動化、翻訳のテストなどを支援します。**
56
59
 
57
60
  このガイドでは、next-i18nextとの互換性を維持しながら、Intlayerの優れたコンテンツ宣言システムを活用する方法を示します。
58
61
 
@@ -62,7 +65,7 @@ Intlayerは優れた単独のi18nソリューションを提供します([Next
62
65
 
63
66
  ### ステップ1: 依存関係のインストール
64
67
 
65
- お好みのパッケージマネージャーを使って必要なパッケージをインストールしてください:
68
+ お好みのパッケージマネージャーを使って必要なパッケージをインストールします:
66
69
 
67
70
  ```bash packageManager="npm"
68
71
  npm install intlayer @intlayer/sync-json-plugin
@@ -76,18 +79,18 @@ pnpm add intlayer @intlayer/sync-json-plugin
76
79
  yarn add intlayer @intlayer/sync-json-plugin
77
80
  ```
78
81
 
79
- **パッケージの説明:**
82
+ ```bash packageManager="bun"
83
+ bun add intlayer @intlayer/sync-json-plugin
84
+ ```
85
+
86
+ **パッケージの説明:**
80
87
 
81
88
  - **intlayer**: コンテンツ宣言と管理のためのコアライブラリ
82
- - **next-intlayer**: ビルドプラグインを備えたNext.js統合レイヤー
83
- - **i18next**: コアi18nフレームワーク
84
- - **next-i18next**: i18nextのNext.jsラッパー
85
- - **i18next-resources-to-backend**: i18nextのための動的リソース読み込み
86
89
  - **@intlayer/sync-json-plugin**: Intlayerのコンテンツ宣言をi18nextのJSON形式に同期するプラグイン
87
90
 
88
- ### ステップ2: JSONをラップするためのIntlayerプラグインの実装
91
+ ### ステップ2: JSONをラップするためのIntlayerプラグインを実装する
89
92
 
90
- サポートするロケールを定義するためにIntlayerの設定ファイルを作成します。
93
+ サポートするロケールを定義するためのIntlayer設定ファイルを作成します:
91
94
 
92
95
  **i18next用のJSON辞書もエクスポートしたい場合は、`syncJSON`プラグインを追加してください:**
93
96
 
@@ -102,7 +105,7 @@ const config: IntlayerConfig = {
102
105
  },
103
106
  plugins: [
104
107
  syncJSON({
105
- source: ({ key, locale }) => `./messages/${locale}/${key}.json`,
108
+ `source: ({ key, locale }) => \`./public/locales/\${locale}/\${key}.json\`,`
106
109
  }),
107
110
  ],
108
111
  };
@@ -112,37 +115,57 @@ export default config;
112
115
 
113
116
  `syncJSON`プラグインはJSONを自動的にラップします。コンテンツの構造を変更することなく、JSONファイルの読み書きを行います。
114
117
 
115
- JSONintlayerのコンテンツ宣言ファイル(`.content`ファイル)を共存させたい場合、Intlayerは以下の手順で処理します:
118
+ もしJSONintlayerのコンテンツ宣言ファイル(`.content`ファイル)と共存させたい場合、Intlayerは以下のように処理します:
116
119
 
117
- 1. JSONファイルとコンテンツ宣言ファイルの両方を読み込み、intlayerの辞書に変換します。
120
+ 1. JSONファイルとコンテンツ宣言ファイルの両方を読み込み、intlayerの辞書に変換します。
121
+ 2. JSONとコンテンツ宣言ファイルの間に競合がある場合、Intlayerはそれらすべての辞書をマージします。これはプラグインの優先度やコンテンツ宣言ファイルの優先度に依存し、すべて設定可能です。
118
122
 
119
- 2. JSONとコンテンツ宣言ファイル間に競合がある場合、Intlayerはすべての辞書をマージします。これはプラグインの優先順位やコンテンツ宣言ファイルの優先順位に依存します(すべて設定可能です)。
123
+ CLIを使用してJSONの翻訳を変更した場合やCMSを使用した場合、Intlayerは新しい翻訳でJSONファイルを更新します。
120
124
 
121
- CLIを使用してJSONの翻訳を行った場合やCMSを使用した場合、Intlayerは新しい翻訳でJSONファイルを更新します。
125
+ `syncJSON`プラグインの詳細については、[syncJSONプラグインのドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/plugins/sync-json.md)をご参照ください。
122
126
 
123
127
  ---
124
128
 
125
- ## Git設定
129
+ ### (オプション)ステップ3:コンポーネントごとのJSON翻訳の実装
126
130
 
127
- 生成されたファイルをバージョン管理から除外します:
131
+ デフォルトでは、IntlayerはJSONファイルとコンテンツ宣言ファイルの両方を読み込み、マージし、同期します。詳細は[コンテンツ宣言のドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/content_file.md)をご覧ください。しかし、必要に応じてIntlayerプラグインを使用し、コードベースの任意の場所でローカライズされたJSONをコンポーネント単位で管理することも可能です。
128
132
 
129
- ```plaintext fileName=".gitignore"
130
- # Intlayerによって生成されたファイルを無視する
131
- .intlayer
132
- intl
133
- ```
134
-
135
- これらのファイルはビルドプロセス中に自動的に再生成されるため、リポジトリにコミットする必要はありません。
133
+ そのためには、`loadJSON` プラグインを使用できます。
136
134
 
137
- ### VS Code拡張機能
135
+ ```ts fileName="intlayer.config.ts"
136
+ import { Locales, type IntlayerConfig } from "intlayer";
137
+ import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";
138
138
 
139
- 開発者体験を向上させるために、公式の**Intlayer VS Code拡張機能**をインストールしてください:
139
+ const config: IntlayerConfig = {
140
+ internationalization: {
141
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
142
+ defaultLocale: Locales.ENGLISH,
143
+ },
140
144
 
141
- [VS Codeマーケットプレイスからインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
145
+ // 現在のJSONファイルをIntlayerの辞書と同期させる
146
+ plugins: [
147
+ /**
148
+ * src内のパターン {key}.i18n.json に一致するすべてのJSONファイルを読み込みます
149
+ */
150
+ loadJSON({
151
+ source: ({ key }) => `./src/**/${key}.i18n.json`,
152
+ locale: Locales.ENGLISH,
153
+ priority: 1, // これらのJSONファイルが `./public/locales/en/${key}.json` のファイルより優先されることを保証します
154
+ }),
155
+ /**
156
+ * ローカルディレクトリ内のJSONファイルに出力と翻訳を書き戻します
157
+ */
158
+ syncJSON({
159
+ source: ({ key, locale }) => `./public/locales/${locale}/${key}.json`,
160
+ priority: 0,
161
+ }),
162
+ ],
163
+ };
142
164
 
143
- 2. JSONとコンテンツ宣言ファイル間に競合がある場合、Intlayerはすべての辞書をマージします。プラグインの優先度とコンテンツ宣言ファイルの優先度に応じて処理されます(すべて設定可能です)。
165
+ export default config;
166
+ ```
144
167
 
145
- CLIを使用してJSONの翻訳を変更した場合やCMSを使用した場合、Intlayerは新しい翻訳でJSONファイルを更新します。
168
+ これは、`src`ディレクトリ内のパターン`{key}.i18n.json`に一致するすべてのJSONファイルを読み込み、Intlayerの辞書としてロードします。
146
169
 
147
170
  ---
148
171
 
@@ -151,7 +174,7 @@ CLIを使用してJSONの翻訳を変更した場合やCMSを使用した場合
151
174
  生成されたファイルをバージョン管理から除外します:
152
175
 
153
176
  ```plaintext fileName=".gitignore"
154
- # Intlayerによって生成されたファイルを無視
177
+ # Intlayerによって生成されたファイルを無視する
155
178
  .intlayer
156
179
  intl
157
180
  ```
@@ -160,6 +183,6 @@ intl
160
183
 
161
184
  ### VS Code拡張機能
162
185
 
163
- 開発者体験を向上させるために、公式の**Intlayer VS Code拡張機能**をインストールしてください:
186
+ 開発者体験を向上させるために、公式の **Intlayer VS Code 拡張機能** をインストールしてください:
164
187
 
165
- [VS Codeマーケットプレイスからインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
188
+ [VS Code マーケットプレイスからインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
@@ -7,26 +7,29 @@ slugs:
7
7
  - blog
8
8
  - intlayer-with-next-intl
9
9
  history:
10
+ - version: 7.0.6
11
+ date: 2025-11-01
12
+ changes: loadJSONプラグインを追加
10
13
  - version: 7.0.0
11
14
  date: 2025-10-29
12
- changes: syncJSONプラグインへの変更
15
+ changes: syncJSONプラグインに変更
13
16
  ---
14
17
 
15
18
  # Intlayerを使ってnext-intlのJSON翻訳を自動化する方法
16
19
 
17
20
  ## Intlayerとは?
18
21
 
19
- **Intlayer**は、従来のi18nソリューションの欠点を解決するために設計された革新的なオープンソースの国際化ライブラリです。Next.jsアプリケーションにおけるコンテンツ管理に対してモダンなアプローチを提供します。
22
+ **Intlayer**は、従来のi18nソリューションの欠点を解決するために設計された革新的なオープンソースの国際化ライブラリです。Next.jsアプリケーションにおけるコンテンツ管理に対して、モダンなアプローチを提供します。
20
23
 
21
24
  next-intlとの具体的な比較については、当社のブログ記事[ next-i18next vs. next-intl vs. Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md)をご覧ください。
22
25
 
23
- ## なぜIntlayernext-intlと組み合わせるのか?
26
+ ## なぜIntlayernext-intlを組み合わせるのか?
24
27
 
25
- Intlayerは優れた単独のi18nソリューションを提供します(当社の[Next.js統合ガイド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_with_nextjs_16.md)を参照)が、いくつかの理由でnext-intlと組み合わせたい場合があります。
28
+ Intlayerは優れた単独のi18nソリューションを提供します(当社の[Next.js統合ガイド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_with_nextjs_16.md)を参照)が、以下のような理由でnext-intlと組み合わせたい場合があります。
26
29
 
27
- 1. **既存のコードベース**: 既に確立されたnext-intlの実装があり、Intlayerの改善された開発者体験に徐々に移行したい場合。
28
- 2. **レガシー要件**: プロジェクトが既存のnext-intlプラグインやワークフローとの互換性を必要とする場合。
29
- 3. **チームの慣れ親しみ**: チームがnext-intlに慣れているが、より良いコンテンツ管理を望んでいる場合。
30
+ 1. **既存のコードベース**:すでに確立されたnext-intlの実装があり、Intlayerの改善された開発者体験に徐々に移行したい場合。
31
+ 2. **レガシー要件**:プロジェクトが既存のnext-intlプラグインやワークフローとの互換性を必要とする場合。
32
+ 3. **チームの習熟度**:チームはnext-intlに慣れているが、より良いコンテンツ管理を望んでいる場合。
30
33
 
31
34
  **そのために、Intlayerはnext-intlのアダプターとして実装でき、CLIやCI/CDパイプラインでのJSON翻訳の自動化、翻訳のテストなどを支援します。**
32
35
 
@@ -38,9 +41,9 @@ Intlayerは優れた単独のi18nソリューションを提供します(当
38
41
 
39
42
  ## next-intlとIntlayerをセットアップするステップバイステップガイド
40
43
 
41
- ### ステップ1: 依存関係のインストール
44
+ ### ステップ1:依存関係のインストール
42
45
 
43
- 必要なパッケージをインストールします:
46
+ 必要なパッケージをインストールします:
44
47
 
45
48
  ```bash packageManager="npm"
46
49
  npm install intlayer @intlayer/sync-json-plugin
@@ -54,6 +57,10 @@ pnpm add intlayer @intlayer/sync-json-plugin
54
57
  yarn add intlayer @intlayer/sync-json-plugin
55
58
  ```
56
59
 
60
+ ```bash packageManager="bun"
61
+ bun add intlayer @intlayer/sync-json-plugin
62
+ ```
63
+
57
64
  **パッケージの説明:**
58
65
 
59
66
  - **intlayer**: 国際化管理、コンテンツ宣言、およびビルドのためのコアライブラリ
@@ -61,7 +68,7 @@ yarn add intlayer @intlayer/sync-json-plugin
61
68
 
62
69
  ### ステップ 2: JSONをラップするためのIntlayerプラグインの実装
63
70
 
64
- サポートするロケールを定義するためのIntlayer設定ファイルを作成します:
71
+ サポートするロケールを定義するためにIntlayerの設定ファイルを作成します:
65
72
 
66
73
  **next-intl用のJSON辞書もエクスポートしたい場合は、`syncJSON`プラグインを追加してください:**
67
74
 
@@ -86,14 +93,57 @@ export default config;
86
93
 
87
94
  `syncJSON` プラグインは JSON を自動的にラップします。コンテンツの構造を変更することなく、JSON ファイルの読み書きを行います。
88
95
 
89
- JSON intlayer のコンテンツ宣言ファイル(`.content` ファイル)を共存させたい場合、Intlayer は以下の手順で処理します:
96
+ JSON intlayer のコンテンツ宣言ファイル(`.content` ファイル)と共存させたい場合、Intlayer は以下の手順で処理します:
90
97
 
91
- 1. JSON ファイルとコンテンツ宣言ファイルの両方を読み込み、intlayer の辞書に変換します。
98
+ 1. JSON とコンテンツ宣言ファイルの両方を読み込み、intlayer の辞書に変換します。
92
99
 
93
- 2. JSONとコンテンツ宣言ファイル間に競合がある場合、Intlayerはすべての辞書をマージします。プラグインの優先順位やコンテンツ宣言ファイルの優先順位に応じて処理されます(すべて設定可能です)。
100
+ 2. JSONとコンテンツ宣言ファイルの間に競合がある場合、Intlayerはすべての辞書をマージする処理を行います。これはプラグインの優先度やコンテンツ宣言ファイルの優先度に依存します(すべて設定可能です)。
94
101
 
95
102
  CLIを使用してJSONの翻訳を行った場合やCMSを使用した場合、Intlayerは新しい翻訳でJSONファイルを更新します。
96
103
 
104
+ `syncJSON`プラグインの詳細については、[syncJSONプラグインのドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/plugins/sync-json.md)をご参照ください。
105
+
106
+ ### (オプション)ステップ3:コンポーネントごとのJSON翻訳の実装
107
+
108
+ デフォルトでは、IntlayerはJSONファイルとコンテンツ宣言ファイルの両方を読み込み、マージし、同期します。詳細については、[コンテンツ宣言のドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/content_file.md)を参照してください。しかし、必要に応じてIntlayerのプラグインを使用して、コードベースの任意の場所でローカライズされたJSONのコンポーネント単位の管理を実装することも可能です。
109
+
110
+ そのためには、`loadJSON`プラグインを使用できます。
111
+
112
+ ```ts fileName="intlayer.config.ts"
113
+ import { Locales, type IntlayerConfig } from "intlayer";
114
+ import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";
115
+
116
+ const config: IntlayerConfig = {
117
+ internationalization: {
118
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
119
+ defaultLocale: Locales.ENGLISH,
120
+ },
121
+
122
+ // 現在のJSONファイルをIntlayerの辞書と同期させる
123
+ plugins: [
124
+ /**
125
+ * src内の{key}.i18n.jsonというパターンに一致するすべてのJSONファイルを読み込みます
126
+ */
127
+ loadJSON({
128
+ source: ({ key }) => `./src/**/${key}.i18n.json`,
129
+ locale: Locales.ENGLISH,
130
+ priority: 1, // これらのJSONファイルが`./locales/en/${key}.json`のファイルより優先されることを保証します
131
+ }),
132
+ /**
133
+ * ローカルディレクトリ内のJSONファイルに出力と翻訳を書き戻しながら読み込みます
134
+ */
135
+ syncJSON({
136
+ source: ({ key, locale }) => `./messages/${locale}/${key}.json`,
137
+ priority: 0,
138
+ }),
139
+ ],
140
+ };
141
+
142
+ export default config;
143
+ ```
144
+
145
+ これは、`src`ディレクトリ内のパターン `{key}.i18n.json` に一致するすべてのJSONファイルを読み込み、Intlayerの辞書としてロードします。
146
+
97
147
  ## Git設定
98
148
 
99
149
  自動生成されたIntlayerファイルは無視することを推奨します:
@@ -110,5 +160,3 @@ CLIを使用してJSONの翻訳を行った場合やCMSを使用した場合、I
110
160
  開発者体験を向上させるために、公式の**Intlayer VS Code拡張機能**をインストールしてください:
111
161
 
112
162
  [VS Codeマーケットプレイスからインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
113
-
114
- [VS Codeマーケットプレイスからインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  createdAt: 2025-01-02
3
3
  updatedAt: 2025-10-29
4
- title: Intlayerを使ったreact-i18nextのJSON翻訳の自動化方法
4
+ title: Intlayerを使ってreact-i18nextのJSON翻訳を自動化する方法
5
5
  description: Reactアプリケーションの国際化を強化するために、Intlayerとreact-i18nextを使ってJSON翻訳を自動化する方法。
6
6
  keywords:
7
7
  - react-i18next
@@ -18,12 +18,15 @@ slugs:
18
18
  - blog
19
19
  - intlayer-with-react-i18next
20
20
  history:
21
+ - version: 7.0.6
22
+ date: 2025-11-01
23
+ changes: loadJSONプラグインを追加
21
24
  - version: 7.0.0
22
25
  date: 2025-10-29
23
- changes: syncJSONプラグインへの変更
26
+ changes: syncJSONプラグインに変更
24
27
  ---
25
28
 
26
- # Intlayerを使ったreact-i18nextのJSON翻訳の自動化方法
29
+ # Intlayerを使ってreact-i18nextのJSON翻訳を自動化する方法
27
30
 
28
31
  ## Intlayerとは何ですか?
29
32
 
@@ -33,11 +36,12 @@ history:
33
36
 
34
37
  ## なぜIntlayerをreact-i18nextと組み合わせるのか?
35
38
 
36
- Intlayerは優れた単独のi18nソリューションを提供します([React統合ガイド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_with_vite+react.md)を参照)が、以下のような理由でreact-i18nextと組み合わせたい場合があります:
39
+ Intlayerは優れた単独のi18nソリューションを提供します(当社の[React統合ガイド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_with_vite+react.md)を参照)が、以下のような理由でreact-i18nextと組み合わせたい場合があります:
37
40
 
38
- 1. **既存のコードベース**: 既にreact-i18nextの実装があり、Intlayerの向上した開発者体験へ段階的に移行したい場合。
41
+ 1. **既存のコードベース**: 既に確立されたreact-i18nextの実装があり、Intlayerの改善された開発者体験に徐々に移行したい場合。
39
42
  2. **レガシー要件**: プロジェクトが既存のreact-i18nextプラグインやワークフローとの互換性を必要とする場合。
40
43
  3. **チームの慣れ親しみ**: チームがreact-i18nextに慣れているが、より良いコンテンツ管理を望んでいる場合。
44
+ 4. **Intlayerの機能利用**: コンテンツ宣言、翻訳の自動化、翻訳のテストなど、Intlayerの機能を活用したい場合。
41
45
 
42
46
  **そのために、Intlayerはreact-i18nextのアダプターとして実装でき、CLIやCI/CDパイプラインでのJSON翻訳の自動化、翻訳のテストなどを支援します。**
43
47
 
@@ -65,14 +69,18 @@ pnpm add intlayer @intlayer/sync-json-plugin
65
69
  yarn add intlayer @intlayer/sync-json-plugin
66
70
  ```
67
71
 
72
+ ```bash packageManager="bun"
73
+ bun add intlayer @intlayer/sync-json-plugin
74
+ ```
75
+
68
76
  **パッケージの説明:**
69
77
 
70
- - **intlayer**: 国際化管理、コンテンツ宣言、ビルドのためのコアライブラリ
78
+ - **intlayer**: 国際化管理、コンテンツ宣言、およびビルドのためのコアライブラリ
71
79
  - **@intlayer/sync-json-plugin**: Intlayerのコンテンツ宣言をreact-i18next互換のJSON形式にエクスポートするプラグイン
72
80
 
73
81
  ### ステップ2: JSONをラップするためのIntlayerプラグインの実装
74
82
 
75
- サポートするロケールを定義するIntlayer設定ファイルを作成します:
83
+ サポートするロケールを定義するためのIntlayer設定ファイルを作成します。
76
84
 
77
85
  **react-i18next用のJSON辞書もエクスポートしたい場合は、`syncJSON`プラグインを追加してください:**
78
86
 
@@ -87,38 +95,79 @@ const config: IntlayerConfig = {
87
95
  },
88
96
  plugins: [
89
97
  syncJSON({
90
- source: ({ key, locale }) => `./messages/${locale}/${key}.json`,
98
+ source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
91
99
  }),
92
100
  ],
93
101
  };
94
102
 
95
- export default config;
103
+ `export default config;
96
104
  ```
97
105
 
98
- `syncJSON` プラグインは JSON を自動的にラップします。コンテンツの構造を変更することなく、JSON ファイルの読み書きを行います。
106
+ `syncJSON`プラグインはJSONを自動的にラップします。コンテンツの構造を変更することなく、JSONファイルの読み書きを行います。
107
+
108
+ もしJSONとintlayerのコンテンツ宣言ファイル(`.content`ファイル)を共存させたい場合、Intlayerは以下の手順で処理します:
109
+
110
+ 1. JSONファイルとコンテンツ宣言ファイルの両方を読み込み、intlayerの辞書に変換します。
111
+ 2. JSONとコンテンツ宣言ファイル間に競合がある場合、Intlayerはすべての辞書をマージします。プラグインの優先度やコンテンツ宣言ファイルの優先度に応じて処理されます(すべて設定可能です)。
112
+
113
+ CLIを使ってJSONの翻訳を変更した場合やCMSを使用した場合、Intlayerは新しい翻訳でJSONファイルを更新します。
114
+
115
+ `syncJSON`プラグインの詳細については、[syncJSONプラグインのドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/plugins/sync-json.md)を参照してください。
99
116
 
100
- もし JSON と intlayer のコンテンツ宣言ファイル(`.content` ファイル)を共存させたい場合、Intlayer は以下の手順で処理します:
117
+ ### (オプション)ステップ3:コンポーネントごとのJSON翻訳の実装
101
118
 
102
- 1. JSONファイルとコンテンツ宣言ファイルの両方を読み込み、Intlayerの辞書に変換します。
103
- 2. JSONファイルとコンテンツ宣言ファイルの間に競合がある場合、Intlayerはすべての辞書をマージします。これはプラグインの優先度やコンテンツ宣言ファイルの優先度に依存します(すべて設定可能です)。
119
+ デフォルトでは、IntlayerはJSONファイルとコンテンツ宣言ファイルの両方を読み込み、マージし、同期します。詳細については、[コンテンツ宣言のドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/content_file.md)を参照してください。しかし、必要に応じてIntlayerプラグインを使用して、コードベースのどこにでもあるJSONのローカライズをコンポーネント単位で管理することも可能です。
104
120
 
105
- CLIを使用してJSONの翻訳を行った場合やCMSを使用した場合、Intlayerは新しい翻訳でJSONファイルを更新します。
121
+ そのためには、`loadJSON`プラグインを使用できます。
122
+
123
+ ```ts fileName="intlayer.config.ts"
124
+ import { Locales, type IntlayerConfig } from "intlayer";
125
+ import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";
126
+
127
+ const config: IntlayerConfig = {
128
+ internationalization: {
129
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
130
+ defaultLocale: Locales.ENGLISH,
131
+ },
132
+
133
+ // 現在のJSONファイルをIntlayerの辞書と同期させる
134
+ plugins: [
135
+ /**
136
+ * src内の{key}.i18n.jsonパターンに一致するすべてのJSONファイルを読み込みます
137
+ */
138
+ loadJSON({
139
+ source: ({ key }) => `./src/**/${key}.i18n.json`,
140
+ locale: Locales.ENGLISH,
141
+ priority: 1, // これらのJSONファイルが`./locales/en/${key}.json`のファイルより優先されることを保証します
142
+ }),
143
+ /**
144
+ * ローカルディレクトリ内のJSONファイルに出力と翻訳を書き戻しながら読み込みます
145
+ */
146
+ syncJSON({
147
+ source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
148
+ priority: 0,
149
+ }),
150
+ ],
151
+ };
152
+
153
+ export default config;
154
+ ```
106
155
 
107
- `syncJSON`プラグインの詳細については、[syncJSONプラグインのドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/plugins/sync-json.md)をご参照ください。
156
+ これにより、`src` ディレクトリ内の `{key}.i18n.json` パターンに一致するすべての JSON ファイルが読み込まれ、Intlayer の辞書としてロードされます。
108
157
 
109
- ## Git設定
158
+ ## Git 設定
110
159
 
111
- 自動生成されたIntlayerファイルは無視することを推奨します:
160
+ 自動生成された Intlayer ファイルは無視することを推奨します:
112
161
 
113
162
  ```plaintext fileName=".gitignore"
114
- # Intlayerによって生成されたファイルを無視する
163
+ # Intlayer によって生成されたファイルを無視する
115
164
  .intlayer
116
165
  ```
117
166
 
118
167
  これらのファイルはビルドプロセス中に再生成可能であり、バージョン管理にコミットする必要はありません。
119
168
 
120
- ### VS Code拡張機能
169
+ ### VS Code 拡張機能
121
170
 
122
- 開発者体験を向上させるために、公式の**Intlayer VS Code拡張機能**をインストールしてください:
171
+ 開発者体験を向上させるために、公式の **Intlayer VS Code 拡張機能** をインストールしてください:
123
172
 
124
- [VS Codeマーケットプレイスからインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
173
+ [VS Code マーケットプレイスからインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  createdAt: 2025-01-02
3
3
  updatedAt: 2025-10-29
4
- title: Intlayerを使ったreact-intl JSON翻訳の自動化方法
4
+ title: Intlayerを使ってreact-intlJSON翻訳を自動化する方法
5
5
  description: Reactアプリケーションの国際化を強化するために、Intlayerとreact-intlを使ってJSON翻訳を自動化する方法。
6
6
  keywords:
7
7
  - react-intl
@@ -16,14 +16,21 @@ slugs:
16
16
  - blog
17
17
  - intlayer-with-react-intl
18
18
  history:
19
+ - version: 7.0.6
20
+ date: 2025-11-01
21
+ changes: loadJSONプラグインを追加
19
22
  - version: 7.0.0
20
23
  date: 2025-10-29
21
- changes: syncJSONプラグインへの変更
24
+ changes: syncJSONプラグインに変更
22
25
  ---
23
26
 
24
- # Intlayerを使ったreact-intl JSON翻訳の自動化方法
27
+ # Intlayerを使ってreact-intlJSON翻訳を自動化する方法
25
28
 
26
- ## Intlayerとは何か?
29
+ ## 目次
30
+
31
+ <TOC/>
32
+
33
+ ## Intlayerとは?
27
34
 
28
35
  **Intlayer**は、従来のi18nソリューションの欠点を解決するために設計された革新的なオープンソースの国際化ライブラリです。Reactアプリケーションにおけるコンテンツ管理に対して、モダンなアプローチを提供します。
29
36
 
@@ -31,15 +38,16 @@ history:
31
38
 
32
39
  ## なぜIntlayerをreact-intlと組み合わせるのか?
33
40
 
34
- Intlayerは優れた単独のi18nソリューションを提供します([React統合ガイド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_vite+react.md)をご覧ください)が、いくつかの理由でreact-intlと組み合わせたい場合があります:
41
+ Intlayerは優れた単独のi18nソリューションを提供します([React統合ガイド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_vite+react.md)を参照)が、以下のような理由でreact-intlと組み合わせたい場合があります:
35
42
 
36
- 1. **既存のコードベース**: 既にreact-intlの実装があり、Intlayerの優れた開発者体験へ段階的に移行したい場合。
43
+ 1. **既存のコードベース**: 既にreact-intlの実装があり、Intlayerの向上した開発者体験へ段階的に移行したい場合。
37
44
  2. **レガシー要件**: プロジェクトが既存のreact-intlプラグインやワークフローとの互換性を必要とする場合。
38
- 3. **チームの慣れ親しみ**: チームがreact-intlに慣れているが、より良いコンテンツ管理を求めている場合。
45
+ 3. **チームの慣れ親しみ**: チームがreact-intlに慣れているが、より良いコンテンツ管理を望んでいる場合。
46
+ 4. **Intlayerの機能利用**: コンテンツ宣言、翻訳の自動化、翻訳テストなど、Intlayerの機能を利用したい場合。
39
47
 
40
- **そのために、Intlayerはreact-intlのアダプターとして実装でき、CLIやCI/CDパイプラインでのJSON翻訳の自動化、翻訳のテストなどを支援します。**
48
+ **そのために、Intlayerはreact-intlのアダプターとして実装可能であり、CLIやCI/CDパイプラインでのJSON翻訳の自動化、翻訳のテストなどを支援します。**
41
49
 
42
- このガイドでは、react-intlとの互換性を保ちながら、Intlayerの優れたコンテンツ宣言システムを活用する方法を示します。
50
+ このガイドでは、react-intlとの互換性を維持しながら、Intlayerの優れたコンテンツ宣言システムを活用する方法を説明します。
43
51
 
44
52
  ## 目次
45
53
 
@@ -49,7 +57,7 @@ Intlayerは優れた単独のi18nソリューションを提供します([Reac
49
57
 
50
58
  ### ステップ1: 依存関係のインストール
51
59
 
52
- 必要なパッケージをインストールします:
60
+ 必要なパッケージをインストールします:
53
61
 
54
62
  ```bash packageManager="npm"
55
63
  npm install intlayer @intlayer/sync-json-plugin
@@ -63,6 +71,10 @@ pnpm add intlayer @intlayer/sync-json-plugin
63
71
  yarn add intlayer @intlayer/sync-json-plugin
64
72
  ```
65
73
 
74
+ ```bash packageManager="bun"
75
+ bun add intlayer @intlayer/sync-json-plugin
76
+ ```
77
+
66
78
  **パッケージの説明:**
67
79
 
68
80
  - **intlayer**: 国際化管理、コンテンツ宣言、およびビルドのためのコアライブラリ
@@ -70,9 +82,9 @@ yarn add intlayer @intlayer/sync-json-plugin
70
82
 
71
83
  ### ステップ2: JSONをラップするためのIntlayerプラグインの実装
72
84
 
73
- サポートするロケールを定義するためにIntlayerの設定ファイルを作成します:
85
+ サポートするロケールを定義するためのIntlayer設定ファイルを作成します。
74
86
 
75
- **react-intl用のJSON辞書もエクスポートしたい場合は、`syncJSON`プラグインを追加してください:**
87
+ **react-intl用のJSON辞書もエクスポートしたい場合は**、`syncJSON`プラグインを追加してください。
76
88
 
77
89
  ```typescript fileName="intlayer.config.ts"
78
90
  import { Locales, type IntlayerConfig } from "intlayer";
@@ -90,27 +102,67 @@ const config: IntlayerConfig = {
90
102
  ],
91
103
  };
92
104
 
93
- export default config;
105
+ `export default config;
94
106
  ```
95
107
 
96
- `syncJSON` プラグインは JSON を自動的にラップします。コンテンツの構造を変更することなく、JSON ファイルの読み書きを行います。
97
-
98
- JSON と intlayer のコンテンツ宣言ファイル(`.content` ファイル)を共存させたい場合、Intlayer は以下の手順で処理します:
108
+ `syncJSON`プラグインはJSONを自動的にラップします。JSONファイルの内容構造を変更することなく、読み書きを行います。
99
109
 
100
- 1. JSON ファイルとコンテンツ宣言ファイルの両方を読み込み、intlayer の辞書に変換します。
110
+ もしJSONintlayerのコンテンツ宣言ファイル(`.content`ファイル)を共存させたい場合、Intlayerは以下の手順で処理します:
101
111
 
112
+ 1. JSONファイルとコンテンツ宣言ファイルの両方を読み込み、intlayerの辞書に変換します。
102
113
  2. JSONとコンテンツ宣言ファイル間に競合がある場合、Intlayerはすべての辞書をマージします。プラグインの優先度やコンテンツ宣言ファイルの優先度に応じて処理されます(すべて設定可能です)。
103
114
 
104
- CLIを使用してJSONの翻訳を行った場合やCMSを使用した場合、Intlayerは新しい翻訳でJSONファイルを更新します。
115
+ CLIを使ってJSONの翻訳を変更した場合やCMSを使用した場合、Intlayerは新しい翻訳でJSONファイルを更新します。
105
116
 
106
117
  `syncJSON`プラグインの詳細については、[syncJSONプラグインのドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/plugins/sync-json.md)をご参照ください。
107
118
 
108
- ## Git設定
119
+ ### (オプション)ステップ3:コンポーネントごとのJSON翻訳の実装
120
+
121
+ デフォルトでは、IntlayerはJSONファイルとコンテンツ宣言ファイルの両方を読み込み、マージし、同期します。詳細については、[コンテンツ宣言のドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/content_file.md)をご覧ください。しかし、必要に応じてIntlayerプラグインを使用して、コードベースのどこにでもあるJSONのローカライズをコンポーネント単位で管理することも可能です。
122
+
123
+ そのためには、`loadJSON`プラグインを使用できます。
124
+
125
+ ```ts fileName="intlayer.config.ts"
126
+ import { Locales, type IntlayerConfig } from "intlayer";
127
+ import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";
128
+
129
+ const config: IntlayerConfig = {
130
+ internationalization: {
131
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
132
+ defaultLocale: Locales.ENGLISH,
133
+ },
134
+
135
+ // 現在のJSONファイルをIntlayerの辞書と同期させる
136
+ plugins: [
137
+ /**
138
+ * src内のパターン{key}.i18n.jsonに一致するすべてのJSONファイルを読み込みます
139
+ */
140
+ loadJSON({
141
+ source: ({ key }) => `./src/**/${key}.i18n.json`,
142
+ locale: Locales.ENGLISH,
143
+ priority: 1, // これらのJSONファイルが`./locales/en/${key}.json`のファイルより優先されることを保証します
144
+ }),
145
+ /**
146
+ * ローカルディレクトリ内のJSONファイルに出力と翻訳を書き戻しながら読み込みます
147
+ */
148
+ syncJSON({
149
+ source: ({ key, locale }) => `./messages/${locale}/${key}.json`,
150
+ priority: 0,
151
+ }),
152
+ ],
153
+ };
154
+
155
+ export default config;
156
+ ```
157
+
158
+ これは、`src` ディレクトリ内の `{key}.i18n.json` というパターンに一致するすべての JSON ファイルを読み込み、Intlayer の辞書としてロードします。
159
+
160
+ ## Git 設定
109
161
 
110
- 自動生成されたIntlayerファイルは無視することを推奨します:
162
+ 自動生成された Intlayer ファイルは無視することを推奨します:
111
163
 
112
164
  ```plaintext fileName=".gitignore"
113
- # Intlayerによって生成されたファイルを無視
165
+ # Intlayer によって生成されたファイルを無視する
114
166
  .intlayer
115
167
  ```
116
168