@intlayer/docs 5.7.7 β 5.8.0-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/blog/ar/intlayer_with_next-i18next.md +3 -4
- package/blog/ar/intlayer_with_next-intl.md +3 -4
- package/blog/ar/intlayer_with_react-i18next.md +1 -1
- package/blog/ar/intlayer_with_react-intl.md +1 -1
- package/blog/de/intlayer_with_next-i18next.md +3 -4
- package/blog/de/intlayer_with_react-intl.md +1 -1
- package/blog/en/intlayer_with_next-i18next.md +3 -4
- package/blog/en/intlayer_with_next-intl.md +3 -4
- package/blog/en/intlayer_with_react-i18next.md +1 -1
- package/blog/en/intlayer_with_react-intl.md +1 -1
- package/blog/en-GB/intlayer_with_next-i18next.md +3 -4
- package/blog/en-GB/intlayer_with_next-intl.md +3 -4
- package/blog/en-GB/intlayer_with_react-i18next.md +1 -1
- package/blog/en-GB/intlayer_with_react-intl.md +1 -1
- package/blog/es/intlayer_with_next-i18next.md +3 -4
- package/blog/es/intlayer_with_next-intl.md +3 -4
- package/blog/es/intlayer_with_react-i18next.md +1 -1
- package/blog/es/intlayer_with_react-intl.md +1 -1
- package/blog/fr/intlayer_with_next-i18next.md +3 -4
- package/blog/fr/intlayer_with_next-intl.md +3 -4
- package/blog/fr/intlayer_with_react-i18next.md +1 -1
- package/blog/fr/intlayer_with_react-intl.md +1 -1
- package/blog/hi/intlayer_with_next-i18next.md +3 -4
- package/blog/hi/intlayer_with_next-intl.md +3 -4
- package/blog/hi/intlayer_with_react-i18next.md +1 -1
- package/blog/hi/intlayer_with_react-intl.md +1 -1
- package/blog/it/intlayer_with_next-i18next.md +3 -4
- package/blog/it/intlayer_with_next-intl.md +3 -4
- package/blog/it/intlayer_with_react-i18next.md +1 -1
- package/blog/it/intlayer_with_react-intl.md +1 -1
- package/blog/ja/intlayer_with_next-i18next.md +3 -4
- package/blog/ja/intlayer_with_next-intl.md +3 -4
- package/blog/ja/intlayer_with_react-intl.md +1 -1
- package/blog/ko/intlayer_with_next-i18next.md +3 -4
- package/blog/ko/intlayer_with_next-intl.md +3 -4
- package/blog/ko/intlayer_with_react-intl.md +1 -1
- package/blog/pt/intlayer_with_next-i18next.md +3 -4
- package/blog/pt/intlayer_with_next-intl.md +3 -4
- package/blog/pt/intlayer_with_react-intl.md +1 -1
- package/blog/ru/intlayer_with_next-i18next.md +3 -4
- package/blog/ru/intlayer_with_next-intl.md +3 -4
- package/blog/ru/intlayer_with_react-i18next.md +1 -1
- package/blog/ru/intlayer_with_react-intl.md +1 -1
- package/blog/zh/intlayer_with_next-i18next.md +3 -4
- package/blog/zh/intlayer_with_next-intl.md +3 -4
- package/blog/zh/intlayer_with_react-i18next.md +1 -1
- package/blog/zh/intlayer_with_react-intl.md +1 -1
- package/dist/cjs/generated/docs.entry.cjs +41 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +41 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/CI_CD.md +67 -41
- package/docs/ar/formatters.md +239 -0
- package/docs/ar/interest_of_intlayer.md +162 -49
- package/docs/ar/introduction.md +3 -3
- package/docs/ar/packages/intlayer/index.md +3 -3
- package/docs/ar/packages/next-intlayer/index.md +3 -3
- package/docs/de/CI_CD.md +63 -37
- package/docs/de/formatters.md +239 -0
- package/docs/de/interest_of_intlayer.md +161 -47
- package/docs/de/introduction.md +3 -3
- package/docs/de/packages/intlayer/index.md +3 -3
- package/docs/de/packages/next-intlayer/index.md +3 -3
- package/docs/de/packages/react-intlayer/index.md +3 -3
- package/docs/en/CI_CD.md +51 -27
- package/docs/en/formatters.md +250 -0
- package/docs/en/interest_of_intlayer.md +159 -46
- package/docs/en/introduction.md +3 -3
- package/docs/en/packages/intlayer/index.md +3 -3
- package/docs/en/packages/next-intlayer/index.md +3 -3
- package/docs/en/packages/react-intlayer/index.md +3 -3
- package/docs/en-GB/CI_CD.md +58 -32
- package/docs/en-GB/formatters.md +239 -0
- package/docs/en-GB/interest_of_intlayer.md +160 -53
- package/docs/en-GB/packages/intlayer/index.md +3 -3
- package/docs/en-GB/packages/next-intlayer/index.md +3 -3
- package/docs/en-GB/packages/react-intlayer/index.md +3 -3
- package/docs/es/CI_CD.md +68 -42
- package/docs/es/formatters.md +239 -0
- package/docs/es/interest_of_intlayer.md +159 -47
- package/docs/es/introduction.md +3 -3
- package/docs/es/packages/intlayer/index.md +3 -3
- package/docs/es/packages/next-intlayer/index.md +3 -3
- package/docs/fr/formatters.md +239 -0
- package/docs/fr/interest_of_intlayer.md +160 -46
- package/docs/fr/introduction.md +3 -3
- package/docs/fr/packages/intlayer/index.md +3 -3
- package/docs/fr/packages/next-intlayer/index.md +3 -3
- package/docs/fr/packages/react-intlayer/index.md +3 -3
- package/docs/hi/CI_CD.md +69 -44
- package/docs/hi/formatters.md +239 -0
- package/docs/hi/interest_of_intlayer.md +158 -42
- package/docs/hi/introduction.md +3 -3
- package/docs/hi/packages/intlayer/index.md +3 -3
- package/docs/hi/packages/next-intlayer/index.md +3 -3
- package/docs/hi/packages/react-intlayer/index.md +3 -3
- package/docs/it/CI_CD.md +67 -41
- package/docs/it/formatters.md +239 -0
- package/docs/it/interest_of_intlayer.md +160 -46
- package/docs/it/introduction.md +3 -3
- package/docs/it/packages/intlayer/index.md +3 -3
- package/docs/it/packages/next-intlayer/index.md +3 -3
- package/docs/it/packages/react-intlayer/index.md +3 -3
- package/docs/ja/CI_CD.md +67 -41
- package/docs/ja/formatters.md +261 -0
- package/docs/ja/interest_of_intlayer.md +157 -48
- package/docs/ja/introduction.md +3 -3
- package/docs/ja/packages/intlayer/index.md +3 -3
- package/docs/ja/packages/next-intlayer/index.md +3 -3
- package/docs/ja/packages/react-intlayer/index.md +3 -3
- package/docs/ko/CI_CD.md +63 -37
- package/docs/ko/formatters.md +258 -0
- package/docs/ko/interest_of_intlayer.md +160 -48
- package/docs/ko/introduction.md +3 -3
- package/docs/ko/packages/intlayer/index.md +3 -3
- package/docs/ko/packages/next-intlayer/index.md +3 -3
- package/docs/ko/packages/react-intlayer/index.md +3 -3
- package/docs/pt/CI_CD.md +67 -41
- package/docs/pt/formatters.md +239 -0
- package/docs/pt/interest_of_intlayer.md +162 -47
- package/docs/pt/introduction.md +3 -3
- package/docs/pt/packages/intlayer/index.md +3 -3
- package/docs/pt/packages/next-intlayer/index.md +3 -3
- package/docs/pt/packages/react-intlayer/index.md +3 -3
- package/docs/ru/CI_CD.md +70 -44
- package/docs/ru/formatters.md +239 -0
- package/docs/ru/interest_of_intlayer.md +168 -50
- package/docs/ru/introduction.md +3 -3
- package/docs/ru/packages/intlayer/index.md +3 -3
- package/docs/ru/packages/next-intlayer/index.md +3 -3
- package/docs/ru/packages/react-intlayer/index.md +3 -3
- package/docs/zh/CI_CD.md +62 -36
- package/docs/zh/formatters.md +239 -0
- package/docs/zh/interest_of_intlayer.md +158 -48
- package/docs/zh/introduction.md +3 -3
- package/docs/zh/packages/intlayer/index.md +3 -3
- package/docs/zh/packages/next-intlayer/index.md +3 -3
- package/docs/zh/packages/react-intlayer/index.md +3 -3
- package/package.json +12 -12
- package/src/generated/docs.entry.ts +41 -0
package/docs/ko/CI_CD.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-05-20
|
|
3
|
-
updatedAt: 2025-
|
|
3
|
+
updatedAt: 2025-08-13
|
|
4
4
|
title: CI/CD ν΅ν©
|
|
5
5
|
description: μλνλ μ½ν
μΈ κ΄λ¦¬ λ° λ°°ν¬λ₯Ό μν΄ Intlayerλ₯Ό CI/CD νμ΄νλΌμΈμ ν΅ν©νλ λ°©λ²μ μμ보μΈμ.
|
|
6
6
|
keywords:
|
|
@@ -23,7 +23,7 @@ Intlayerλ μ½ν
μΈ μ μΈ νμΌμ λν λ²μμ μλμΌλ‘ μμ±ν
|
|
|
23
23
|
|
|
24
24
|
## CMS μ¬μ©νκΈ°
|
|
25
25
|
|
|
26
|
-
Intlayerλ₯Ό μ¬μ©νλ©΄ λ‘컬μμλ λ¨μΌ λ‘μΌμΌλ§ μ μΈνκ³ λͺ¨λ λ²μμ CMSλ₯Ό ν΅ν΄ μ격μΌλ‘ κ΄λ¦¬νλ μν¬νλ‘μ°λ₯Ό μ±νν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ μ½ν
μΈ μ λ²μμ΄ μ½λλ² μ΄μ€μ μμ ν λΆλ¦¬λμ΄ μ½ν
μΈ νΈμ§μμκ² λ λ§μ μ μ°μ±μ μ 곡νλ©°, λ³κ²½
|
|
26
|
+
Intlayerλ₯Ό μ¬μ©νλ©΄ λ‘컬μμλ λ¨μΌ λ‘μΌμΌλ§ μ μΈνκ³ λͺ¨λ λ²μμ CMSλ₯Ό ν΅ν΄ μ격μΌλ‘ κ΄λ¦¬νλ μν¬νλ‘μ°λ₯Ό μ±νν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ μ½ν
μΈ μ λ²μμ΄ μ½λλ² μ΄μ€μ μμ ν λΆλ¦¬λμ΄ μ½ν
μΈ νΈμ§μμκ² λ λ§μ μ μ°μ±μ μ 곡νλ©°, ν« μ½ν
μΈ λ¦¬λ‘λ©μ΄ κ°λ₯ν΄μ Έ(λ³κ²½ μ¬ν μ μ©μ μν΄ μ ν리μΌμ΄μ
μ λ€μ λΉλν νμ μμ) νΈλ¦¬ν©λλ€.
|
|
27
27
|
|
|
28
28
|
### μμ ꡬμ±
|
|
29
29
|
|
|
@@ -37,7 +37,7 @@ const config: IntlayerConfig = {
|
|
|
37
37
|
defaultLocale: Locales.ENGLISH,
|
|
38
38
|
},
|
|
39
39
|
editor: {
|
|
40
|
-
dictionaryPriorityStrategy: "distant_first", // μ격 μ½ν
μΈ κ°
|
|
40
|
+
dictionaryPriorityStrategy: "distant_first", // μ격 μ½ν
μΈ κ° μ°μ μμλ₯Ό κ°μ§λλ€
|
|
41
41
|
|
|
42
42
|
applicationURL: process.env.APPLICATION_URL, // CMSμμ μ¬μ©νλ μ ν리μΌμ΄μ
URL
|
|
43
43
|
|
|
@@ -56,7 +56,7 @@ CMSμ λν΄ λ μμλ³΄λ €λ©΄ [곡μ λ¬Έμ](https://github.com/aymericzip/
|
|
|
56
56
|
|
|
57
57
|
## Husky μ¬μ©νκΈ°
|
|
58
58
|
|
|
59
|
-
[Husky](https://typicode.github.io/husky/)λ₯Ό μ¬μ©νμ¬ λ‘컬 Git μν¬νλ‘μ°μ λ²μ μμ±
|
|
59
|
+
[Husky](https://typicode.github.io/husky/)λ₯Ό μ¬μ©νμ¬ λ‘컬 Git μν¬νλ‘μ°μ λ²μ μμ± κ³Όμ μ ν΅ν©ν μ μμ΅λλ€.
|
|
60
60
|
|
|
61
61
|
### μμ ꡬμ±
|
|
62
62
|
|
|
@@ -77,7 +77,7 @@ const config: IntlayerConfig = {
|
|
|
77
77
|
provider: "openai",
|
|
78
78
|
apiKey: process.env.OPENAI_API_KEY, // μμ μ API ν€λ₯Ό μ¬μ©νμΈμ
|
|
79
79
|
|
|
80
|
-
applicationContext: "This is a test application", // μΌκ΄λ λ²μ μμ±μ
|
|
80
|
+
applicationContext: "This is a test application", // μΌκ΄λ λ²μ μμ±μ λμ΅λλ€
|
|
81
81
|
},
|
|
82
82
|
};
|
|
83
83
|
|
|
@@ -85,13 +85,13 @@ export default config;
|
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
```bash fileName=".husky/pre-push"
|
|
88
|
-
npx intlayer build # μ¬μ μ΄ μ΅μ μνμΈμ§
|
|
89
|
-
npx intlayer fill --unpushed --mode fill # λλ½λ λ΄μ©λ§ μ±μ°λ©°, κΈ°μ‘΄ λ΄μ©μ μ
λ°μ΄νΈνμ§
|
|
88
|
+
npx intlayer build # μ¬μ μ΄ μ΅μ μνμΈμ§ νμΈν©λλ€
|
|
89
|
+
npx intlayer fill --unpushed --mode fill # λλ½λ λ΄μ©λ§ μ±μ°λ©°, κΈ°μ‘΄ λ΄μ©μ μ
λ°μ΄νΈνμ§ μμ΅λλ€
|
|
90
90
|
```
|
|
91
91
|
|
|
92
92
|
> Intlayer CLI λͺ
λ Ήμ΄ λ° μ¬μ©λ²μ λν μμΈν λ΄μ©μ [CLI λ¬Έμ](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_cli.md)λ₯Ό μ°Έμ‘°νμΈμ.
|
|
93
93
|
|
|
94
|
-
> μ μ₯μμ μ¬λ¬ μ±μ΄ μκ³ κ°κ° λ³λμ intlayer μΈμ€ν΄μ€λ₯Ό μ¬μ©νλ κ²½μ°,
|
|
94
|
+
> μ μ₯μμ μ¬λ¬ μ±μ΄ μκ³ κ°κ° λ³λμ intlayer μΈμ€ν΄μ€λ₯Ό μ¬μ©νλ κ²½μ°, `--base-dir` μΈμλ₯Ό λ€μκ³Ό κ°μ΄ μ¬μ©ν μ μμ΅λλ€:
|
|
95
95
|
|
|
96
96
|
```bash fileName=".husky/pre-push"
|
|
97
97
|
# μ± 1
|
|
@@ -105,68 +105,94 @@ npx intlayer fill --base-dir ./app2 --unpushed --mode fill
|
|
|
105
105
|
|
|
106
106
|
## GitHub Actions μ¬μ©νκΈ°
|
|
107
107
|
|
|
108
|
-
Intlayerλ μ¬μ λ΄μ©μ
|
|
108
|
+
Intlayerλ μ¬μ λ΄μ©μ μλμΌλ‘ μ±μ°κ³ κ²ν ν μ μλ CLI λͺ
λ Ήμ΄λ₯Ό μ 곡ν©λλ€. μ΄λ GitHub Actionsλ₯Ό μ¬μ©νμ¬ CI/CD μν¬νλ‘μ°μ ν΅ν©ν μ μμ΅λλ€.
|
|
109
109
|
|
|
110
110
|
```yaml fileName=".github/workflows/intlayer-translate.yml"
|
|
111
111
|
name: Intlayer μλ μ±μ°κΈ°
|
|
112
|
+
# μ΄ μν¬νλ‘μ°μ νΈλ¦¬κ±° 쑰건
|
|
112
113
|
on:
|
|
113
|
-
push:
|
|
114
|
-
branches: [ main ]
|
|
115
|
-
paths:
|
|
116
|
-
- 'src/**'
|
|
117
114
|
pull_request:
|
|
118
|
-
branches:
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
115
|
+
branches:
|
|
116
|
+
- "main"
|
|
117
|
+
|
|
118
|
+
permissions:
|
|
119
|
+
contents: write
|
|
120
|
+
pull-requests: write
|
|
122
121
|
|
|
123
122
|
concurrency:
|
|
124
|
-
group:
|
|
123
|
+
group: "autofill-${{ github.ref }}"
|
|
125
124
|
cancel-in-progress: true
|
|
126
125
|
|
|
127
126
|
jobs:
|
|
128
127
|
autofill:
|
|
129
128
|
runs-on: ubuntu-latest
|
|
130
129
|
env:
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
130
|
+
# OpenAI
|
|
131
|
+
AI_MODEL: openai
|
|
132
|
+
AI_PROVIDER: gpt-5-mini
|
|
133
|
+
AI_API_KEY: ${{ secrets.AI_API_KEY }}
|
|
134
134
|
|
|
135
135
|
steps:
|
|
136
|
+
# 1λ¨κ³: μ μ₯μμμ μ΅μ μ½λ κ°μ Έμ€κΈ°
|
|
136
137
|
- name: β¬οΈ μ μ₯μ 체ν¬μμ
|
|
137
|
-
uses: actions/checkout@
|
|
138
|
+
uses: actions/checkout@v4
|
|
138
139
|
with:
|
|
139
|
-
persist-credentials: true
|
|
140
|
+
persist-credentials: true # PR μμ±μ μν μ격 μ¦λͺ
μ μ§
|
|
141
|
+
fetch-depth: 0 # μ°¨μ΄ λΆμμ μν μ 체 git νμ€ν 리 κ°μ Έμ€κΈ°
|
|
140
142
|
|
|
143
|
+
# 2λ¨κ³: Node.js νκ²½ μ€μ
|
|
141
144
|
- name: π’ Node.js μ€μ
|
|
142
|
-
uses: actions/setup-node@
|
|
145
|
+
uses: actions/setup-node@v4
|
|
143
146
|
with:
|
|
144
|
-
node-version: 20
|
|
147
|
+
node-version: 20 # μμ μ±μ μν΄ Node.js 20 LTS μ¬μ©
|
|
145
148
|
|
|
149
|
+
# 3λ¨κ³: νλ‘μ νΈ μμ‘΄μ± μ€μΉ
|
|
146
150
|
- name: π¦ μμ‘΄μ± μ€μΉ
|
|
147
|
-
run: npm
|
|
151
|
+
run: npm install
|
|
152
|
+
|
|
153
|
+
# 4λ¨κ³: λ²μ κ΄λ¦¬λ₯Ό μν΄ Intlayer CLI μ μ μ€μΉ
|
|
154
|
+
- name: π¦ Intlayer μ€μΉ
|
|
155
|
+
run: npm install -g intlayer-cli
|
|
148
156
|
|
|
157
|
+
# 5λ¨κ³: λ²μ νμΌ μμ±μ μν΄ Intlayer νλ‘μ νΈ λΉλ
|
|
149
158
|
- name: βοΈ Intlayer νλ‘μ νΈ λΉλ
|
|
150
159
|
run: npx intlayer build
|
|
151
160
|
|
|
161
|
+
# 6λ¨κ³: AIλ₯Ό μ¬μ©νμ¬ λλ½λ λ²μ μλ μ±μ°κΈ°
|
|
152
162
|
- name: π€ λλ½λ λ²μ μλ μ±μ°κΈ°
|
|
153
|
-
run: npx intlayer fill --git-diff --mode fill
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
163
|
+
run: npx intlayer fill --git-diff --mode fill --provider $AI_PROVIDER --model $AI_MODEL --api-key $AI_API_KEY
|
|
164
|
+
|
|
165
|
+
# 7λ¨κ³: λ³κ²½ μ¬νμ΄ μλμ§ νμΈνκ³ μ»€λ°νκΈ°
|
|
166
|
+
- name: οΏ½ λ³κ²½ μ¬ν νμΈ
|
|
167
|
+
id: check-changes
|
|
168
|
+
run: |
|
|
169
|
+
if [ -n "$(git status --porcelain)" ]; then
|
|
170
|
+
echo "has-changes=true" >> $GITHUB_OUTPUT
|
|
171
|
+
else
|
|
172
|
+
echo "has-changes=false" >> $GITHUB_OUTPUT
|
|
173
|
+
fi
|
|
174
|
+
|
|
175
|
+
# 8λ¨κ³: λ³κ²½ μ¬νμ΄ μμΌλ©΄ 컀λ°νκ³ νΈμνκΈ°
|
|
176
|
+
- name: π€ λ³κ²½ μ¬ν μ»€λ° λ° νΈμ
|
|
177
|
+
if: steps.check-changes.outputs.has-changes == 'true'
|
|
178
|
+
run: |
|
|
179
|
+
git config --local user.email "action@github.com"
|
|
180
|
+
git config --local user.name "GitHub Action"
|
|
181
|
+
git add .
|
|
182
|
+
git commit -m "chore: λλ½λ λ²μ μλ μ±μ°κΈ° [skip ci]"
|
|
183
|
+
git push origin HEAD:${{ github.head_ref }}
|
|
162
184
|
```
|
|
163
185
|
|
|
186
|
+
νκ²½ λ³μλ₯Ό μ€μ νλ €λ©΄ GitHub β μ€μ β Secrets and variables β Actionsλ‘ μ΄λνμ¬ λΉλ°μ μΆκ°νμΈμ.
|
|
187
|
+
|
|
164
188
|
> Huskyμ λ§μ°¬κ°μ§λ‘, λͺ¨λ
Έλ ν¬μ κ²½μ° `--base-dir` μΈμλ₯Ό μ¬μ©νμ¬ κ° μ±μ μμ°¨μ μΌλ‘ μ²λ¦¬ν μ μμ΅λλ€.
|
|
165
189
|
|
|
166
|
-
> κΈ°λ³Έμ μΌλ‘ `--git-diff` μΈμλ κΈ°λ³Έ λΈλμΉ(κΈ°λ³Έκ° `origin/main`)μμ νμ¬ λΈλμΉ(
|
|
190
|
+
> κΈ°λ³Έμ μΌλ‘ `--git-diff` μΈμλ κΈ°λ³Έ λΈλμΉ(κΈ°λ³Έκ° `origin/main`)μμ νμ¬ λΈλμΉ(κΈ°λ³Έκ°: `HEAD`)λ‘ λ³κ²½λ μ¬μ μ νν°λ§ν©λλ€.
|
|
167
191
|
|
|
168
192
|
> Intlayer CLI λͺ
λ Ήμ΄ λ° μ¬μ©λ²μ λν μμΈν λ΄μ©μ [CLI λ¬Έμ](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_cli.md)λ₯Ό μ°Έμ‘°νμΈμ.
|
|
169
193
|
|
|
170
194
|
## λ¬Έμ μ΄λ ₯
|
|
171
195
|
|
|
172
|
-
|
|
196
|
+
| λ²μ | λ μ§ | λ³κ²½ μ¬ν |
|
|
197
|
+
| ------ | ---------- | --------- |
|
|
198
|
+
| 5.5.10 | 2025-06-29 | μ΄κΈ° κΈ°λ‘ |
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2024-08-13
|
|
3
|
+
updatedAt: 2025-08-20
|
|
4
|
+
title: ν¬λ§€ν°
|
|
5
|
+
description: μ«μ, λ°±λΆμ¨, ν΅ν, λ μ§, μλ μκ°, λ¨μ λ° μΆμ½ νκΈ°λ²μ λν΄ Intl κΈ°λ°μ λ‘μΌμΌ μΈμ ν¬λ§€ν
μ νΈλ¦¬ν°. μΊμλ Intl ν¬νΌ ν¬ν¨.
|
|
6
|
+
keywords:
|
|
7
|
+
- ν¬λ§€ν°
|
|
8
|
+
- Intl
|
|
9
|
+
- μ«μ
|
|
10
|
+
- ν΅ν
|
|
11
|
+
- λ°±λΆμ¨
|
|
12
|
+
- λ μ§
|
|
13
|
+
- μλ μκ°
|
|
14
|
+
- λ¨μ
|
|
15
|
+
- μΆμ½
|
|
16
|
+
- κ΅μ ν
|
|
17
|
+
slugs:
|
|
18
|
+
- doc
|
|
19
|
+
- formatters
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Intlayer ν¬λ§€ν°
|
|
23
|
+
|
|
24
|
+
## κ°μ
|
|
25
|
+
|
|
26
|
+
Intlayerλ λ€μ΄ν°λΈ `Intl` API μμ ꡬμΆλ κ°λ²Όμ΄ ν¬νΌ μΈνΈμ, λ¬΄κ±°μ΄ ν¬λ§€ν°λ₯Ό λ°λ³΅ μμ±νμ§ μλλ‘ μΊμλ `Intl` λνΌλ₯Ό μ 곡ν©λλ€. μ΄ μ νΈλ¦¬ν°λ€μ μμ ν λ‘μΌμΌ μΈμμ΄ κ°λ₯νλ©°, λ©μΈ `intlayer` ν¨ν€μ§μμ μ¬μ©ν μ μμ΅λλ€.
|
|
27
|
+
|
|
28
|
+
### μν¬νΈ
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
import {
|
|
32
|
+
Intl,
|
|
33
|
+
number,
|
|
34
|
+
percentage,
|
|
35
|
+
currency,
|
|
36
|
+
date,
|
|
37
|
+
relativeTime,
|
|
38
|
+
units,
|
|
39
|
+
compact,
|
|
40
|
+
} from "intlayer";
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Reactλ₯Ό μ¬μ©νλ κ²½μ°, ν
λ μ 곡λ©λλ€; `react-intlayer/format`μ μ°Έμ‘°νμΈμ.
|
|
44
|
+
|
|
45
|
+
## μΊμλ Intl
|
|
46
|
+
|
|
47
|
+
λ΄λ³΄λ΄μ§ `Intl`μ μ μ `Intl`μ κ°μΌ μμ μΊμ λνΌμ
λλ€. `NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat` μΈμ€ν΄μ€λ₯Ό λ©λͺ¨μ΄μ μ΄μ
νμ¬ λμΌν ν¬λ§€ν°λ₯Ό λ°λ³΅ μμ±νλ κ²μ λ°©μ§ν©λλ€.
|
|
48
|
+
|
|
49
|
+
ν¬λ§€ν° μμ±μ λΉκ΅μ λΉμ©μ΄ ν¬κΈ° λλ¬Έμ, μ΄ μΊμ±μ λμμ λ³κ²½νμ§ μμΌλ©΄μ μ±λ₯μ ν₯μμν΅λλ€. μ΄ λνΌλ λ€μ΄ν°λΈ `Intl`κ³Ό λμΌν APIλ₯Ό μ 곡νλ―λ‘ μ¬μ©λ²λ λμΌν©λλ€.
|
|
50
|
+
|
|
51
|
+
- μΊμ±μ νλ‘μΈμ€ λ¨μλ‘ μ΄λ£¨μ΄μ§λ©° νΈμΆμμκ² ν¬λͺ
ν©λλ€.
|
|
52
|
+
|
|
53
|
+
> νκ²½μ `Intl.DisplayNames`κ° μμΌλ©΄, κ°λ°μ μ μ© κ²½κ³ κ° ν λ² μΆλ ₯λ©λλ€ (ν΄λ¦¬ν μ¬μ©μ κ³ λ €νμΈμ).
|
|
54
|
+
|
|
55
|
+
μμ:
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
import { Intl } from "intlayer";
|
|
59
|
+
|
|
60
|
+
const numberFormat = new Intl.NumberFormat("en-GB", {
|
|
61
|
+
style: "currency",
|
|
62
|
+
currency: "GBP",
|
|
63
|
+
});
|
|
64
|
+
numberFormat.format(1234.5); // "Β£1,234.50"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## ν¬λ§€ν°
|
|
68
|
+
|
|
69
|
+
μλ λͺ¨λ ν¬νΌλ€μ `intlayer`μμ λ΄λ³΄λ΄μ§λλ€.
|
|
70
|
+
|
|
71
|
+
### `number(value, options?)`
|
|
72
|
+
|
|
73
|
+
λ‘μΌμΌμ λ§λ κ·Έλ£Ήνμ μμμ μ²λ¦¬λ₯Ό μ¬μ©νμ¬ μ«μ κ°μ ν¬λ§·ν©λλ€.
|
|
74
|
+
|
|
75
|
+
- **value**: `number | string`
|
|
76
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
77
|
+
|
|
78
|
+
μμ:
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
import { number } from "intlayer";
|
|
82
|
+
|
|
83
|
+
number(123456.789); // "123,456.789" (en-US κΈ°μ€)
|
|
84
|
+
number("1000000", { locale: "fr" }); // "1β―000β―000"
|
|
85
|
+
number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### `percentage(value, options?)`
|
|
89
|
+
|
|
90
|
+
μ«μλ₯Ό λ°±λΆμ¨ λ¬Έμμ΄λ‘ ν¬λ§·ν©λλ€.
|
|
91
|
+
|
|
92
|
+
λμ: 1λ³΄λ€ ν° κ°μ μ 체 λ°±λΆμ¨λ‘ ν΄μλμ΄ μ κ·νλ©λλ€(μ: `25` β `25%`, `0.25` β `25%`).
|
|
93
|
+
|
|
94
|
+
- **value**: `number | string`
|
|
95
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
96
|
+
|
|
97
|
+
μμ:
|
|
98
|
+
|
|
99
|
+
```ts
|
|
100
|
+
import { percentage } from "intlayer";
|
|
101
|
+
|
|
102
|
+
percentage(0.25); // "25%"
|
|
103
|
+
percentage(25); // "25%"
|
|
104
|
+
percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### `currency(value, options?)`
|
|
108
|
+
|
|
109
|
+
κ°μ νμ§νλ ν΅ν νμμΌλ‘ ν¬λ§·ν©λλ€. κΈ°λ³Έκ°μ μμμ λ μ리μ `USD`μ
λλ€.
|
|
110
|
+
|
|
111
|
+
- **value**: `number | string`
|
|
112
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
113
|
+
- κ³΅ν΅ νλ: `currency` (μ: `"EUR"`), `currencyDisplay` (`"symbol" | "code" | "name"`)
|
|
114
|
+
|
|
115
|
+
μμ:
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
import { currency } from "intlayer";
|
|
119
|
+
|
|
120
|
+
currency(1234.5, { currency: "EUR" }); // "β¬1,234.50"
|
|
121
|
+
currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5β―000,00 CAD"
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### `date(date, optionsOrPreset?)`
|
|
125
|
+
|
|
126
|
+
`Intl.DateTimeFormat`μ μ¬μ©νμ¬ λ μ§/μκ° κ°μ ν¬λ§·ν©λλ€.
|
|
127
|
+
|
|
128
|
+
- **date**: `Date | string | number`
|
|
129
|
+
- **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` λλ λ€μ ν리μ
μ€ νλ:
|
|
130
|
+
- ν리μ
: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
|
|
131
|
+
|
|
132
|
+
μμ:
|
|
133
|
+
|
|
134
|
+
```ts
|
|
135
|
+
import { date } from "intlayer";
|
|
136
|
+
|
|
137
|
+
date(new Date(), "short"); // μ: "08/02/25, 14:30"
|
|
138
|
+
date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 aoΓ»t"
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### `relativeTime(from, to = new Date(), options?)`
|
|
142
|
+
|
|
143
|
+
`Intl.RelativeTimeFormat`μ μ¬μ©νμ¬ λ μμ κ°μ μλ μκ°μ ν¬λ§·ν©λλ€.
|
|
144
|
+
|
|
145
|
+
- μμ°μ€λ¬μ΄ ννμ μν΄ μ²« λ²μ§Έ μΈμλ‘ "now"λ₯Ό μ λ¬νκ³ λ λ²μ§Έ μΈμλ‘ λμ μκ°μ μ λ¬νμΈμ.
|
|
146
|
+
- **from**: `Date | string | number`
|
|
147
|
+
- **to**: `Date | string | number` (κΈ°λ³Έκ°μ `new Date()`)
|
|
148
|
+
- **options**: `{ locale?: LocalesValues; unit?: Intl.RelativeTimeFormatUnit; numeric?: Intl.RelativeTimeFormatNumeric; style?: Intl.RelativeTimeFormatStyle }`
|
|
149
|
+
- κΈ°λ³Έ `unit`μ `"second"`μ
λλ€.
|
|
150
|
+
|
|
151
|
+
μμ:
|
|
152
|
+
|
|
153
|
+
```ts
|
|
154
|
+
import { relativeTime } from "intlayer";
|
|
155
|
+
|
|
156
|
+
const now = new Date();
|
|
157
|
+
const in3Days = new Date(now.getTime() + 3 * 864e5);
|
|
158
|
+
relativeTime(now, in3Days, { unit: "day" }); // "3μΌ ν"
|
|
159
|
+
|
|
160
|
+
const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
|
|
161
|
+
relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "2μκ° μ "
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### `units(value, options?)`
|
|
165
|
+
|
|
166
|
+
`Intl.NumberFormat`μ `style: 'unit'`μ μ¬μ©νμ¬ μ«μ κ°μ νμ§νλ λ¨μ λ¬Έμμ΄λ‘ νμνν©λλ€.
|
|
167
|
+
|
|
168
|
+
- **value**: `number | string`
|
|
169
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
170
|
+
- κ³΅ν΅ νλ: `unit` (μ: `"kilometer"`, `"byte"`), `unitDisplay` (`"short" | "narrow" | "long"`)
|
|
171
|
+
- κΈ°λ³Έκ°: `unit: 'day'`, `unitDisplay: 'short'`, `useGrouping: false`
|
|
172
|
+
|
|
173
|
+
μμ:
|
|
174
|
+
|
|
175
|
+
```ts
|
|
176
|
+
import { units } from "intlayer";
|
|
177
|
+
|
|
178
|
+
units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kilometers"
|
|
179
|
+
units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B" (λ‘μΌμΌμ λ°λΌ λ€λ¦)
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### `compact(value, options?)`
|
|
183
|
+
|
|
184
|
+
μ«μλ₯Ό μΆμ½ νκΈ°λ²μΌλ‘ νμνν©λλ€ (μ: `1.2K`, `1M`).
|
|
185
|
+
|
|
186
|
+
- **value**: `number | string`
|
|
187
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }` (λ΄λΆμ μΌλ‘ `notation: 'compact'` μ¬μ©)
|
|
188
|
+
|
|
189
|
+
μμ:
|
|
190
|
+
|
|
191
|
+
```ts
|
|
192
|
+
import { compact } from "intlayer";
|
|
193
|
+
|
|
194
|
+
compact(1200); // "1.2K"
|
|
195
|
+
compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 million"
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## μ°Έκ³ μ¬ν
|
|
199
|
+
|
|
200
|
+
- λͺ¨λ ν¬νΌλ `string` μ
λ ₯μ νμ©νλ©° λ΄λΆμ μΌλ‘ μ«μλ λ μ§λ‘ λ³νλ©λλ€.
|
|
201
|
+
- λ‘μΌμΌμ΄ μ 곡λμ§ μμΌλ©΄ ꡬμ±λ `internationalization.defaultLocale`μ΄ κΈ°λ³Έκ°μΌλ‘ μ¬μ©λ©λλ€.
|
|
202
|
+
- μ΄ μ νΈλ¦¬ν°λ€μ μμ λνΌμ΄λ©°, κ³ κΈ ν¬λ§·ν
μ΄ νμν κ²½μ° νμ€ `Intl` μ΅μ
μ μ§μ μ λ¬νμΈμ.
|
|
203
|
+
|
|
204
|
+
## μ§μ
μ λ° μ¬λ΄λ³΄λ΄κΈ° (`@index.ts`)
|
|
205
|
+
|
|
206
|
+
ν¬λ§·ν°λ€μ μ½μ΄ ν¨ν€μ§μ μμΉνλ©°, λ°νμ μ λ°μ κ±Έμ³ μν¬νΈλ₯Ό νΈλ¦¬νκ² νκΈ° μν΄ μμ ν¨ν€μ§μμ μ¬λ΄λ³΄λ΄κΈ° λ©λλ€:
|
|
207
|
+
|
|
208
|
+
μμ:
|
|
209
|
+
|
|
210
|
+
```ts
|
|
211
|
+
import { compact } from "intlayer";
|
|
212
|
+
|
|
213
|
+
compact(1200); // "1.2K"
|
|
214
|
+
compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 million"
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## μ°Έκ³ μ¬ν
|
|
218
|
+
|
|
219
|
+
- λͺ¨λ ν¬νΌλ `string` μ
λ ₯μ νμ©νλ©° λ΄λΆμ μΌλ‘ μ«μλ λ μ§λ‘ λ³νλ©λλ€.
|
|
220
|
+
- λ‘μΌμΌμ΄ μ 곡λμ§ μμΌλ©΄ ꡬμ±λ `internationalization.defaultLocale`κ° κΈ°λ³Έκ°μΌλ‘ μ¬μ©λ©λλ€.
|
|
221
|
+
- μ΄ μ νΈλ¦¬ν°λ€μ μμ λνΌμ΄λ©°, κ³ κΈ ν¬λ§·ν
μ΄ νμν κ²½μ° νμ€ `Intl` μ΅μ
μ μ§μ μ λ¬νμΈμ.
|
|
222
|
+
|
|
223
|
+
## μ§μ
μ λ° μ¬λ΄λ³΄λ΄κΈ° (`@index.ts`)
|
|
224
|
+
|
|
225
|
+
ν¬λ§·ν°λ€μ μ½μ΄ ν¨ν€μ§μ μμΉνλ©°, λ°νμ μ λ°μ κ±Έμ³ μν¬νΈκ° νΈλ¦¬νλλ‘ μμ ν¨ν€μ§μμ μ¬λ΄λ³΄λ΄κΈ° λ©λλ€:
|
|
226
|
+
|
|
227
|
+
μμ:
|
|
228
|
+
|
|
229
|
+
```ts
|
|
230
|
+
// μ± μ½λ (κΆμ₯)
|
|
231
|
+
import { number, currency, date, Intl } from "intlayer";
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### React
|
|
235
|
+
|
|
236
|
+
ν΄λΌμ΄μΈνΈ μ»΄ν¬λνΈ:
|
|
237
|
+
|
|
238
|
+
```ts
|
|
239
|
+
import { useNumber, useCurrency, useDate } from "react-intlayer/format";
|
|
240
|
+
// λλ Next.js μ±μμλ
|
|
241
|
+
import { useNumber, useCurrency, useDate } from "next-intlayer/client/format";
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
μλ² μ»΄ν¬λνΈ (λλ React μλ² λ°νμ):
|
|
245
|
+
|
|
246
|
+
```ts
|
|
247
|
+
import { useNumber, useCurrency, useDate } from "intlayer/server/format";
|
|
248
|
+
// λλ Next.js μ±μμλ
|
|
249
|
+
import { useNumber, useCurrency, useDate } from "next-intlayer/server/format";
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
> ν΄λΉ ν
λ€μ `IntlayerProvider` λλ `IntlayerServerProvider`μμ λ‘μΌμΌμ μ°Έμ‘°ν©λλ€.
|
|
253
|
+
|
|
254
|
+
## λ¬Έμ μ΄λ ₯
|
|
255
|
+
|
|
256
|
+
| λ²μ | λ μ§ | λ³κ²½ μ¬ν |
|
|
257
|
+
| ----- | ---------- | ---------------- |
|
|
258
|
+
| 5.8.0 | 2025-08-18 | ν¬λ§·ν° λ¬Έμ μΆκ° |
|