@intlayer/docs 7.0.4 → 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.
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
@@ -0,0 +1,180 @@
1
+ ---
2
+ createdAt: 2025-08-23
3
+ updatedAt: 2025-10-29
4
+ title: Intlayer と vue-i18n
5
+ description: 包括的な Vue.js 国際化ソリューションのために Intlayer を vue-i18n と統合する
6
+ keywords:
7
+ - vue-i18n
8
+ - Intlayer
9
+ - 国際化
10
+ - ブログ
11
+ - Vue.js
12
+ - Nuxt
13
+ - JavaScript
14
+ - Vue
15
+ slugs:
16
+ - blog
17
+ - intlayer-with-vue-i18n
18
+ history:
19
+ - version: 7.0.6
20
+ date: 2025-11-01
21
+ changes: loadJSON プラグインを追加
22
+ - version: 7.0.0
23
+ date: 2025-10-29
24
+ changes: syncJSON プラグインへの変更と包括的な書き直し
25
+ ---
26
+
27
+ # vue-i18n と Intlayer を使った Vue.js の国際化 (i18n)
28
+
29
+ ## 目次
30
+
31
+ <TOC/>
32
+
33
+ ## Intlayer とは?
34
+
35
+ **Intlayer** は、従来の i18n ソリューションの欠点を解決するために設計された革新的なオープンソースの国際化ライブラリです。Vue.js および Nuxt アプリケーションにおけるコンテンツ管理に対して、モダンなアプローチを提供します。
36
+
37
+ 具体的な比較は、当社のブログ記事 [vue-i18n vs. Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/vue-i18n_vs_intlayer.md) をご覧ください。
38
+
39
+ ## なぜ Intlayer を vue-i18n と組み合わせるのか?
40
+
41
+ Intlayer は優れた単独の i18n ソリューションを提供します([Vue.js 統合ガイド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_with_vite+vue.md) を参照)が、いくつかの理由で vue-i18n と組み合わせたい場合があります:
42
+
43
+ 1. **既存のコードベース**: 既に確立された vue-i18n の実装があり、Intlayer の改善された開発者体験へ段階的に移行したい場合。
44
+ 2. **レガシー要件**: プロジェクトが既存の vue-i18n プラグインやワークフローとの互換性を必要とする場合。
45
+ 3. **チームの慣れ**: チームが vue-i18n に慣れているが、より良いコンテンツ管理を望んでいる場合。
46
+ 4. **Intlayer の機能利用**: コンテンツ宣言、翻訳の自動化、翻訳のテストなど、Intlayer の機能を利用したい場合。
47
+
48
+ **そのために、Intlayer は vue-i18n のアダプターとして実装でき、CLI や CI/CD パイプラインでの JSON 翻訳の自動化、翻訳のテストなどを支援します。**
49
+
50
+ このガイドでは、vue-i18nとの互換性を維持しながら、Intlayerの優れたコンテンツ宣言システムを活用する方法を示します。
51
+
52
+ ---
53
+
54
+ ## vue-i18nとIntlayerをセットアップするステップバイステップガイド
55
+
56
+ ### ステップ1: 依存関係のインストール
57
+
58
+ お好みのパッケージマネージャーを使用して必要なパッケージをインストールします:
59
+
60
+ ```bash packageManager="npm"
61
+ npm install intlayer @intlayer/sync-json-plugin
62
+ ```
63
+
64
+ ```bash packageManager="pnpm"
65
+ pnpm add intlayer @intlayer/sync-json-plugin
66
+ ```
67
+
68
+ ```bash packageManager="yarn"
69
+ yarn add intlayer @intlayer/sync-json-plugin
70
+ ```
71
+
72
+ ```bash packageManager="bun"
73
+ bun add intlayer @intlayer/sync-json-plugin
74
+ ```
75
+
76
+ **パッケージの説明:**
77
+
78
+ - **intlayer**: コンテンツ宣言と管理のためのコアライブラリ
79
+ - **@intlayer/sync-json-plugin**: Intlayerのコンテンツ宣言をvue-i18nのJSON形式に同期するプラグイン
80
+
81
+ ### ステップ2: JSONをラップするためのIntlayerプラグインの実装
82
+
83
+ サポートするロケールを定義するためにIntlayerの設定ファイルを作成します。
84
+
85
+ **vue-i18n用のJSON辞書もエクスポートしたい場合は、`syncJSON`プラグインを追加してください:**
86
+
87
+ ```typescript fileName="intlayer.config.ts"
88
+ import { Locales, type IntlayerConfig } from "intlayer";
89
+ import { syncJSON } from "@intlayer/sync-json-plugin";
90
+
91
+ const config: IntlayerConfig = {
92
+ internationalization: {
93
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
94
+ defaultLocale: Locales.ENGLISH,
95
+ },
96
+ plugins: [
97
+ syncJSON({
98
+ source: ({ key, locale }) => `./src/locales/${locale}/${key}.json`,
99
+ }),
100
+ ],
101
+ };
102
+
103
+ export default config;
104
+ ```
105
+
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)を参照してください。
116
+
117
+ ---
118
+
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 }) => `./src/locales/${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
+ ---
161
+
162
+ ## Git 設定
163
+
164
+ 生成されたファイルをバージョン管理から除外します:
165
+
166
+ ```plaintext fileName=".gitignore"
167
+ # Intlayer によって生成されたファイルを無視する
168
+ .intlayer
169
+ intl
170
+ ```
171
+
172
+ これらのファイルはビルドプロセス中に自動的に再生成されるため、リポジトリにコミットする必要はありません。
173
+
174
+ ### VS Code 拡張機能
175
+
176
+ 開発者体験を向上させるために、公式の **Intlayer VS Code 拡張機能** をインストールしてください:
177
+
178
+ [VS Code マーケットプレイスからインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
179
+
180
+ [VS Codeマーケットプレイスからインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-12-24
3
- updatedAt: 2025-10-29
3
+ updatedAt: 2025-11-01
4
4
  title: Intlayer를 사용하여 i18next JSON 번역 자동화하는 방법
5
5
  description: JavaScript 애플리케이션에서 향상된 국제화를 위해 Intlayer와 i18next를 사용하여 JSON 번역을 자동화하세요.
6
6
  keywords:
@@ -20,6 +20,9 @@ slugs:
20
20
  - blog
21
21
  - intlayer-with-i18next
22
22
  history:
23
+ - version: 7.0.6
24
+ date: 2025-11-01
25
+ changes: loadJSON 플러그인 추가
23
26
  - version: 7.0.0
24
27
  date: 2025-10-29
25
28
  changes: syncJSON 플러그인으로 변경
@@ -29,17 +32,18 @@ history:
29
32
 
30
33
  ## Intlayer란 무엇인가요?
31
34
 
32
- **Intlayer**는 전통적인 i18n 솔루션의 한계를 극복하기 위해 설계된 혁신적이고 오픈 소스인 국제화 라이브러리입니다. JavaScript 애플리케이션에서 현대적인 콘텐츠 관리를 제공합니다.
35
+ **Intlayer**는 전통적인 i18n 솔루션의 한계를 극복하기 위해 설계된 혁신적이고 오픈 소스인 국제화 라이브러리입니다. JavaScript 애플리케이션에서 콘텐츠 관리를 위한 현대적인 접근 방식을 제공합니다.
33
36
 
34
37
  i18next와의 구체적인 비교는 저희 블로그 게시물 [next-i18next vs. next-intl vs. Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md)에서 확인할 수 있습니다.
35
38
 
36
- ## 왜 Intlayer와 i18next를 함께 사용해야 할까요?
39
+ ## 왜 Intlayer와 i18next를 결합해야 할까요?
37
40
 
38
- Intlayer는 훌륭한 독립형 i18n 솔루션을 제공하지만(자세한 내용은 [Next.js 통합 가이드](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_nextjs_16.md)를 참조), 다음과 같은 여러 이유로 i18next와 함께 사용하고자 수 있습니다:
41
+ Intlayer는 훌륭한 독립형 i18n 솔루션을 제공하지만(자세한 내용은 [Next.js 통합 가이드](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_nextjs_16.md)를 참조), 다음과 같은 여러 이유로 i18next와 결합하여 사용할 수 있습니다:
39
42
 
40
- 1. **기존 코드베이스**: 이미 구축된 i18next 구현이 있으며 Intlayer의 향상된 개발자 경험으로 점진적으로 이전하고자 할 때.
41
- 2. **레거시 요구사항**: 프로젝트가 기존 i18next 플러그인 또는 워크플로우와의 호환성을 필요로 할 때.
42
- 3. **팀 친숙도**: 팀이 i18next에 익숙하지만 더 나은 콘텐츠 관리를 원할 때.
43
+ 1. **기존 코드베이스**: 이미 구축된 i18next 구현이 있으며 Intlayer의 향상된 개발자 경험으로 점진적으로 마이그레이션하고자 합니다.
44
+ 2. **레거시 요구사항**: 프로젝트가 기존 i18next 플러그인 또는 워크플로우와의 호환성을 필요로 합니다.
45
+ 3. **팀 친숙도**: 팀이 i18next에 익숙하지만 더 나은 콘텐츠 관리를 원합니다.
46
+ 4. **Intlayer 기능 사용**: 콘텐츠 선언, 번역 키 관리, 번역 상태 등 Intlayer의 기능을 사용하고자 합니다.
43
47
 
44
48
  **이를 위해 Intlayer는 i18next의 어댑터로 구현되어 CLI 또는 CI/CD 파이프라인에서 JSON 번역 자동화, 번역 테스트 등 다양한 작업을 지원할 수 있습니다.**
45
49
 
@@ -49,7 +53,7 @@ Intlayer는 훌륭한 독립형 i18n 솔루션을 제공하지만(자세한 내
49
53
 
50
54
  <TOC/>
51
55
 
52
- ## i18next와 함께 Intlayer 설정 단계별 가이드
56
+ ## Intlayer를 i18next와 함께 설정하는 단계별 가이드
53
57
 
54
58
  ### 1단계: 의존성 설치
55
59
 
@@ -67,6 +71,10 @@ pnpm add intlayer @intlayer/sync-json-plugin
67
71
  yarn add intlayer @intlayer/sync-json-plugin
68
72
  ```
