@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.
- package/dist/cjs/generated/docs.entry.cjs +160 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +160 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +8 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/intlayer_with_adonisjs.md +394 -0
- package/docs/ar/intlayer_with_hono.md +223 -0
- package/docs/ar/intlayer_with_vite+preact.md +317 -675
- package/docs/ar/packages/adonis-intlayer/exports.md +50 -0
- package/docs/ar/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/ar/packages/adonis-intlayer/t.md +149 -0
- package/docs/ar/packages/hono-intlayer/exports.md +59 -0
- package/docs/ar/packages/hono-intlayer/intlayer.md +60 -0
- package/docs/ar/packages/hono-intlayer/t.md +268 -0
- package/docs/de/intlayer_with_adonisjs.md +392 -0
- package/docs/de/intlayer_with_hono.md +418 -0
- package/docs/de/intlayer_with_vite+preact.md +272 -632
- package/docs/de/packages/adonis-intlayer/exports.md +50 -0
- package/docs/de/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/de/packages/adonis-intlayer/t.md +149 -0
- package/docs/de/packages/hono-intlayer/exports.md +59 -0
- package/docs/de/packages/hono-intlayer/intlayer.md +59 -0
- package/docs/de/packages/hono-intlayer/t.md +316 -0
- package/docs/en/index.md +8 -0
- package/docs/en/intlayer_with_adonisjs.md +388 -0
- package/docs/en/intlayer_with_hono.md +418 -0
- package/docs/en/intlayer_with_vite+preact.md +171 -556
- package/docs/en/introduction.md +1 -0
- package/docs/en/packages/adonis-intlayer/exports.md +50 -0
- package/docs/en/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/en/packages/adonis-intlayer/t.md +149 -0
- package/docs/en/packages/hono-intlayer/exports.md +59 -0
- package/docs/en/packages/hono-intlayer/intlayer.md +59 -0
- package/docs/en/packages/hono-intlayer/t.md +316 -0
- package/docs/en-GB/intlayer_with_adonisjs.md +394 -0
- package/docs/en-GB/intlayer_with_hono.md +418 -0
- package/docs/en-GB/intlayer_with_vite+preact.md +236 -583
- package/docs/en-GB/packages/adonis-intlayer/exports.md +50 -0
- package/docs/en-GB/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/en-GB/packages/adonis-intlayer/t.md +149 -0
- package/docs/en-GB/packages/hono-intlayer/exports.md +59 -0
- package/docs/en-GB/packages/hono-intlayer/intlayer.md +59 -0
- package/docs/en-GB/packages/hono-intlayer/t.md +316 -0
- package/docs/es/intlayer_with_adonisjs.md +388 -0
- package/docs/es/intlayer_with_hono.md +418 -0
- package/docs/es/intlayer_with_vite+preact.md +286 -650
- package/docs/es/packages/adonis-intlayer/exports.md +50 -0
- package/docs/es/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/es/packages/adonis-intlayer/t.md +149 -0
- package/docs/es/packages/hono-intlayer/exports.md +59 -0
- package/docs/es/packages/hono-intlayer/intlayer.md +59 -0
- package/docs/es/packages/hono-intlayer/t.md +316 -0
- package/docs/fr/intlayer_with_adonisjs.md +388 -0
- package/docs/fr/intlayer_with_hono.md +418 -0
- package/docs/fr/intlayer_with_vite+preact.md +274 -614
- package/docs/fr/packages/adonis-intlayer/exports.md +50 -0
- package/docs/fr/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/fr/packages/adonis-intlayer/t.md +149 -0
- package/docs/fr/packages/hono-intlayer/exports.md +59 -0
- package/docs/fr/packages/hono-intlayer/intlayer.md +59 -0
- package/docs/fr/packages/hono-intlayer/t.md +316 -0
- package/docs/hi/intlayer_with_adonisjs.md +394 -0
- package/docs/hi/intlayer_with_hono.md +227 -0
- package/docs/hi/intlayer_with_vite+preact.md +304 -680
- package/docs/hi/packages/adonis-intlayer/exports.md +50 -0
- package/docs/hi/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/hi/packages/adonis-intlayer/t.md +149 -0
- package/docs/hi/packages/hono-intlayer/exports.md +59 -0
- package/docs/hi/packages/hono-intlayer/intlayer.md +60 -0
- package/docs/hi/packages/hono-intlayer/t.md +268 -0
- package/docs/id/intlayer_with_adonisjs.md +394 -0
- package/docs/id/intlayer_with_hono.md +227 -0
- package/docs/id/intlayer_with_vite+preact.md +297 -697
- package/docs/id/packages/adonis-intlayer/exports.md +50 -0
- package/docs/id/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/id/packages/adonis-intlayer/t.md +149 -0
- package/docs/id/packages/hono-intlayer/exports.md +59 -0
- package/docs/id/packages/hono-intlayer/intlayer.md +60 -0
- package/docs/id/packages/hono-intlayer/t.md +268 -0
- package/docs/it/intlayer_with_adonisjs.md +394 -0
- package/docs/it/intlayer_with_hono.md +227 -0
- package/docs/it/intlayer_with_vite+preact.md +290 -659
- package/docs/it/packages/adonis-intlayer/exports.md +50 -0
- package/docs/it/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/it/packages/adonis-intlayer/t.md +149 -0
- package/docs/it/packages/hono-intlayer/exports.md +59 -0
- package/docs/it/packages/hono-intlayer/intlayer.md +60 -0
- package/docs/it/packages/hono-intlayer/t.md +268 -0
- package/docs/ja/intlayer_with_adonisjs.md +394 -0
- package/docs/ja/intlayer_with_hono.md +227 -0
- package/docs/ja/intlayer_with_vite+preact.md +307 -662
- package/docs/ja/packages/adonis-intlayer/exports.md +50 -0
- package/docs/ja/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/ja/packages/adonis-intlayer/t.md +149 -0
- package/docs/ja/packages/hono-intlayer/exports.md +59 -0
- package/docs/ja/packages/hono-intlayer/intlayer.md +60 -0
- package/docs/ja/packages/hono-intlayer/t.md +268 -0
- package/docs/ko/intlayer_with_adonisjs.md +394 -0
- package/docs/ko/intlayer_with_hono.md +227 -0
- package/docs/ko/intlayer_with_vite+preact.md +303 -703
- package/docs/ko/packages/adonis-intlayer/exports.md +50 -0
- package/docs/ko/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/ko/packages/adonis-intlayer/t.md +149 -0
- package/docs/ko/packages/hono-intlayer/exports.md +59 -0
- package/docs/ko/packages/hono-intlayer/intlayer.md +60 -0
- package/docs/ko/packages/hono-intlayer/t.md +268 -0
- package/docs/pl/intlayer_with_adonisjs.md +394 -0
- package/docs/pl/intlayer_with_hono.md +227 -0
- package/docs/pl/intlayer_with_vite+preact.md +289 -690
- package/docs/pl/packages/adonis-intlayer/exports.md +50 -0
- package/docs/pl/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/pl/packages/adonis-intlayer/t.md +149 -0
- package/docs/pl/packages/hono-intlayer/exports.md +59 -0
- package/docs/pl/packages/hono-intlayer/intlayer.md +60 -0
- package/docs/pl/packages/hono-intlayer/t.md +268 -0
- package/docs/pt/intlayer_with_adonisjs.md +394 -0
- package/docs/pt/intlayer_with_hono.md +227 -0
- package/docs/pt/intlayer_with_vite+preact.md +275 -637
- package/docs/pt/packages/adonis-intlayer/exports.md +50 -0
- package/docs/pt/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/pt/packages/adonis-intlayer/t.md +149 -0
- package/docs/pt/packages/hono-intlayer/exports.md +59 -0
- package/docs/pt/packages/hono-intlayer/intlayer.md +60 -0
- package/docs/pt/packages/hono-intlayer/t.md +268 -0
- package/docs/ru/intlayer_with_adonisjs.md +393 -0
- package/docs/ru/intlayer_with_hono.md +223 -0
- package/docs/ru/intlayer_with_vite+preact.md +319 -683
- package/docs/ru/packages/adonis-intlayer/exports.md +50 -0
- package/docs/ru/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/ru/packages/adonis-intlayer/t.md +149 -0
- package/docs/ru/packages/hono-intlayer/exports.md +59 -0
- package/docs/ru/packages/hono-intlayer/intlayer.md +60 -0
- package/docs/ru/packages/hono-intlayer/t.md +268 -0
- package/docs/tr/intlayer_with_adonisjs.md +394 -0
- package/docs/tr/intlayer_with_hono.md +227 -0
- package/docs/tr/intlayer_with_vite+preact.md +332 -665
- package/docs/tr/packages/adonis-intlayer/exports.md +50 -0
- package/docs/tr/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/tr/packages/adonis-intlayer/t.md +149 -0
- package/docs/tr/packages/hono-intlayer/exports.md +59 -0
- package/docs/tr/packages/hono-intlayer/intlayer.md +60 -0
- package/docs/tr/packages/hono-intlayer/t.md +268 -0
- package/docs/uk/intlayer_with_adonisjs.md +394 -0
- package/docs/uk/intlayer_with_hono.md +227 -0
- package/docs/uk/intlayer_with_vite+preact.md +228 -626
- package/docs/uk/packages/adonis-intlayer/exports.md +50 -0
- package/docs/uk/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/uk/packages/adonis-intlayer/t.md +149 -0
- package/docs/uk/packages/hono-intlayer/exports.md +59 -0
- package/docs/uk/packages/hono-intlayer/intlayer.md +60 -0
- package/docs/uk/packages/hono-intlayer/t.md +268 -0
- package/docs/vi/intlayer_with_adonisjs.md +394 -0
- package/docs/vi/intlayer_with_hono.md +227 -0
- package/docs/vi/intlayer_with_vite+preact.md +294 -679
- package/docs/vi/packages/adonis-intlayer/exports.md +50 -0
- package/docs/vi/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/vi/packages/adonis-intlayer/t.md +149 -0
- package/docs/vi/packages/hono-intlayer/exports.md +59 -0
- package/docs/vi/packages/hono-intlayer/intlayer.md +60 -0
- package/docs/vi/packages/hono-intlayer/t.md +268 -0
- package/docs/zh/intlayer_with_adonisjs.md +393 -0
- package/docs/zh/intlayer_with_hono.md +418 -0
- package/docs/zh/intlayer_with_vite+preact.md +338 -743
- package/docs/zh/packages/adonis-intlayer/exports.md +50 -0
- package/docs/zh/packages/adonis-intlayer/intlayer.md +54 -0
- package/docs/zh/packages/adonis-intlayer/t.md +149 -0
- package/docs/zh/packages/hono-intlayer/exports.md +59 -0
- package/docs/zh/packages/hono-intlayer/intlayer.md +60 -0
- package/docs/zh/packages/hono-intlayer/t.md +294 -0
- package/package.json +6 -6
- 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: Промежуточное ПО AdonisJS для Intlayer, предоставляющее функции перевода и обнаружения локали.
|
|
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` предоставляет промежуточное ПО (middleware) для приложений AdonisJS для обработки интернационализации. Он обнаруживает локаль пользователя и предоставляет функции перевода.
|
|
26
|
+
|
|
27
|
+
## Установка
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install adonis-intlayer
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Экспорт
|
|
34
|
+
|
|
35
|
+
### Промежуточное ПО (Middleware)
|
|
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/ru/packages/adonis-intlayer/intlayer.md) |
|
|
42
|
+
|
|
43
|
+
### Функции
|
|
44
|
+
|
|
45
|
+
| Функция | Описание | Связанная документация |
|
|
46
|
+
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
47
|
+
| `t` | Функция перевода, которая извлекает контент для текущей локали. Работает в рамках жизненного цикла запроса, управляемого промежуточным ПО `intlayer`. Использует CLS (Async Local Storage) для доступа к контексту запроса. | [перевод](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/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: Документация промежуточного ПО AdonisJS Intlayer | adonis-intlayer
|
|
5
|
+
description: Узнайте, как использовать промежуточное ПО intlayer для пакета adonis-intlayer
|
|
6
|
+
keywords:
|
|
7
|
+
- intlayer
|
|
8
|
+
- adonisjs
|
|
9
|
+
- middleware
|
|
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
|
+
# Документация промежуточного ПО AdonisJS Intlayer
|
|
25
|
+
|
|
26
|
+
Промежуточное ПО `intlayer` для AdonisJS обнаруживает локаль пользователя и предоставляет функции перевода через контекст запроса. Оно также позволяет использовать глобальные функции перевода в рамках потока запроса.
|
|
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. **Обнаружение локали**: Оно анализирует запрос (заголовки, куки и т. д.) для определения предпочтительной локали пользователя.
|
|
51
|
+
2. **Настройка контекста**: Оно заполняет контекст запроса информацией о локали.
|
|
52
|
+
3. **Async Local Storage**: Оно использует `cls-hooked` для управления асинхронным контекстом, позволяя глобальным функциям Intlayer, таким как `t`, `getIntlayer` и `getDictionary`, получать доступ к локали конкретного запроса без необходимости передавать её вручную.
|
|
53
|
+
|
|
54
|
+
> Примечание: Для использования куки при обнаружении локали убедитесь, что `@adonisjs/cookie` настроен и используется в вашем приложении.
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-30
|
|
3
|
+
updatedAt: 2026-01-30
|
|
4
|
+
title: Документация функции t | adonis-intlayer
|
|
5
|
+
description: Узнайте, как использовать функцию t для пакета adonis-intlayer
|
|
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
|
+
# Документация: Функция `t` в `adonis-intlayer`
|
|
26
|
+
|
|
27
|
+
Функция `t` в пакете `adonis-intlayer` является основным инструментом для предоставления локализованных ответов в вашем приложении AdonisJS. Она упрощает интернационализацию (i18n), динамически выбирая контент на основе предпочтительного языка пользователя.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Обзор
|
|
32
|
+
|
|
33
|
+
Функция `t` используется для определения и получения переводов для заданного набора языков. Она автоматически определяет соответствующий язык для возврата на основе настроек запроса клиента, таких как заголовок `Accept-Language`. Если предпочтительный язык недоступен, она плавно переключается на локаль по умолчанию, указанную в вашей конфигурации.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Ключевые особенности
|
|
38
|
+
|
|
39
|
+
- **Динамическая локализация**: Автоматически выбирает наиболее подходящий перевод для клиента.
|
|
40
|
+
- **Резервная локаль (Fallback)**: Возвращается к локали по умолчанию, если предпочтительный язык клиента недоступен, обеспечивая непрерывность пользовательского опыта.
|
|
41
|
+
- **Асинхронный контекст**: Беспрепятственно работает в рамках жизненного цикла запроса AdonisJS с использованием Async Local Storage.
|
|
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
|
+
## Загрузка промежуточного ПО (Middleware)
|
|
63
|
+
|
|
64
|
+
Чтобы функция `t` работала правильно, вы **должны** зарегистрировать промежуточное ПО `intlayer` в вашем приложении AdonisJS.
|
|
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
|
+
### Механизм Fallback
|
|
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/ru/configuration.md).
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-29
|
|
3
|
+
updatedAt: 2026-01-29
|
|
4
|
+
title: Документация пакета hono-intlayer
|
|
5
|
+
description: Промежуточное ПО Hono для Intlayer, предоставляющее функции перевода и определение локали.
|
|
6
|
+
keywords:
|
|
7
|
+
- hono-intlayer
|
|
8
|
+
- hono
|
|
9
|
+
- middleware
|
|
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` предоставляет промежуточное ПО (middleware) для приложений Hono для обработки интернационализации. Он определяет локаль пользователя и заполняет объект контекста.
|
|
26
|
+
|
|
27
|
+
## Установка
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install hono-intlayer
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Экспорты
|
|
34
|
+
|
|
35
|
+
### Промежуточное ПО (Middleware)
|
|
36
|
+
|
|
37
|
+
Импорт:
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
import { intlayer } from "hono-intlayer";
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
| Функция | Описание | Ссылка на док. |
|
|
44
|
+
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
|
|
45
|
+
| `intlayer` | Промежуточное ПО Hono, которое интегрирует Intlayer в ваше приложение Hono. Обрабатывает определение локали из хранилища (cookies, заголовки), заполняет контекст функциями `t`, `getIntlayer` и `getDictionary`, а также настраивает пространство имен CLS для программного доступа в течение жизненного цикла запроса. | [intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/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 (Async Local Storage) и должна использоваться в контексте запроса, управляемом промежуточным ПО `intlayer`. Также доступна через контекст. | [translation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/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: Узнайте, как использовать промежуточное ПО intlayer для пакета hono-intlayer
|
|
6
|
+
keywords:
|
|
7
|
+
- intlayer
|
|
8
|
+
- hono
|
|
9
|
+
- middleware
|
|
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
|
+
Промежуточное ПО `intlayer` для Hono определяет локаль пользователя и заполняет объект контекста функциями 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
|
+
ru: "Привет",
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
return c.text(content);
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Описание
|
|
51
|
+
|
|
52
|
+
Промежуточное ПО выполняет следующие задачи:
|
|
53
|
+
|
|
54
|
+
1. **Определение локали**: анализирует запрос (заголовки, cookies и т. д.) для определения предпочтительной локали пользователя.
|
|
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,268 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2024-12-02
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Документация функции t | hono-intlayer
|
|
5
|
+
description: Узнайте, как использовать функцию t в пакете hono-intlayer
|
|
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
|
+
# Документация: функция `t` в `hono-intlayer`
|
|
26
|
+
|
|
27
|
+
Функция `t` в пакете `hono-intlayer` является основным инструментом для предоставления локализованных ответов в вашем приложении 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`, `ru`), а значения — соответствующие переведенные строки.
|
|
55
|
+
|
|
56
|
+
### Возвращаемое значение
|
|
57
|
+
|
|
58
|
+
- Строка, представляющая контент на предпочтительном языке клиента.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Загрузка обработчика запросов интернационализации
|
|
63
|
+
|
|
64
|
+
Чтобы обеспечить корректную работу функций интернационализации, предоставляемых `hono-intlayer`, вы **должны** загрузить промежуточное ПО (middleware) интернационализации в начале вашего приложения 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
|
+
ru: "Привет, мир!",
|
|
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
|
+
ru: "Привет, мир!",
|
|
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
|
+
ru: "Привет, мир!",
|
|
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
|
+
ru: "Добро пожаловать!",
|
|
155
|
+
})
|
|
156
|
+
);
|
|
157
|
+
});
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Запросы клиентов:**
|
|
161
|
+
|
|
162
|
+
- Клиент с `Accept-Language: fr` получит `Bienvenue!`.
|
|
163
|
+
- Клиент с `Accept-Language: ru` получит `Добро пожаловать!`.
|
|
164
|
+
- Клиент с `Accept-Language: de` получит `Welcome!` (локаль по умолчанию).
|
|
165
|
+
|
|
166
|
+
### Обработка ошибок
|
|
167
|
+
|
|
168
|
+
Предоставление сообщений об ошибках на нескольких языках:
|
|
169
|
+
|
|
170
|
+
```typescript fileName="src/index.ts" codeFormat="typescript"
|
|
171
|
+
app.get("/error", (c) => {
|
|
172
|
+
return c.text(
|
|
173
|
+
t({
|
|
174
|
+
en: "An unexpected error occurred.",
|
|
175
|
+
fr: "Une erreur inattendue s'est produite.",
|
|
176
|
+
ru: "Произошла непредвиденная ошибка.",
|
|
177
|
+
}),
|
|
178
|
+
500
|
|
179
|
+
);
|
|
180
|
+
});
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
### Использование вариантов локали
|
|
186
|
+
|
|
187
|
+
Укажите переводы для конкретных вариантов локалей:
|
|
188
|
+
|
|
189
|
+
```typescript fileName="src/index.ts" codeFormat="typescript"
|
|
190
|
+
app.get("/greet", (c) => {
|
|
191
|
+
return c.text(
|
|
192
|
+
t({
|
|
193
|
+
en: "Hello!",
|
|
194
|
+
"en-GB": "Hello, mate!",
|
|
195
|
+
fr: "Bonjour!",
|
|
196
|
+
ru: "Привет!",
|
|
197
|
+
})
|
|
198
|
+
);
|
|
199
|
+
});
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Расширенные темы
|
|
205
|
+
|
|
206
|
+
### Механизм возврата (Fallback)
|
|
207
|
+
|
|
208
|
+
Если предпочтительная локаль недоступна, функция `t` вернется к локали по умолчанию, определенной в конфигурации:
|
|
209
|
+
|
|
210
|
+
```typescript {5-6} fileName="intlayer.config.ts" codeFormat="typescript"
|
|
211
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
212
|
+
|
|
213
|
+
const config = {
|
|
214
|
+
internationalization: {
|
|
215
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.RUSSIAN],
|
|
216
|
+
defaultLocale: Locales.ENGLISH,
|
|
217
|
+
},
|
|
218
|
+
} satisfies IntlayerConfig;
|
|
219
|
+
|
|
220
|
+
export default config;
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
### Принудительное использование строгого режима
|
|
226
|
+
|
|
227
|
+
Настройте функцию `t` для обеспечения строгого соблюдения объявленных локалей:
|
|
228
|
+
|
|
229
|
+
| Режим | Поведение |
|
|
230
|
+
| ----------- | -------------------------------------------------------------------------------------------------------------- |
|
|
231
|
+
| `strict` | Для всех объявленных локалей должны быть предоставлены переводы. Отсутствие перевода вызовет ошибку. |
|
|
232
|
+
| `inclusive` | Объявленные локали должны иметь переводы. Отсутствие перевода вызывает предупреждение, но контент принимается. |
|
|
233
|
+
| `loose` | Принимается любая существующая локаль, даже если она не объявлена. |
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
### Интеграция с TypeScript
|
|
238
|
+
|
|
239
|
+
Функция `t` является типобезопасной при использовании с TypeScript. Определите типобезопасный объект переводов:
|
|
240
|
+
|
|
241
|
+
```typescript fileName="src/index.ts" codeFormat="typescript"
|
|
242
|
+
import { type LanguageContent } from "hono-intlayer";
|
|
243
|
+
|
|
244
|
+
const translations: LanguageContent<string> = {
|
|
245
|
+
en: "Good morning!",
|
|
246
|
+
fr: "Bonjour!",
|
|
247
|
+
ru: "Доброе утро!",
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
app.get("/morning", (c) => {
|
|
251
|
+
return c.text(t(translations));
|
|
252
|
+
});
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
### Общие ошибки и устранение неполадок
|
|
258
|
+
|
|
259
|
+
| Проблема | Причина | Решение |
|
|
260
|
+
| -------------------------- | -------------------------------------- | --------------------------------------------------------------------- |
|
|
261
|
+
| Функция `t` не работает | Промежуточное ПО не загружено | Убедитесь, что `app.use("*", intlayer())` добавлено перед маршрутами. |
|
|
262
|
+
| Ошибка отсутствия перевода | Включен строгий режим без всех локалей | Предоставьте все необходимые переводы. |
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Заключение
|
|
267
|
+
|
|
268
|
+
Функция `t` — мощный инструмент для интернационализации бэкенда. Эффективно используя ее, вы можете создать более инклюзивное и удобное приложение для глобальной аудитории. Для получения информации о расширенном использовании и детальных параметрах конфигурации обратитесь к [документации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md).
|