@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-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 앱 구축 가이드. AI 에이전트로 번역하고 번들 크기, SEO, 성능을 최적화하세요."
|
|
6
6
|
keywords:
|
|
@@ -17,12 +17,18 @@ 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: "Solid useIntlayer API 사용법을 직접 속성 액세스로 업데이트"
|
|
23
26
|
- version: 7.5.9
|
|
24
27
|
date: 2025-12-30
|
|
25
28
|
changes: "init 명령어 추가"
|
|
29
|
+
- version: 6.1.6
|
|
30
|
+
date: 2025-10-02
|
|
31
|
+
changes: "디버그 섹션 추가"
|
|
26
32
|
- version: 5.5.10
|
|
27
33
|
date: 2025-06-29
|
|
28
34
|
changes: "초기 이력"
|
|
@@ -37,7 +43,7 @@ author: aymericzip
|
|
|
37
43
|
<iframe
|
|
38
44
|
src="https://ide.intlayer.org/aymericzip/intlayer-react-native-template?file=intlayer.config.ts"
|
|
39
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"
|
|
40
|
-
title="Demo CodeSandbox - Intlayer"
|
|
46
|
+
title="Demo CodeSandbox - Intlayer를 사용하여 애플리케이션을 국제화하는 방법"
|
|
41
47
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
42
48
|
loading="lazy"
|
|
43
49
|
/>
|
|
@@ -56,22 +62,64 @@ author: aymericzip
|
|
|
56
62
|
</Tab>
|
|
57
63
|
</Tabs>
|
|
58
64
|
|
|
59
|
-
|
|
65
|
+
## 목차
|
|
60
66
|
|
|
61
|
-
|
|
67
|
+
<TOC/>
|
|
62
68
|
|
|
63
|
-
|
|
64
|
-
구성, 사전 콘텐츠, 유형 생성 및 CLI 명령을 위한 핵심 i18n 툴킷입니다.
|
|
69
|
+
## 대안 대비 Intlayer를 선택하는 이유
|
|
65
70
|
|
|
66
|
-
-
|
|
67
|
-
로케일을 얻고 전환하기 위해 React Native에서 사용할 컨텍스트 공급자와 React 후크를 제공하는 React 통합입니다.
|
|
71
|
+
`react-native-localize`나 `i18next`와 같은 주요 솔루션과 비교했을 때, Intlayer는 다음과 같은 통합 최적화 기능을 갖춘 솔루션입니다:
|
|
68
72
|
|
|
69
|
-
|
|
70
|
-
Intlayer를 React Native 번들러와 통합하기 위한 Metro 플러그인을 제공하는 React Native 통합입니다.
|
|
73
|
+
<AccordionGroup>
|
|
71
74
|
|
|
72
|
-
|
|
75
|
+
<Accordion header="완전한 React Native 지원">
|
|
76
|
+
|
|
77
|
+
Intlayer는 React Native와 Expo에서 완벽하게 작동하도록 최적화되어 있으며, **컴포넌트 수준의 콘텐츠 범위 지정**, **TypeScript 지원**, 그리고 모바일 앱에서 국제화(i18n)를 확장하는 데 필요한 모든 기능을 제공합니다.
|
|
78
|
+
|
|
79
|
+
</Accordion>
|
|
80
|
+
|
|
81
|
+
<Accordion header="유지 보수성">
|
|
82
|
+
|
|
83
|
+
애플리케이션의 콘텐츠 범위를 지정하면 대규모 애플리케이션의 **유지 보수가 용이**해집니다. 전체 콘텐츠 코드베이스를 검토해야 하는 부담 없이 단일 기능 폴더를 복제하거나 삭제할 수 있습니다. 또한 Intlayer는 콘텐츠의 정확성을 보장하기 위해 **완전히 타입이 지정**되어 있습니다.
|
|
84
|
+
|
|
85
|
+
</Accordion>
|
|
86
|
+
|
|
87
|
+
<Accordion header="AI 에이전트">
|
|
88
|
+
|
|
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)** 등의 도구 모음을 제공하여 AI 에이전트를 위한 개발자 경험(DX)을 더욱 원활하게 합니다.
|
|
90
|
+
|
|
91
|
+
</Accordion>
|
|
92
|
+
|
|
93
|
+
<Accordion header="자동화">
|
|
94
|
+
|
|
95
|
+
AI 제공업체 비용으로 원하는 LLM을 사용하여 CI/CD 파이프라인에서 자동화로 번역하세요. Intlayer는 콘텐츠 추출을 자동화하는 **컴파일러**와 **백그라운드에서 번역**을 도와주는 [웹 플랫폼](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md)도 제공합니다.
|
|
96
|
+
|
|
97
|
+
</Accordion>
|
|
98
|
+
|
|
99
|
+
<Accordion header="성능">
|
|
100
|
+
|
|
101
|
+
대용량 JSON 파일을 컴포넌트에 연결하면 성능 및 반응성 문제가 발생할 수 있습니다. Intlayer는 빌드 시 콘텐츠 로딩을 최적화합니다.
|
|
102
|
+
|
|
103
|
+
</Accordion>
|
|
104
|
+
|
|
105
|
+
<Accordion header="비개발자와의 확장">
|
|
106
|
+
|
|
107
|
+
단순한 i18n 솔루션 이상으로, Intlayer는 번역사, 카피라이터, 기타 팀원들과의 협업을 원활하게 하는 **자체 호스팅 [비주얼 에디터](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_visual_editor.md)**와 **[완전한 CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md)**를 제공하여 다국어 콘텐츠를 **실시간**으로 관리할 수 있게 합니다. 콘텐츠는 로컬 및/또는 원격으로 저장할 수 있습니다.
|
|
108
|
+
|
|
109
|
+
</Accordion>
|
|
110
|
+
|
|
111
|
+
<Accordion header="번들 크기">
|
|
112
|
+
|
|
113
|
+
페이지에 대용량 JSON 파일을 로드하는 대신 필요한 콘텐츠만 로드하세요. Intlayer는 **번들 및 뷰 크기를 최대 50%까지 줄이는** 데 도움을 줍니다.
|
|
114
|
+
|
|
115
|
+
</Accordion>
|
|
116
|
+
</AccordionGroup>
|
|
117
|
+
|
|
118
|
+
<Steps>
|
|
73
119
|
|
|
74
|
-
|
|
120
|
+
<Step number={1} title="의존성 설치">
|
|
121
|
+
|
|
122
|
+
GitHub에서 [애플리케이션 템플릿](https://github.com/aymericzip/intlayer-react-native-template)을 참조하세요.
|
|
75
123
|
|
|
76
124
|
React Native 프로젝트에서 다음 패키지들을 설치하세요:
|
|
77
125
|
|
|
@@ -96,26 +144,119 @@ bunx intlayer-cli init --interactive
|
|
|
96
144
|
> 이 명령은 환경을 감지하고 필요한 패키지를 설치합니다. 예를 들어:
|
|
97
145
|
|
|
98
146
|
```bash packageManager="npm"
|
|
99
|
-
npm install intlayer react-intlayer
|
|
100
|
-
npm install --save-dev react-native-intlayer
|
|
147
|
+
npm install intlayer react-native-intlayer
|
|
101
148
|
```
|
|
102
149
|
|
|
103
150
|
```bash packageManager="pnpm"
|
|
104
|
-
pnpm add intlayer react-intlayer
|
|
105
|
-
pnpm add --save-dev react-native-intlayer
|
|
151
|
+
pnpm add intlayer react-native-intlayer
|
|
106
152
|
```
|
|
107
153
|
|
|
108
154
|
```bash packageManager="yarn"
|
|
109
|
-
yarn add intlayer react-intlayer
|
|
110
|
-
yarn add --save-dev react-native-intlayer
|
|
155
|
+
yarn add intlayer react-native-intlayer
|
|
111
156
|
```
|
|
112
157
|
|
|
113
158
|
```bash packageManager="bun"
|
|
114
|
-
bun add intlayer react-intlayer
|
|
115
|
-
|
|
159
|
+
bun add intlayer react-native-intlayer
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### 패키지
|
|
163
|
+
|
|
164
|
+
- **intlayer**
|
|
165
|
+
구성, 사전 콘텐츠, 유형 생성 및 CLI 명령을 위한 핵심 i18n 툴킷입니다.
|
|
166
|
+
|
|
167
|
+
- **react-native-intlayer**
|
|
168
|
+
로케일을 얻고 전환하기 위해 사용할 컨텍스트 프로바이더와 React 훅, React Native 폴리필, 그리고 Intlayer를 React Native 번들러와 통합하기 위한 Metro 플러그인을 제공하는 React Native 통합입니다. `react-intlayer`의 모든 것을 재내보내므로 React Native 앱에서는 이 단일 패키지만 필요합니다.
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
</Step>
|
|
173
|
+
|
|
174
|
+
<Step number={2} title="Intlayer 구성 생성">
|
|
175
|
+
|
|
176
|
+
프로젝트 루트(또는 적절한 곳)에 **Intlayer 구성** 파일을 생성하세요. 예시:
|
|
177
|
+
|
|
178
|
+
```ts fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
179
|
+
/**
|
|
180
|
+
* Locales 타입을 사용할 수 없는 경우, tsconfig.json에서 moduleResolution을 "bundler"로 설정해 보세요
|
|
181
|
+
*/
|
|
182
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
183
|
+
|
|
184
|
+
const config: IntlayerConfig = {
|
|
185
|
+
internationalization: {
|
|
186
|
+
locales: [
|
|
187
|
+
Locales.ENGLISH,
|
|
188
|
+
Locales.FRENCH,
|
|
189
|
+
Locales.SPANISH,
|
|
190
|
+
// ... 필요한 다른 로케일 추가
|
|
191
|
+
],
|
|
192
|
+
defaultLocale: Locales.ENGLISH,
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
export default config;
|
|
116
197
|
```
|
|
117
198
|
|
|
118
|
-
|
|
199
|
+
이 구성에서 다음을 설정할 수 있습니다:
|
|
200
|
+
|
|
201
|
+
- **지원되는 로케일 목록** 구성.
|
|
202
|
+
- **기본** 로케일 설정.
|
|
203
|
+
- 나중에 더 많은 고급 옵션(로그, 사용자 정의 콘텐츠 디렉토리 등)을 추가할 수 있습니다.
|
|
204
|
+
- 자세한 내용은 [Intlayer 구성 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md)를 참조하세요.
|
|
205
|
+
|
|
206
|
+
</Step>
|
|
207
|
+
|
|
208
|
+
<Step number={3} title="Metro 플러그인 추가">
|
|
209
|
+
|
|
210
|
+
Metro는 React Native의 번들러입니다. `react-native init` 명령으로 생성된 React Native 프로젝트의 기본 번들러입니다. Intlayer를 Metro와 함께 사용하려면 `metro.config.js` 파일에 플러그인을 추가해야 합니다:
|
|
211
|
+
|
|
212
|
+
```js fileName="metro.config.js"
|
|
213
|
+
const { getDefaultConfig } = require("expo/metro-config");
|
|
214
|
+
const { configMetroIntlayer } = require("react-native-intlayer/metro");
|
|
215
|
+
|
|
216
|
+
module.exports = (async () => {
|
|
217
|
+
const defaultConfig = getDefaultConfig(__dirname);
|
|
218
|
+
|
|
219
|
+
return await configMetroIntlayer(defaultConfig);
|
|
220
|
+
})();
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
> 참고: `configMetroIntlayer`는 Promise 함수입니다. 동기적으로 사용하거나 IIFE(즉시 호출 함수 표현식)를 피하려면 `configMetroIntlayerSync`를 사용하세요.
|
|
224
|
+
> 참고: `configMetroIntlayerSync`는 서버 시작 시 intlayer 사전 빌드를 허용하지 않습니다.
|
|
225
|
+
|
|
226
|
+
</Step>
|
|
227
|
+
|
|
228
|
+
<Step number={4} title="Intlayer 프로바이더 추가">
|
|
229
|
+
|
|
230
|
+
애플리케이션 전체에서 사용자 언어를 동기화하려면 루트 컴포넌트를 `react-native-intlayer`의 `IntlayerProvider` 컴포넌트로 감싸야 합니다.
|
|
231
|
+
|
|
232
|
+
> 항상 `react-native-intlayer`에서 가져오세요. 이 패키지의 `IntlayerProvider`는 Intlayer가 사용하는 웹 API에 대한 폴리필을 포함하며, `react-intlayer`의 모든 훅과 유틸리티를 재내보냅니다.
|
|
233
|
+
|
|
234
|
+
또한 Intlayer가 올바르게 작동할 수 있도록 `index.js` 파일에 `intlayerPolyfill` 함수를 추가해야 합니다.
|
|
235
|
+
|
|
236
|
+
```tsx fileName="app/_layout.tsx" codeFormat={["typescript", "esm"]}
|
|
237
|
+
import { Stack } from "expo-router";
|
|
238
|
+
import { getLocales } from "expo-localization";
|
|
239
|
+
import { IntlayerProvider } from "react-native-intlayer";
|
|
240
|
+
import { type FC } from "react";
|
|
241
|
+
|
|
242
|
+
const getDeviceLocale = () => getLocales()[0]?.languageTag;
|
|
243
|
+
|
|
244
|
+
const RootLayout: FC = () => {
|
|
245
|
+
return (
|
|
246
|
+
<IntlayerProvider defaultLocale={getDeviceLocale()}>
|
|
247
|
+
<Stack>
|
|
248
|
+
<Stack.Screen name="(tabs)" options={{ headerShown: false }} />
|
|
249
|
+
</Stack>
|
|
250
|
+
</IntlayerProvider>
|
|
251
|
+
);
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
export default RootLayout;
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
</Step>
|
|
258
|
+
|
|
259
|
+
<Step number={5} title="콘텐츠 선언하기">
|
|
119
260
|
|
|
120
261
|
프로젝트 내 어디에서나(일반적으로 `src/` 내) **콘텐츠 선언** 파일을 생성하세요. Intlayer가 지원하는 확장자 형식을 사용할 수 있습니다:
|
|
121
262
|
|
|
@@ -184,15 +325,72 @@ export default homeScreenContent;
|
|
|
184
325
|
|
|
185
326
|
---
|
|
186
327
|
|
|
187
|
-
|
|
328
|
+
</Step>
|
|
329
|
+
|
|
330
|
+
<Step number={6} title="컴포넌트에서 Intlayer 사용하기">
|
|
331
|
+
|
|
332
|
+
자식 컴포넌트에서 `useIntlayer` 훅을 사용하여 지역화된 콘텐츠를 가져오세요.
|
|
333
|
+
|
|
334
|
+
### 예시
|
|
335
|
+
|
|
336
|
+
```tsx fileName="app/(tabs)/index.tsx" codeFormat={["typescript", "esm"]}
|
|
337
|
+
import { Image, StyleSheet, Platform } from "react-native";
|
|
338
|
+
import { useIntlayer } from "react-native-intlayer";
|
|
339
|
+
import { HelloWave } from "@/components/HelloWave";
|
|
340
|
+
import ParallaxScrollView from "@/components/ParallaxScrollView";
|
|
341
|
+
import { ThemedText } from "@/components/ThemedText";
|
|
342
|
+
import { ThemedView } from "@/components/ThemedView";
|
|
343
|
+
import { type FC } from "react";
|
|
344
|
+
|
|
345
|
+
const HomeScreen = (): FC => {
|
|
346
|
+
const { title, steps } = useIntlayer("home-screen");
|
|
347
|
+
|
|
348
|
+
return (
|
|
349
|
+
<ParallaxScrollView
|
|
350
|
+
headerBackgroundColor={{ light: "#A1CEDC", dark: "#1D3D47" }}
|
|
351
|
+
headerImage={
|
|
352
|
+
<Image
|
|
353
|
+
source={require("@/assets/images/partial-react-logo.png")}
|
|
354
|
+
style={styles.reactLogo}
|
|
355
|
+
/>
|
|
356
|
+
}
|
|
357
|
+
>
|
|
358
|
+
<ThemedView style={styles.titleContainer}>
|
|
359
|
+
<ThemedText type="title">{title}</ThemedText>
|
|
360
|
+
<HelloWave />
|
|
361
|
+
</ThemedView>
|
|
362
|
+
</ParallaxScrollView>
|
|
363
|
+
);
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
const styles = StyleSheet.create({
|
|
367
|
+
titleContainer: {
|
|
368
|
+
flexDirection: "row",
|
|
369
|
+
alignItems: "center",
|
|
370
|
+
gap: 8,
|
|
371
|
+
},
|
|
372
|
+
});
|
|
373
|
+
|
|
374
|
+
export default HomeScreen;
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
> 문자열 기반 prop(예: 버튼의 `title` 또는 `Text` 컴포넌트의 `children`)에서 `content.someKey`를 사용할 때는 실제 문자열을 얻기 위해 **`content.someKey.value`를 호출**하세요.
|
|
378
|
+
|
|
379
|
+
> 앱이 이미 존재한다면 [Intlayer Compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/compiler.md)와 [extract 명령어](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/cli/extract.md)를 사용하여 수천 개의 컴포넌트를 한 번에 변환할 수 있습니다.
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
</Step>
|
|
188
384
|
|
|
189
|
-
|
|
385
|
+
<Step number={7} title="앱 로케일 변경하기" isOptional={true}>
|
|
386
|
+
|
|
387
|
+
컴포넌트 내에서 로케일을 전환하려면 `useLocale` 훅의 `setLocale` 메서드를 사용할 수 있습니다:
|
|
190
388
|
|
|
191
389
|
```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat={["typescript", "esm"]}
|
|
192
390
|
import { type FC } from "react";
|
|
193
391
|
import { View, Text, TouchableOpacity, StyleSheet } from "react-native";
|
|
194
392
|
import { getLocaleName } from "intlayer";
|
|
195
|
-
import { useLocale } from "react-intlayer";
|
|
393
|
+
import { useLocale } from "react-native-intlayer";
|
|
196
394
|
|
|
197
395
|
export const LocaleSwitcher: FC = () => {
|
|
198
396
|
const { setLocale, availableLocales } = useLocale();
|
|
@@ -237,6 +435,10 @@ const styles = StyleSheet.create({
|
|
|
237
435
|
|
|
238
436
|
> 자세한 내용은 [`useLocale` 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/packages/react-intlayer/useLocale.md)를 참조하세요.
|
|
239
437
|
|
|
438
|
+
</Step>
|
|
439
|
+
|
|
440
|
+
</Steps>
|
|
441
|
+
|
|
240
442
|
## TypeScript 구성하기 (TypeScript를 사용하는 경우)
|
|
241
443
|
|
|
242
444
|
Intlayer는 자동 완성 기능을 향상시키고 번역 오류를 잡기 위해 숨겨진 폴더(기본값은 `.intlayer`)에 타입 정의를 생성합니다:
|
|
@@ -265,7 +467,7 @@ Intlayer는 자동 완성 기능을 향상시키고 번역 오류를 잡기 위
|
|
|
265
467
|
Intlayer가 자동 생성한 파일을 커밋하지 않도록 하려면, `.gitignore`에 다음을 추가하세요:
|
|
266
468
|
|
|
267
469
|
```bash
|
|
268
|
-
#
|
|
470
|
+
# Intlayer가 생성한 파일 무시
|
|
269
471
|
.intlayer
|
|
270
472
|
```
|
|
271
473
|
|
|
@@ -302,13 +504,13 @@ Intlayer와 함께 개발 경험을 향상시키기 위해 공식 **Intlayer VS
|
|
|
302
504
|
|
|
303
505
|
React Native은 React Web보다 덜 안정적일 수 있으므로 버전 정렬에 각별히 주의하십시오.
|
|
304
506
|
|
|
305
|
-
Intlayer는 주로 Web Intl API를 대상으로 하며, React Native에서는 적절한
|
|
507
|
+
Intlayer는 주로 Web Intl API를 대상으로 하며, React Native에서는 적절한 폴리필을 포함해야 합니다.
|
|
306
508
|
|
|
307
509
|
체크리스트:
|
|
308
510
|
|
|
309
|
-
- `intlayer
|
|
310
|
-
- Intlayer
|
|
311
|
-
- `getLocaleName` 또는 다른 Intl-API 기반 유틸리티를 사용하는 경우, 이러한
|
|
511
|
+
- `intlayer`와 `react-native-intlayer`의 최신 버전을 사용하세요.
|
|
512
|
+
- Intlayer 폴리필을 활성화하세요.
|
|
513
|
+
- `getLocaleName` 또는 다른 Intl-API 기반 유틸리티를 사용하는 경우, 이러한 폴리필을 먼저 import하세요 (예: `index.js` 또는 `App.tsx`):
|
|
312
514
|
|
|
313
515
|
```ts
|
|
314
516
|
import "intl";
|
|
@@ -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 패키지 문서
|
|
5
|
-
description: Intlayer용 React Native 지원으로,
|
|
5
|
+
description: Intlayer용 React Native 지원으로, 프로바이더, 훅, 폴리필 및 Metro 구성을 제공합니다.
|
|
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: "React Native 앱이 react-native-intlayer만 의존하도록 전체 react-intlayer API(훅, 유틸리티, format/html/markdown 서브패스)를 재내보내기"
|
|
17
20
|
- version: 8.0.0
|
|
18
21
|
date: 2026-01-21
|
|
19
22
|
changes: "모든 exports에 대한 통합 문서"
|
|
@@ -22,7 +25,9 @@ author: aymericzip
|
|
|
22
25
|
|
|
23
26
|
# react-native-intlayer 패키지
|
|
24
27
|
|
|
25
|
-
`react-native-intlayer` 패키지는 Intlayer를 React Native 애플리케이션에 통합하는 데 필요한 도구를 제공합니다.
|
|
28
|
+
`react-native-intlayer` 패키지는 Intlayer를 React Native 애플리케이션에 통합하는 데 필요한 도구를 제공합니다. React Native 전용 `IntlayerProvider`와 함께 전체 `react-intlayer` API(훅 및 유틸리티)를 재내보내며, React Native에 필요한 폴리필과 Metro 구성도 포함합니다.
|
|
29
|
+
|
|
30
|
+
> React Native 앱에서는 `react-native-intlayer`에서 **모든 것**을 가져오세요. `react-intlayer`를 직접 설치하거나 가져올 필요가 없습니다.
|
|
26
31
|
|
|
27
32
|
## 설치
|
|
28
33
|
|
|
@@ -34,14 +39,30 @@ npm install react-native-intlayer
|
|
|
34
39
|
|
|
35
40
|
### 프로바이더
|
|
36
41
|
|
|
37
|
-
| 컴포넌트 | 설명
|
|
38
|
-
| ------------------ |
|
|
39
|
-
| `IntlayerProvider` | 애플리케이션을 래핑하고 Intlayer 컨텍스트를 제공하는 Provider 컴포넌트. |
|
|
42
|
+
| 컴포넌트 | 설명 |
|
|
43
|
+
| ------------------ | ------------------------------------------------------------------------------------------------------------ |
|
|
44
|
+
| `IntlayerProvider` | 애플리케이션을 래핑하고 Intlayer 컨텍스트를 제공하는 Provider 컴포넌트. 필요한 폴리필을 자동으로 적용합니다. |
|
|
45
|
+
|
|
46
|
+
```tsx
|
|
47
|
+
import { IntlayerProvider } from "react-native-intlayer";
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 훅 및 유틸리티
|
|
51
|
+
|
|
52
|
+
이것들은 `react-intlayer`에서 재내보내지므로 `react-native-intlayer`에서 직접 가져올 수 있습니다:
|
|
40
53
|
|
|
41
|
-
|
|
54
|
+
| 내보내기 | 설명 |
|
|
55
|
+
| ----------------------------------------------------------------------------------------------------------------- | -------------------------------------- |
|
|
56
|
+
| `useIntlayer` | 사전 키에 대한 지역화된 콘텐츠에 접근. |
|
|
57
|
+
| `useLocale` | 현재 로케일을 읽고 변경. |
|
|
58
|
+
| `useDictionary`, `useDictionaryAsync`, `useDictionaryDynamic`, `useLoadDynamic` | 다양한 방식으로 사전 콘텐츠 로드. |
|
|
59
|
+
| `useI18n` | i18next 호환 훅. |
|
|
60
|
+
| `t` | 인라인 번역 헬퍼. |
|
|
61
|
+
| `getIntlayer`, `getDictionary` | 명령형 콘텐츠 게터. |
|
|
62
|
+
| `localeCookie`, `localeInStorage`, `setLocaleCookie`, `setLocaleInStorage`, `useLocaleCookie`, `useLocaleStorage` | 로케일 지속성 헬퍼. |
|
|
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
|
### 폴리필
|
|
@@ -50,15 +71,30 @@ import "react-native-intlayer";
|
|
|
50
71
|
| ------------------ | ------------------------------------------------------------------------ |
|
|
51
72
|
| `intlayerPolyfill` | React Native에서 Intlayer를 지원하기 위해 필요한 폴리필을 적용하는 함수. |
|
|
52
73
|
|
|
53
|
-
|
|
74
|
+
```tsx
|
|
75
|
+
import { intlayerPolyfill } from "react-native-intlayer";
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
> `IntlayerProvider`를 가져올 때 폴리필이 자동으로 적용됩니다. 프로바이더가 마운트되기 전에 폴리필이 필요한 경우에만 `intlayerPolyfill`을 수동으로 호출하세요.
|
|
79
|
+
|
|
80
|
+
### 포맷터
|
|
81
|
+
|
|
82
|
+
숫자, 날짜 및 기타 Intl 기반 포맷팅 훅은 `/format` 서브패스에서 사용할 수 있습니다:
|
|
83
|
+
|
|
84
|
+
```tsx
|
|
85
|
+
import { useNumber, useDate } from "react-native-intlayer/format";
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 마크다운 및 HTML 렌더링
|
|
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 구성
|
|
60
96
|
|
|
61
|
-
|
|
97
|
+
`react-native-intlayer` 패키지는 Intlayer가 React Native에서 올바르게 작동하도록 Metro 구성 유틸리티를 제공합니다.
|
|
62
98
|
|
|
63
99
|
| 함수 | 설명 |
|
|
64
100
|
| ------------------------- | ----------------------------------------------------------------------------------------- |
|
|
@@ -66,8 +102,6 @@ The `react-native-intlayer` 패키지는 Intlayer가 React Native에서 올바
|
|
|
66
102
|
| `configMetroIntlayerSync` | Intlayer 리소스를 준비하지 않고 Metro 구성을 병합하는 동기 함수. |
|
|
67
103
|
| `exclusionList` | 번들에서 콘텐츠 파일을 제외하기 위해 Metro의 blockList에 사용할 RegExp 패턴을 생성합니다. |
|
|
68
104
|
|
|
69
|
-
임포트:
|
|
70
|
-
|
|
71
105
|
```tsx
|
|
72
|
-
import "react-native-intlayer/metro";
|
|
106
|
+
import { configMetroIntlayer } from "react-native-intlayer/metro";
|
|
73
107
|
```
|