@intlayer/docs 5.7.8 → 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 (130) 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/formatters.md +239 -0
  55. package/docs/ar/interest_of_intlayer.md +162 -49
  56. package/docs/ar/introduction.md +3 -3
  57. package/docs/ar/packages/intlayer/index.md +3 -3
  58. package/docs/ar/packages/next-intlayer/index.md +3 -3
  59. package/docs/de/formatters.md +239 -0
  60. package/docs/de/interest_of_intlayer.md +161 -47
  61. package/docs/de/introduction.md +3 -3
  62. package/docs/de/packages/intlayer/index.md +3 -3
  63. package/docs/de/packages/next-intlayer/index.md +3 -3
  64. package/docs/de/packages/react-intlayer/index.md +3 -3
  65. package/docs/en/formatters.md +250 -0
  66. package/docs/en/interest_of_intlayer.md +159 -46
  67. package/docs/en/introduction.md +3 -3
  68. package/docs/en/packages/intlayer/index.md +3 -3
  69. package/docs/en/packages/next-intlayer/index.md +3 -3
  70. package/docs/en/packages/react-intlayer/index.md +3 -3
  71. package/docs/en-GB/formatters.md +239 -0
  72. package/docs/en-GB/interest_of_intlayer.md +160 -53
  73. package/docs/en-GB/packages/intlayer/index.md +3 -3
  74. package/docs/en-GB/packages/next-intlayer/index.md +3 -3
  75. package/docs/en-GB/packages/react-intlayer/index.md +3 -3
  76. package/docs/es/formatters.md +239 -0
  77. package/docs/es/interest_of_intlayer.md +159 -47
  78. package/docs/es/introduction.md +3 -3
  79. package/docs/es/packages/intlayer/index.md +3 -3
  80. package/docs/es/packages/next-intlayer/index.md +3 -3
  81. package/docs/fr/formatters.md +239 -0
  82. package/docs/fr/interest_of_intlayer.md +160 -46
  83. package/docs/fr/introduction.md +3 -3
  84. package/docs/fr/packages/intlayer/index.md +3 -3
  85. package/docs/fr/packages/next-intlayer/index.md +3 -3
  86. package/docs/fr/packages/react-intlayer/index.md +3 -3
  87. package/docs/hi/formatters.md +239 -0
  88. package/docs/hi/interest_of_intlayer.md +158 -42
  89. package/docs/hi/introduction.md +3 -3
  90. package/docs/hi/packages/intlayer/index.md +3 -3
  91. package/docs/hi/packages/next-intlayer/index.md +3 -3
  92. package/docs/hi/packages/react-intlayer/index.md +3 -3
  93. package/docs/it/formatters.md +239 -0
  94. package/docs/it/interest_of_intlayer.md +160 -46
  95. package/docs/it/introduction.md +3 -3
  96. package/docs/it/packages/intlayer/index.md +3 -3
  97. package/docs/it/packages/next-intlayer/index.md +3 -3
  98. package/docs/it/packages/react-intlayer/index.md +3 -3
  99. package/docs/ja/formatters.md +261 -0
  100. package/docs/ja/interest_of_intlayer.md +157 -48
  101. package/docs/ja/introduction.md +3 -3
  102. package/docs/ja/packages/intlayer/index.md +3 -3
  103. package/docs/ja/packages/next-intlayer/index.md +3 -3
  104. package/docs/ja/packages/react-intlayer/index.md +3 -3
  105. package/docs/ko/formatters.md +258 -0
  106. package/docs/ko/interest_of_intlayer.md +160 -48
  107. package/docs/ko/introduction.md +3 -3
  108. package/docs/ko/packages/intlayer/index.md +3 -3
  109. package/docs/ko/packages/next-intlayer/index.md +3 -3
  110. package/docs/ko/packages/react-intlayer/index.md +3 -3
  111. package/docs/pt/formatters.md +239 -0
  112. package/docs/pt/interest_of_intlayer.md +162 -47
  113. package/docs/pt/introduction.md +3 -3
  114. package/docs/pt/packages/intlayer/index.md +3 -3
  115. package/docs/pt/packages/next-intlayer/index.md +3 -3
  116. package/docs/pt/packages/react-intlayer/index.md +3 -3
  117. package/docs/ru/formatters.md +239 -0
  118. package/docs/ru/interest_of_intlayer.md +168 -50
  119. package/docs/ru/introduction.md +3 -3
  120. package/docs/ru/packages/intlayer/index.md +3 -3
  121. package/docs/ru/packages/next-intlayer/index.md +3 -3
  122. package/docs/ru/packages/react-intlayer/index.md +3 -3
  123. package/docs/zh/formatters.md +239 -0
  124. package/docs/zh/interest_of_intlayer.md +158 -48
  125. package/docs/zh/introduction.md +3 -3
  126. package/docs/zh/packages/intlayer/index.md +3 -3
  127. package/docs/zh/packages/next-intlayer/index.md +3 -3
  128. package/docs/zh/packages/react-intlayer/index.md +3 -3
  129. package/package.json +12 -12
  130. package/src/generated/docs.entry.ts +41 -0
