@intlayer/docs 7.0.5 → 7.0.6
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.
- package/blog/ar/intlayer_with_i18next.md +72 -19
- package/blog/ar/intlayer_with_next-i18next.md +61 -36
- package/blog/ar/intlayer_with_next-intl.md +61 -13
- package/blog/ar/intlayer_with_react-i18next.md +67 -18
- package/blog/ar/intlayer_with_react-intl.md +66 -13
- package/blog/ar/intlayer_with_vue-i18n.md +180 -0
- package/blog/de/intlayer_with_i18next.md +61 -26
- package/blog/de/intlayer_with_next-i18next.md +66 -17
- package/blog/de/intlayer_with_next-intl.md +62 -13
- package/blog/de/intlayer_with_react-i18next.md +66 -17
- package/blog/de/intlayer_with_react-intl.md +66 -14
- package/blog/de/intlayer_with_vue-i18n.md +178 -0
- package/blog/en/intlayer_with_i18next.md +53 -2
- package/blog/en/intlayer_with_next-i18next.md +52 -16
- package/blog/en/intlayer_with_next-intl.md +49 -0
- package/blog/en/intlayer_with_react-i18next.md +50 -1
- package/blog/en/intlayer_with_react-intl.md +53 -0
- package/blog/en/intlayer_with_vue-i18n.md +178 -0
- package/blog/en-GB/intlayer_with_i18next.md +58 -7
- package/blog/en-GB/intlayer_with_next-i18next.md +55 -9
- package/blog/en-GB/intlayer_with_next-intl.md +55 -6
- package/blog/en-GB/intlayer_with_react-i18next.md +55 -6
- package/blog/en-GB/intlayer_with_react-intl.md +56 -3
- package/blog/en-GB/intlayer_with_vue-i18n.md +180 -0
- package/blog/es/intlayer_with_i18next.md +69 -18
- package/blog/es/intlayer_with_next-i18next.md +70 -24
- package/blog/es/intlayer_with_next-intl.md +64 -13
- package/blog/es/intlayer_with_react-i18next.md +61 -12
- package/blog/es/intlayer_with_react-intl.md +65 -12
- package/blog/es/intlayer_with_vue-i18n.md +178 -0
- package/blog/fr/intlayer_with_i18next.md +77 -16
- package/blog/fr/intlayer_with_next-i18next.md +55 -31
- package/blog/fr/intlayer_with_next-intl.md +57 -7
- package/blog/fr/intlayer_with_react-i18next.md +64 -7
- package/blog/fr/intlayer_with_react-intl.md +63 -10
- package/blog/fr/intlayer_with_vue-i18n.md +178 -0
- package/blog/hi/intlayer_with_i18next.md +67 -16
- package/blog/hi/intlayer_with_next-i18next.md +69 -23
- package/blog/hi/intlayer_with_next-intl.md +61 -8
- package/blog/hi/intlayer_with_react-i18next.md +63 -14
- package/blog/hi/intlayer_with_react-intl.md +66 -13
- package/blog/hi/intlayer_with_vue-i18n.md +180 -0
- package/blog/id/intlayer_with_i18next.md +65 -14
- package/blog/id/intlayer_with_next-i18next.md +58 -12
- package/blog/id/intlayer_with_next-intl.md +60 -11
- package/blog/id/intlayer_with_react-i18next.md +59 -10
- package/blog/id/intlayer_with_react-intl.md +66 -13
- package/blog/id/intlayer_with_vue-i18n.md +178 -0
- package/blog/it/intlayer_with_i18next.md +70 -19
- package/blog/it/intlayer_with_next-i18next.md +68 -22
- package/blog/it/intlayer_with_next-intl.md +62 -12
- package/blog/it/intlayer_with_react-i18next.md +65 -16
- package/blog/it/intlayer_with_react-intl.md +67 -14
- package/blog/it/intlayer_with_vue-i18n.md +178 -0
- package/blog/ja/intlayer_with_i18next.md +74 -24
- package/blog/ja/intlayer_with_next-i18next.md +60 -37
- package/blog/ja/intlayer_with_next-intl.md +63 -15
- package/blog/ja/intlayer_with_react-i18next.md +70 -21
- package/blog/ja/intlayer_with_react-intl.md +73 -21
- package/blog/ja/intlayer_with_vue-i18n.md +180 -0
- package/blog/ko/intlayer_with_i18next.md +60 -29
- package/blog/ko/intlayer_with_next-i18next.md +59 -32
- package/blog/ko/intlayer_with_next-intl.md +52 -23
- package/blog/ko/intlayer_with_react-i18next.md +65 -16
- package/blog/ko/intlayer_with_react-intl.md +74 -22
- package/blog/ko/intlayer_with_vue-i18n.md +180 -0
- package/blog/pl/intlayer_with_i18next.md +63 -12
- package/blog/pl/intlayer_with_next-i18next.md +74 -17
- package/blog/pl/intlayer_with_next-intl.md +59 -8
- package/blog/pl/intlayer_with_react-i18next.md +59 -10
- package/blog/pl/intlayer_with_react-intl.md +65 -12
- package/blog/pl/intlayer_with_vue-i18n.md +180 -0
- package/blog/pt/intlayer_with_i18next.md +67 -16
- package/blog/pt/intlayer_with_next-i18next.md +65 -19
- package/blog/pt/intlayer_with_next-intl.md +62 -12
- package/blog/pt/intlayer_with_react-i18next.md +67 -18
- package/blog/pt/intlayer_with_react-intl.md +62 -10
- package/blog/pt/intlayer_with_vue-i18n.md +178 -0
- package/blog/ru/intlayer_with_i18next.md +68 -15
- package/blog/ru/intlayer_with_next-i18next.md +71 -25
- package/blog/ru/intlayer_with_next-intl.md +56 -7
- package/blog/ru/intlayer_with_react-i18next.md +65 -16
- package/blog/ru/intlayer_with_react-intl.md +69 -16
- package/blog/ru/intlayer_with_vue-i18n.md +180 -0
- package/blog/tr/intlayer_with_i18next.md +67 -16
- package/blog/tr/intlayer_with_next-i18next.md +78 -21
- package/blog/tr/intlayer_with_next-intl.md +69 -18
- package/blog/tr/intlayer_with_react-i18next.md +65 -16
- package/blog/tr/intlayer_with_react-intl.md +71 -19
- package/blog/tr/intlayer_with_vue-i18n.md +180 -0
- package/blog/vi/intlayer_with_i18next.md +64 -13
- package/blog/vi/intlayer_with_next-i18next.md +72 -26
- package/blog/vi/intlayer_with_next-intl.md +62 -11
- package/blog/vi/intlayer_with_react-i18next.md +66 -17
- package/blog/vi/intlayer_with_react-intl.md +70 -17
- package/blog/vi/intlayer_with_vue-i18n.md +180 -0
- package/blog/zh/intlayer_with_i18next.md +67 -17
- package/blog/zh/intlayer_with_next-i18next.md +67 -22
- package/blog/zh/intlayer_with_next-intl.md +61 -13
- package/blog/zh/intlayer_with_react-i18next.md +67 -18
- package/blog/zh/intlayer_with_react-intl.md +69 -17
- package/blog/zh/intlayer_with_vue-i18n.md +180 -0
- package/dist/cjs/generated/blog.entry.cjs +19 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +19 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +1 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/docs/ar/intlayer_with_nextjs_15.md +36 -9
- package/docs/ar/intlayer_with_nextjs_16.md +36 -9
- package/docs/de/intlayer_with_nextjs_15.md +36 -9
- package/docs/de/intlayer_with_nextjs_16.md +24 -6
- package/docs/en/intlayer_with_nextjs_14.md +37 -9
- package/docs/en/intlayer_with_nextjs_15.md +40 -10
- package/docs/en/intlayer_with_nextjs_16.md +40 -10
- package/docs/en/plugins/sync-json.md +152 -55
- package/docs/en/releases/v7.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_15.md +36 -9
- package/docs/en-GB/intlayer_with_nextjs_16.md +36 -9
- package/docs/en-GB/releases/v7.md +1 -1
- package/docs/es/intlayer_with_nextjs_15.md +36 -9
- package/docs/es/intlayer_with_nextjs_16.md +36 -9
- package/docs/fr/intlayer_with_nextjs_15.md +36 -9
- package/docs/fr/intlayer_with_nextjs_16.md +37 -24
- package/docs/hi/intlayer_with_nextjs_15.md +36 -9
- package/docs/hi/intlayer_with_nextjs_16.md +36 -9
- package/docs/id/intlayer_with_nextjs_16.md +36 -9
- package/docs/it/intlayer_with_nextjs_15.md +36 -9
- package/docs/it/intlayer_with_nextjs_16.md +36 -9
- package/docs/ja/intlayer_with_nextjs_15.md +36 -9
- package/docs/ja/intlayer_with_nextjs_16.md +36 -9
- package/docs/ko/intlayer_with_nextjs_15.md +36 -9
- package/docs/ko/intlayer_with_nextjs_16.md +36 -9
- package/docs/pl/intlayer_with_nextjs_16.md +36 -9
- package/docs/pt/intlayer_with_nextjs_15.md +36 -9
- package/docs/pt/intlayer_with_nextjs_16.md +36 -9
- package/docs/ru/intlayer_with_nextjs_15.md +36 -9
- package/docs/ru/intlayer_with_nextjs_16.md +36 -9
- package/docs/tr/intlayer_with_nextjs_15.md +36 -9
- package/docs/tr/intlayer_with_nextjs_16.md +39 -21
- package/docs/vi/intlayer_with_nextjs_16.md +36 -9
- package/docs/zh/intlayer_with_nextjs_15.md +36 -9
- package/docs/zh/intlayer_with_nextjs_16.md +36 -9
- package/package.json +14 -14
- 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)
|
|
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
|
-
## なぜ
|
|
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)
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
JSON
|
|
118
|
+
もしJSONをintlayerのコンテンツ宣言ファイル(`.content`ファイル)と共存させたい場合、Intlayerは以下のように処理します:
|
|
116
119
|
|
|
117
|
-
|
|
120
|
+
1. JSONファイルとコンテンツ宣言ファイルの両方を読み込み、intlayerの辞書に変換します。
|
|
121
|
+
2. JSONとコンテンツ宣言ファイルの間に競合がある場合、Intlayerはそれらすべての辞書をマージします。これはプラグインの優先度やコンテンツ宣言ファイルの優先度に依存し、すべて設定可能です。
|
|
118
122
|
|
|
119
|
-
|
|
123
|
+
CLIを使用してJSONの翻訳を変更した場合やCMSを使用した場合、Intlayerは新しい翻訳でJSONファイルを更新します。
|
|
120
124
|
|
|
121
|
-
|
|
125
|
+
`syncJSON`プラグインの詳細については、[syncJSONプラグインのドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/plugins/sync-json.md)をご参照ください。
|
|
122
126
|
|
|
123
127
|
---
|
|
124
128
|
|
|
125
|
-
|
|
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
|
-
|
|
130
|
-
# Intlayerによって生成されたファイルを無視する
|
|
131
|
-
.intlayer
|
|
132
|
-
intl
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
これらのファイルはビルドプロセス中に自動的に再生成されるため、リポジトリにコミットする必要はありません。
|
|
133
|
+
そのためには、`loadJSON` プラグインを使用できます。
|
|
136
134
|
|
|
137
|
-
|
|
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
|
-
|
|
139
|
+
const config: IntlayerConfig = {
|
|
140
|
+
internationalization: {
|
|
141
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
142
|
+
defaultLocale: Locales.ENGLISH,
|
|
143
|
+
},
|
|
140
144
|
|
|
141
|
-
|
|
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
|
-
|
|
165
|
+
export default config;
|
|
166
|
+
```
|
|
144
167
|
|
|
145
|
-
|
|
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
|
-
|
|
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
|
-
## なぜIntlayer
|
|
26
|
+
## なぜIntlayerとnext-intlを組み合わせるのか?
|
|
24
27
|
|
|
25
|
-
Intlayerは優れた単独のi18nソリューションを提供します(当社の[Next.js統合ガイド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_with_nextjs_16.md)
|
|
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.
|
|
28
|
-
2.
|
|
29
|
-
3.
|
|
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
|
-
|
|
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
|
|
96
|
+
JSON を intlayer のコンテンツ宣言ファイル(`.content` ファイル)と共存させたい場合、Intlayer は以下の手順で処理します:
|
|
90
97
|
|
|
91
|
-
1. JSON
|
|
98
|
+
1. JSON とコンテンツ宣言ファイルの両方を読み込み、intlayer の辞書に変換します。
|
|
92
99
|
|
|
93
|
-
2. JSON
|
|
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
|
|
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
|
|
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
|
|
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. **既存のコードベース**:
|
|
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
|
-
|
|
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 }) => `./
|
|
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
|
|
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
|
-
|
|
117
|
+
### (オプション)ステップ3:コンポーネントごとのJSON翻訳の実装
|
|
101
118
|
|
|
102
|
-
|
|
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
|
-
|
|
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
|
-
`
|
|
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
|
-
|
|
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
|
|
4
|
+
title: Intlayerを使ってreact-intlのJSON翻訳を自動化する方法
|
|
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
|
|
27
|
+
# Intlayerを使ってreact-intlのJSON翻訳を自動化する方法
|
|
25
28
|
|
|
26
|
-
##
|
|
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)
|
|
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
|
|
48
|
+
**そのために、Intlayerはreact-intlのアダプターとして実装可能であり、CLIやCI/CDパイプラインでのJSON翻訳の自動化、翻訳のテストなどを支援します。**
|
|
41
49
|
|
|
42
|
-
このガイドでは、react-intl
|
|
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
|
-
|
|
85
|
+
サポートするロケールを定義するためのIntlayer設定ファイルを作成します。
|
|
74
86
|
|
|
75
|
-
**react-intl用のJSON
|
|
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
|
|
97
|
-
|
|
98
|
-
JSON と intlayer のコンテンツ宣言ファイル(`.content` ファイル)を共存させたい場合、Intlayer は以下の手順で処理します:
|
|
108
|
+
`syncJSON`プラグインはJSONを自動的にラップします。JSONファイルの内容構造を変更することなく、読み書きを行います。
|
|
99
109
|
|
|
100
|
-
|
|
110
|
+
もしJSONとintlayerのコンテンツ宣言ファイル(`.content`ファイル)を共存させたい場合、Intlayerは以下の手順で処理します:
|
|
101
111
|
|
|
112
|
+
1. JSONファイルとコンテンツ宣言ファイルの両方を読み込み、intlayerの辞書に変換します。
|
|
102
113
|
2. JSONとコンテンツ宣言ファイル間に競合がある場合、Intlayerはすべての辞書をマージします。プラグインの優先度やコンテンツ宣言ファイルの優先度に応じて処理されます(すべて設定可能です)。
|
|
103
114
|
|
|
104
|
-
CLI
|
|
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
|
-
|
|
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
|
|