69
73
 
74
+ ```bash packageManager="bun"
75
+ bun add intlayer @intlayer/sync-json-plugin
76
+ ```
77
+
70
78
  **패키지 설명:**
71
79
 
72
80
  - **intlayer**: 국제화 관리, 콘텐츠 선언 및 빌드를 위한 핵심 라이브러리
@@ -74,7 +82,7 @@ yarn add intlayer @intlayer/sync-json-plugin
74
82
 
75
83
  ### 2단계: JSON을 래핑하기 위한 Intlayer 플러그인 구현
76
84
 
77
- 지원하는 로케일을 정의하기 위해 Intlayer 구성 파일을 만드세요:
85
+ 지원하는 로케일을 정의하기 위해 Intlayer 구성 파일을 만듭니다:
78
86
 
79
87
  **i18next용 JSON 사전도 내보내고 싶다면**, `syncJSON` 플러그인을 추가하세요:
80
88
 
@@ -89,7 +97,7 @@ const config: IntlayerConfig = {
89
97
  },
90
98
  plugins: [
91
99
  syncJSON({
92
- source: ({ key, locale }) => `./intl/messages/${locale}/${key}.json`,
100
+ source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
93
101
  }),
94
102
  ],
95
103
  };
@@ -97,47 +105,70 @@ const config: IntlayerConfig = {
97
105
  export default config;
98
106
  ```
99
107
 
100
- `syncJSON` 플러그인은 JSON을 자동으로 래핑합니다. 콘텐츠 구조를 변경하지 않고 JSON 파일을 읽고 씁니다.
108
+ `syncJSON` 플러그인은 JSON을 자동으로 래핑합니다. 콘텐츠 구조를 변경하지 않고 JSON 파일을 읽고 쓸 수 있습니다.
101
109
 
102
110
  만약 JSON과 intlayer 콘텐츠 선언 파일(`.content` 파일)을 공존시키고 싶다면, Intlayer는 다음과 같이 처리합니다:
103
111
 
104
- 1. JSON 콘텐츠 선언 파일을 모두 로드하여 intlayer 사전(dictionary)으로 변환합니다.
112
+ 1. JSON 파일과 콘텐츠 선언 파일을 모두 로드하여 intlayer 사전(dictionary)으로 변환합니다.
113
+ 2. JSON과 콘텐츠 선언 파일 간에 충돌이 있을 경우, Intlayer는 모든 사전을 병합합니다. 이때 플러그인의 우선순위와 콘텐츠 선언 파일의 우선순위에 따라 처리되며, 모두 설정 가능합니다.
105
114
 
106
- 2. JSON 콘텐츠 선언 파일 간에 충돌이 있을 경우, Intlayer는 모든 사전을 병합하는 과정을 진행합니다. 이는 플러그인의 우선순위와 콘텐츠 선언 파일의 우선순위에 따라 결정되며(모두 구성 가능합니다).
115
+ CLI를 사용하여 JSON 번역을 변경하거나 CMS를 통해 변경하면, Intlayer는 새로운 번역으로 JSON 파일을 업데이트합니다.
107
116
 
108
- CLI를 사용하여 JSON을 번역하거나 CMS를 통해 변경 사항이 발생하면, Intlayer는 새로운 번역으로 JSON 파일을 업데이트합니다.
117
+ `syncJSON` 플러그인에 대한 자세한 내용을 보려면 [syncJSON 플러그인 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/plugins/sync-json.md)를 참조하세요.
109
118
 
110
- ## Git 구성
119
+ ### (선택 사항) 3단계: 컴포넌트별 JSON 번역 구현
111
120
 
112
- 자동 생성된 Intlayer 파일을 무시하는 것이 권장됩니다:
121
+ 기본적으로 Intlayer JSON 파일과 콘텐츠 선언 파일을 모두 로드, 병합 및 동기화합니다. 자세한 내용은 [콘텐츠 선언 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/dictionary/content_file.md)를 참조하세요. 하지만 원한다면 Intlayer 플러그인을 사용하여 코드베이스 어디에서나 로컬라이즈된 JSON을 컴포넌트별로 관리할 수도 있습니다.
113
122
 
114
- ```plaintext fileName=".gitignore"
115
- # Intlayer에서 생성된 파일 무시
116
- .intlayer
117
- ```
123
+ 이를 위해 `loadJSON` 플러그인을 사용할 수 있습니다.
118
124
 
119
- 파일들은 빌드 과정 중에 다시 생성될 수 있으므로 버전 관리에 커밋할 필요가 없습니다.
125
+ ```ts fileName="intlayer.config.ts"
126
+ import { Locales, type IntlayerConfig } from "intlayer";
127
+ import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";
120
128
 
121
- ### VS Code 확장 프로그램
129
+ const config: IntlayerConfig = {
130
+ internationalization: {
131
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
132
+ defaultLocale: Locales.ENGLISH,
133
+ },
122
134
 
123
- 개발자 경험을 향상시키기 위해 공식 **Intlayer VS Code 확장 프로그램**을 설치하세요:
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
+ * locales 디렉토리 내 JSON 파일에 출력 및 번역을 로드하고 다시 씁니다
147
+ */
148
+ syncJSON({
149
+ source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
150
+ priority: 0,
151
+ }),
152
+ ],
153
+ };
124
154
 
