@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.
Files changed (142) hide show
  1. package/blog/ar/intlayer_with_next-i18next.md +3 -4
  2. package/blog/ar/intlayer_with_next-intl.md +3 -4
  3. package/blog/ar/intlayer_with_react-i18next.md +1 -1
  4. package/blog/ar/intlayer_with_react-intl.md +1 -1
  5. package/blog/de/intlayer_with_next-i18next.md +3 -4
  6. package/blog/de/intlayer_with_react-intl.md +1 -1
  7. package/blog/en/intlayer_with_next-i18next.md +3 -4
  8. package/blog/en/intlayer_with_next-intl.md +3 -4
  9. package/blog/en/intlayer_with_react-i18next.md +1 -1
  10. package/blog/en/intlayer_with_react-intl.md +1 -1
  11. package/blog/en-GB/intlayer_with_next-i18next.md +3 -4
  12. package/blog/en-GB/intlayer_with_next-intl.md +3 -4
  13. package/blog/en-GB/intlayer_with_react-i18next.md +1 -1
  14. package/blog/en-GB/intlayer_with_react-intl.md +1 -1
  15. package/blog/es/intlayer_with_next-i18next.md +3 -4
  16. package/blog/es/intlayer_with_next-intl.md +3 -4
  17. package/blog/es/intlayer_with_react-i18next.md +1 -1
  18. package/blog/es/intlayer_with_react-intl.md +1 -1
  19. package/blog/fr/intlayer_with_next-i18next.md +3 -4
  20. package/blog/fr/intlayer_with_next-intl.md +3 -4
  21. package/blog/fr/intlayer_with_react-i18next.md +1 -1
  22. package/blog/fr/intlayer_with_react-intl.md +1 -1
  23. package/blog/hi/intlayer_with_next-i18next.md +3 -4
  24. package/blog/hi/intlayer_with_next-intl.md +3 -4
  25. package/blog/hi/intlayer_with_react-i18next.md +1 -1
  26. package/blog/hi/intlayer_with_react-intl.md +1 -1
  27. package/blog/it/intlayer_with_next-i18next.md +3 -4
  28. package/blog/it/intlayer_with_next-intl.md +3 -4
  29. package/blog/it/intlayer_with_react-i18next.md +1 -1
  30. package/blog/it/intlayer_with_react-intl.md +1 -1
  31. package/blog/ja/intlayer_with_next-i18next.md +3 -4
  32. package/blog/ja/intlayer_with_next-intl.md +3 -4
  33. package/blog/ja/intlayer_with_react-intl.md +1 -1
  34. package/blog/ko/intlayer_with_next-i18next.md +3 -4
  35. package/blog/ko/intlayer_with_next-intl.md +3 -4
  36. package/blog/ko/intlayer_with_react-intl.md +1 -1
  37. package/blog/pt/intlayer_with_next-i18next.md +3 -4
  38. package/blog/pt/intlayer_with_next-intl.md +3 -4
  39. package/blog/pt/intlayer_with_react-intl.md +1 -1
  40. package/blog/ru/intlayer_with_next-i18next.md +3 -4
  41. package/blog/ru/intlayer_with_next-intl.md +3 -4
  42. package/blog/ru/intlayer_with_react-i18next.md +1 -1
  43. package/blog/ru/intlayer_with_react-intl.md +1 -1
  44. package/blog/zh/intlayer_with_next-i18next.md +3 -4
  45. package/blog/zh/intlayer_with_next-intl.md +3 -4
  46. package/blog/zh/intlayer_with_react-i18next.md +1 -1
  47. package/blog/zh/intlayer_with_react-intl.md +1 -1
  48. package/dist/cjs/generated/docs.entry.cjs +41 -0
  49. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  50. package/dist/esm/generated/docs.entry.mjs +41 -0
  51. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  52. package/dist/types/generated/docs.entry.d.ts +1 -0
  53. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  54. package/docs/ar/CI_CD.md +67 -41
  55. package/docs/ar/formatters.md +239 -0
  56. package/docs/ar/interest_of_intlayer.md +162 -49
  57. package/docs/ar/introduction.md +3 -3
  58. package/docs/ar/packages/intlayer/index.md +3 -3
  59. package/docs/ar/packages/next-intlayer/index.md +3 -3
  60. package/docs/de/CI_CD.md +63 -37
  61. package/docs/de/formatters.md +239 -0
  62. package/docs/de/interest_of_intlayer.md +161 -47
  63. package/docs/de/introduction.md +3 -3
  64. package/docs/de/packages/intlayer/index.md +3 -3
  65. package/docs/de/packages/next-intlayer/index.md +3 -3
  66. package/docs/de/packages/react-intlayer/index.md +3 -3
  67. package/docs/en/CI_CD.md +51 -27
  68. package/docs/en/formatters.md +250 -0
  69. package/docs/en/interest_of_intlayer.md +159 -46
  70. package/docs/en/introduction.md +3 -3
  71. package/docs/en/packages/intlayer/index.md +3 -3
  72. package/docs/en/packages/next-intlayer/index.md +3 -3
  73. package/docs/en/packages/react-intlayer/index.md +3 -3
  74. package/docs/en-GB/CI_CD.md +58 -32
  75. package/docs/en-GB/formatters.md +239 -0
  76. package/docs/en-GB/interest_of_intlayer.md +160 -53
  77. package/docs/en-GB/packages/intlayer/index.md +3 -3
  78. package/docs/en-GB/packages/next-intlayer/index.md +3 -3
  79. package/docs/en-GB/packages/react-intlayer/index.md +3 -3
  80. package/docs/es/CI_CD.md +68 -42
  81. package/docs/es/formatters.md +239 -0
  82. package/docs/es/interest_of_intlayer.md +159 -47
  83. package/docs/es/introduction.md +3 -3
  84. package/docs/es/packages/intlayer/index.md +3 -3
  85. package/docs/es/packages/next-intlayer/index.md +3 -3
  86. package/docs/fr/formatters.md +239 -0
  87. package/docs/fr/interest_of_intlayer.md +160 -46
  88. package/docs/fr/introduction.md +3 -3
  89. package/docs/fr/packages/intlayer/index.md +3 -3
  90. package/docs/fr/packages/next-intlayer/index.md +3 -3
  91. package/docs/fr/packages/react-intlayer/index.md +3 -3
  92. package/docs/hi/CI_CD.md +69 -44
  93. package/docs/hi/formatters.md +239 -0
  94. package/docs/hi/interest_of_intlayer.md +158 -42
  95. package/docs/hi/introduction.md +3 -3
  96. package/docs/hi/packages/intlayer/index.md +3 -3
  97. package/docs/hi/packages/next-intlayer/index.md +3 -3
  98. package/docs/hi/packages/react-intlayer/index.md +3 -3
  99. package/docs/it/CI_CD.md +67 -41
  100. package/docs/it/formatters.md +239 -0
  101. package/docs/it/interest_of_intlayer.md +160 -46
  102. package/docs/it/introduction.md +3 -3
  103. package/docs/it/packages/intlayer/index.md +3 -3
  104. package/docs/it/packages/next-intlayer/index.md +3 -3
  105. package/docs/it/packages/react-intlayer/index.md +3 -3
  106. package/docs/ja/CI_CD.md +67 -41
  107. package/docs/ja/formatters.md +261 -0
  108. package/docs/ja/interest_of_intlayer.md +157 -48
  109. package/docs/ja/introduction.md +3 -3
  110. package/docs/ja/packages/intlayer/index.md +3 -3
  111. package/docs/ja/packages/next-intlayer/index.md +3 -3
  112. package/docs/ja/packages/react-intlayer/index.md +3 -3
  113. package/docs/ko/CI_CD.md +63 -37
  114. package/docs/ko/formatters.md +258 -0
  115. package/docs/ko/interest_of_intlayer.md +160 -48
  116. package/docs/ko/introduction.md +3 -3
  117. package/docs/ko/packages/intlayer/index.md +3 -3
  118. package/docs/ko/packages/next-intlayer/index.md +3 -3
  119. package/docs/ko/packages/react-intlayer/index.md +3 -3
  120. package/docs/pt/CI_CD.md +67 -41
  121. package/docs/pt/formatters.md +239 -0
  122. package/docs/pt/interest_of_intlayer.md +162 -47
  123. package/docs/pt/introduction.md +3 -3
  124. package/docs/pt/packages/intlayer/index.md +3 -3
  125. package/docs/pt/packages/next-intlayer/index.md +3 -3
  126. package/docs/pt/packages/react-intlayer/index.md +3 -3
  127. package/docs/ru/CI_CD.md +70 -44
  128. package/docs/ru/formatters.md +239 -0
  129. package/docs/ru/interest_of_intlayer.md +168 -50
  130. package/docs/ru/introduction.md +3 -3
  131. package/docs/ru/packages/intlayer/index.md +3 -3
  132. package/docs/ru/packages/next-intlayer/index.md +3 -3
  133. package/docs/ru/packages/react-intlayer/index.md +3 -3
  134. package/docs/zh/CI_CD.md +62 -36
  135. package/docs/zh/formatters.md +239 -0
  136. package/docs/zh/interest_of_intlayer.md +158 -48
  137. package/docs/zh/introduction.md +3 -3
  138. package/docs/zh/packages/intlayer/index.md +3 -3
  139. package/docs/zh/packages/next-intlayer/index.md +3 -3
  140. package/docs/zh/packages/react-intlayer/index.md +3 -3
  141. package/package.json +12 -12
  142. 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-06-29
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 を使用すると、ローカルでは単一のロケールのみを宣言し、すべての翻訳を CMS を通じてリモートで管理するワークフローを採用できます。これにより、コンテンツと翻訳がコードベースから完全に切り離され、コンテンツ編集者にとってより柔軟性が高まり、ホットコンテンツリロード(変更を適用するためにアプリケーションを再ビルドする必要なし)が可能になります。
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
- > IntlayerCLIコマンドとその使用方法の詳細については、[CLIドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_cli.md)を参照してください。
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は、辞書の内容を自動入力およびレビューするためのCLIコマンドを提供しています。これはGitHub Actionsを使用してCI/CDワークフローに統合することができます。
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: [ main ]
119
- paths:
120
- - 'src/**'
121
- workflow_dispatch: {}
115
+ branches:
116
+ - "main"
117
+
118
+ permissions:
119
+ contents: write
120
+ pull-requests: write
122
121
 
