@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
+ - **다국어 콘텐츠 검색**: 데이터베이스에서 콘텐츠를 가져오는 애플리케이션의 경우, 국제화를 통해 이 콘텐츠를 여러 언어로 제공할 수 있습니다. 이는 제품 설명, 기사 및 기타 콘텐츠를 사용자가 선호하는 언어로 표시해야 하는 이커머스 사이트나 콘텐츠 관리 시스템과 같은 플랫폼에 필수적입니다.
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
+ ko: "한국어로 반환된 콘텐츠 예시",
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
+ ko: "한국어로 반환된 콘텐츠 예시",
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
+ ko: "한국어로 반환된 콘텐츠 예시",
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
+ "ko": "한국어로 반환된 콘텐츠 예시",
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/ko/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
+ ko: "한국어로 반환된 콘텐츠 예시",
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
+ ko: "컨트롤러에서 보내는 인사",
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/ko/packages/react-intlayer/index.md)
327
+ - Next.js 애플리케이션을 위한 [`next-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/packages/next-intlayer/index.md)
328
+ - Vite 애플리케이션을 위한 [`vite-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/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/ko/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/ko/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 백엔드 웹사이트 번역하기 | 국제화(i18n)
28
+
29
+ `hono-intlayer`는 Hono 애플리케이션을 위한 강력한 국제화(i18n) 미들웨어로, 클라이언트의 선호도에 따라 현지화된 응답을 제공하여 백엔드 서비스를 전 세계에서 액세스할 수 있도록 설계되었습니다.
30
+
31
+ ### 실제 사용 사례
32
+
33
+ - **사용자 언어로 백엔드 오류 표시**: 오류가 발생했을 때 사용자의 모국어로 메시지를 표시하면 이해도가 높아지고 불만이 줄어듭니다. 이는 토스트나 모달과 같은 프론트엔드 구성 요소에 표시될 수 있는 동적 오류 메시지에 특히 유용합니다.
34
+
35
+ - **다국어 콘텐츠 검색**: 데이터베이스에서 콘텐츠를 가져오는 애플리케이션의 경우, 국제화를 통해 이 콘텐츠를 여러 언어로 제공할 수 있습니다. 이는 제품 설명, 기사 및 기타 콘텐츠를 사용자가 선호하는 언어로 표시해야 하는 이커머스 사이트나 콘텐츠 관리 시스템과 같은 플랫폼에 필수적입니다.
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.KOREAN,
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
+ ko: "한국어로 반환된 콘텐츠의 예",
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/ko/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
+ ko: "한국어로 반환된 콘텐츠의 예",
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/ko/packages/react-intlayer/index.md)
160
+ - Next.js 애플리케이션을 위한 [`next-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/packages/next-intlayer/index.md)
161
+ - Vite 애플리케이션을 위한 [`vite-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/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/ko/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
+ ```