@intlayer/docs 8.0.0 → 8.0.1-canary.0

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,50 @@
1
+ ---
2
+ createdAt: 2026-01-30
3
+ updatedAt: 2026-01-30
4
+ title: adonis-intlayer 包文档
5
+ description: 用于 Intlayer 的 AdonisJS 中间件,提供翻译函数和语言区域检测。
6
+ keywords:
7
+ - adonis-intlayer
8
+ - adonisjs
9
+ - middleware
10
+ - 国际化
11
+ - i18n
12
+ slugs:
13
+ - doc
14
+ - packages
15
+ - adonis-intlayer
16
+ - exports
17
+ history:
18
+ - version: 8.0.0
19
+ date: 2026-01-30
20
+ changes: 初始文档
21
+ ---
22
+
23
+ # adonis-intlayer 包
24
+
25
+ `adonis-intlayer` 包为 AdonisJS 应用程序提供了一个处理国际化的中间件。它检测用户的语言区域并提供翻译函数。
26
+
27
+ ## 安装
28
+
29
+ ```bash
30
+ npm install adonis-intlayer
31
+ ```
32
+
33
+ ## 导出
34
+
35
+ ### 中间件
36
+
37
+ 该包提供了一个 AdonisJS 中间件来处理国际化。
38
+
39
+ | 函数 | 描述 | 相关文档 |
40
+ | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
41
+ | `IntlayerMiddleware` | AdonisJS 中间件,检测用户的语言区域并使用 Intlayer 数据填充请求上下文。它还设置了一个 CLS (Async Local Storage) 命名空间用于请求生命周期访问,从而启用 `t`、`getIntlayer` 等全局函数的使用。 | [intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/adonis-intlayer/intlayer.md) |
42
+
43
+ ### 函数
44
+
45
+ | 函数 | 描述 | 相关文档 |
46
+ | --------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
47
+ | `t` | 获取当前语言区域内容的翻译函数。在由 `intlayer` 中间件管理的请求生命周期内工作。使用 CLS (Async Local Storage) 访问请求上下文。 | [translation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/translation.md) |
48
+ | `getIntlayer` | 通过生成声明中的键检索字典,并返回指定语言区域的内容。`getDictionary` 的优化版本。使用 CLS 访问请求上下文。 | - |
49
+ | `getDictionary` | 处理字典对象并返回指定语言区域的内容。处理 `t()` 翻译、枚举、markdown、HTML 等。使用 CLS 访问请求上下文。 | - |
50
+ | `getLocale` | 使用 CLS 从请求上下文中检索当前语言区域。 | - |
@@ -0,0 +1,54 @@
1
+ ---
2
+ createdAt: 2026-01-30
3
+ updatedAt: 2026-01-30
4
+ title: intlayer AdonisJS 中间件文档 | adonis-intlayer
5
+ description: 了解如何为 adonis-intlayer 包使用 intlayer 中间件
6
+ keywords:
7
+ - intlayer
8
+ - adonisjs
9
+ - 中间件
10
+ - Intlayer
11
+ - 国际化
12
+ - 文档
13
+ slugs:
14
+ - doc
15
+ - packages
16
+ - adonis-intlayer
17
+ - intlayer
18
+ history:
19
+ - version: 8.0.0
20
+ date: 2026-01-30
21
+ changes: 初始文档
22
+ ---
23
+
24
+ # intlayer AdonisJS 中间件文档
25
+
26
+ 用于 AdonisJS 的 `intlayer` 中间件检测用户的语言区域,并通过请求上下文提供翻译函数。它还允许在请求流中使用全局翻译函数。
27
+
28
+ ## 用法
29
+
30
+ ```ts fileName="start/kernel.ts"
31
+ router.use([() => import("adonis-intlayer/middleware")]);
32
+ ```
33
+
34
+ ```ts fileName="start/routes.ts"
35
+ import router from "@adonisjs/core/services/router";
36
+ import { t } from "adonis-intlayer";
37
+
38
+ router.get("/", async () => {
39
+ return t({
40
+ en: "Hello",
41
+ fr: "Bonjour",
42
+ });
43
+ });
44
+ ```
45
+
46
+ ## 描述
47
+
48
+ 该中间件执行以下任务:
49
+
50
+ 1. **语言区域检测**:它分析请求(标头、cookie 等)以确定用户的首选语言区域。
51
+ 2. **上下文设置**:它使用语言区域信息填充请求上下文。
52
+ 3. **Async Local Storage**:它使用 `cls-hooked` 管理异步上下文,允许全局 Intlayer 函数(如 `t`、`getIntlayer` 和 `getDictionary`)访问请求特定的语言区域,而无需手动传递。
53
+
54
+ > 注意:要使用 cookie 进行语言区域检测,请确保在您的应用程序中配置并使用了 `@adonisjs/cookie`。
@@ -0,0 +1,149 @@
1
+ ---
2
+ createdAt: 2026-01-30
3
+ updatedAt: 2026-01-30
4
+ title: t 函数文档 | adonis-intlayer
5
+ description: 了解如何为 adonis-intlayer 包使用 t 函数
6
+ keywords:
7
+ - t
8
+ - 翻译
9
+ - Intlayer
10
+ - 国际化
11
+ - 文档
12
+ - AdonisJS
13
+ - JavaScript
14
+ slugs:
15
+ - doc
16
+ - packages
17
+ - adonis-intlayer
18
+ - t
19
+ history:
20
+ - version: 8.0.0
21
+ date: 2026-01-30
22
+ changes: 初始文档
23
+ ---
24
+
25
+ # 文档:`adonis-intlayer` 中的 `t` 函数
26
+
27
+ `adonis-intlayer` 包中的 `t` 函数是在 AdonisJS 应用程序中提供本地化响应的核心工具。它通过根据用户的首选语言动态选择内容,简化了国际化 (i18n) 过程。
28
+
29
+ ---
30
+
31
+ ## 概述
32
+
33
+ `t` 函数用于定义和检索一组给定语言的翻译。它根据客户端的请求设置(如 `Accept-Language` 标头)自动确定要返回的相应语言。如果首选语言不可用,它会优雅地回退到配置中指定的默认语言区域。
34
+
35
+ ---
36
+
37
+ ## 关键特性
38
+
39
+ - **动态本地化**:自动为客户端选择最合适的翻译。
40
+ - **回退到默认语言区域**:如果客户端的首选语言不可用,则回退到默认语言区域,确保用户体验的连续性。
41
+ - **异步上下文**:使用 Async Local Storage 在 AdonisJS 请求生命周期内无缝工作。
42
+ - **TypeScript 支持**:为您的翻译强制执行类型安全。
43
+
44
+ ---
45
+
46
+ ## 函数签名
47
+
48
+ ```typescript
49
+ t(translations: Record<string, any>): any;
50
+ ```
51
+
52
+ ### 参数
53
+
54
+ - `translations`:一个对象,其键为语言区域代码(例如 `en`、`fr`、`es`),值为相应的翻译内容。
55
+
56
+ ### 返回值
57
+
58
+ - 代表客户端首选语言的内容。
59
+
60
+ ---
61
+
62
+ ## 加载中间件
63
+
64
+ 为了确保 `t` 函数正常工作,您**必须**在 AdonisJS 应用程序中注册 `intlayer` 中间件。
65
+
66
+ ```typescript fileName="start/kernel.ts"
67
+ router.use([() => import("adonis-intlayer/middleware")]);
68
+ ```
69
+
70
+ ---
71
+
72
+ ## 使用示例
73
+
74
+ ### 基础示例
75
+
76
+ ```typescript fileName="start/routes.ts"
77
+ import router from "@adonisjs/core/services/router";
78
+ import { t } from "adonis-intlayer";
79
+
80
+ router.get("/", async () => {
81
+ return t({
82
+ en: "Welcome!",
83
+ fr: "Bienvenue !",
84
+ es: "¡Bienvenido!",
85
+ });
86
+ });
87
+ ```
88
+
89
+ ### 在控制器中使用
90
+
91
+ ```typescript fileName="app/controllers/example_controller.ts"
92
+ import type { HttpContext } from "@adonisjs/core/http";
93
+ import { t } from "adonis-intlayer";
94
+
95
+ export default class ExampleController {
96
+ async index({ response }: HttpContext) {
97
+ return response.send(
98
+ t({
99
+ en: "Hello from controller",
100
+ fr: "Bonjour 來自控制器",
101
+ })
102
+ );
103
+ }
104
+ }
105
+ ```
106
+
107
+ ---
108
+
109
+ ## 高级主题
110
+
111
+ ### 回退机制
112
+
113
+ 如果首选语言区域不可用,`t` 函数将回退到 `intlayer.config.ts` 中定义的默认语言区域。
114
+
115
+ ```typescript
116
+ import { Locales, type IntlayerConfig } from "intlayer";
117
+
118
+ const config: IntlayerConfig = {
119
+ internationalization: {
120
+ locales: [
121
+ Locales.ENGLISH,
122
+ Locales.RUSSIAN,
123
+ Locales.JAPANESE,
124
+ Locales.FRENCH,
125
+ Locales.KOREAN,
126
+ Locales.CHINESE,
127
+ Locales.SPANISH,
128
+ Locales.GERMAN,
129
+ Locales.ARABIC,
130
+ Locales.ITALIAN,
131
+ Locales.ENGLISH_UNITED_KINGDOM,
132
+ Locales.PORTUGUESE,
133
+ Locales.HINDI,
134
+ Locales.TURKISH,
135
+ Locales.POLISH,
136
+ Locales.INDONESIAN,
137
+ Locales.VIETNAMESE,
138
+ Locales.UKRAINIAN,
139
+ ],
140
+ defaultLocale: Locales.ENGLISH,
141
+ },
142
+ };
143
+
144
+ export default config;
145
+ ```
146
+
147
+ ### TypeScript 集成
148
+
149
+ 当与定义的字典一起使用时,`t` 函数是类型安全的。有关更多详细信息,请参阅 [TypeScript 文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
@@ -0,0 +1,59 @@
1
+ ---
2
+ createdAt: 2026-01-29
3
+ updatedAt: 2026-01-29
4
+ title: hono-intlayer 包文档
5
+ description: 用于 Intlayer 的 Hono 中间件,提供翻译函数和语言检测。
6
+ keywords:
7
+ - hono-intlayer
8
+ - hono
9
+ - 中间件
10
+ - 国际化
11
+ - i18n
12
+ slugs:
13
+ - doc
14
+ - packages
15
+ - hono-intlayer
16
+ - exports
17
+ history:
18
+ - version: 8.0.0
19
+ date: 2026-01-29
20
+ changes: 统一所有导出的文档
21
+ ---
22
+
23
+ # hono-intlayer 包
24
+
25
+ `hono-intlayer` 包为 Hono 应用程序提供了一个处理国际化的中间件。它检测用户的语言并填充上下文对象。
26
+
27
+ ## 安装
28
+
29
+ ```bash
30
+ npm install hono-intlayer
31
+ ```
32
+
33
+ ## 导出
34
+
35
+ ### 中间件
36
+
37
+ 导入:
38
+
39
+ ```tsx
40
+ import { intlayer } from "hono-intlayer";
41
+ ```
42
+
43
+ | 函数 | 描述 | 相关文档 |
44
+ | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
45
+ | `intlayer` | 将 Intlayer 集成到 Hono 应用程序中的 Hono 中间件。处理来自存储(cookie、标头)的语言检测,使用 `t`、`getIntlayer` 和 `getDictionary` 填充上下文,并设置 CLS 命名空间以便在请求生命周期内进行程序化访问。 | [intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/packages/hono-intlayer/intlayer.md) |
46
+
47
+ ### 函数
48
+
49
+ 导入:
50
+
51
+ ```tsx
52
+ import { t, getIntlayer, getDictionary } from "hono-intlayer";
53
+ ```
54
+
55
+ | 函数 | 描述 | 相关文档 |
56
+ | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
57
+ | `t` | 获取 Hono 中当前语言内容的全局翻译函数。利用 CLS(异步本地存储),必须在由 `intlayer` 中间件管理的请求上下文中使用。也可以通过上下文访问。 | [translation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/translation.md) |
58
+ | `getIntlayer` | 通过生成声明中的键检索字典,并返回指定语言的内容。`getDictionary` 的优化版本。使用 CLS 访问请求上下文。也可以通过上下文访问。 | - |
59
+ | `getDictionary` | 处理字典对象并返回指定语言的内容。处理 `t()` 翻译、枚举、markdown、HTML 等。使用 CLS 访问请求上下文。也可以通过上下文访问。 | - |
@@ -0,0 +1,60 @@
1
+ ---
2
+ createdAt: 2026-01-29
3
+ updatedAt: 2026-01-29
4
+ title: intlayer Hono 中间件文档 | hono-intlayer
5
+ description: 了解如何为 hono-intlayer 包使用 intlayer 中间件
6
+ keywords:
7
+ - intlayer
8
+ - hono
9
+ - 中间件
10
+ - Intlayer
11
+ - 国际化
12
+ - 文档
13
+ slugs:
14
+ - doc
15
+ - packages
16
+ - hono-intlayer
17
+ - intlayer
18
+ history:
19
+ - version: 8.0.0
20
+ date: 2026-01-29
21
+ changes: 初始化文档
22
+ ---
23
+
24
+ # intlayer Hono 中间件文档
25
+
26
+ 用于 Hono 的 `intlayer` 中间件可检测用户的语言并使用 Intlayer 函数填充上下文对象。它还允许在请求上下文中使用全局翻译函数。
27
+
28
+ ## 用法
29
+
30
+ ```ts
31
+ import { Hono } from "hono";
32
+ import { intlayer } from "hono-intlayer";
33
+
34
+ const app = new Hono();
35
+
36
+ app.use("*", intlayer());
37
+
38
+ app.get("/", async (c) => {
39
+ const t = c.get("t");
40
+ const content = t({
41
+ en: "Hello",
42
+ fr: "Bonjour",
43
+ zh: "你好",
44
+ });
45
+
46
+ return c.text(content);
47
+ });
48
+ ```
49
+
50
+ ## 说明
51
+
52
+ 该中间件执行以下任务:
53
+
54
+ 1. **语言检测**:分析请求(标头、cookie 等)以确定用户的首选语言。
55
+ 2. **上下文填充**:将 Intlayer 数据添加到 Hono 上下文,可通过 `c.get()` 访问。这包括:
56
+ - `locale`:检测到的语言。
57
+ - `t`:翻译函数。
58
+ - `getIntlayer`:检索字典的函数。
59
+ - `getDictionary`:处理字典对象的函数。
60
+ 3. **上下文管理**:使用 `cls-hooked` 管理异步上下文,允许全局 Intlayer 函数(`t`、`getIntlayer`、`getDictionary`)访问特定于请求的语言,而无需传递上下文对象。
@@ -0,0 +1,294 @@
1
+ ---
2
+ createdAt: 2024-12-02
3
+ updatedAt: 2025-06-29
4
+ title: t 函数文档 | hono-intlayer
5
+ description: 了解如何为 hono-intlayer 包使用 t 函数
6
+ keywords:
7
+ - t
8
+ - 翻译
9
+ - Intlayer
10
+ - 国际化
11
+ - 文档
12
+ - Hono
13
+ - JavaScript
14
+ slugs:
15
+ - doc
16
+ - packages
17
+ - hono-intlayer
18
+ - t
19
+ history:
20
+ - version: 5.5.10
21
+ date: 2025-06-29
22
+ changes: 初始化历史记录
23
+ ---
24
+
25
+ # 文档:`hono-intlayer` 中的 `t` 函数
26
+
27
+ `hono-intlayer` 包中的 `t` 函数是为您在 Hono 应用程序中提供本地化响应的核心工具。它通过根据用户的首选语言动态选择内容来简化国际化 (i18n)。
28
+
29
+ ---
30
+
31
+ ## 概述
32
+
33
+ `t` 函数用于定义和检索一组给定语言的翻译。它根据客户端的请求设置(如 `Accept-Language` 标头)自动确定要返回的适当语言。如果首选语言不可用,它会优雅地回退到配置中指定的默认语言。
34
+
35
+ ---
36
+
37
+ ## 核心特性
38
+
39
+ - **动态本地化**:自动为客户端选择最合适的翻译。
40
+ - **回退到默认语言**:如果客户端的首选语言不可用,则回退到默认语言,确保用户体验的连续性。
41
+ - **轻量且快速**:专为高性能应用程序设计,确保最小的开销。
42
+ - **严格模式支持**:强制严格遵守声明的语言,以获得可靠的行为。
43
+
44
+ ---
45
+
46
+ ## 函数签名
47
+
48
+ ```typescript
49
+ t(translations: Record<string, string>): string;
50
+ ```
51
+
52
+ ### 参数
53
+
54
+ - `translations`:一个对象,其中的键是语言代码(例如 `en`、`fr`、`zh`),值是相应的翻译字符串。
55
+
56
+ ### 返回值
57
+
58
+ - 一个表示客户端首选语言内容的字符串。
59
+
60
+ ---
61
+
62
+ ## 加载国际化请求处理器
63
+
64
+ 为了确保 `hono-intlayer` 提供的国际化功能正常工作,您**必须**在 Hono 应用程序的开头加载国际化中间件。这会启用 `t` 函数并确保正确处理语言检测和翻译。
65
+
66
+ 将 `app.use("*", intlayer())` 中间件放置在应用程序的**任何路由之前**,以确保所有路由都受益于国际化:
67
+
68
+ ```typescript {6} fileName="src/index.ts" codeFormat="typescript"
69
+ import { Hono } from "hono";
70
+ import { intlayer } from "hono-intlayer";
71
+
72
+ const app = new Hono();
73
+
74
+ // 加载国际化请求处理器
75
+ app.use("*", intlayer());
76
+
77
+ // 在加载中间件后定义路由
78
+ app.get("/", (c) => {
79
+ return c.text(
80
+ t({
81
+ en: "Hello, World!",
82
+ fr: "Bonjour le monde!",
83
+ es: "¡Hola, Mundo!",
84
+ zh: "你好,世界!",
85
+ })
86
+ );
87
+ });
88
+ ```
89
+
90
+ ```javascript {6} fileName="src/index.mjs" codeFormat="esm"
91
+ import { Hono } from "hono";
92
+ import { intlayer } from "hono-intlayer";
93
+
94
+ const app = new Hono();
95
+
96
+ // 加载国际化请求处理器
97
+ app.use("*", intlayer());
98
+
99
+ // 在加载中间件后定义路由
100
+ app.get("/", (c) => {
101
+ return c.text(
102
+ t({
103
+ en: "Hello, World!",
104
+ fr: "Bonjour le monde!",
105
+ es: "¡Hola, Mundo!",
106
+ zh: "你好,世界!",
107
+ })
108
+ );
109
+ });
110
+ ```
111
+
112
+ ```javascript {6} fileName="src/index.cjs" codeFormat="commonjs"
113
+ const { Hono } = require("hono");
114
+ const { intlayer, t } = require("hono-intlayer");
115
+
116
+ const app = new Hono();
117
+
118
+ // 加载国际化请求处理器
119
+ app.use("*", intlayer());
120
+
121
+ // 在加载中间件后定义路由
122
+ app.get("/", (c) => {
123
+ return c.text(
124
+ t({
125
+ en: "Hello, World!",
126
+ fr: "Bonjour le monde!",
127
+ es: "¡Hola, Mundo!",
128
+ zh: "你好,世界!",
129
+ })
130
+ );
131
+ });
132
+ ```
133
+
134
+ ### 为什么这是必需的
135
+
136
+ - **语言检测**:`intlayer` 中间件处理传入请求,根据标头、cookie 或其他配置方法检测用户的首选语言。
137
+ - **翻译上下文**:设置 `t` 函数正常运行所需的上下文,确保以正确的语言返回翻译。
138
+ - **防止错误**:如果没有此中间件,使用 `t` 函数将导致运行时错误,因为必要的语言信息将不可用。
139
+
140
+ ---
141
+
142
+ ## 使用示例
143
+
144
+ ### 基础示例
145
+
146
+ 提供不同语言的本地化内容:
147
+
148
+ ```typescript fileName="src/index.ts" codeFormat="typescript"
149
+ app.get("/", (c) => {
150
+ return c.text(
151
+ t({
152
+ en: "Welcome!",
153
+ fr: "Bienvenue!",
154
+ zh: "欢迎!",
155
+ })
156
+ );
157
+ });
158
+ ```
159
+
160
+ ```javascript fileName="src/index.mjs" codeFormat="esm"
161
+ app.get("/", (c) => {
162
+ return c.text(
163
+ t({
164
+ en: "Welcome!",
165
+ fr: "Bienvenue!",
166
+ zh: "欢迎!",
167
+ })
168
+ );
169
+ });
170
+ ```
171
+
172
+ ```javascript fileName="src/index.cjs" codeFormat="commonjs"
173
+ app.get("/", (c) => {
174
+ return c.text(
175
+ t({
176
+ en: "Welcome!",
177
+ fr: "Bienvenue!",
178
+ zh: "欢迎!",
179
+ })
180
+ );
181
+ });
182
+ ```
183
+
184
+ **客户端请求:**
185
+
186
+ - `Accept-Language: fr` 的客户端将收到 `Bienvenue!`。
187
+ - `Accept-Language: zh` 的客户端将收到 `欢迎!`。
188
+ - `Accept-Language: de` 的客户端将收到 `Welcome!`(默认语言)。
189
+
190
+ ### 处理错误
191
+
192
+ 提供多种语言的错误消息:
193
+
194
+ ```typescript fileName="src/index.ts" codeFormat="typescript"
195
+ app.get("/error", (c) => {
196
+ return c.text(
197
+ t({
198
+ en: "An unexpected error occurred.",
199
+ fr: "Une erreur inattendue s'est produite.",
200
+ zh: "发生意外错误。",
201
+ }),
202
+ 500
203
+ );
204
+ });
205
+ ```
206
+
207
+ ---
208
+
209
+ ### 使用语言变体
210
+
211
+ 为特定语言变体指定翻译:
212
+
213
+ ```typescript fileName="src/index.ts" codeFormat="typescript"
214
+ app.get("/greet", (c) => {
215
+ return c.text(
216
+ t({
217
+ en: "Hello!",
218
+ "en-GB": "Hello, mate!",
219
+ fr: "Bonjour!",
220
+ zh: "你好!",
221
+ "zh-CN": "你好!",
222
+ "zh-TW": "你好!",
223
+ })
224
+ );
225
+ });
226
+ ```
227
+
228
+ ---
229
+
230
+ ## 进阶主题
231
+
232
+ ### 回退机制
233
+
234
+ 如果首选语言不可用,`t` 函数将回退到配置中定义的默认语言:
235
+
236
+ ```typescript {5-6} fileName="intlayer.config.ts" codeFormat="typescript"
237
+ import { Locales, type IntlayerConfig } from "intlayer";
238
+
239
+ const config = {
240
+ internationalization: {
241
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.CHINESE],
242
+ defaultLocale: Locales.ENGLISH,
243
+ },
244
+ } satisfies IntlayerConfig;
245
+
246
+ export default config;
247
+ ```
248
+
249
+ ---
250
+
251
+ ### 严格模式强制执行
252
+
253
+ 配置 `t` 函数以强制严格遵守声明的语言:
254
+
255
+ | 模式 | 行为 |
256
+ | ----------- | ---------------------------------------------------- |
257
+ | `strict` | 所有声明的语言必须提供翻译。缺失语言将抛出错误。 |
258
+ | `inclusive` | 声明的语言必须有翻译。缺失语言会触发警告但会被接受。 |
259
+ | `loose` | 接受任何现有的语言,即使未声明。 |
260
+
261
+ ---
262
+
263
+ ### TypeScript 集成
264
+
265
+ 使用 TypeScript 时,`t` 函数是类型安全的。定义一个类型安全的翻译对象:
266
+
267
+ ```typescript fileName="src/index.ts" codeFormat="typescript"
268
+ import { type LanguageContent } from "hono-intlayer";
269
+
270
+ const translations: LanguageContent<string> = {
271
+ en: "Good morning!",
272
+ fr: "Bonjour!",
273
+ zh: "早上好!",
274
+ };
275
+
276
+ app.get("/morning", (c) => {
277
+ return c.text(t(translations));
278
+ });
279
+ ```
280
+
281
+ ---
282
+
283
+ ### 常见错误与排查
284
+
285
+ | 问题 | 原因 | 解决方案 |
286
+ | ---------------- | ------------------------------------------ | ------------------------------------------------- |
287
+ | `t` 函数不起作用 | 未加载中间件 | 确保在路由之前添加了 `app.use("*", intlayer())`。 |
288
+ | 缺失翻译错误 | 在未提供所有语言翻译的情况下启用了严格模式 | 提供所有必需的翻译。 |
289
+
290
+ ---
291
+
292
+ ## 结论
293
+
294
+ `t` 函数是后端国际化的强大工具。通过有效地使用它,您可以为全球受众创建一个更具包容性和用户友好的应用程序。有关进阶用法和详细配置选项,请参阅[文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md)。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intlayer/docs",
3
- "version": "8.0.0",
3
+ "version": "8.0.1-canary.0",
4
4
  "private": false,
5
5
  "description": "Intlayer documentation",
6
6
  "keywords": [
@@ -73,13 +73,13 @@
73
73
  "watch": "webpack --config ./webpack.config.ts --watch"
74
74
  },
75
75
  "dependencies": {
76
- "@intlayer/config": "8.0.0",
77
- "@intlayer/core": "8.0.0",
78
- "@intlayer/types": "8.0.0"
76
+ "@intlayer/config": "8.0.1-canary.0",
77
+ "@intlayer/core": "8.0.1-canary.0",
78
+ "@intlayer/types": "8.0.1-canary.0"
79
79
  },
80
80
  "devDependencies": {
81
- "@intlayer/api": "8.0.0",
82
- "@intlayer/cli": "8.0.0",
81
+ "@intlayer/api": "8.0.1-canary.0",
82
+ "@intlayer/cli": "8.0.1-canary.0",
83
83
  "@types/node": "25.0.10",
84
84
  "@utils/ts-config": "1.0.4",
85
85
  "@utils/ts-config-types": "1.0.4",