125
- [VS Code 마켓플레이스에서 설치하기](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
155
+ export default config;
156
+ ```
126
157
 
127
- 2. JSON과 콘텐츠 선언 파일 간에 충돌이 있는 경우, Intlayer는 모든 사전을 병합하여 처리합니다. 플러그인의 우선순위와 콘텐츠 선언 파일의 우선순위에 따라 달라집니다(모두 구성 가능).
158
+ 설정은 `src` 디렉토리 내에서 `{key}.i18n.json` 패턴과 일치하는 모든 JSON 파일을 불러와 Intlayer 사전으로 로드합니다.
128
159
 
129
- CLI를 사용하여 JSON을 번역하거나 CMS를 사용하여 변경 사항이 이루어지면, Intlayer는 새로운 번역으로 JSON 파일을 업데이트합니다.
160
+ ---
130
161
 
131
- ## Git 구성
162
+ ## Git 설정
132
163
 
133
- 자동 생성된 Intlayer 파일을 무시하는 것이 권장됩니다:
164
+ 자동 생성된 Intlayer 파일은 무시하는 것이 권장됩니다:
134
165
 
135
166
  ```plaintext fileName=".gitignore"
136
167
  # Intlayer에서 생성된 파일 무시
137
168
  .intlayer
138
169
  ```
139
170
 
140
- 이 파일들은 빌드 과정 중에 다시 생성될 수 있으므로 버전 관리에 커밋할 필요가 없습니다.
171
+ 이 파일들은 빌드 과정에서 다시 생성될 수 있으므로 버전 관리에 커밋할 필요가 없습니다.
141
172
 
142
173
  ### VS Code 확장 프로그램
143
174
 
@@ -2,7 +2,7 @@
2
2
  createdAt: 2025-08-23
3
3
  updatedAt: 2025-10-29
4
4
  title: Intlayer와 next-i18next
5
- description: 포괄적인 Next.js 국제화 솔루션을 위해 Intlayer next-i18next 통합하기
5
+ description: 포괄적인 Next.js 국제화 솔루션을 위한 Intlayer next-i18next 통합
6
6
  keywords:
7
7
  - i18next
8
8
  - next-i18next
@@ -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 플러그인으로 변경 및 전면 개편
@@ -34,7 +37,7 @@ history:
34
37
  하지만 next-i18next에는 몇 가지 어려움이 있습니다:
35
38
 
36
39
  - **복잡한 설정**: next-i18next를 설정하려면 여러 구성 파일과 서버 측 및 클라이언트 측 i18n 인스턴스의 신중한 설정이 필요합니다.
37
- - **분산된 번역 파일**: 번역 파일이 일반적으로 컴포넌트와 별도의 디렉토리에 저장되어 일관성 유지가 어렵습니다.
40
+ - **분산된 번역 파일**: 번역 파일이 일반적으로 컴포넌트와 별도의 디렉토리에 저장되어 일관성을 유지하기 어렵습니다.
38
41
  - **수동 네임스페이스 관리**: 개발자가 네임스페이스를 수동으로 관리하고 번역 리소스가 제대로 로드되도록 해야 합니다.
39
42
  - **제한된 타입 안전성**: TypeScript 지원은 추가 구성이 필요하며 번역에 대한 자동 타입 생성을 제공하지 않습니다.
40
43
 
@@ -46,13 +49,13 @@ history:
46
49
 
47
50
  ## 왜 Intlayer를 next-i18next와 결합해야 하나요?
48
51
 
49
- Intlayer 훌륭한 독립형 i18n 솔루션을 제공하지만(자세한 내용은 [Next.js 통합 가이드](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_nextjs_16.md) 참조하세요), 다음과 같은 여러 이유로 next-i18next와 결합하여 사용할 수 있습니다:
52
+ Intlayer 훌륭한 독립형 i18n 솔루션을 제공하지만(자세한 내용은 [Next.js 통합 가이드](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_nextjs_16.md) 참조), 다음과 같은 여러 이유로 next-i18next와 결합하여 사용할 수 있습니다:
50
53
 
51
- 1. **기존 코드베이스**: 이미 구축된 next-i18next 구현이 있으며 Intlayer의 향상된 개발자 경험으로 점진적으로 마이그레이션하고자 할 때.
52
- 2. **레거시 요구사항**: 프로젝트가 기존 i18next 플러그인 또는 워크플로우와의 호환성을 필요로 때.
53
- 3. **팀 친숙도**: 팀이 next-i18next에 익숙하지만 더 나은 콘텐츠 관리를 원할 때.
54
+ 1. **기존 코드베이스**: 이미 구축된 next-i18next 구현이 있으며 Intlayer의 향상된 개발자 경험으로 점진적으로 마이그레이션하려는 경우.
55
+ 2. **레거시 요구사항**: 프로젝트가 기존 i18next 플러그인 또는 워크플로우와의 호환성을 필요로 하는 경우.
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
 
@@ -76,16 +79,16 @@ pnpm add intlayer @intlayer/sync-json-plugin
76
79
  yarn add intlayer @intlayer/sync-json-plugin
77
80
  ```
78
81
 
82
+ ```bash packageManager="bun"
83
+ bun add intlayer @intlayer/sync-json-plugin
84
+ ```
85
+
79
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
- - **@intlayer/sync-json-plugin**: Intlayer 콘텐츠 선언을 i18next JSON 형식으로 동기화하는 플러그인
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
 
@@ -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,43 +115,63 @@ export default config;
112
115
 
113
116
  `syncJSON` 플러그인은 JSON을 자동으로 래핑합니다. 콘텐츠 구조를 변경하지 않고 JSON 파일을 읽고 씁니다.
114
117
 
115
- JSON과 intlayer 콘텐츠 선언 파일(`.content` 파일)을 공존시키고 싶다면, Intlayer는 다음과 같이 처리합니다:
118
+ 만약 JSON과 intlayer 콘텐츠 선언 파일(`.content` 파일)을 공존시키고 싶다면, Intlayer는 다음과 같이 처리합니다:
116
119
 
117
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/ko/plugins/sync-json.md)를 참조하세요.
122
126
 
