@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.
- 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` надає проміжне ПЗ для додатків 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/uk/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/uk/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: Дізнайтеся, як використовувати проміжне ПЗ 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
|
+
# Документація проміжного ПЗ intlayer для AdonisJS
|
|
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/uk/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/uk/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`. Також доступна через контекст. | [переклад](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/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
|
+
uk: "Привіт",
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
return c.text(content);
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Опис
|
|
51
|
+
|
|
52
|
+
Проміжне ПЗ виконує такі завдання:
|
|
53
|
+
|
|
54
|
+
1. **Виявлення локалі**: аналізує запит (заголовки, куки тощо) для визначення бажаної локалі користувача.
|
|
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`, `uk`), а значення — відповідні перекладені рядки.
|
|
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
|
+
uk: "Привіт, світе!",
|
|
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
|
+
uk: "Привіт, світе!",
|
|
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
|
+
uk: "Привіт, світе!",
|
|
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
|
+
uk: "Ласкаво просимо!",
|
|
155
|
+
})
|
|
156
|
+
);
|
|
157
|
+
});
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Запити клієнтів:**
|
|
161
|
+
|
|
162
|
+
- Клієнт із `Accept-Language: fr` отримає `Bienvenue!`.
|
|
163
|
+
- Клієнт із `Accept-Language: uk` отримає `Ласкаво просимо!`.
|
|
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
|
+
uk: "Сталася неочікувана помилка.",
|
|
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
|
+
uk: "Привіт!",
|
|
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.UKRAINIAN],
|
|
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
|
+
uk: "Доброго ранку!",
|
|
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).
|