@intlayer/docs 8.0.0 → 8.0.1-canary.1

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 (172) hide show
  1. package/dist/cjs/generated/docs.entry.cjs +160 -0
  2. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  3. package/dist/esm/generated/docs.entry.mjs +160 -0
  4. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  5. package/dist/types/generated/docs.entry.d.ts +8 -0
  6. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  7. package/docs/ar/intlayer_with_adonisjs.md +394 -0
  8. package/docs/ar/intlayer_with_hono.md +223 -0
  9. package/docs/ar/intlayer_with_vite+preact.md +317 -675
  10. package/docs/ar/packages/adonis-intlayer/exports.md +50 -0
  11. package/docs/ar/packages/adonis-intlayer/intlayer.md +54 -0
  12. package/docs/ar/packages/adonis-intlayer/t.md +149 -0
  13. package/docs/ar/packages/hono-intlayer/exports.md +59 -0
  14. package/docs/ar/packages/hono-intlayer/intlayer.md +60 -0
  15. package/docs/ar/packages/hono-intlayer/t.md +268 -0
  16. package/docs/de/intlayer_with_adonisjs.md +392 -0
  17. package/docs/de/intlayer_with_hono.md +418 -0
  18. package/docs/de/intlayer_with_vite+preact.md +272 -632
  19. package/docs/de/packages/adonis-intlayer/exports.md +50 -0
  20. package/docs/de/packages/adonis-intlayer/intlayer.md +54 -0
  21. package/docs/de/packages/adonis-intlayer/t.md +149 -0
  22. package/docs/de/packages/hono-intlayer/exports.md +59 -0
  23. package/docs/de/packages/hono-intlayer/intlayer.md +59 -0
  24. package/docs/de/packages/hono-intlayer/t.md +316 -0
  25. package/docs/en/index.md +8 -0
  26. package/docs/en/intlayer_with_adonisjs.md +388 -0
  27. package/docs/en/intlayer_with_hono.md +418 -0
  28. package/docs/en/intlayer_with_vite+preact.md +171 -556
  29. package/docs/en/introduction.md +1 -0
  30. package/docs/en/packages/adonis-intlayer/exports.md +50 -0
  31. package/docs/en/packages/adonis-intlayer/intlayer.md +54 -0
  32. package/docs/en/packages/adonis-intlayer/t.md +149 -0
  33. package/docs/en/packages/hono-intlayer/exports.md +59 -0
  34. package/docs/en/packages/hono-intlayer/intlayer.md +59 -0
  35. package/docs/en/packages/hono-intlayer/t.md +316 -0
  36. package/docs/en-GB/intlayer_with_adonisjs.md +394 -0
  37. package/docs/en-GB/intlayer_with_hono.md +418 -0
  38. package/docs/en-GB/intlayer_with_vite+preact.md +236 -583
  39. package/docs/en-GB/packages/adonis-intlayer/exports.md +50 -0
  40. package/docs/en-GB/packages/adonis-intlayer/intlayer.md +54 -0
  41. package/docs/en-GB/packages/adonis-intlayer/t.md +149 -0
  42. package/docs/en-GB/packages/hono-intlayer/exports.md +59 -0
  43. package/docs/en-GB/packages/hono-intlayer/intlayer.md +59 -0
  44. package/docs/en-GB/packages/hono-intlayer/t.md +316 -0
  45. package/docs/es/intlayer_with_adonisjs.md +388 -0
  46. package/docs/es/intlayer_with_hono.md +418 -0
  47. package/docs/es/intlayer_with_vite+preact.md +286 -650
  48. package/docs/es/packages/adonis-intlayer/exports.md +50 -0
  49. package/docs/es/packages/adonis-intlayer/intlayer.md +54 -0
  50. package/docs/es/packages/adonis-intlayer/t.md +149 -0
  51. package/docs/es/packages/hono-intlayer/exports.md +59 -0
  52. package/docs/es/packages/hono-intlayer/intlayer.md +59 -0
  53. package/docs/es/packages/hono-intlayer/t.md +316 -0
  54. package/docs/fr/intlayer_with_adonisjs.md +388 -0
  55. package/docs/fr/intlayer_with_hono.md +418 -0
  56. package/docs/fr/intlayer_with_vite+preact.md +274 -614
  57. package/docs/fr/packages/adonis-intlayer/exports.md +50 -0
  58. package/docs/fr/packages/adonis-intlayer/intlayer.md +54 -0
  59. package/docs/fr/packages/adonis-intlayer/t.md +149 -0
  60. package/docs/fr/packages/hono-intlayer/exports.md +59 -0
  61. package/docs/fr/packages/hono-intlayer/intlayer.md +59 -0
  62. package/docs/fr/packages/hono-intlayer/t.md +316 -0
  63. package/docs/hi/intlayer_with_adonisjs.md +394 -0
  64. package/docs/hi/intlayer_with_hono.md +227 -0
  65. package/docs/hi/intlayer_with_vite+preact.md +304 -680
  66. package/docs/hi/packages/adonis-intlayer/exports.md +50 -0
  67. package/docs/hi/packages/adonis-intlayer/intlayer.md +54 -0
  68. package/docs/hi/packages/adonis-intlayer/t.md +149 -0
  69. package/docs/hi/packages/hono-intlayer/exports.md +59 -0
  70. package/docs/hi/packages/hono-intlayer/intlayer.md +60 -0
  71. package/docs/hi/packages/hono-intlayer/t.md +268 -0
  72. package/docs/id/intlayer_with_adonisjs.md +394 -0
  73. package/docs/id/intlayer_with_hono.md +227 -0
  74. package/docs/id/intlayer_with_vite+preact.md +297 -697
  75. package/docs/id/packages/adonis-intlayer/exports.md +50 -0
  76. package/docs/id/packages/adonis-intlayer/intlayer.md +54 -0
  77. package/docs/id/packages/adonis-intlayer/t.md +149 -0
  78. package/docs/id/packages/hono-intlayer/exports.md +59 -0
  79. package/docs/id/packages/hono-intlayer/intlayer.md +60 -0
  80. package/docs/id/packages/hono-intlayer/t.md +268 -0
  81. package/docs/it/intlayer_with_adonisjs.md +394 -0
  82. package/docs/it/intlayer_with_hono.md +227 -0
  83. package/docs/it/intlayer_with_vite+preact.md +290 -659
  84. package/docs/it/packages/adonis-intlayer/exports.md +50 -0
  85. package/docs/it/packages/adonis-intlayer/intlayer.md +54 -0
  86. package/docs/it/packages/adonis-intlayer/t.md +149 -0
  87. package/docs/it/packages/hono-intlayer/exports.md +59 -0
  88. package/docs/it/packages/hono-intlayer/intlayer.md +60 -0
  89. package/docs/it/packages/hono-intlayer/t.md +268 -0
  90. package/docs/ja/intlayer_with_adonisjs.md +394 -0
  91. package/docs/ja/intlayer_with_hono.md +227 -0
  92. package/docs/ja/intlayer_with_vite+preact.md +307 -662
  93. package/docs/ja/packages/adonis-intlayer/exports.md +50 -0
  94. package/docs/ja/packages/adonis-intlayer/intlayer.md +54 -0
  95. package/docs/ja/packages/adonis-intlayer/t.md +149 -0
  96. package/docs/ja/packages/hono-intlayer/exports.md +59 -0
  97. package/docs/ja/packages/hono-intlayer/intlayer.md +60 -0
  98. package/docs/ja/packages/hono-intlayer/t.md +268 -0
  99. package/docs/ko/intlayer_with_adonisjs.md +394 -0
  100. package/docs/ko/intlayer_with_hono.md +227 -0
  101. package/docs/ko/intlayer_with_vite+preact.md +303 -703
  102. package/docs/ko/packages/adonis-intlayer/exports.md +50 -0
  103. package/docs/ko/packages/adonis-intlayer/intlayer.md +54 -0
  104. package/docs/ko/packages/adonis-intlayer/t.md +149 -0
  105. package/docs/ko/packages/hono-intlayer/exports.md +59 -0
  106. package/docs/ko/packages/hono-intlayer/intlayer.md +60 -0
  107. package/docs/ko/packages/hono-intlayer/t.md +268 -0
  108. package/docs/pl/intlayer_with_adonisjs.md +394 -0
  109. package/docs/pl/intlayer_with_hono.md +227 -0
  110. package/docs/pl/intlayer_with_vite+preact.md +289 -690
  111. package/docs/pl/packages/adonis-intlayer/exports.md +50 -0
  112. package/docs/pl/packages/adonis-intlayer/intlayer.md +54 -0
  113. package/docs/pl/packages/adonis-intlayer/t.md +149 -0
  114. package/docs/pl/packages/hono-intlayer/exports.md +59 -0
  115. package/docs/pl/packages/hono-intlayer/intlayer.md +60 -0
  116. package/docs/pl/packages/hono-intlayer/t.md +268 -0
  117. package/docs/pt/intlayer_with_adonisjs.md +394 -0
  118. package/docs/pt/intlayer_with_hono.md +227 -0
  119. package/docs/pt/intlayer_with_vite+preact.md +275 -637
  120. package/docs/pt/packages/adonis-intlayer/exports.md +50 -0
  121. package/docs/pt/packages/adonis-intlayer/intlayer.md +54 -0
  122. package/docs/pt/packages/adonis-intlayer/t.md +149 -0
  123. package/docs/pt/packages/hono-intlayer/exports.md +59 -0
  124. package/docs/pt/packages/hono-intlayer/intlayer.md +60 -0
  125. package/docs/pt/packages/hono-intlayer/t.md +268 -0
  126. package/docs/ru/intlayer_with_adonisjs.md +393 -0
  127. package/docs/ru/intlayer_with_hono.md +223 -0
  128. package/docs/ru/intlayer_with_vite+preact.md +319 -683
  129. package/docs/ru/packages/adonis-intlayer/exports.md +50 -0
  130. package/docs/ru/packages/adonis-intlayer/intlayer.md +54 -0
  131. package/docs/ru/packages/adonis-intlayer/t.md +149 -0
  132. package/docs/ru/packages/hono-intlayer/exports.md +59 -0
  133. package/docs/ru/packages/hono-intlayer/intlayer.md +60 -0
  134. package/docs/ru/packages/hono-intlayer/t.md +268 -0
  135. package/docs/tr/intlayer_with_adonisjs.md +394 -0
  136. package/docs/tr/intlayer_with_hono.md +227 -0
  137. package/docs/tr/intlayer_with_vite+preact.md +332 -665
  138. package/docs/tr/packages/adonis-intlayer/exports.md +50 -0
  139. package/docs/tr/packages/adonis-intlayer/intlayer.md +54 -0
  140. package/docs/tr/packages/adonis-intlayer/t.md +149 -0
  141. package/docs/tr/packages/hono-intlayer/exports.md +59 -0
  142. package/docs/tr/packages/hono-intlayer/intlayer.md +60 -0
  143. package/docs/tr/packages/hono-intlayer/t.md +268 -0
  144. package/docs/uk/intlayer_with_adonisjs.md +394 -0
  145. package/docs/uk/intlayer_with_hono.md +227 -0
  146. package/docs/uk/intlayer_with_vite+preact.md +228 -626
  147. package/docs/uk/packages/adonis-intlayer/exports.md +50 -0
  148. package/docs/uk/packages/adonis-intlayer/intlayer.md +54 -0
  149. package/docs/uk/packages/adonis-intlayer/t.md +149 -0
  150. package/docs/uk/packages/hono-intlayer/exports.md +59 -0
  151. package/docs/uk/packages/hono-intlayer/intlayer.md +60 -0
  152. package/docs/uk/packages/hono-intlayer/t.md +268 -0
  153. package/docs/vi/intlayer_with_adonisjs.md +394 -0
  154. package/docs/vi/intlayer_with_hono.md +227 -0
  155. package/docs/vi/intlayer_with_vite+preact.md +294 -679
  156. package/docs/vi/packages/adonis-intlayer/exports.md +50 -0
  157. package/docs/vi/packages/adonis-intlayer/intlayer.md +54 -0
  158. package/docs/vi/packages/adonis-intlayer/t.md +149 -0
  159. package/docs/vi/packages/hono-intlayer/exports.md +59 -0
  160. package/docs/vi/packages/hono-intlayer/intlayer.md +60 -0
  161. package/docs/vi/packages/hono-intlayer/t.md +268 -0
  162. package/docs/zh/intlayer_with_adonisjs.md +393 -0
  163. package/docs/zh/intlayer_with_hono.md +418 -0
  164. package/docs/zh/intlayer_with_vite+preact.md +338 -743
  165. package/docs/zh/packages/adonis-intlayer/exports.md +50 -0
  166. package/docs/zh/packages/adonis-intlayer/intlayer.md +54 -0
  167. package/docs/zh/packages/adonis-intlayer/t.md +149 -0
  168. package/docs/zh/packages/hono-intlayer/exports.md +59 -0
  169. package/docs/zh/packages/hono-intlayer/intlayer.md +60 -0
  170. package/docs/zh/packages/hono-intlayer/t.md +294 -0
  171. package/package.json +6 -6
  172. package/src/generated/docs.entry.ts +160 -0