123
127
  ---
124
128
 
125
- ## Git 구성
126
-
127
- 생성된 파일을 버전 관리에서 제외하세요:
129
+ ### (선택 사항) 3단계: 컴포넌트별 JSON 번역 구현
128
130
 
129
- ```plaintext fileName=".gitignore"
130
- # Intlayer에서 생성된 파일 무시
131
- .intlayer
132
- intl
133
- ```
131
+ 기본적으로 Intlayer는 JSON 파일과 콘텐츠 선언 파일을 모두 로드, 병합 및 동기화합니다. 자세한 내용은 [콘텐츠 선언 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/dictionary/content_file.md)를 참조하세요. 하지만 원한다면 Intlayer 플러그인을 사용하여 코드베이스 어디에서나 지역화된 JSON을 컴포넌트별로 관리할 수도 있습니다.
134
132
 
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
 
149
172
  ## Git 구성
150
173
 
151
- 버전 관리에서 생성된 파일 제외:
174
+ 생성된 파일을 버전 관리에서 제외하세요:
152
175
 
153
176
  ```plaintext fileName=".gitignore"
154
177
  # Intlayer에서 생성된 파일 무시
@@ -163,3 +186,7 @@ intl
163
186
  개발자 경험 향상을 위해 공식 **Intlayer VS Code 확장 프로그램**을 설치하세요:
164
187
 
165
188
  [VS Code 마켓플레이스에서 설치하기](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
189
+
190
+ 개발자 경험을 향상시키기 위해 공식 **Intlayer VS Code 확장 프로그램**을 설치하세요:
191
+
192
+ [VS Code 마켓플레이스에서 설치하기](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
@@ -2,11 +2,14 @@
2
2
  createdAt: 2025-01-02
3
3
  updatedAt: 2025-10-29
4
4
  title: Intlayer를 사용하여 next-intl JSON 번역 자동화하는 방법
5
- description: Next.js 애플리케이션에서 향상된 국제화를 위해 Intlayer와 next-intl 사용하여 JSON 번역을 자동화하세요.
5
+ description: Next.js 애플리케이션에서 향상된 국제화를 위해 Intlayer와 next-intl JSON 번역을 자동화하세요.
6
6
  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
15
  changes: syncJSON 플러그인으로 변경
@@ -16,16 +19,16 @@ history:
16
19
 
17
20
  ## Intlayer란 무엇인가요?
18
21
 
19
- **Intlayer**는 기존 i18n 솔루션의 한계를 극복하기 위해 설계된 혁신적이고 오픈 소스인 국제화 라이브러리입니다. Next.js 애플리케이션에서 콘텐츠 관리를 위한 현대적인 접근 방식을 제공합니다.
22
+ **Intlayer**는 전통적인 i18n 솔루션의 한계를 극복하기 위해 설계된 혁신적이고 오픈 소스인 국제화 라이브러리입니다. Next.js 애플리케이션에서 콘텐츠 관리를 위한 현대적인 접근 방식을 제공합니다.
20
23
 
21
- next-intl과의 구체적인 비교는 저희 [next-i18next vs. next-intl vs. Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md) 블로그 게시물을 참고하세요.
24
+ next-intl과의 구체적인 비교는 저희 [next-i18next vs. next-intl vs. Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md) 블로그 게시물을 참조하세요.
22
25
 
23
- ## 왜 Intlayer next-intl 함께 사용해야 하나요?
26
+ ## 왜 Intlayer next-intl 결합해야 할까요?
24
27
 
25
- Intlayer는 훌륭한 독립형 i18n 솔루션을 제공하지만(자세한 내용은 저희 [Next.js 통합 가이드](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_nextjs_16.md)를 참조), 다음과 같은 여러 이유로 next-intl과 함께 사용하고자 수 있습니다:
28
+ Intlayer는 훌륭한 독립형 i18n 솔루션을 제공하지만(자세한 내용은 저희 [Next.js 통합 가이드](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_nextjs_16.md)를 참조), 다음과 같은 여러 이유로 next-intl과 결합하여 사용할 수 있습니다:
26
29
 
27
30
  1. **기존 코드베이스**: 이미 구축된 next-intl 구현이 있으며 Intlayer의 향상된 개발자 경험으로 점진적으로 이전하고자 할 때.
28
- 2. **레거시 요구사항**: 프로젝트가 기존 next-intl 플러그인이나 워크플로우와의 호환성을 필요로 할 때.
31
+ 2. **레거시 요구사항**: 프로젝트가 기존 next-intl 플러그인 또는 워크플로우와의 호환성을 필요로 할 때.
29
32
  3. **팀 친숙도**: 팀이 next-intl에 익숙하지만 더 나은 콘텐츠 관리를 원할 때.
30
33
 
31
34
  **이를 위해 Intlayer는 next-intl의 어댑터로 구현되어 CLI 또는 CI/CD 파이프라인에서 JSON 번역 자동화, 번역 테스트 등 다양한 작업을 지원할 수 있습니다.**
@@ -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**: 국제화 관리, 콘텐츠 선언 및 빌드를 위한 핵심 라이브러리
@@ -88,36 +95,58 @@ export default config;
88
95
 
89
96
  만약 JSON과 intlayer 콘텐츠 선언 파일(`.content` 파일)을 공존시키고 싶다면, Intlayer는 다음과 같이 처리합니다:
90
97
 
91
- 1. JSON과 콘텐츠 선언 파일을 모두 불러와 intlayer 사전으로 변환합니다.
98
+ 1. JSON과 콘텐츠 선언 파일을 모두 로드하여 intlayer 사전(dictionary)으로 변환합니다.
92
99
 
93
- 2. JSON과 콘텐츠 선언 파일 간에 충돌이 있는 경우, Intlayer는 모든 사전을 병합하는 과정을 진행합니다. 이는 플러그인의 우선순위와 콘텐츠 선언 파일의 우선순위에 따라 달라지며(모두 구성 가능) 처리됩니다.
100
+ 2. JSON과 콘텐츠 선언 파일 간에 충돌이 있는 경우, Intlayer는 모든 사전을 병합하는 작업을 수행합니다. 이는 플러그인의 우선순위와 콘텐츠 선언 파일의 우선순위에 따라 달라집니다(모두 구성 가능합니다).
94
101
 
95
- CLI를 사용하여 JSON을 번역하거나 CMS를 통해 변경 사항이 발생하면, Intlayer는 새로운 번역으로 JSON 파일을 업데이트합니다.
102
+ CLI를 사용하여 JSON을 번역하거나 CMS를 통해 변경 사항이 이루어지면, Intlayer는 새로운 번역으로 JSON 파일을 업데이트합니다.
96
103
 
97
- ## Git 구성
104
+ `syncJSON` 플러그인에 대한 자세한 내용은 [syncJSON 플러그인 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/plugins/sync-json.md)를 참조하세요.
98
105
 
99
- 자동 생성된 Intlayer 파일은 무시하는 것이 권장됩니다:
106
+ ### (선택 사항) 3단계: 컴포넌트별 JSON 번역 구현
100
107
 
101
- ```plaintext fileName=".gitignore"
102
- # Intlayer에서 생성된 파일 무시
103
- .intlayer
104
- ```
108
+ 기본적으로 Intlayer는 JSON 파일과 콘텐츠 선언 파일을 모두 로드, 병합 및 동기화합니다. 자세한 내용은 [콘텐츠 선언 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/dictionary/content_file.md)를 참조하세요. 하지만 원한다면 Intlayer 플러그인을 사용하여 코드베이스 어디에서나 JSON을 컴포넌트별로 관리하는 기능을 구현할 수도 있습니다.
105
109
 
106
- 파일들은 빌드 과정 중에 다시 생성될 있으므로 버전 관리에 커밋할 필요가 없습니다.
110
+ 이를 위해 `loadJSON` 플러그인을 사용할있습니다.
107
111
 
108
- ### VS Code 확장 프로그램
112
+ ```ts fileName="intlayer.config.ts"
113
+ import { Locales, type IntlayerConfig } from "intlayer";
114
+ import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";
109
115
 
