@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: Dokumentasi Paket adonis-intlayer
|
|
5
|
+
description: Middleware AdonisJS untuk Intlayer, menyediakan fungsi terjemahan dan deteksi locale.
|
|
6
|
+
keywords:
|
|
7
|
+
- adonis-intlayer
|
|
8
|
+
- adonisjs
|
|
9
|
+
- middleware
|
|
10
|
+
- internasionalisasi
|
|
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: Dokumentasi awal
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Paket adonis-intlayer
|
|
24
|
+
|
|
25
|
+
Paket `adonis-intlayer` menyediakan middleware untuk aplikasi AdonisJS guna menangani internasionalisasi. Ini mendeteksi locale pengguna dan menyediakan fungsi terjemahan.
|
|
26
|
+
|
|
27
|
+
## Instalasi
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install adonis-intlayer
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Ekspor
|
|
34
|
+
|
|
35
|
+
### Middleware
|
|
36
|
+
|
|
37
|
+
Paket ini menyediakan middleware AdonisJS untuk menangani internasionalisasi.
|
|
38
|
+
|
|
39
|
+
| Fungsi | Deskripsi | Dok Terkait |
|
|
40
|
+
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
|
|
41
|
+
| `IntlayerMiddleware` | Middleware AdonisJS yang mendeteksi locale pengguna dan mengisi konteks permintaan dengan data Intlayer. Ini juga menyiapkan namespace CLS (Async Local Storage) para akses siklus hidup permintaan, memungkinkan penggunaan fungsi global seperti `t`, `getIntlayer`, dll. | [intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/packages/adonis-intlayer/intlayer.md) |
|
|
42
|
+
|
|
43
|
+
### Fungsi
|
|
44
|
+
|
|
45
|
+
| Fungsi | Deskripsi | Dok Terkait |
|
|
46
|
+
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
|
|
47
|
+
| `t` | Fungsi terjemahan yang mengambil konten untuk locale saat ini. Bekerja dalam siklus hidup permintaan yang dikelola oleh middleware `intlayer`. Menggunakan CLS (Async Local Storage) untuk mengakses konteks permintaan. | [translation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/dictionary/translation.md) |
|
|
48
|
+
| `getIntlayer` | Mengambil kamus berdasarkan kuncinya dari deklarasi yang dihasilkan dan mengembalikan kontennya untuk locale yang ditentukan. Versi optimal dari `getDictionary`. Menggunakan CLS untuk mengakses konteks permintaan. | - |
|
|
49
|
+
| `getDictionary` | Memproses objek kamus dan mengembalikan konten untuk locale yang ditentukan. Memproses terjemahan `t()`, enumerasi, markdown, HTML, dll. Menggunakan CLS untuk mengakses konteks permintaan. | - |
|
|
50
|
+
| `getLocale` | Mengambil locale saat ini dari konteks permintaan menggunakan CLS. | - |
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-30
|
|
3
|
+
updatedAt: 2026-01-30
|
|
4
|
+
title: Dokumentasi Middleware intlayer AdonisJS | adonis-intlayer
|
|
5
|
+
description: Lihat cara menggunakan middleware intlayer untuk paket adonis-intlayer
|
|
6
|
+
keywords:
|
|
7
|
+
- intlayer
|
|
8
|
+
- adonisjs
|
|
9
|
+
- middleware
|
|
10
|
+
- Intlayer
|
|
11
|
+
- Internasionalisasi
|
|
12
|
+
- Dokumentasi
|
|
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: Dokumentasi awal
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Dokumentasi Middleware intlayer AdonisJS
|
|
25
|
+
|
|
26
|
+
Middleware `intlayer` untuk AdonisJS mendeteksi locale pengguna dan menyediakan fungsi terjemahan melalui konteks permintaan. Ini juga memungkinkan penggunaan fungsi terjemahan global dalam aliran permintaan.
|
|
27
|
+
|
|
28
|
+
## Penggunaan
|
|
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
|
+
## Deskripsi
|
|
47
|
+
|
|
48
|
+
Middleware melakukan tugas-tugas berikut:
|
|
49
|
+
|
|
50
|
+
1. **Deteksi Locale**: Menganalisis permintaan (header, cookie, dll.) untuk menentukan locale pilihan pengguna.
|
|
51
|
+
2. **Setup Konteks**: Mengisi konteks permintaan dengan informasi locale.
|
|
52
|
+
3. **Async Local Storage**: Menggunakan `cls-hooked` untuk mengelola konteks asinkron, memungkinkan fungsi Intlayer global seperti `t`, `getIntlayer`, dan `getDictionary` untuk mengakses locale spesifik permintaan tanpa meneruskannya secara manual.
|
|
53
|
+
|
|
54
|
+
> Catat: Untuk menggunakan cookie untuk deteksi locale, pastikan `@adonisjs/cookie` dikonfigurasi dan digunakan dalam aplikasi Anda.
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-30
|
|
3
|
+
updatedAt: 2026-01-30
|
|
4
|
+
title: Dokumentasi Fungsi t | adonis-intlayer
|
|
5
|
+
description: Lihat cara menggunakan fungsi t untuk paket adonis-intlayer
|
|
6
|
+
keywords:
|
|
7
|
+
- t
|
|
8
|
+
- terjemahan
|
|
9
|
+
- Intlayer
|
|
10
|
+
- Internasionalisasi
|
|
11
|
+
- Dokumentasi
|
|
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: Dokumentasi awal
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Dokumentasi: Fungsi `t` dalam `adonis-intlayer`
|
|
26
|
+
|
|
27
|
+
Fungsi `t` dalam paket `adonis-intlayer` adalah utilitas inti untuk menyediakan respons yang dilokalisasi dalam aplikasi AdonisJS Anda. Ini menyederhanakan internasionalisasi (i18n) dengan secara dinamis memilih konten berdasarkan bahasa pilihan pengguna.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Ringkasan
|
|
32
|
+
|
|
33
|
+
Fungsi `t` digunakan untuk mendefinisikan dan mengambil terjemahan untuk set bahasa tertentu. Ini secara otomatis menentukan bahasa yang tepat untuk dikembalikan berdasarkan pengaturan permintaan klien, seperti header `Accept-Language`. Jika bahasa pilihan tidak tersedia, ia akan beralih dengan anggun ke locale default yang ditentukan dalam konfigurasi Anda.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Fitur Utama
|
|
38
|
+
|
|
39
|
+
- **Lokalisasi Dinamis**: Secara otomatis memilih terjemahan yang paling sesuai untuk klien.
|
|
40
|
+
- **Fallback ke Locale Default**: Beralih ke locale default jika bahasa pilihan klien tidak tersedia, memastikan kontinuitas dalam pengalaman pengguna.
|
|
41
|
+
- **Konteks Asinkron**: Bekerja dengan mulus dalam siklus hidup permintaan AdonisJS menggunakan Async Local Storage.
|
|
42
|
+
- **Dukungan TypeScript**: Menegakkan keamanan tipe untuk terjemahan Anda.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Tanda Tangan Fungsi
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
t(translations: Record<string, any>): any;
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Parameter
|
|
53
|
+
|
|
54
|
+
- `translations`: Sebuah objek di mana kuncinya adalah kode locale (misalnya, `en`, `fr`, `es`) dan nilainya adalah konten terjemahan yang sesuai.
|
|
55
|
+
|
|
56
|
+
### Kembalian
|
|
57
|
+
|
|
58
|
+
- Konten yang mewakili bahasa pilihan klien.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Memuat Middleware
|
|
63
|
+
|
|
64
|
+
Untuk memastikan bahwa fungsi `t` bekerja dengan benar, Anda **harus** mendaftarkan middleware `intlayer` dalam aplikasi AdonisJS Anda.
|
|
65
|
+
|
|
66
|
+
```typescript fileName="start/kernel.ts"
|
|
67
|
+
router.use([() => import("adonis-intlayer/middleware")]);
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Contoh Penggunaan
|
|
73
|
+
|
|
74
|
+
### Contoh Dasar
|
|
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
|
+
### Penggunaan dalam Controller
|
|
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 dari controller",
|
|
101
|
+
})
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Topik Lanjutan
|
|
110
|
+
|
|
111
|
+
### Mekanisme Fallback
|
|
112
|
+
|
|
113
|
+
Jika locale pilihan tidak tersedia, fungsi `t` akan beralih ke locale default yang ditentukan dalam `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
|
+
### Integrasi TypeScript
|
|
148
|
+
|
|
149
|
+
Fungsi `t` aman secara tipe saat digunakan dengan kamus yang ditentukan. Untuk detail lebih lanjut, lihat [dokumentasi TypeScript](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/configuration.md).
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-29
|
|
3
|
+
updatedAt: 2026-01-29
|
|
4
|
+
title: Dokumentasi Paket hono-intlayer
|
|
5
|
+
description: Middleware Hono untuk Intlayer, menyediakan fungsi terjemahan dan deteksi locale.
|
|
6
|
+
keywords:
|
|
7
|
+
- hono-intlayer
|
|
8
|
+
- hono
|
|
9
|
+
- middleware
|
|
10
|
+
- internasionalisasi
|
|
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: Dokumentasi terpadu untuk semua ekspor
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Paket hono-intlayer
|
|
24
|
+
|
|
25
|
+
Paket `hono-intlayer` menyediakan middleware untuk aplikasi Hono untuk menangani internasionalisasi. Paket ini mendeteksi locale pengguna dan mengisi objek konteks.
|
|
26
|
+
|
|
27
|
+
## Instalasi
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install hono-intlayer
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Ekspor
|
|
34
|
+
|
|
35
|
+
### Middleware
|
|
36
|
+
|
|
37
|
+
Impor:
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
import { intlayer } from "hono-intlayer";
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
| Fungsi | Deskripsi | Dokumen Terkait |
|
|
44
|
+
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
|
|
45
|
+
| `intlayer` | Middleware Hono yang mengintegrasikan Intlayer ke dalam aplikasi Hono Anda. Menangani deteksi locale dari penyimpanan (cookie, header), mengisi konteks dengan `t`, `getIntlayer`, dan `getDictionary`, serta menyiapkan namespace CLS untuk akses terprogram selama siklus hidup permintaan. | [intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/packages/hono-intlayer/intlayer.md) |
|
|
46
|
+
|
|
47
|
+
### Fungsi
|
|
48
|
+
|
|
49
|
+
Impor:
|
|
50
|
+
|
|
51
|
+
```tsx
|
|
52
|
+
import { t, getIntlayer, getDictionary } from "hono-intlayer";
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
| Fungsi | Deskripsi | Dokumen Terkait |
|
|
56
|
+
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
|
57
|
+
| `t` | Fungsi terjemahan global yang mengambil konten untuk locale saat ini di Hono. Memanfaatkan CLS (Async Local Storage) dan harus digunakan dalam konteks permintaan yang dikelola oleh middleware `intlayer`. Juga dapat diakses melalui konteks. | [terjemahan](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/dictionary/translation.md) |
|
|
58
|
+
| `getIntlayer` | Mengambil kamus berdasarkan kuncinya dari deklarasi yang dihasilkan dan mengembalikan kontennya untuk locale yang ditentukan. Versi `getDictionary` yang dioptimalkan. Menggunakan CLS untuk mengakses konteks permintaan. Juga dapat diakses melalui konteks. | - |
|
|
59
|
+
| `getDictionary` | Memproses objek kamus dan mengembalikan konten untuk locale yang ditentukan. Memproses terjemahan `t()`, enumerasi, markdown, HTML, dll. Menggunakan CLS untuk mengakses konteks permintaan. Juga dapat diakses melalui konteks. | - |
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-29
|
|
3
|
+
updatedAt: 2026-01-29
|
|
4
|
+
title: Dokumentasi Middleware Hono intlayer | hono-intlayer
|
|
5
|
+
description: Lihat cara menggunakan middleware intlayer untuk paket hono-intlayer
|
|
6
|
+
keywords:
|
|
7
|
+
- intlayer
|
|
8
|
+
- hono
|
|
9
|
+
- middleware
|
|
10
|
+
- Intlayer
|
|
11
|
+
- Internasionalisasi
|
|
12
|
+
- Dokumentasi
|
|
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: Inisialisasi dokumentasi
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Dokumentasi Middleware Hono intlayer
|
|
25
|
+
|
|
26
|
+
Middleware `intlayer` untuk Hono mendeteksi locale pengguna dan mengisi objek konteks dengan fungsi-fungsi Intlayer. Ini juga memungkinkan penggunaan fungsi terjemahan global dalam konteks permintaan.
|
|
27
|
+
|
|
28
|
+
## Penggunaan
|
|
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
|
+
id: "Halo",
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
return c.text(content);
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Deskripsi
|
|
51
|
+
|
|
52
|
+
Middleware melakukan tugas-tugas berikut:
|
|
53
|
+
|
|
54
|
+
1. **Deteksi Locale**: Menganalisis permintaan (header, cookie, dll.) untuk menentukan locale pilihan pengguna.
|
|
55
|
+
2. **Pengisian Konteks**: Menambahkan data Intlayer ke konteks Hono, yang dapat diakses melalui `c.get()`. Ini termasuk:
|
|
56
|
+
- `locale`: Locale yang terdeteksi.
|
|
57
|
+
- `t`: Fungsi terjemahan.
|
|
58
|
+
- `getIntlayer`: Fungsi untuk mengambil kamus.
|
|
59
|
+
- `getDictionary`: Fungsi untuk memproses objek kamus.
|
|
60
|
+
3. **Manajemen Konteks**: Menggunakan `cls-hooked` untuk mengelola konteks asinkron, memungkinkan fungsi Intlayer global (`t`, `getIntlayer`, `getDictionary`) untuk mengakses locale khusus permintaan tanpa meneruskan objek konteks.
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2024-12-02
|
|
3
|
+
updatedAt: 2025-06-29
|
|
4
|
+
title: Dokumentasi Fungsi t | hono-intlayer
|
|
5
|
+
description: Lihat cara menggunakan fungsi t untuk paket hono-intlayer
|
|
6
|
+
keywords:
|
|
7
|
+
- t
|
|
8
|
+
- terjemahan
|
|
9
|
+
- Intlayer
|
|
10
|
+
- Internasionalisasi
|
|
11
|
+
- Dokumentasi
|
|
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: Inisialisasi riwayat
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Dokumentasi: Fungsi `t` dalam `hono-intlayer`
|
|
26
|
+
|
|
27
|
+
Fungsi `t` dalam paket `hono-intlayer` adalah alat utama untuk menyediakan respons yang dilokalkan dalam aplikasi Hono Anda. Ini menyederhanakan internasionalisasi (i18n) dengan secara dinamis memilih konten berdasarkan bahasa pilihan pengguna.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Ikhtisar
|
|
32
|
+
|
|
33
|
+
Fungsi `t` digunakan untuk mendefinisikan dan mengambil terjemahan untuk kumpulan bahasa tertentu. Fungsi ini secara otomatis menentukan bahasa yang tepat untuk dikembalikan berdasarkan pengaturan permintaan klien, seperti header `Accept-Language`. Jika bahasa yang disukai tidak tersedia, fungsi ini akan beralih ke locale default yang ditentukan dalam konfigurasi Anda.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Fitur Utama
|
|
38
|
+
|
|
39
|
+
- **Lokalisasi Dinamis**: Secara otomatis memilih terjemahan yang paling sesuai untuk klien.
|
|
40
|
+
- **Fallback ke Locale Default**: Beralih ke locale default jika bahasa pilihan klien tidak tersedia, memastikan kelangsungan pengalaman pengguna.
|
|
41
|
+
- **Ringan dan Cepat**: Dirancang untuk aplikasi berperforma tinggi, memastikan overhead minimal.
|
|
42
|
+
- **Dukungan Mode Ketat**: Menegakkan kepatuhan ketat terhadap locale yang dideklarasikan untuk perilaku yang andal.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Tanda Tangan Fungsi
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
t(translations: Record<string, string>): string;
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Parameter
|
|
53
|
+
|
|
54
|
+
- `translations`: Sebuah objek di mana kuncinya adalah kode locale (misalnya, `en`, `fr`, `id`) dan nilainya adalah string terjemahan yang sesuai.
|
|
55
|
+
|
|
56
|
+
### Pengembalian
|
|
57
|
+
|
|
58
|
+
- Sebuah string yang mewakili konten dalam bahasa pilihan klien.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Memuat Handler Permintaan Internasionalisasi
|
|
63
|
+
|
|
64
|
+
Untuk memastikan bahwa fungsionalitas internasionalisasi yang disediakan oleh `hono-intlayer` berfungsi dengan benar, Anda **harus** memuat middleware internasionalisasi di awal aplikasi Hono Anda. Ini mengaktifkan fungsi `t` dan memastikan penanganan deteksi locale dan terjemahan yang tepat.
|
|
65
|
+
|
|
66
|
+
Tempatkan middleware `app.use("*", intlayer())` **sebelum rute mana pun** di aplikasi Anda untuk memastikan bahwa semua rute mendapatkan manfaat dari internasionalisasi:
|
|
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
|
+
// Muat handler permintaan internasionalisasi
|
|
75
|
+
app.use("*", intlayer());
|
|
76
|
+
|
|
77
|
+
// Tentukan rute Anda setelah memuat middleware
|
|
78
|
+
app.get("/", (c) => {
|
|
79
|
+
return c.text(
|
|
80
|
+
t({
|
|
81
|
+
en: "Hello, World!",
|
|
82
|
+
fr: "Bonjour le monde!",
|
|
83
|
+
es: "¡Hola, Mundo!",
|
|
84
|
+
id: "Halo, Dunia!",
|
|
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
|
+
// Muat handler permintaan internasionalisasi
|
|
97
|
+
app.use("*", intlayer());
|
|
98
|
+
|
|
99
|
+
// Tentukan rute Anda setelah memuat middleware
|
|
100
|
+
app.get("/", (c) => {
|
|
101
|
+
return c.text(
|
|
102
|
+
t({
|
|
103
|
+
en: "Hello, World!",
|
|
104
|
+
fr: "Bonjour le monde!",
|
|
105
|
+
es: "¡Hola, Mundo!",
|
|
106
|
+
id: "Halo, Dunia!",
|
|
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
|
+
// Muat handler permintaan internasionalisasi
|
|
119
|
+
app.use("*", intlayer());
|
|
120
|
+
|
|
121
|
+
// Tentukan rute Anda setelah memuat middleware
|
|
122
|
+
app.get("/", (c) => {
|
|
123
|
+
return c.text(
|
|
124
|
+
t({
|
|
125
|
+
en: "Hello, World!",
|
|
126
|
+
fr: "Bonjour le monde!",
|
|
127
|
+
es: "¡Hola, Mundo!",
|
|
128
|
+
id: "Halo, Dunia!",
|
|
129
|
+
})
|
|
130
|
+
);
|
|
131
|
+
});
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Mengapa Ini Diperlukan
|
|
135
|
+
|
|
136
|
+
- **Deteksi Locale**: Middleware `intlayer` memproses permintaan masuk untuk mendeteksi locale pilihan pengguna berdasarkan header, cookie, atau metode konfigurasi lainnya.
|
|
137
|
+
- **Konteks Terjemahan**: Menyiapkan konteks yang diperlukan agar fungsi `t` dapat beroperasi dengan benar, memastikan bahwa terjemahan dikembalikan dalam bahasa yang benar.
|
|
138
|
+
- **Pencegahan Kesalahan**: Tanpa middleware ini, menggunakan fungsi `t` akan menghasilkan kesalahan runtime karena informasi locale yang diperlukan tidak akan tersedia.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Contoh Penggunaan
|
|
143
|
+
|
|
144
|
+
### Contoh Dasar
|
|
145
|
+
|
|
146
|
+
Sajikan konten yang dilokalkan dalam berbagai bahasa:
|
|
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
|
+
id: "Selamat datang!",
|
|
155
|
+
})
|
|
156
|
+
);
|
|
157
|
+
});
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Permintaan Klien:**
|
|
161
|
+
|
|
162
|
+
- Klien dengan `Accept-Language: fr` akan menerima `Bienvenue!`.
|
|
163
|
+
- Klien dengan `Accept-Language: id` akan menerima `Selamat datang!`.
|
|
164
|
+
- Klien dengan `Accept-Language: de` akan menerima `Welcome!` (locale default).
|
|
165
|
+
|
|
166
|
+
### Menangani Kesalahan
|
|
167
|
+
|
|
168
|
+
Berikan pesan kesalahan dalam beberapa bahasa:
|
|
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
|
+
id: "Terjadi kesalahan yang tidak terduga.",
|
|
177
|
+
}),
|
|
178
|
+
500
|
|
179
|
+
);
|
|
180
|
+
});
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
### Menggunakan Varian Locale
|
|
186
|
+
|
|
187
|
+
Tentukan terjemahan untuk varian khusus locale:
|
|
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
|
+
id: "Halo!",
|
|
197
|
+
})
|
|
198
|
+
);
|
|
199
|
+
});
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Topik Lanjutan
|
|
205
|
+
|
|
206
|
+
### Mekanisme Fallback
|
|
207
|
+
|
|
208
|
+
Jika locale yang disukai tidak tersedia, fungsi `t` akan beralih ke locale default yang ditentukan dalam konfigurasi:
|
|
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.INDONESIAN],
|
|
216
|
+
defaultLocale: Locales.ENGLISH,
|
|
217
|
+
},
|
|
218
|
+
} satisfies IntlayerConfig;
|
|
219
|
+
|
|
220
|
+
export default config;
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
### Penegakan Mode Ketat
|
|
226
|
+
|
|
227
|
+
Konfigurasikan fungsi `t` untuk menegakkan kepatuhan ketat terhadap locale yang dideklarasikan:
|
|
228
|
+
|
|
229
|
+
| Mode | Perilaku |
|
|
230
|
+
| ----------- | ----------------------------------------------------------------------------------------------------------- |
|
|
231
|
+
| `strict` | Semua locale yang dideklarasikan harus memiliki terjemahan. Locale yang hilang akan menyebabkan kesalahan. |
|
|
232
|
+
| `inclusive` | Locale yang dideklarasikan harus memiliki terjemahan. Locale yang hilang memicu peringatan tetapi diterima. |
|
|
233
|
+
| `loose` | Locale apa pun yang ada diterima, meskipun tidak dideklarasikan. |
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
### Integrasi TypeScript
|
|
238
|
+
|
|
239
|
+
Fungsi `t` aman secara tipe saat digunakan dengan TypeScript. Tentukan objek terjemahan yang aman secara tipe:
|
|
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
|
+
id: "Selamat pagi!",
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
app.get("/morning", (c) => {
|
|
251
|
+
return c.text(t(translations));
|
|
252
|
+
});
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
### Kesalahan Umum dan Pemecahan Masalah
|
|
258
|
+
|
|
259
|
+
| Masalah | Penyebab | Solusi |
|
|
260
|
+
| --------------------------- | ---------------------------------------- | ------------------------------------------------------------- |
|
|
261
|
+
| Fungsi `t` tidak berfungsi | Middleware tidak dimuat | Pastikan `app.use("*", intlayer())` ditambahkan sebelum rute. |
|
|
262
|
+
| Kesalahan terjemahan hilang | Mode ketat diaktifkan tanpa semua locale | Sediakan semua terjemahan yang diperlukan. |
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Kesimpulan
|
|
267
|
+
|
|
268
|
+
Fungsi `t` adalah alat yang ampuh untuk internasionalisasi backend. Dengan menggunakannya secara efektif, Anda dapat membuat aplikasi yang lebih inklusif dan ramah pengguna untuk audiens global. Untuk penggunaan lanjutan dan opsi konfigurasi mendetail, lihat [dokumentasi](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md).
|