@@ -0,0 +1,394 @@
1
+ ---
2
+ createdAt: 2025-08-23
3
+ updatedAt: 2025-12-30
4
+ title: AdonisJS i18n - AdonisJS アプリを翻訳する方法 – ガイド 2026
5
+ description: AdonisJS バックエンドを多言語化する方法をご紹介します。ドキュメントに従って国際化 (i18n) と翻訳を行いましょう。
6
+ keywords:
7
+ - 国際化
8
+ - ドキュメント
9
+ - Intlayer
10
+ - AdonisJS
11
+ - JavaScript
12
+ - バックエンド
13
+ slugs:
14
+ - doc
15
+ - environment
16
+ - adonisjs
17
+ applicationTemplate: https://github.com/aymericzip/intlayer-adonisjs-template
18
+ history:
19
+ - version: 8.0.0
20
+ date: 2025-12-30
21
+ changes: 履歴の初期化
22
+ ---
23
+
24
+ # Intlayer を使用して AdonisJS バックエンドウェブサイトを翻訳する | 国際化 (i18n)
25
+
26
+ `adonis-intlayer` は、AdonisJS アプリケーション向けの強力な国際化 (i18n) パッケージであり、クライアントの好みに基づいてローカライズされたレスポンスを提供することで、バックエンドサービスをグローバルにアクセス可能にするように設計されています。
27
+
28
+ ### 実用的なユースケース
29
+
30
+ - **ユーザーの言語でのバックエンドエラーの表示**: エラーが発生した際、ユーザーの母国語でメッセージを表示することで、理解が深まり、フラストレーションを軽減できます。これは、トーストやモーダルなどのフロントエンドコンポーネントに表示される可能性のある動的なエラーメッセージに特に役立ちます。
31
+
32
+ - **多言語コンテンツの取得**: データベースからコンテンツを取得するアプリケーションの場合、国際化によって、このコンテンツを複数の言語で提供できるようになります。これは、製品説明や記事、その他のコンテンツをユーザーが好む言語で表示する必要がある e コマースサイトやコンテンツ管理システムなどのプラットフォームにとって非常に重要です。
33
+
34
+ - **多言語メールの送信**: トランザクションメール、マーケティングキャンペーン、通知など、受信者の言語でメールを送信することで、エンゲージメントと効果を大幅に高めることができます。
35
+
36
+ - **多言語プッシュ通知**: モバイルアプリケーションの場合、ユーザーの好みの言語でプッシュ通知を送信することで、インタラクションと継続率を高めることができます。このパーソナライズされたアプローチにより、通知がより関連性が高く、実行しやすいものに感じられます。
37
+
38
+ - **その他のコミュニケーション**: SMS メッセージ、システムアラート、ユーザーインターフェースの更新など、バックエンドからのあらゆる形式のコミュニケーションは、ユーザーの言語であることでメリットを得られ、明快さを確保し、全体的なユーザーエクスペリエンスを向上させます。
39
+
40
+ バックエンドを国際化することで、アプリケーションは文化的な違いを尊重するだけでなく、グローバル市場のニーズにより適合し、サービスを世界規模で拡大するための重要なステップとなります。
41
+
42
+ ## はじめる
43
+
44
+ ### インストール
45
+
46
+ `adonis-intlayer` の使用を開始するには、npm を使用してパッケージをインストールします。
47
+
48
+ ```bash packageManager="npm"
49
+ npm install intlayer adonis-intlayer
50
+ npx intlayer init
51
+ ```
52
+
53
+ ```bash packageManager="pnpm"
54
+ pnpm add intlayer adonis-intlayer
55
+ pnpm intlayer init
56
+ ```
57
+
58
+ ```bash packageManager="yarn"
59
+ yarn add intlayer adonis-intlayer
60
+ yarn intlayer init
61
+ ```
62
+
63
+ ```bash packageManager="bun"
64
+ bun add intlayer adonis-intlayer
65
+ bunx intlayer init
66
+ ```
67
+
68
+ ### 設定
69
+
70
+ プロジェクトのルートに `intlayer.config.ts` を作成して、国際化設定を構成します。
71
+
72
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
73
+ import { Locales, type IntlayerConfig } from "intlayer";
74
+
75
+ const config: IntlayerConfig = {
76
+ internationalization: {
77
+ locales: [
78
+ Locales.ENGLISH,
79
+ Locales.RUSSIAN,
80
+ Locales.JAPANESE,
81
+ Locales.FRENCH,
82
+ Locales.KOREAN,
83
+ Locales.CHINESE,
84
+ Locales.SPANISH,
85
+ Locales.GERMAN,
86
+ Locales.ARABIC,
87
+ Locales.ITALIAN,
88
+ Locales.ENGLISH_UNITED_KINGDOM,
89
+ Locales.PORTUGUESE,
90
+ Locales.HINDI,
91
+ Locales.TURKISH,
92
+ Locales.POLISH,
93
+ Locales.INDONESIAN,
94
+ Locales.VIETNAMESE,
95
+ Locales.UKRAINIAN,
96
+ ],
97
+ defaultLocale: Locales.ENGLISH,
98
+ },
99
+ };
100
+
101
+ export default config;
102
+ ```
103
+
104
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
105
+ import { Locales } from "intlayer";
106
+
107
+ /** @type {import('intlayer').IntlayerConfig} */
108
+ const config = {
109
+ internationalization: {
110
+ locales: [
111
+ Locales.ENGLISH,
112
+ Locales.RUSSIAN,
113
+ Locales.JAPANESE,
114
+ Locales.FRENCH,
115
+ Locales.KOREAN,
116
+ Locales.CHINESE,
117
+ Locales.SPANISH,
118
+ Locales.GERMAN,
119
+ Locales.ARABIC,
120
+ Locales.ITALIAN,
121
+ Locales.ENGLISH_UNITED_KINGDOM,
122
+ Locales.PORTUGUESE,
123
+ Locales.HINDI,
124
+ Locales.TURKISH,
125
+ Locales.POLISH,
126
+ Locales.INDONESIAN,
127
+ Locales.VIETNAMESE,
128
+ Locales.UKRAINIAN,
129
+ ],
130
+ defaultLocale: Locales.ENGLISH,
131
+ },
132
+ };
133
+
134
+ export default config;
135
+ ```
136
+
137
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
138
+ const { Locales } = require("intlayer");
139
+
140
+ /** @type {import('intlayer').IntlayerConfig} */
141
+ const config = {
142
+ internationalization: {
143
+ locales: [
144
+ Locales.ENGLISH,
145
+ Locales.RUSSIAN,
146
+ Locales.JAPANESE,
147
+ Locales.FRENCH,
148
+ Locales.KOREAN,
149
+ Locales.CHINESE,
150
+ Locales.SPANISH,
151
+ Locales.GERMAN,
152
+ Locales.ARABIC,
153
+ Locales.ITALIAN,
154
+ Locales.ENGLISH_UNITED_KINGDOM,
155
+ Locales.PORTUGUESE,
156
+ Locales.HINDI,
157
+ Locales.TURKISH,
158
+ Locales.POLISH,
159
+ Locales.INDONESIAN,
160
+ Locales.VIETNAMESE,
161
+ Locales.UKRAINIAN,
162
+ ],
163
+ defaultLocale: Locales.ENGLISH,
164
+ },
165
+ };
166
+
167
+ module.exports = config;
168
+ ```
169
+
170
+ ### コンテンツの宣言
171
+
172
+ 翻訳を保存するためのコンテンツ宣言を作成および管理します。
173
+
174
+ ```typescript fileName="app/index.content.ts" contentDeclarationFormat="typescript"
175
+ import { t, type Dictionary } from "intlayer";
176
+
177
+ const indexContent = {
178
+ key: "index",
179
+ content: {
180
+ exampleOfContent: t({
181
+ en: "Example of returned content in English",
182
+ fr: "Exemple de contenu renvoyé en français",
183
+ ja: "日本語で返されるコンテンツの例",
184
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
185
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
186
+ }),
187
+ },
188
+ } satisfies Dictionary;
189
+
190
+ export default indexContent;
191
+ ```
192
+
193
+ ```javascript fileName="app/index.content.mjs" contentDeclarationFormat="esm"
194
+ import { t } from "intlayer";
195
+
196
+ /** @type {import('intlayer').Dictionary} */
197
+ const indexContent = {
198
+ key: "index",
199
+ content: {
200
+ exampleOfContent: t({
201
+ en: "Example of returned content in English",
202
+ fr: "Exemple de contenu renvoyé en français",
203
+ ja: "日本語で返されるコンテンツの例",
204
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
205
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
206
+ }),
207
+ },
208
+ };
209
+
210
+ export default indexContent;
211
+ ```
212
+
213
+ ```javascript fileName="app/index.content.cjs" contentDeclarationFormat="commonjs"
214
+ const { t } = require("intlayer");
215
+
216
+ /** @type {import('intlayer').Dictionary} */
217
+ const indexContent = {
218
+ key: "index",
219
+ content: {
220
+ exampleOfContent: t({
221
+ en: "Example of returned content in English",
222
+ fr: "Exemple de contenu renvoyé en français",
223
+ ja: "日本語で返されるコンテンツの例",
224
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
225
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
226
+ }),
227
+ },
228
+ };
229
+
230
+ module.exports = indexContent;
231
+ ```
232
+
233
+ ```json fileName="app/index.content.json" contentDeclarationFormat="json"
234
+ {
235
+ "$schema": "https://intlayer.org/schema.json",
236
+ "key": "index",
237
+ "content": {
238
+ "exampleOfContent": {
239
+ "nodeType": "translation",
240
+ "translation": {
241
+ "en": "Example of returned content in English",
242
+ "fr": "Exemple de contenu renvoyé en français",
243
+ "ja": "日本語で返されるコンテンツの例",
244
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
245
+ "es-MX": "Ejemplo de contenido devuelto en español (México)"
246
+ }
247
+ }
248
+ }
249
+ }
250
+ ```
251
+
252
+ > コンテンツ宣言は、`contentDir` ディレクトリ(デフォルトでは `./src` または `./app`)に含まれており、コンテンツ宣言のファイル拡張子(デフォルトでは `.content.{json,ts,tsx,js,jsx,mjs,cjs}`)に一致する限り、アプリケーションのどこにでも定義できます。
253
+
254
+ > 詳細については、[コンテンツ宣言のドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/content_file.md)を参照してください。
255
+
256
+ ### AdonisJS アプリケーションの設定
257
+
258
+ `adonis-intlayer` を使用するように AdonisJS アプリケーションをセットアップします。
259
+
260
+ #### ミドルウェアの登録
261
+
262
+ まず、アプリケーションに `intlayer` ミドルウェアを登録する必要があります。
263
+
264
+ ```typescript fileName="start/kernel.ts"
265
+ router.use([() => import("adonis-intlayer/middleware")]);
266
+ ```
267
+
268
+ #### ルートの定義
269
+
270
+ ```typescript fileName="start/routes.ts"
271
+ import router from "@adonisjs/core/services/router";
272
+ import { t, getIntlayer, getDictionary } from "adonis-intlayer";
273
+ import indexContent from "../app/index.content";
274
+
275
+ router.get("/t_example", async () => {
276
+ return t({
277
+ en: "Example of returned content in English",
278
+ fr: "Exemple de contenu renvoyé en français",
279
+ ja: "日本語で返されるコンテンツの例",
280
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
281
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
282
+ });
283
+ });
284
+
285
+ router.get("/getIntlayer_example", async () => {
286
+ return getIntlayer("index").exampleOfContent;
287
+ });
288
+
289
+ router.get("/getDictionary_example", async () => {
290
+ return getDictionary(indexContent).exampleOfContent;
291
+ });
292
+ ```
293
+
294
+ #### 関数
295
+
296
+ `adonis-intlayer` は、アプリケーションでの国際化を処理するためにいくつかの関数をエクスポートします。
297
+
298
+ - `t(content, locale?)`: 基本的な翻訳関数。
299
+ - `getIntlayer(key, locale?)`: 辞書からキーによってコンテンツを取得します。
300
+ - `getDictionary(dictionary, locale?)`: 特定の辞書オブジェクトからコンテンツを取得します。
301
+ - `getLocale()`: リクエストコンテキストから現在のロケールを取得します。
302
+
303
+ #### コントローラーでの使用
304
+
305
+ ```typescript fileName="app/controllers/example_controller.ts"
306
+ import type { HttpContext } from "@adonisjs/core/http";
307
+ import { t } from "adonis-intlayer";
308
+
309
+ export default class ExampleController {
310
+ async index({ response }: HttpContext) {
311
+ return response.send(
312
+ t({
313
+ en: "Hello from controller",
314
+ fr: "Bonjour depuis le contrôleur",
315
+ ja: "コントローラーからのこんにちは",
316
+ })
317
+ );
318
+ }
319
+ }
320
+ ```
321
+
322
+ ### 互換性
323
+
324
+ `adonis-intlayer` は、以下と完全に互換性があります。
325
+
326
+ - React アプリケーション向けの [`react-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/packages/react-intlayer/index.md)
327
+ - Next.js アプリケーション向けの [`next-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/packages/next-intlayer/index.md)
328
+ - Vite アプリケーション向けの [`vite-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/packages/vite-intlayer/index.md)
329
+
330
+ また、ブラウザや API リクエストを含む、さまざまな環境にわたるあらゆる国際化ソリューションとシームレスに連携します。ヘッダーやクッキーを介してロケールを検出するようにミドルウェアをカスタマイズできます。
331
+
332
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
333
+ import { Locales, type IntlayerConfig } from "intlayer";
334
+
335
+ const config: IntlayerConfig = {
336
+ // ... その他の設定オプション
337
+ middleware: {
338
+ headerName: "my-locale-header",
339
+ cookieName: "my-locale-cookie",
340
+ },
341
+ };
342
+
343
+ export default config;
344
+ ```
345
+
346
+ デフォルトでは、`adonis-intlayer` は `Accept-Language` ヘッダーを解釈して、クライアントの優先言語を決定します。
347
+
348
+ > 設定や高度なトピックの詳細については、[ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/configuration.md)をご覧ください。
349
+
350
+ ### TypeScript の設定
351
+
352
+ `adonis-intlayer` は、TypeScript の強力な機能を活用して国際化プロセスを強化します。TypeScript の静的型付けにより、すべての翻訳キーが考慮され、翻訳の漏れのリスクが軽減され、保守性が向上します。
353
+
354
+ ![補完](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true)
355
+
356
+ ![翻訳エラー](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png?raw=true)
357
+
358
+ 自動生成された型(デフォルトでは ./types/intlayer.d.ts)が tsconfig.json ファイルに含まれていることを確認してください。
359
+
360
+ ```json5 fileName="tsconfig.json"
361
+ {
362
+ // ... 既存の TypeScript 設定
363
+ "include": [
364
+ // ... 既存の TypeScript 設定
365
+ ".intlayer/**/*.ts", // 自動生成された型を含める
366
+ ],
367
+ }
368
+ ```
369
+
370
+ ### VS Code 拡張機能
371
+
372
+ Intlayer での開発体験を向上させるために、公式の **Intlayer VS Code 拡張機能**をインストールできます。
373
+
374
+ [VS Code Marketplace からインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
375
+
376
+ この拡張機能は以下を提供します。
377
+
378
+ - 翻訳キーの**自動補完**。
379
+ - 翻訳漏れの**リアルタイムエラー検出**。
380
+ - 翻訳されたコンテンツの**インラインプレビュー**。
381
+ - 翻訳を簡単に作成・更新するための**クイックアクション**。
382
+
383
+ 拡張機能の使用方法の詳細については、[Intlayer VS Code 拡張機能のドキュメント](https://intlayer.org/ja/doc/vs-code-extension)を参照してください。
384
+
385
+ ### Git の設定
386
+
387
+ Intlayer によって生成されたファイルを無視することをお勧めします。これにより、それらを Git リポジトリにコミットすることを避けることができます。
388
+
389
+ これを行うには、`.gitignore` ファイルに以下の指示を追加します。
390
+
391
+ ```plaintext fileName=".gitignore"
392
+ # Intlayer によって生成されたファイルを無視する
393
+ .intlayer
394
+ ```
@@ -0,0 +1,227 @@
1
+ ---
2
+ createdAt: 2025-08-23
3
+ updatedAt: 2025-12-30
4
+ title: Hono i18n - Hono アプリの翻訳方法 – 2026 ガイド
5
+ description: Hono バックエンドを多言語化する方法をご紹介します。ドキュメントに従って国際化 (i18n) と翻訳を行ってください。
6
+ keywords:
7
+ - 国際化
8
+ - ドキュメント
9
+ - Intlayer
10
+ - Hono
11
+ - JavaScript
12
+ - バックエンド
13
+ slugs:
14
+ - doc
15
+ - environment
16
+ - hono
17
+ applicationTemplate: https://github.com/aymericzip/intlayer-hono-template
18
+ history:
19
+ - version: 7.5.9
20
+ date: 2025-12-30
21
+ changes: init コマンドの追加
22
+ - version: 5.5.10
23
+ date: 2025-06-29
24
+ changes: 履歴の初期化
25
+ ---
26
+
27
+ # Intlayer を使用して Hono バックエンド Web サイトを翻訳する | 国際化 (i18n)
28
+
29
+ `hono-intlayer` は、Hono アプリケーション向けの強力な国際化 (i18n) ミドルウェアです。クライアントの好みに基づいてローカライズされたレスポンスを提供することで、バックエンド サービスをグローバルにアクセス可能にするように設計されています。
30
+
31
+ ### 実用的なユースケース
32
+
33
+ - **バックエンド エラーをユーザーの言語で表示する**: エラーが発生した際、ユーザーの母国語でメッセージを表示することで、理解が深まり、ストレスが軽減されます。これは、トーストやモーダルなどのフロントエンド コンポーネントに表示される可能性のある動的なエラー メッセージに特に役立ちます。
34
+
35
+ - **多言語コンテンツの取得**: データベースからコンテンツを取得するアプリケーションの場合、国際化によってこのコンテンツを複数の言語で提供できます。これは、製品の説明、記事、その他のコンテンツをユーザーが好む言語で表示する必要がある e コマース サイトやコンテンツ管理システムなどのプラットフォームにとって不可欠です。
36
+
37
+ - **多言語メールの送信**: トランザクション メール、マーケティング キャンペーン、通知のいずれであっても、受信者の言語でメールを送信することで、エンゲージメントと効果を大幅に高めることができます。
38
+
39
+ - **多言語プッシュ通知**: モバイル アプリケーションの場合、ユーザーの優先言語でプッシュ通知を送信することで、インタラクションと継続率を向上させることができます。この個人的なタッチにより、通知がより関連性が高く、行動を促すものに感じられます。
40
+
41
+ - **その他のコミュニケーション**: SMS メッセージ、システム アラート、ユーザー インターフェースの更新など、バックエンドからのあらゆる形式のコミュニケーションは、ユーザーの言語であることでメリットが得られ、明確さが確保され、全体的なユーザー エクスペリエンスが向上します。
42
+
43
+ バックエンドを国際化することで、アプリケーションは文化的な違いを尊重するだけでなく、グローバルな市場のニーズにもより適合するようになり、サービスを世界規模で拡大するための重要なステップとなります。
44
+
45
+ ## はじめに
46
+
47
+ ### インストール
48
+
49
+ `hono-intlayer` の使用を開始するには、npm を使用してパッケージをインストールします。
50
+
51
+ ```bash packageManager="npm"
52
+ npm install intlayer hono-intlayer
53
+ npx intlayer init
54
+ ```
55
+
56
+ ```bash packageManager="pnpm"
57
+ pnpm add intlayer hono-intlayer
58
+ pnpm intlayer init
59
+ ```
60
+
61
+ ```bash packageManager="yarn"
62
+ yarn add intlayer hono-intlayer
63
+ yarn intlayer init
64
+ ```
65
+
66
+ ```bash packageManager="bun"
67
+ bun add intlayer hono-intlayer
68
+ bunx intlayer init
69
+ ```
70
+
71
+ ### 設定
72
+
73
+ プロジェクトのルートに `intlayer.config.ts` を作成して、国際化設定を構成します。
74
+
75
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
76
+ import { Locales, type IntlayerConfig } from "intlayer";
77
+
78
+ const config: IntlayerConfig = {
79
+ internationalization: {
80
+ locales: [
81
+ Locales.ENGLISH,
82
+ Locales.FRENCH,
83
+ Locales.SPANISH_MEXICO,
84
+ Locales.SPANISH_SPAIN,
85
+ Locales.JAPANESE,
86
+ ],
87
+ defaultLocale: Locales.ENGLISH,
88
+ },
89
+ };
90
+
91
+ export default config;
92
+ ```
93
+
94
+ ### コンテンツの宣言
95
+
96
+ 翻訳を保存するためのコンテンツ宣言を作成および管理します。
97
+
98
+ ```typescript fileName="src/index.content.ts" contentDeclarationFormat="typescript"
99
+ import { t, type Dictionary } from "intlayer";
100
+
101
+ const indexContent = {
102
+ key: "index",
103
+ content: {
104
+ exampleOfContent: t({
105
+ en: "Example of returned content in English",
106
+ fr: "Exemple de contenu renvoyé en français",
107
+ ja: "日本語で返されるコンテンツの例",
108
+ }),
109
+ },
110
+ } satisfies Dictionary;
111
+
112
+ export default indexContent;
113
+ ```
114
+
115
+ > コンテンツ宣言は、`contentDir` ディレクトリ (デフォルトは `./src`) に含まれている限り、アプリケーションのどこでも定義できます。また、コンテンツ宣言ファイルの拡張子 (デフォルトは `.content.{json,ts,tsx,js,jsx,mjs,cjs}`) に一致させる必要があります。
116
+
117
+ > 詳細については、[コンテンツ宣言のドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/content_file.md)を参照してください。
118
+
119
+ ### Hono アプリケーションの設定
120
+
121
+ `hono-intlayer` を使用するように Hono アプリケーションを設定します。
122
+
123
+ ```typescript fileName="src/index.ts" codeFormat="typescript"
124
+ import { Hono } from "hono";
125
+ import { intlayer, t, getDictionary, getIntlayer } from "hono-intlayer";
126
+ import dictionaryExample from "./index.content";
127
+
128
+ const app = new Hono();
129
+
130
+ // 国際化リクエスト ハンドラをロード
131
+ app.use("*", intlayer());
132
+
133
+ // ルート
134
+ app.get("/t_example", (c) => {
135
+ return c.text(
136
+ t({
137
+ en: "Example of returned content in English",
138
+ fr: "Exemple de contenu renvoyé en français",
139
+ ja: "日本語で返されるコンテンツの例",
140
+ })
141
+ );
142
+ });
143
+
144
+ app.get("/getIntlayer_example", (c) => {
145
+ return c.json(getIntlayer("index").exampleOfContent);
146
+ });
147
+
148
+ app.get("/getDictionary_example", (c) => {
149
+ return c.json(getDictionary(dictionaryExample).exampleOfContent);
150
+ });
151
+
152
+ export default app;
153
+ ```
154
+
155
+ ### 互換性
156
+
157
+ `hono-intlayer` は以下と完全に互換性があります。
158
+
159
+ - React アプリケーション向けの [`react-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/packages/react-intlayer/index.md)
160
+ - Next.js アプリケーション向けの [`next-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/packages/next-intlayer/index.md)
161
+ - Vite アプリケーション向けの [`vite-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/packages/vite-intlayer/index.md)
162
+
163
+ また、ブラウザや API リクエストを含むさまざまな環境のあらゆる国際化ソリューションとシームレスに連携します。ヘッダーやクッキーを介してロケールを検出するようにミドルウェアをカスタマイズできます。
164
+
165
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
166
+ import { Locales, type IntlayerConfig } from "intlayer";
167
+
168
+ const config: IntlayerConfig = {
169
+ // ... その他の構成オプション
170
+ middleware: {
171
+ headerName: "my-locale-header",
172
+ cookieName: "my-locale-cookie",
173
+ },
174
+ };
175
+
176
+ export default config;
177
+ ```
178
+
179
+ デフォルトでは、`hono-intlayer` は `Accept-Language` ヘッダーを解釈して、クライアントの優先言語を決定します。
180
+
181
+ > 構成や高度なトピックの詳細については、[ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/configuration.md)をご覧ください。
182
+
183
+ ### TypeScript の設定
184
+
185
+ `hono-intlayer` は TypeScript の堅牢な機能を活用して、国際化プロセスを強化します。TypeScript の静的型付けにより、すべての翻訳キーが考慮され、翻訳漏れのリスクが軽減され、保守性が向上します。
186
+
187
+ ![オートコンプリート](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true)
188
+
189
+ ![翻訳エラー](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png?raw=true)
190
+
191
+ 自動生成された型 (デフォルトは `./types/intlayer.d.ts`) が `tsconfig.json` ファイルに含まれていることを確認してください。
192
+
193
+ ```json5 fileName="tsconfig.json"
194
+ {
195
+ // ... 既存の TypeScript 構成
196
+ "include": [
197
+ // ... 既存の TypeScript 構成
198
+ ".intlayer/**/*.ts", // 自動生成された型を含める
199
+ ],
200
+ }
201
+ ```
202
+
203
+ ### VS Code 拡張機能
204
+
205
+ Intlayer の開発体験を向上させるために、公式の **Intlayer VS Code 拡張機能** をインストールできます。
206
+
207
+ [VS Code Marketplace からインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
208
+
209
+ この拡張機能は以下を提供します。
210
+
211
+ - 翻訳キーの**オートコンプリート**。
212
+ - 翻訳漏れの**リアルタイム エラー検出**。
213
+ - 翻訳されたコンテンツの**インライン プレビュー**。
214
+ - 翻訳を簡単に作成および更新するための**クイック アクション**。
215
+
216
+ 拡張機能の使用方法の詳細については、[Intlayer VS Code 拡張機能のドキュメント](https://intlayer.org/doc/vs-code-extension)を参照してください。
217
+
218
+ ### Git の設定
219
+
220
+ Intlayer によって生成されたファイルを無視することをお勧めします。これにより、それらを Git リポジトリにコミットすることを避けることができます。
221
+
222
+ これを行うには、`.gitignore` ファイルに次の手順を追加します。
223
+
224
+ ```plaintext fileName=".gitignore"
225
+ # Intlayer によって生成されたファイルを無視する
226
+ .intlayer
227
+ ```