110
- 개발자 경험 향상을 위해 공식 **Intlayer VS Code 확장 프로그램**을 설치하세요:
116
+ const config: IntlayerConfig = {
117
+ internationalization: {
118
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
119
+ defaultLocale: Locales.ENGLISH,
120
+ },
111
121
 
112
- [VS Code 마켓플레이스에서 설치](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
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
+ * locales 디렉토리 내 JSON 파일에 출력 및 번역 내용을 다시 기록하며 로드합니다
134
+ */
135
+ syncJSON({
136
+ source: ({ key, locale }) => `./messages/${locale}/${key}.json`,
137
+ priority: 0,
138
+ }),
139
+ ],
140
+ };
113
141
 
114
- 2. JSON과 콘텐츠 선언 파일 간에 충돌이 있는 경우, Intlayer는 모든 사전을 병합하여 처리합니다. 플러그인의 우선순위와 콘텐츠 선언 파일의 우선순위에 따라 달라집니다(모두 구성 가능합니다).
142
+ export default config;
143
+ ```
115
144
 
116
- CLI를 사용하여 JSON 번역을 변경하거나 CMS를 사용하여 변경하면, Intlayer는 새로운 번역으로 JSON 파일을 업데이트합니다.
145
+ 설정은 `src` 디렉토리 내에서 `{key}.i18n.json` 패턴과 일치하는 모든 JSON 파일을 로드하여 Intlayer 사전으로 불러옵니다.
117
146
 
118
147
  ## Git 구성
119
148
 
120
- 자동 생성된 Intlayer 파일을 무시하는 것이 권장됩니다:
149
+ 자동 생성된 Intlayer 파일은 무시하는 것이 권장됩니다:
121
150
 
122
151
  ```plaintext fileName=".gitignore"
123
152
  # Intlayer에서 생성된 파일 무시
@@ -128,6 +157,6 @@ CLI를 사용하여 JSON 번역을 변경하거나 CMS를 사용하여 변경하
128
157
 
129
158
  ### VS Code 확장 프로그램
130
159
 
131
- 개발자 경험 향상을 위해 공식 **Intlayer VS Code 확장 프로그램**을 설치하세요:
160
+ 개발자 경험을 향상시키기 위해 공식 **Intlayer VS Code 확장 프로그램**을 설치하세요:
132
161
 
133
162
  [VS Code 마켓플레이스에서 설치하기](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)