123
122
  concurrency:
124
- group: 'autofill-${{ github.ref }}'
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
- INTLAYER_CLIENT_ID: ${{ secrets.INTLAYER_CLIENT_ID }}
132
- INTLAYER_CLIENT_SECRET: ${{ secrets.INTLAYER_CLIENT_SECRET }}
133
- OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
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@v3
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
- - name: 🟢 Node.js のセットアップ
142
- uses: actions/setup-node@v3
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
- - name: 📦 依存関係のインストール
147
- run: npm ci
149
+ # ステップ 3: プロジェクト依存関係のインストール
150
+ - name: 📦 依存関係をインストール
151
+ run: npm install
148
152
 
149
- - name: ⚙️ Intlayer プロジェクトのビルド
150
- run: npx intlayer build
153
+ # ステップ 4: 翻訳管理のためにIntlayer CLIをグローバルインストール
154
+ - name: 📦 Intlayerをインストール
155
+ run: npm install -g intlayer-cli
151
156
 
152
- - name: 🤖 欠落している翻訳の自動補完
153
- run: npx intlayer fill --git-diff --mode fill
157
+ # ステップ 5: 翻訳ファイルを生成するためにIntlayerプロジェクトをビルド
158
+ - name: ⚙️ Intlayerプロジェクトをビルド
159
+ run: npx intlayer build
154
160
 
155
- - name: 📤 翻訳プルリクエストの作成または更新
156
- uses: peter-evans/create-pull-request@v4
157
- with:
158
- commit-message: chore: auto-fill missing translations [skip ci]
159
- branch: auto-translations
160
- title: chore: update missing translations
161
- labels: translation, automated
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
- > Huskyの場合と同様に、モノレポの場合は `--base-dir` 引数を使用して各アプリを順次処理することができます。
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 コマンドとその使用方法の詳細については、[CLIドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_cli.md)を参照してください。
192
+ > Intlayer CLIコマンドとその使用方法の詳細については、[CLIドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_cli.md)を参照してください。
169
193
 
170
194
  ## ドキュメント履歴
171
195
 
172
- - 5.5.10 - 2025-06-29: 履歴の初期化
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 | フォーマッターのドキュメント追加 |