@@ -149,8 +149,8 @@ const clientComponentContent = {
149
149
  content: {
150
150
  myTranslatedContent: t({
151
151
  en: "Hello World",
152
- fr: "Bonjour le monde",
153
152
  es: "Hola Mundo",
153
+ fr: "Bonjour le monde",
154
154
  }),
155
155
  numberOfCar: enu({
156
156
  "<-1": "Less than minus one car",
@@ -175,8 +175,8 @@ const clientComponentContent = {
175
175
  content: {
176
176
  myTranslatedContent: t({
177
177
  en: "Hello World",
178
- fr: "Bonjour le monde",
179
178
  es: "Hola Mundo",
179
+ fr: "Bonjour le monde",
180
180
  }),
181
181
  numberOfCar: enu({
182
182
  "<-1": "Meno di meno una macchina",
@@ -201,8 +201,8 @@ const clientComponentContent = {
201
201
  content: {
202
202
  myTranslatedContent: t({
203
203
  en: "Hello World",
204
- fr: "Bonjour le monde",
205
204
  es: "Hola Mundo",
205
+ fr: "Bonjour le monde",
206
206
  }),
207
207
  numberOfCar: enu({
208
208
  "<-1": "Meno di meno una macchina", // Meno di meno una macchina
@@ -110,8 +110,8 @@ const clientComponentContent = {
110
110
  content: {
111
111
  myTranslatedContent: t({
112
112
  en: "Hello World",
113
- fr: "Bonjour le monde",
114
113
  es: "Hola Mundo",
114
+ fr: "Bonjour le monde",
115
115
  }),
116
116
  numberOfCar: enu({
117
117
  "<-1": "Less than minus one car",
@@ -136,8 +136,8 @@ const clientComponentContent = {
136
136
  content: {
137
137
  myTranslatedContent: t({
138
138
  en: "Hello World",
139
- fr: "Bonjour le monde",
140
139
  es: "Hola Mundo",
140
+ fr: "Bonjour le monde",
141
141
  }),
142
142
  numberOfCar: enu({
143
143
  "<-1": "Meno di meno una macchina",
@@ -162,8 +162,8 @@ const clientComponentContent = {
162
162
  content: {
163
163
  myTranslatedContent: t({
164
164
  en: "Hello World",
165
- fr: "Bonjour le monde",
166
165
  es: "Hola Mundo",
166
+ fr: "Bonjour le monde",
167
167
  }),
168
168
  numberOfCar: enu({
169
169
  "<-1": "Meno di meno una macchina", // meno di meno una macchina
@@ -110,8 +110,8 @@ const component1Content = {
110
110
  content: {
111
111
  myTranslatedContent: t({
112
112
  en: "Hello World",
113
- fr: "Bonjour le monde",
114
113
  es: "Hola Mundo",
114
+ fr: "Bonjour le monde",
115
115
  }),
116
116
  numberOfCar: enu({
117
117
  "<-1": "Meno di meno una macchina",
@@ -136,8 +136,8 @@ const component1Content = {
136
136
  content: {
137
137
  myTranslatedContent: t({
138
138
  en: "Hello World",
139
- fr: "Bonjour le monde",
140
139
  es: "Hola Mundo",
140
+ fr: "Bonjour le monde",
141
141
  }),
142
142
  numberOfCar: enu({
143
143
  "<-1": "Meno di meno una macchina",
@@ -162,8 +162,8 @@ const component1Content = {
162
162
  content: {
163
163
  myTranslatedContent: t({
164
164
  en: "Hello World",
165
- fr: "Bonjour le monde",
166
165
  es: "Hola Mundo",
166
+ fr: "Bonjour le monde",
167
167
  }),
168
168
  numberOfCar: enu({
169
169
  "<-1": "Meno di meno una macchina",
@@ -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 | フォーマッターのドキュメント追加 |