@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/ja/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:
|
|
@@ -19,11 +19,11 @@ slugs:
|
|
|
19
19
|
|
|
20
20
|
# CI/CD パイプラインでの翻訳の自動生成
|
|
21
21
|
|
|
22
|
-
Intlayer
|
|
22
|
+
Intlayer は、コンテンツ宣言ファイルの翻訳を自動生成することを可能にします。ワークフローに応じて、これを実現する複数の方法があります。
|
|
23
23
|
|
|
24
24
|
## CMS の利用
|
|
25
25
|
|
|
26
|
-
Intlayer
|
|
26
|
+
Intlayer を使用すると、ローカルでは単一のロケールのみを宣言し、すべての翻訳は CMS を通じてリモートで管理するワークフローを採用できます。これにより、コンテンツと翻訳がコードベースから完全に切り離され、コンテンツ編集者にとってより柔軟性が提供され、ホットコンテンツリロード(変更を適用するためにアプリケーションを再ビルドする必要なし)が可能になります。
|
|
27
27
|
|
|
28
28
|
### 設定例
|
|
29
29
|
|
|
@@ -54,7 +54,7 @@ export default config;
|
|
|
54
54
|
|
|
55
55
|
CMSの詳細については、[公式ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_CMS.md)を参照してください。
|
|
56
56
|
|
|
57
|
-
## Husky
|
|
57
|
+
## Huskyの使用
|
|
58
58
|
|
|
59
59
|
[Husky](https://typicode.github.io/husky/)を使用して、ローカルのGitワークフローに翻訳生成を統合できます。
|
|
60
60
|
|
|
@@ -77,7 +77,7 @@ const config: IntlayerConfig = {
|
|
|
77
77
|
provider: "openai",
|
|
78
78
|
apiKey: process.env.OPENAI_API_KEY, // ご自身のAPIキーを使用してください
|
|
79
79
|
|
|
80
|
-
applicationContext: "
|
|
80
|
+
applicationContext: "This is a test application", // 一貫した翻訳生成を支援します
|
|
81
81
|
},
|
|
82
82
|
};
|
|
83
83
|
|
|
@@ -89,7 +89,7 @@ npx intlayer build # 辞書が最新であることを
|
|
|
89
89
|
npx intlayer fill --unpushed --mode fill # 欠落しているコンテンツのみを埋め、既存のものは更新しません
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
-
> Intlayer
|
|
92
|
+
> Intlayer CLIコマンドとその使用方法の詳細については、[CLIドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_cli.md)を参照してください。
|
|
93
93
|
|
|
94
94
|
> リポジトリ内に複数のアプリがあり、それぞれ別のintlayerインスタンスを使用している場合は、次のように`--base-dir`引数を使用できます。
|
|
95
95
|
|
|
@@ -103,70 +103,96 @@ npx intlayer build --base-dir ./app2
|
|
|
103
103
|
npx intlayer fill --base-dir ./app2 --unpushed --mode fill
|
|
104
104
|
```
|
|
105
105
|
|
|
106
|
-
## GitHub Actions
|
|
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
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
+
# ステップ 2: Node.js環境のセットアップ
|
|
144
|
+
- name: 🟢 Node.jsをセットアップ
|
|
145
|
+
uses: actions/setup-node@v4
|
|
143
146
|
with:
|
|
144
|
-
node-version: 20
|
|
147
|
+
node-version: 20 # 安定性のためNode.js 20 LTSを使用
|
|
145
148
|
|
|
146
|
-
|
|
147
|
-
|
|
149
|
+
# ステップ 3: プロジェクト依存関係のインストール
|
|
150
|
+
- name: 📦 依存関係をインストール
|
|
151
|
+
run: npm install
|
|
148
152
|
|
|
149
|
-
|
|
150
|
-
|
|
153
|
+
# ステップ 4: 翻訳管理のためにIntlayer CLIをグローバルインストール
|
|
154
|
+
- name: 📦 Intlayerをインストール
|
|
155
|
+
run: npm install -g intlayer-cli
|
|
151
156
|
|
|
152
|
-
|
|
153
|
-
|
|
157
|
+
# ステップ 5: 翻訳ファイルを生成するためにIntlayerプロジェクトをビルド
|
|
158
|
+
- name: ⚙️ Intlayerプロジェクトをビルド
|
|
159
|
+
run: npx intlayer build
|
|
154
160
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
161
|
+
# ステップ 6: AIを使って不足している翻訳を自動で埋める
|
|
162
|
+
- name: 🤖 欠落している翻訳を自動入力
|
|
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: auto-fill missing translations [skip ci]"
|
|
183
|
+
git push origin HEAD:${{ github.head_ref }}
|
|
162
184
|
```
|
|
163
185
|
|
|
164
|
-
|
|
186
|
+
環境変数を設定するには、GitHub → 設定 → Secrets and variables → Actions に移動し、シークレット(API_KEY)を追加してください。
|
|
187
|
+
|
|
188
|
+
> Huskyの場合と同様に、モノレポの場合は `--base-dir` 引数を使用して各アプリを順番に処理できます。
|
|
165
189
|
|
|
166
190
|
> デフォルトでは、`--git-diff` 引数はベース(デフォルトは `origin/main`)から現在のブランチ(デフォルトは `HEAD`)への変更を含む辞書をフィルタリングします。
|
|
167
191
|
|
|
168
|
-
> Intlayer CLI
|
|
192
|
+
> Intlayer CLIコマンドとその使用方法の詳細については、[CLIドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_cli.md)を参照してください。
|
|
169
193
|
|
|
170
194
|
## ドキュメント履歴
|
|
171
195
|
|
|
172
|
-
|
|
196
|
+
| バージョン | 日付 | 変更内容 |
|
|
197
|
+
| ---------- | ---------- | ------------ |
|
|
198
|
+
| 5.5.10 | 2025-06-29 | 履歴の初期化 |
|
|
@@ -0,0 +1,261 @@
|
|
|
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
|
+
値をローカライズされた通貨としてフォーマットします。デフォルトは小数点以下2桁の`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` を使用して、2つの時点間の相対時間をフォーマットします。
|
|
144
|
+
|
|
145
|
+
/// "now" を最初の引数に、対象の時刻を2番目の引数に渡すことで、自然な表現を得られます。
|
|
146
|
+
|
|
147
|
+
- **from**: `Date | string | number`
|
|
148
|
+
- **to**: `Date | string | number`(デフォルトは `new Date()`)
|
|
149
|
+
- **options**: `{ locale?: LocalesValues; unit?: Intl.RelativeTimeFormatUnit; numeric?: Intl.RelativeTimeFormatNumeric; style?: Intl.RelativeTimeFormatStyle }`
|
|
150
|
+
- デフォルトの `unit` は `"second"` です。
|
|
151
|
+
|
|
152
|
+
例:
|
|
153
|
+
|
|
154
|
+
```ts
|
|
155
|
+
import { relativeTime } from "intlayer";
|
|
156
|
+
|
|
157
|
+
const now = new Date();
|
|
158
|
+
const in3Days = new Date(now.getTime() + 3 * 864e5);
|
|
159
|
+
relativeTime(now, in3Days, { unit: "day" }); // "in 3 days"
|
|
160
|
+
|
|
161
|
+
const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
|
|
162
|
+
relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "2 hours ago"
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### `units(value, options?)`
|
|
166
|
+
|
|
167
|
+
数値を `Intl.NumberFormat` の `style: 'unit'` を使用してローカライズされた単位文字列としてフォーマットします。
|
|
168
|
+
|
|
169
|
+
- **value**: `number | string`
|
|
170
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
171
|
+
- 共通フィールド: `unit`(例: `"kilometer"`, `"byte"`)、`unitDisplay`(`"short" | "narrow" | "long"`)
|
|
172
|
+
- デフォルト: `unit: 'day'`、`unitDisplay: 'short'`、`useGrouping: false`
|
|
173
|
+
|
|
174
|
+
例:
|
|
175
|
+
|
|
176
|
+
```ts
|
|
177
|
+
import { units } from "intlayer";
|
|
178
|
+
|
|
179
|
+
units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kilometers"
|
|
180
|
+
units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B"(ロケール依存)
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### `compact(value, options?)`
|
|
184
|
+
|
|
185
|
+
数値をコンパクト表記(例: `1.2K`, `1M`)でフォーマットします。
|
|
186
|
+
|
|
187
|
+
- **value**: `number | string`
|
|
188
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`(内部で `notation: 'compact'` を使用)
|
|
189
|
+
|
|
190
|
+
例:
|
|
191
|
+
|
|
192
|
+
```ts
|
|
193
|
+
import { compact } from "intlayer";
|
|
194
|
+
|
|
195
|
+
compact(1200); // "1.2K"
|
|
196
|
+
compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 million"
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## 注意事項
|
|
200
|
+
|
|
201
|
+
- すべてのヘルパーは `string` 入力を受け付け、内部で数値や日付に変換されます。
|
|
202
|
+
- ロケールは指定がなければ設定された `internationalization.defaultLocale` がデフォルトで使用されます。
|
|
203
|
+
- これらのユーティリティは薄いラッパーであり、高度なフォーマットが必要な場合は標準の `Intl` オプションを直接渡してください。
|
|
204
|
+
|
|
205
|
+
## エントリーポイントと再エクスポート(`@index.ts`)
|
|
206
|
+
|
|
207
|
+
フォーマッターはコアパッケージに存在し、ランタイム間でのインポートを使いやすくするために上位パッケージから再エクスポートされています。
|
|
208
|
+
|
|
209
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`(内部で `notation: 'compact'` を使用)
|
|
210
|
+
|
|
211
|
+
例:
|
|
212
|
+
|
|
213
|
+
```ts
|
|
214
|
+
import { compact } from "intlayer";
|
|
215
|
+
|
|
216
|
+
compact(1200); // "1.2K"
|
|
217
|
+
compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 million"
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## 注意事項
|
|
221
|
+
|
|
222
|
+
- すべてのヘルパーは `string` 入力を受け付け、内部で数値または日付に変換されます。
|
|
223
|
+
- ロケールが指定されていない場合は、設定された `internationalization.defaultLocale` がデフォルトで使用されます。
|
|
224
|
+
- これらのユーティリティは薄いラッパーであり、高度なフォーマットが必要な場合は標準の `Intl` オプションを直接渡してください。
|
|
225
|
+
|
|
226
|
+
## エントリーポイントと再エクスポート(`@index.ts`)
|
|
227
|
+
|
|
228
|
+
フォーマッターはコアパッケージに存在し、ランタイム間でのインポートを使いやすくするために上位パッケージから再エクスポートされています。
|
|
229
|
+
|
|
230
|
+
例:
|
|
231
|
+
|
|
232
|
+
```ts
|
|
233
|
+
// アプリコード(推奨)
|
|
234
|
+
import { number, currency, date, Intl } from "intlayer";
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### React
|
|
238
|
+
|
|
239
|
+
クライアントコンポーネント:
|
|
240
|
+
|
|
241
|
+
```ts
|
|
242
|
+
import { useNumber, useCurrency, useDate } from "react-intlayer/format";
|
|
243
|
+
// または Next.js アプリの場合
|
|
244
|
+
import { useNumber, useCurrency, useDate } from "next-intlayer/client/format";
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
サーバーコンポーネント(または React Server ランタイム):
|
|
248
|
+
|
|
249
|
+
```ts
|
|
250
|
+
import { useNumber, useCurrency, useDate } from "intlayer/server/format";
|
|
251
|
+
// または Next.js アプリの場合
|
|
252
|
+
import { useNumber, useCurrency, useDate } from "next-intlayer/server/format";
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
> これらのフックは `IntlayerProvider` または `IntlayerServerProvider` からロケールを考慮します。
|
|
256
|
+
|
|
257
|
+
## ドキュメント履歴
|
|
258
|
+
|
|
259
|
+
| バージョン | 日付 | 変更内容 |
|
|
260
|
+
| ---------- | ---------- | -------------------------------- |
|
|
261
|
+
| 5.8.0 | 2025-08-18 | フォーマッターのドキュメント追加 |
|