@intlayer/docs 9.0.0-canary.5 → 9.0.0-canary.6
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/docs/ar/intlayer_with_react_native+expo.md +56 -79
- package/docs/ar/packages/react-native-intlayer/exports.md +48 -14
- package/docs/de/intlayer_with_react_native+expo.md +50 -68
- package/docs/de/packages/react-native-intlayer/exports.md +47 -13
- package/docs/en/intlayer_with_react_native+expo.md +14 -18
- package/docs/en/packages/react-native-intlayer/exports.md +47 -13
- package/docs/en-GB/intlayer_with_react_native+expo.md +40 -94
- package/docs/en-GB/packages/react-native-intlayer/exports.md +51 -18
- package/docs/es/intlayer_with_react_native+expo.md +43 -80
- package/docs/es/packages/react-native-intlayer/exports.md +47 -13
- package/docs/fr/intlayer_with_react_native+expo.md +54 -68
- package/docs/fr/packages/react-native-intlayer/exports.md +47 -13
- package/docs/hi/intlayer_with_react_native+expo.md +90 -87
- package/docs/hi/packages/react-native-intlayer/exports.md +48 -14
- package/docs/id/intlayer_with_react_native+expo.md +45 -33
- package/docs/id/packages/react-native-intlayer/exports.md +47 -13
- package/docs/it/intlayer_with_react_native+expo.md +32 -72
- package/docs/it/packages/react-native-intlayer/exports.md +47 -13
- package/docs/ja/intlayer_with_react_native+expo.md +98 -137
- package/docs/ja/packages/react-native-intlayer/exports.md +47 -14
- package/docs/ko/intlayer_with_react_native+expo.md +231 -29
- package/docs/ko/packages/react-native-intlayer/exports.md +48 -14
- package/docs/pl/intlayer_with_react_native+expo.md +75 -46
- package/docs/pl/packages/react-native-intlayer/exports.md +47 -13
- package/docs/pt/intlayer_with_react_native+expo.md +38 -75
- package/docs/pt/packages/react-native-intlayer/exports.md +47 -13
- package/docs/ru/intlayer_with_react_native+expo.md +71 -60
- package/docs/ru/packages/react-native-intlayer/exports.md +49 -16
- package/docs/tr/intlayer_with_react_native+expo.md +30 -56
- package/docs/tr/packages/react-native-intlayer/exports.md +48 -15
- package/docs/uk/intlayer_with_react_native+expo.md +64 -52
- package/docs/uk/packages/react-native-intlayer/exports.md +47 -13
- package/docs/vi/intlayer_with_react_native+expo.md +43 -32
- package/docs/vi/packages/react-native-intlayer/exports.md +47 -13
- package/docs/zh/intlayer_with_react_native+expo.md +216 -82
- package/docs/zh/packages/react-native-intlayer/exports.md +48 -14
- package/package.json +6 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-09-07
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-06-25
|
|
4
4
|
title: "Expo + React Native i18n - Uygulamanızı çevirmek için eksiksiz kılavuz"
|
|
5
5
|
description: "Artık i18next yok. 2026 yılı için çok dilli (i18n) Expo + React Native uygulaması oluşturma kılavuzu. Yapay zeka ajanlarıyla çevirin ve bundle boyutu, SEO ve performansı optimize edin."
|
|
6
6
|
keywords:
|
|
@@ -17,6 +17,9 @@ slugs:
|
|
|
17
17
|
applicationTemplate: https://github.com/aymericzip/intlayer-react-native-template
|
|
18
18
|
applicationShowcase: https://intlayer-react-native.vercel.app
|
|
19
19
|
history:
|
|
20
|
+
- version: 9.0.0
|
|
21
|
+
date: 2026-06-25
|
|
22
|
+
changes: "Sağlayıcıları ve hook'ları doğrudan react-native-intlayer'dan içe aktarın; react-intlayer artık doğrudan bağımlılık olarak gerekli değildir"
|
|
20
23
|
- version: 8.9.0
|
|
21
24
|
date: 2026-05-04
|
|
22
25
|
changes: "Solid useIntlayer API kullanımını doğrudan özellik erişimine güncelle"
|
|
@@ -37,7 +40,7 @@ author: aymericzip
|
|
|
37
40
|
<iframe
|
|
38
41
|
src="https://ide.intlayer.org/aymericzip/intlayer-react-native-template?file=intlayer.config.ts"
|
|
39
42
|
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
40
|
-
title="Demo CodeSandbox - Intlayer"
|
|
43
|
+
title="Demo CodeSandbox - How to Internationalize your application using Intlayer"
|
|
41
44
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
42
45
|
loading="lazy"
|
|
43
46
|
/>
|
|
@@ -56,11 +59,13 @@ author: aymericzip
|
|
|
56
59
|
</Tab>
|
|
57
60
|
</Tabs>
|
|
58
61
|
|
|
59
|
-
|
|
62
|
+
## İçindekiler
|
|
63
|
+
|
|
64
|
+
<TOC/>
|
|
60
65
|
|
|
61
66
|
## Neden alternatifler yerine Intlayer?
|
|
62
67
|
|
|
63
|
-
|
|
68
|
+
`react-native-localize` veya `i18next` gibi ana çözümlerle karşılaştırıldığında Intlayer, aşağıdaki gibi entegre optimizasyonlarla gelen bir çözümdür:
|
|
64
69
|
|
|
65
70
|
<AccordionGroup>
|
|
66
71
|
|
|
@@ -78,7 +83,7 @@ Uygulamanızın içeriğinin kapsamını belirlemek, büyük ölçekli uygulamal
|
|
|
78
83
|
|
|
79
84
|
<Accordion header="Yapay Zeka Temsilcisi">
|
|
80
85
|
|
|
81
|
-
İçeriğin bir arada konumlandırılması **Büyük Dil Modellerinin (LLM'ler) ihtiyaç duyduğu bağlamı azaltır**. Intlayer ayrıca eksik çevirileri test etmek için **CLI** gibi bir araç paketiyle birlikte gelir**[LSP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/lsp.md)**, **[MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/mcp_server.md)** ve **[aracı becerileri](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/agent_skills.md)**, geliştirici deneyimini (DX) yapay zeka için daha da sorunsuz hale getirmek için
|
|
86
|
+
İçeriğin bir arada konumlandırılması **Büyük Dil Modellerinin (LLM'ler) ihtiyaç duyduğu bağlamı azaltır**. Intlayer ayrıca eksik çevirileri test etmek için **CLI** gibi bir araç paketiyle birlikte gelir; **[LSP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/lsp.md)**, **[MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/mcp_server.md)** ve **[aracı becerileri](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/agent_skills.md)**, geliştirici deneyimini (DX) yapay zeka ajanları için daha da sorunsuz hale getirmek için.
|
|
82
87
|
|
|
83
88
|
</Accordion>
|
|
84
89
|
|
|
@@ -107,23 +112,12 @@ Sayfalarınıza çok büyük JSON dosyaları yüklemek yerine yalnızca gerekli
|
|
|
107
112
|
</Accordion>
|
|
108
113
|
</AccordionGroup>
|
|
109
114
|
|
|
110
|
-
### Paketler
|
|
111
|
-
|
|
112
|
-
- **ara katman**
|
|
113
|
-
Yapılandırma, sözlük içeriği, tür oluşturma ve CLI komutları için temel i18n araç seti.
|
|
114
|
-
|
|
115
|
-
- **tepki katmanı**
|
|
116
|
-
Yerel ayarları edinmek ve değiştirmek için React Native'de kullanacağınız içerik sağlayıcıları ve React kancalarını sağlayan React entegrasyonu.
|
|
117
|
-
|
|
118
|
-
- **tepki-yerel-intlayer**
|
|
119
|
-
Intlayer'ı React Native paketleyiciyle entegre etmek için Metro eklentisini sağlayan React Native entegrasyonu.
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
115
|
<Steps>
|
|
124
116
|
|
|
125
117
|
<Step number={1} title="Bağımlılıkları Kurma">
|
|
126
118
|
|
|
119
|
+
GitHub'da [Uygulama Şablonu](https://github.com/aymericzip/intlayer-react-native-template)na bakın.
|
|
120
|
+
|
|
127
121
|
React Native projenizden aşağıdaki paketleri kurun:
|
|
128
122
|
|
|
129
123
|
```bash packageManager="npm"
|
|
@@ -147,23 +141,19 @@ bunx intlayer-cli init --interactive
|
|
|
147
141
|
> Bu komut ortamınızı algılayacak ve gerekli paketleri yükleyecektir. Örneğin:
|
|
148
142
|
|
|
149
143
|
```bash packageManager="npm"
|
|
150
|
-
npm install intlayer react-intlayer
|
|
151
|
-
npm install --save-dev react-native-intlayer
|
|
144
|
+
npm install intlayer react-native-intlayer
|
|
152
145
|
```
|
|
153
146
|
|
|
154
147
|
```bash packageManager="pnpm"
|
|
155
|
-
pnpm add intlayer react-intlayer
|
|
156
|
-
pnpm add --save-dev react-native-intlayer
|
|
148
|
+
pnpm add intlayer react-native-intlayer
|
|
157
149
|
```
|
|
158
150
|
|
|
159
151
|
```bash packageManager="yarn"
|
|
160
|
-
yarn add intlayer react-intlayer
|
|
161
|
-
yarn add --save-dev react-native-intlayer
|
|
152
|
+
yarn add intlayer react-native-intlayer
|
|
162
153
|
```
|
|
163
154
|
|
|
164
155
|
```bash packageManager="bun"
|
|
165
|
-
bun add intlayer react-intlayer
|
|
166
|
-
bun add --dev react-native-intlayer
|
|
156
|
+
bun add intlayer react-native-intlayer
|
|
167
157
|
```
|
|
168
158
|
|
|
169
159
|
### Paketler
|
|
@@ -171,11 +161,8 @@ bun add --dev react-native-intlayer
|
|
|
171
161
|
- **intlayer**
|
|
172
162
|
Yapılandırma, sözlük içeriği, tür oluşturma ve CLI komutları için çekirdek i18n araç takımı.
|
|
173
163
|
|
|
174
|
-
- **react-intlayer**
|
|
175
|
-
React entegrasyonu, React Native'te yerel ayarları elde etmek ve değiştirmek için kullanacağınız bağlam sağlayıcıları ve React kancalarını sağlar.
|
|
176
|
-
|
|
177
164
|
- **react-native-intlayer**
|
|
178
|
-
React Native entegrasyonu, Intlayer'ı React Native paketleyici ile entegre etmek için Metro eklentisini sağlar.
|
|
165
|
+
React Native entegrasyonu, yerel ayarları elde etmek ve değiştirmek için kullanacağınız bağlam sağlayıcıları ve React kancalarını, React Native polyfill'lerini ve Intlayer'ı React Native paketleyici ile entegre etmek için Metro eklentisini sağlar. `react-intlayer`'dan her şeyi yeniden dışa aktarır, bu nedenle bir React Native uygulamasında yalnızca bu tek pakete ihtiyaç duyarsınız.
|
|
179
166
|
|
|
180
167
|
---
|
|
181
168
|
|
|
@@ -230,13 +217,18 @@ module.exports = (async () => {
|
|
|
230
217
|
})();
|
|
231
218
|
```
|
|
232
219
|
|
|
220
|
+
> Not: `configMetroIntlayer` bir promise fonksiyonudur. Eş zamanlı kullanmak istiyorsanız `configMetroIntlayerSync` kullanın veya IIFE'den (Hemen Çağrılan Fonksiyon İfadesi) kaçının.
|
|
221
|
+
> Not: `configMetroIntlayerSync`, sunucu başlatıldığında intlayer sözlükleri oluşturmaya izin vermez
|
|
222
|
+
|
|
233
223
|
</Step>
|
|
234
224
|
|
|
235
225
|
<Step number={4} title="Intlayer Sağlayıcısını Ekleyin">
|
|
236
226
|
|
|
237
|
-
Uygulamanız genelinde kullanıcı dilini senkronize tutmak için, kök bileşeninizi `react-intlayer
|
|
227
|
+
Uygulamanız genelinde kullanıcı dilini senkronize tutmak için, kök bileşeninizi `react-native-intlayer`'dan gelen `IntlayerProvider` bileşeni ile sarmanız gerekir.
|
|
228
|
+
|
|
229
|
+
> Her zaman `react-native-intlayer`'dan içe aktarın. Onun `IntlayerProvider`'ı, Intlayer tarafından kullanılan web API'si için polyfill'leri içerir ve paket, `react-intlayer`'dan tüm hook'ları ve yardımcı programları yeniden dışa aktarır.
|
|
238
230
|
|
|
239
|
-
|
|
231
|
+
Ayrıca Intlayer'ın düzgün çalışmasını sağlamak için `intlayerPolyfill` fonksiyonunu `index.js` dosyanıza eklemeniz gerekir.
|
|
240
232
|
|
|
241
233
|
```tsx fileName="app/_layout.tsx" codeFormat={["typescript", "esm"]}
|
|
242
234
|
import { Stack } from "expo-router";
|
|
@@ -286,7 +278,7 @@ Projenizde herhangi bir yerde **içerik bildirim** dosyaları oluşturun (genell
|
|
|
286
278
|
|
|
287
279
|
Örnek (React Native için TSX düğümleriyle TypeScript):
|
|
288
280
|
|
|
289
|
-
```tsx fileName="src/app.content.tsx" contentDeclarationFormat={["typescript", "esm"]}
|
|
281
|
+
```tsx fileName="src/app.content.tsx" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
290
282
|
import { t, type Dictionary } from "intlayer";
|
|
291
283
|
import type { ReactNode } from "react";
|
|
292
284
|
|
|
@@ -309,24 +301,6 @@ const homeScreenContent = {
|
|
|
309
301
|
export default homeScreenContent;
|
|
310
302
|
```
|
|
311
303
|
|
|
312
|
-
```jsx fileName="src/app.content.csx" codeFormat="commonjs"
|
|
313
|
-
const { t } = require("intlayer");
|
|
314
|
-
|
|
315
|
-
/** @type {import('intlayer').Dictionary} */
|
|
316
|
-
const appContent = {
|
|
317
|
-
key: "home-screen",
|
|
318
|
-
content: {
|
|
319
|
-
title: t({
|
|
320
|
-
en: "Welcome!",
|
|
321
|
-
fr: "Bienvenue!",
|
|
322
|
-
es: "¡Bienvenido!",
|
|
323
|
-
}),
|
|
324
|
-
},
|
|
325
|
-
};
|
|
326
|
-
|
|
327
|
-
module.exports = appContent;
|
|
328
|
-
```
|
|
329
|
-
|
|
330
304
|
```json fileName="src/app.content.json" contentDeclarationFormat="json"
|
|
331
305
|
{
|
|
332
306
|
"$schema": "https://intlayer.org/schema.json",
|
|
@@ -358,7 +332,7 @@ Alt bileşenlerde yerelleştirilmiş içerik almak için `useIntlayer` kancasın
|
|
|
358
332
|
|
|
359
333
|
```tsx fileName="app/(tabs)/index.tsx" codeFormat={["typescript", "esm"]}
|
|
360
334
|
import { Image, StyleSheet, Platform } from "react-native";
|
|
361
|
-
import { useIntlayer } from "react-intlayer";
|
|
335
|
+
import { useIntlayer } from "react-native-intlayer";
|
|
362
336
|
import { HelloWave } from "@/components/HelloWave";
|
|
363
337
|
import ParallaxScrollView from "@/components/ParallaxScrollView";
|
|
364
338
|
import { ThemedText } from "@/components/ThemedText";
|
|
@@ -405,7 +379,7 @@ export default HomeScreen;
|
|
|
405
379
|
|
|
406
380
|
</Step>
|
|
407
381
|
|
|
408
|
-
<Step number={7} title="Uygulama Yerel Ayarını Değiştirin">
|
|
382
|
+
<Step number={7} title="Uygulama Yerel Ayarını Değiştirin" isOptional={true}>
|
|
409
383
|
|
|
410
384
|
Bileşenlerinizden yerel ayarları değiştirmek için, `useLocale` kancasının `setLocale` metodunu kullanabilirsiniz:
|
|
411
385
|
|
|
@@ -413,7 +387,7 @@ Bileşenlerinizden yerel ayarları değiştirmek için, `useLocale` kancasının
|
|
|
413
387
|
import { type FC } from "react";
|
|
414
388
|
import { View, Text, TouchableOpacity, StyleSheet } from "react-native";
|
|
415
389
|
import { getLocaleName } from "intlayer";
|
|
416
|
-
import { useLocale } from "react-intlayer";
|
|
390
|
+
import { useLocale } from "react-native-intlayer";
|
|
417
391
|
|
|
418
392
|
export const LocaleSwitcher: FC = () => {
|
|
419
393
|
const { setLocale, availableLocales } = useLocale();
|
|
@@ -490,7 +464,7 @@ Bu, aşağıdaki gibi özellikleri etkinleştirir:
|
|
|
490
464
|
Intlayer tarafından otomatik olarak oluşturulan dosyaları göndermekten kaçınmak için, `.gitignore`'nize aşağıdakileri ekleyin:
|
|
491
465
|
|
|
492
466
|
```bash
|
|
493
|
-
#
|
|
467
|
+
# Intlayer tarafından oluşturulan dosyaları yok say
|
|
494
468
|
.intlayer
|
|
495
469
|
```
|
|
496
470
|
|
|
@@ -531,7 +505,7 @@ Intlayer öncelikle Web Intl API'sini hedefler; React Native'de uygun polyfill'l
|
|
|
531
505
|
|
|
532
506
|
Kontrol Listesi:
|
|
533
507
|
|
|
534
|
-
- `intlayer
|
|
508
|
+
- `intlayer` ve `react-native-intlayer`'ın en son sürümlerini kullanın.
|
|
535
509
|
- Intlayer polyfill'ini etkinleştirin.
|
|
536
510
|
- `getLocaleName` veya diğer Intl-API tabanlı yardımcı programları kullanıyorsanız, bu polyfill'leri erken aktarın (örneğin `index.js` veya `App.tsx` içinde):
|
|
537
511
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-01-21
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-06-25
|
|
4
4
|
title: react-native-intlayer Paket Dokümantasyonu
|
|
5
|
-
description: Intlayer için React Native desteği, provider'lar
|
|
5
|
+
description: Intlayer için React Native desteği, provider'lar, hook'lar, polyfill'ler ve Metro yapılandırması sağlar.
|
|
6
6
|
keywords:
|
|
7
7
|
- react-native-intlayer
|
|
8
8
|
- react-native
|
|
@@ -14,6 +14,9 @@ slugs:
|
|
|
14
14
|
- react-native-intlayer
|
|
15
15
|
- exports
|
|
16
16
|
history:
|
|
17
|
+
- version: 9.0.0
|
|
18
|
+
date: 2026-06-25
|
|
19
|
+
changes: "Bir React Native uygulamasının yalnızca react-native-intlayer'a bağımlı olması için tam react-intlayer API'sini (hook'lar, yardımcı programlar, format/html/markdown alt yolları) yeniden dışa aktar"
|
|
17
20
|
- version: 8.0.0
|
|
18
21
|
date: 2026-01-21
|
|
19
22
|
changes: "Tüm dışa aktarımlar için birleştirilmiş dokümantasyon"
|
|
@@ -22,7 +25,9 @@ author: aymericzip
|
|
|
22
25
|
|
|
23
26
|
# react-native-intlayer Paketi
|
|
24
27
|
|
|
25
|
-
`react-native-intlayer` paketi, Intlayer'ı React Native uygulamalarına entegre etmek için gerekli araçları sağlar.
|
|
28
|
+
`react-native-intlayer` paketi, Intlayer'ı React Native uygulamalarına entegre etmek için gerekli araçları sağlar. React Native'e hazır `IntlayerProvider` ile tam `react-intlayer` API'sini (hook'lar ve yardımcı programlar) yeniden dışa aktarır, ayrıca React Native tarafından gereken polyfill'leri ve Metro yapılandırmasını içerir.
|
|
29
|
+
|
|
30
|
+
> Bir React Native uygulamasında **her şeyi** `react-native-intlayer`'dan içe aktarın. `react-intlayer`'ı doğrudan yüklemeniz veya içe aktarmanız gerekmez.
|
|
26
31
|
|
|
27
32
|
## Kurulum
|
|
28
33
|
|
|
@@ -34,14 +39,30 @@ npm install react-native-intlayer
|
|
|
34
39
|
|
|
35
40
|
### Provider (Sağlayıcı)
|
|
36
41
|
|
|
37
|
-
| Bileşen | Açıklama
|
|
38
|
-
| ------------------ |
|
|
39
|
-
| `IntlayerProvider` | Uygulamanızı saran ve Intlayer bağlamını sağlayan provider bileşeni. |
|
|
42
|
+
| Bileşen | Açıklama |
|
|
43
|
+
| ------------------ | ------------------------------------------------------------------------------------------------------------------- |
|
|
44
|
+
| `IntlayerProvider` | Uygulamanızı saran ve Intlayer bağlamını sağlayan provider bileşeni. Gerekli polyfill'leri otomatik olarak uygular. |
|
|
45
|
+
|
|
46
|
+
```tsx
|
|
47
|
+
import { IntlayerProvider } from "react-native-intlayer";
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Hook'lar ve Yardımcı Programlar
|
|
51
|
+
|
|
52
|
+
Bunlar `react-intlayer`'dan yeniden dışa aktarılmıştır, bu nedenle doğrudan `react-native-intlayer`'dan içe aktarabilirsiniz:
|
|
40
53
|
|
|
41
|
-
|
|
54
|
+
| Dışa Aktarım | Açıklama |
|
|
55
|
+
| ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
|
|
56
|
+
| `useIntlayer` | Bir sözlük anahtarı için yerelleştirilmiş içeriğe erişin. |
|
|
57
|
+
| `useLocale` | Geçerli yerel ayarı okuyun ve değiştirin. |
|
|
58
|
+
| `useDictionary`, `useDictionaryAsync`, `useDictionaryDynamic`, `useLoadDynamic` | Sözlük içeriğini çeşitli yollarla yükleyin. |
|
|
59
|
+
| `useI18n` | i18next uyumlu hook. |
|
|
60
|
+
| `t` | Satır içi çeviri yardımcısı. |
|
|
61
|
+
| `getIntlayer`, `getDictionary` | Zorunlu içerik alıcıları. |
|
|
62
|
+
| `localeCookie`, `localeInStorage`, `setLocaleCookie`, `setLocaleInStorage`, `useLocaleCookie`, `useLocaleStorage` | Yerel ayar kalıcılığı yardımcıları. |
|
|
42
63
|
|
|
43
64
|
```tsx
|
|
44
|
-
import "react-native-intlayer";
|
|
65
|
+
import { useIntlayer, useLocale, t } from "react-native-intlayer";
|
|
45
66
|
```
|
|
46
67
|
|
|
47
68
|
### Polyfill
|
|
@@ -50,15 +71,30 @@ import "react-native-intlayer";
|
|
|
50
71
|
| ------------------ | --------------------------------------------------------------------------------------- |
|
|
51
72
|
| `intlayerPolyfill` | React Native'ın Intlayer'ı desteklemesi için gerekli polyfill'leri uygulayan fonksiyon. |
|
|
52
73
|
|
|
53
|
-
|
|
74
|
+
```tsx
|
|
75
|
+
import { intlayerPolyfill } from "react-native-intlayer";
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
> Polyfill, `IntlayerProvider`'ı içe aktardığınızda otomatik olarak uygulanır. `intlayerPolyfill`'i yalnızca provider bağlanmadan önce polyfill'lere ihtiyaç duyuyorsanız manuel olarak çağırın.
|
|
79
|
+
|
|
80
|
+
### Biçimleyiciler
|
|
81
|
+
|
|
82
|
+
Sayı, tarih ve diğer Intl tabanlı biçimlendirme hook'ları `/format` alt yolundan kullanılabilir:
|
|
83
|
+
|
|
84
|
+
```tsx
|
|
85
|
+
import { useNumber, useDate } from "react-native-intlayer/format";
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Markdown ve HTML Oluşturma
|
|
54
89
|
|
|
55
90
|
```tsx
|
|
56
|
-
import "react-native-intlayer";
|
|
91
|
+
import { MarkdownProvider } from "react-native-intlayer/markdown";
|
|
92
|
+
import { HTMLProvider } from "react-native-intlayer/html";
|
|
57
93
|
```
|
|
58
94
|
|
|
59
95
|
### Metro Yapılandırması
|
|
60
96
|
|
|
61
|
-
react-native-intlayer paketi, Intlayer'ın React Native ile doğru şekilde çalışmasını sağlamak için Metro yapılandırma yardımcıları sağlar.
|
|
97
|
+
`react-native-intlayer` paketi, Intlayer'ın React Native ile doğru şekilde çalışmasını sağlamak için Metro yapılandırma yardımcıları sağlar.
|
|
62
98
|
|
|
63
99
|
| Fonksiyon | Açıklama |
|
|
64
100
|
| ------------------------- | ------------------------------------------------------------------------------------------------------- |
|
|
@@ -66,9 +102,6 @@ react-native-intlayer paketi, Intlayer'ın React Native ile doğru şekilde çal
|
|
|
66
102
|
| `configMetroIntlayerSync` | Intlayer kaynaklarını hazırlamadan Metro yapılandırmasını birleştiren senkron fonksiyon. |
|
|
67
103
|
| `exclusionList` | bundle'dan içerik dosyalarını hariç tutmak için Metro'nun blockList'i için bir RegExp deseni oluşturur. |
|
|
68
104
|
|
|
69
|
-
İçe Aktarım:
|
|
70
|
-
|
|
71
105
|
```tsx
|
|
72
|
-
import "react-native-intlayer/metro";
|
|
73
|
-
import "react-native-intlayer/metro";
|
|
106
|
+
import { configMetroIntlayer } from "react-native-intlayer/metro";
|
|
74
107
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-06-18
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-06-25
|
|
4
4
|
title: "Expo + React Native i18n - Повний посібник з перекладу вашого застосунку"
|
|
5
5
|
description: "Більше ніякого i18next. Посібник 2026 зі створення багатомовного (i18n) застосунку Expo + React Native. Перекладайте за допомогою ШІ-агентів та оптимізуйте розмір бандлу, SEO та продуктивність."
|
|
6
6
|
keywords:
|
|
@@ -17,6 +17,9 @@ slugs:
|
|
|
17
17
|
applicationTemplate: https://github.com/aymericzip/intlayer-react-native-template
|
|
18
18
|
applicationShowcase: https://intlayer-react-native.vercel.app
|
|
19
19
|
history:
|
|
20
|
+
- version: 9.0.0
|
|
21
|
+
date: 2026-06-25
|
|
22
|
+
changes: "Імпорт провайдерів та хуків безпосередньо з react-native-intlayer; react-intlayer більше не потрібен як пряма залежність"
|
|
20
23
|
- version: 8.9.0
|
|
21
24
|
date: 2026-05-04
|
|
22
25
|
changes: "Оновлення використання API useIntlayer у Solid для прямого доступу до властивостей"
|
|
@@ -40,7 +43,7 @@ author: aymericzip
|
|
|
40
43
|
<iframe
|
|
41
44
|
src="https://ide.intlayer.org/aymericzip/intlayer-react-native-template?file=intlayer.config.ts"
|
|
42
45
|
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
43
|
-
title="
|
|
46
|
+
title="Demo CodeSandbox - How to Internationalize your application using Intlayer"
|
|
44
47
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
45
48
|
loading="lazy"
|
|
46
49
|
/>
|
|
@@ -83,13 +86,13 @@ Intlayer оптимізовано для ідеальної роботи з Reac
|
|
|
83
86
|
|
|
84
87
|
<Accordion header="Агент AI">
|
|
85
88
|
|
|
86
|
-
Спільне розміщення вмісту **зменшує контекст, необхідний** для великих мовних моделей (LLM). Intlayer також постачається з набором інструментів, наприклад **CLI** для перевірки відсутніх
|
|
89
|
+
Спільне розміщення вмісту **зменшує контекст, необхідний** для великих мовних моделей (LLM). Intlayer також постачається з набором інструментів, наприклад **CLI** для перевірки відсутніх перекладів, **[LSP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/lsp.md)**, **[MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/mcp_server.md)** і **[навички агента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/agent_skills.md)**, щоб зробити роботу розробника (DX) ще зручнішою для агентів ШІ.
|
|
87
90
|
|
|
88
91
|
</Accordion>
|
|
89
92
|
|
|
90
93
|
<Accordion header="Автоматизація">
|
|
91
94
|
|
|
92
|
-
Використовуйте автоматизацію для перекладу в конвеєрі CI/CD за допомогою LLM за вашим вибором за рахунок вашого постачальника штучного інтелекту. Intlayer також пропонує **компілятор** для автоматизації
|
|
95
|
+
Використовуйте автоматизацію для перекладу в конвеєрі CI/CD за допомогою LLM за вашим вибором за рахунок вашого постачальника штучного інтелекту. Intlayer також пропонує **компілятор** для автоматизації екстракції вмісту, а також [веб-платформу](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md), щоб допомогти **перекладати у фоновому режимі**.
|
|
93
96
|
|
|
94
97
|
</Accordion>
|
|
95
98
|
|
|
@@ -121,27 +124,39 @@ Intlayer оптимізовано для ідеальної роботи з Reac
|
|
|
121
124
|
Зі свого проекту React Native встановіть такі пакети:
|
|
122
125
|
|
|
123
126
|
```bash packageManager="npm"
|
|
124
|
-
|
|
125
|
-
npm install --save-dev react-native-intlayer
|
|
126
|
-
npx intlayer ініціал
|
|
127
|
+
npx intlayer-cli init --interactive
|
|
127
128
|
```
|
|
128
129
|
|
|
129
130
|
```bash packageManager="pnpm"
|
|
130
|
-
pnpm
|
|
131
|
-
pnpm add --save-dev react-native-intlayer
|
|
132
|
-
pnpm intlayer ініціал
|
|
131
|
+
pnpm dlx intlayer-cli init --interactive
|
|
133
132
|
```
|
|
134
133
|
|
|
135
|
-
```bash packageManager="
|
|
136
|
-
|
|
137
|
-
yarn add --save-dev react-native-intlayer
|
|
138
|
-
yarn intlayer ініц
|
|
134
|
+
```bash packageManager="yarn"
|
|
135
|
+
yarn dlx intlayer-cli init --interactive
|
|
139
136
|
```
|
|
140
137
|
|
|
141
|
-
```bash packageManager="
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
138
|
+
```bash packageManager="bun"
|
|
139
|
+
bunx intlayer-cli init --interactive
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
> Прапорець `--interactive` є необов'язковим. Використовуйте `intlayer-cli init`, якщо ви є ШІ-агентом.
|
|
143
|
+
|
|
144
|
+
> Ця команда визначить ваше середовище та встановить необхідні пакети. Наприклад:
|
|
145
|
+
|
|
146
|
+
```bash packageManager="npm"
|
|
147
|
+
npm install intlayer react-native-intlayer
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
```bash packageManager="pnpm"
|
|
151
|
+
pnpm add intlayer react-native-intlayer
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
```bash packageManager="yarn"
|
|
155
|
+
yarn add intlayer react-native-intlayer
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
```bash packageManager="bun"
|
|
159
|
+
bun add intlayer react-native-intlayer
|
|
145
160
|
```
|
|
146
161
|
|
|
147
162
|
### Пакети
|
|
@@ -149,17 +164,14 @@ bun x intlayer init
|
|
|
149
164
|
- **intlayer**
|
|
150
165
|
Основний i18n-набір інструментів для конфігурації, вмісту словників, генерації типів та команд CLI.
|
|
151
166
|
|
|
152
|
-
- **react-intlayer**
|
|
153
|
-
Інтеграція для React, яка надає провайдери контексту та React hooks, які ви використовуватимете в React Native для отримання та перемикання локалей.
|
|
154
|
-
|
|
155
167
|
- **react-native-intlayer**
|
|
156
|
-
Інтеграція для React Native, яка
|
|
168
|
+
Інтеграція для React Native, яка надає провайдери контексту та React hooks для отримання та перемикання локалей, поліфіли React Native, а також плагін Metro для інтеграції Intlayer з бандлером React Native. Він реекспортує все з `react-intlayer`, тому у застосунку React Native достатньо лише цього одного пакету.
|
|
157
169
|
|
|
158
170
|
---
|
|
159
171
|
|
|
160
172
|
</Step>
|
|
161
173
|
|
|
162
|
-
<Step number={
|
|
174
|
+
<Step number={2} title="Створіть конфігурацію Intlayer">
|
|
163
175
|
|
|
164
176
|
У корені вашого проєкту (або в будь-якому зручному місці) створіть файл **Intlayer config**. Він може виглядати так:
|
|
165
177
|
|
|
@@ -187,15 +199,15 @@ export default config;
|
|
|
187
199
|
У цій конфігурації ви можете:
|
|
188
200
|
|
|
189
201
|
- Налаштувати ваш **список підтримуваних локалей**.
|
|
190
|
-
-
|
|
202
|
+
- Встановити локаль за **замовчуванням**.
|
|
191
203
|
- Пізніше ви зможете додати більш просунуті опції (наприклад, логи, користувацькі директорії контенту тощо).
|
|
192
204
|
- Див. [документацію конфігурації Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md) для детальнішої інформації.
|
|
193
205
|
|
|
194
206
|
</Step>
|
|
195
207
|
|
|
196
|
-
<Step number={
|
|
208
|
+
<Step number={3} title="Додайте плагін Metro">
|
|
197
209
|
|
|
198
|
-
Metro
|
|
210
|
+
Metro — це бандлер для React Native. Він є бандлером за замовчуванням для проєктів React Native, створених за допомогою команди `react-native init`. Щоб використовувати Intlayer з Metro, потрібно додати плагін у файл `metro.config.js`:
|
|
199
211
|
|
|
200
212
|
```js fileName="metro.config.js"
|
|
201
213
|
const { getDefaultConfig } = require("expo/metro-config");
|
|
@@ -208,16 +220,16 @@ module.exports = (async () => {
|
|
|
208
220
|
})();
|
|
209
221
|
```
|
|
210
222
|
|
|
211
|
-
> Примітка: `configMetroIntlayer
|
|
223
|
+
> Примітка: `configMetroIntlayer` — це функція, яка повертає проміс. Використовуйте `configMetroIntlayerSync`, якщо хочете виконувати це синхронно, або уникайте IIFE (Immediately Invoked Function Expression).
|
|
212
224
|
> Примітка: `configMetroIntlayerSync` не дозволяє будувати словники intlayer під час запуску сервера
|
|
213
225
|
|
|
214
226
|
</Step>
|
|
215
227
|
|
|
216
|
-
<Step number={
|
|
228
|
+
<Step number={4} title="Додайте провайдер Intlayer">
|
|
217
229
|
|
|
218
|
-
Щоб синхронізувати мову користувача по всьому застосунку, потрібно обгорнути кореневий компонент компонентом `IntlayerProvider` з `react-intlayer
|
|
230
|
+
Щоб синхронізувати мову користувача по всьому застосунку, потрібно обгорнути кореневий компонент компонентом `IntlayerProvider` з `react-native-intlayer`.
|
|
219
231
|
|
|
220
|
-
>
|
|
232
|
+
> Завжди імпортуйте з `react-native-intlayer`. Його `IntlayerProvider` включає поліфіли для Web API, які використовує Intlayer, і пакет реекспортує всі хуки та утиліти з `react-intlayer`.
|
|
221
233
|
|
|
222
234
|
Також потрібно додати функцію `intlayerPolyfill` у ваш файл `index.js`, щоб забезпечити правильну роботу Intlayer.
|
|
223
235
|
|
|
@@ -244,7 +256,7 @@ export default RootLayout;
|
|
|
244
256
|
|
|
245
257
|
</Step>
|
|
246
258
|
|
|
247
|
-
<Step number={
|
|
259
|
+
<Step number={5} title="Оголосіть свій контент">
|
|
248
260
|
|
|
249
261
|
Створіть файли **декларації контенту** у будь-якому місці вашого проєкту (зазвичай у `src/`), використовуючи будь-який з форматів розширень, які підтримує Intlayer:
|
|
250
262
|
|
|
@@ -317,7 +329,7 @@ export default homeScreenContent;
|
|
|
317
329
|
|
|
318
330
|
</Step>
|
|
319
331
|
|
|
320
|
-
<Step number={
|
|
332
|
+
<Step number={6} title="Використання Intlayer у ваших компонентах">
|
|
321
333
|
|
|
322
334
|
Використовуйте хук `useIntlayer` у дочірніх компонентах, щоб отримувати локалізований контент.
|
|
323
335
|
|
|
@@ -325,7 +337,7 @@ export default homeScreenContent;
|
|
|
325
337
|
|
|
326
338
|
```tsx fileName="app/(tabs)/index.tsx" codeFormat={["typescript", "esm"]}
|
|
327
339
|
import { Image, StyleSheet, Platform } from "react-native";
|
|
328
|
-
import { useIntlayer } from "react-intlayer";
|
|
340
|
+
import { useIntlayer } from "react-native-intlayer";
|
|
329
341
|
import { HelloWave } from "@/components/HelloWave";
|
|
330
342
|
import ParallaxScrollView from "@/components/ParallaxScrollView";
|
|
331
343
|
import { ThemedText } from "@/components/ThemedText";
|
|
@@ -335,8 +347,6 @@ import { type FC } from "react";
|
|
|
335
347
|
const HomeScreen = (): FC => {
|
|
336
348
|
const { title, steps } = useIntlayer("home-screen");
|
|
337
349
|
|
|
338
|
-
> Якщо ваш застосунок уже існує, ви можете скористатися [Intlayer Compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/compiler.md) у поєднанні з [командой extract](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/extract.md), щоб перетворити тисячі компонентів за одну секунду.
|
|
339
|
-
|
|
340
350
|
return (
|
|
341
351
|
<ParallaxScrollView
|
|
342
352
|
headerBackgroundColor={{ light: "#A1CEDC", dark: "#1D3D47" }}
|
|
@@ -368,11 +378,13 @@ export default HomeScreen;
|
|
|
368
378
|
|
|
369
379
|
> Коли ви використовуєте `content.someKey` у властивостях, які очікують рядок (наприклад, `title` кнопки або `children` компонента `Text`), **викликайте `content.someKey.value`**, щоб отримати фактичний рядок.
|
|
370
380
|
|
|
381
|
+
> Якщо ваш застосунок уже існує, ви можете скористатися [Intlayer Compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/compiler.md) у поєднанні з [командою extract](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/extract.md), щоб перетворити тисячі компонентів за одну секунду.
|
|
382
|
+
|
|
371
383
|
---
|
|
372
384
|
|
|
373
385
|
</Step>
|
|
374
386
|
|
|
375
|
-
<Step number={
|
|
387
|
+
<Step number={7} title="Змінити локаль додатку" isOptional={true}>
|
|
376
388
|
|
|
377
389
|
Щоб перемикати локалі зсередини ваших компонентів, ви можете використовувати метод `setLocale` хука `useLocale`:
|
|
378
390
|
|
|
@@ -380,7 +392,7 @@ export default HomeScreen;
|
|
|
380
392
|
import { type FC } from "react";
|
|
381
393
|
import { View, Text, TouchableOpacity, StyleSheet } from "react-native";
|
|
382
394
|
import { getLocaleName } from "intlayer";
|
|
383
|
-
import { useLocale } from "react-intlayer";
|
|
395
|
+
import { useLocale } from "react-native-intlayer";
|
|
384
396
|
|
|
385
397
|
export const LocaleSwitcher: FC = () => {
|
|
386
398
|
const { setLocale, availableLocales } = useLocale();
|
|
@@ -447,17 +459,17 @@ Intlayer генерує визначення типів у прихованій
|
|
|
447
459
|
|
|
448
460
|
Це дозволяє такі можливості, як:
|
|
449
461
|
|
|
450
|
-
-
|
|
451
|
-
-
|
|
462
|
+
- **Автодоповнення** для ключів вашого словника.
|
|
463
|
+
- **Перевірка типів**, що попереджає, якщо ви звертаєтеся до неіснуючого ключа або є невідповідність типів.
|
|
452
464
|
|
|
453
465
|
---
|
|
454
466
|
|
|
455
|
-
## Git
|
|
467
|
+
## Конфігурація Git
|
|
456
468
|
|
|
457
469
|
Щоб уникнути коміту автоматично згенерованих Intlayer файлів, додайте наступне до вашого `.gitignore`:
|
|
458
470
|
|
|
459
471
|
```bash
|
|
460
|
-
#
|
|
472
|
+
# Ігнорувати файли, згенеровані Intlayer
|
|
461
473
|
.intlayer
|
|
462
474
|
```
|
|
463
475
|
|
|
@@ -471,10 +483,10 @@ Intlayer генерує визначення типів у прихованій
|
|
|
471
483
|
|
|
472
484
|
Це розширення надає:
|
|
473
485
|
|
|
474
|
-
-
|
|
475
|
-
-
|
|
476
|
-
-
|
|
477
|
-
-
|
|
486
|
+
- **Автодоповнення** для ключів перекладу.
|
|
487
|
+
- **Виявлення помилок у реальному часі** для відсутніх перекладів.
|
|
488
|
+
- **Вбудований перегляд** перекладеного вмісту.
|
|
489
|
+
- **Швидкі дії** для простого створення та оновлення перекладів.
|
|
478
490
|
|
|
479
491
|
Для детальнішого опису використання розширення зверніться до [документації Intlayer VS Code Extension](https://intlayer.org/doc/vs-code-extension).
|
|
480
492
|
|
|
@@ -482,9 +494,9 @@ Intlayer генерує визначення типів у прихованій
|
|
|
482
494
|
|
|
483
495
|
## Додаткові ресурси
|
|
484
496
|
|
|
485
|
-
-
|
|
486
|
-
-
|
|
487
|
-
-
|
|
497
|
+
- **Візуальний редактор**: Використовуйте [Intlayer Visual Editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_visual_editor.md) для візуального керування перекладами.
|
|
498
|
+
- **Інтеграція з CMS**: Ви також можете винести та отримувати вміст вашого словника з [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_CMS.md).
|
|
499
|
+
- **Команди CLI**: Ознайомтеся з [Intlayer CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/index.md) для завдань, таких як **вилучення перекладів** або **перевірка відсутніх ключів**.
|
|
488
500
|
|
|
489
501
|
Насолоджуйтесь створенням ваших додатків на **React Native** з повноцінною i18n за допомогою **Intlayer**!
|
|
490
502
|
|
|
@@ -494,13 +506,13 @@ Intlayer генерує визначення типів у прихованій
|
|
|
494
506
|
|
|
495
507
|
React Native може бути менш стабільним, ніж React для Web, тому приділяйте особливу увагу узгодженню версій.
|
|
496
508
|
|
|
497
|
-
Intlayer в першу чергу орієнтований на Web Intl API; на React Native потрібно підключити відповідні
|
|
509
|
+
Intlayer в першу чергу орієнтований на Web Intl API; на React Native потрібно підключити відповідні поліфіли.
|
|
498
510
|
|
|
499
511
|
Контрольний список:
|
|
500
512
|
|
|
501
|
-
- Використовуйте останні версії `intlayer
|
|
502
|
-
- Увімкніть Intlayer
|
|
503
|
-
- Якщо ви використовуєте `getLocaleName` або інші утиліти на базі Intl API, імпортуйте ці
|
|
513
|
+
- Використовуйте останні версії `intlayer` та `react-native-intlayer`.
|
|
514
|
+
- Увімкніть Intlayer поліфіл.
|
|
515
|
+
- Якщо ви використовуєте `getLocaleName` або інші утиліти на базі Intl API, імпортуйте ці поліфіли на ранньому етапі (наприклад, в `index.js` або `App.tsx`):
|
|
504
516
|
|
|
505
517
|
```ts
|
|
506
518
|
import "intl";
|