@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
@@ -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": "Less than minus one car",
@@ -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": "Less than minus one car",
@@ -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": "Less than minus one car",
@@ -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": "Less than minus one car",
@@ -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": "Less than minus one car",
@@ -0,0 +1,239 @@
1
+ ---
2
+ createdAt: 2024-08-13
3
+ updatedAt: 2025-08-20
4
+ title: Formateadores
5
+ description: Utilidades de formato conscientes de la configuración regional basadas en Intl para números, porcentajes, moneda, fechas, tiempo relativo, unidades y notación compacta. Incluye un ayudante Intl con caché.
6
+ keywords:
7
+ - Formateadores
8
+ - Intl
9
+ - Número
10
+ - Moneda
11
+ - Porcentaje
12
+ - Fecha
13
+ - Tiempo Relativo
14
+ - Unidades
15
+ - Compacto
16
+ - Internacionalización
17
+ slugs:
18
+ - doc
19
+ - formatters
20
+ ---
21
+
22
+ # Formateadores de Intlayer
23
+
24
+ ## Resumen
25
+
26
+ Intlayer proporciona un conjunto de ayudantes ligeros construidos sobre las APIs nativas `Intl`, además de un envoltorio `Intl` con caché para evitar construir repetidamente formateadores pesados. Estas utilidades son totalmente conscientes de la configuración regional y pueden usarse desde el paquete principal `intlayer`.
27
+
28
+ ### Importar
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
+ Si usas React, también hay disponibles hooks; consulta `react-intlayer/format`.
44
+
45
+ ## Intl con caché
46
+
47
+ El `Intl` exportado es un envoltorio delgado con caché alrededor del `Intl` global. Memoiza instancias de `NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat`, lo que evita reconstruir el mismo formateador repetidamente.
48
+
49
+ Debido a que la construcción de formateadores es relativamente costosa, esta caché mejora el rendimiento sin cambiar el comportamiento. El envoltorio expone la misma API que el `Intl` nativo, por lo que el uso es idéntico.
50
+
51
+ - La caché es por proceso y transparente para los llamadores.
52
+
53
+ > Si `Intl.DisplayNames` no está disponible en el entorno, se imprime una única advertencia solo para desarrollo (considera un polyfill).
54
+
55
+ Ejemplo:
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
+ ## Formateadores
68
+
69
+ Todos los ayudantes a continuación se exportan desde `intlayer`.
70
+
71
+ ### `number(value, options?)`
72
+
73
+ Formatea un valor numérico usando agrupación y decimales sensibles a la configuración regional.
74
+
75
+ - **value**: `number | string`
76
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
77
+
78
+ Ejemplos:
79
+
80
+ ```ts
81
+ import { number } from "intlayer";
82
+
83
+ number(123456.789); // "123,456.789" (en 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
+ Formatea un número como una cadena de porcentaje.
91
+
92
+ Comportamiento: los valores mayores que 1 se interpretan como porcentajes enteros y se normalizan (por ejemplo, `25` → `25%`, `0.25` → `25%`).
93
+
94
+ - **value**: `number | string`
95
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
96
+
97
+ Ejemplos:
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
+ Formatea un valor como moneda localizada. Por defecto es `USD` con dos dígitos decimales.
110
+
111
+ - **value**: `number | string`
112
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
113
+ - Campos comunes: `currency` (por ejemplo, `"EUR"`), `currencyDisplay` (`"symbol" | "code" | "name"`)
114
+
115
+ Ejemplos:
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
+ Formatea un valor de fecha/hora con `Intl.DateTimeFormat`.
127
+
128
+ - **date**: `Date | string | number`
129
+ - **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` o uno de los preajustes:
130
+ - Preajustes: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
131
+
132
+ Ejemplos:
133
+
134
+ ```ts
135
+ import { date } from "intlayer";
136
+
137
+ date(new Date(), "short"); // p. ej., "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
+ Formatea el tiempo relativo entre dos instantes con `Intl.RelativeTimeFormat`.
144
+
145
+ - Pasa "now" como el primer argumento y el objetivo como el segundo para obtener una frase natural.
146
+ - **from**: `Date | string | number`
147
+ - **to**: `Date | string | number` (por defecto `new Date()`)
148
+ - **options**: `{ locale?: LocalesValues; unit?: Intl.RelativeTimeFormatUnit; numeric?: Intl.RelativeTimeFormatNumeric; style?: Intl.RelativeTimeFormatStyle }`
149
+ - El valor predeterminado de `unit` es `"second"`.
150
+
151
+ Ejemplos:
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" }); // "in 3 days"
159
+
160
+ const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
161
+ relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "2 hours ago"
162
+ ```
163
+
164
+ ### `units(value, options?)`
165
+
166
+ Formatea un valor numérico como una cadena de unidad localizada usando `Intl.NumberFormat` con `style: 'unit'`.
167
+
168
+ - **value**: `number | string`
169
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
170
+ - Campos comunes: `unit` (por ejemplo, `"kilometer"`, `"byte"`), `unitDisplay` (`"short" | "narrow" | "long"`)
171
+ - Valores predeterminados: `unit: 'day'`, `unitDisplay: 'short'`, `useGrouping: false`
172
+
173
+ Ejemplos:
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" (dependiente del locale)
180
+ ```
181
+
182
+ ### `compact(value, options?)`
183
+
184
+ Formatea un número usando notación compacta (por ejemplo, `1.2K`, `1M`).
185
+
186
+ - **value**: `number | string`
187
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }` (utiliza `notation: 'compact'` internamente)
188
+
189
+ Ejemplos:
190
+
191
+ ```ts
192
+ import { compact } from "intlayer";
193
+
194
+ compact(1200); // "1.2K"
195
+ compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 millón"
196
+ ```
197
+
198
+ ## Notas
199
+
200
+ - Todos los helpers aceptan entradas de tipo `string`; internamente se convierten a números o fechas.
201
+ - El locale por defecto es el configurado en `internationalization.defaultLocale` si no se proporciona.
202
+ - Estas utilidades son envoltorios ligeros; para formateos avanzados, pase las opciones estándar de `Intl`.
203
+
204
+ ## Puntos de entrada y re-exportaciones (`@index.ts`)
205
+
206
+ Los formateadores residen en el paquete core y se re-exportan desde paquetes de nivel superior para mantener las importaciones ergonómicas en diferentes entornos:
207
+
208
+ Ejemplos:
209
+
210
+ ```ts
211
+ // Código de la aplicación (recomendado)
212
+ import { number, currency, date, Intl } from "intlayer";
213
+ ```
214
+
215
+ ### React
216
+
217
+ Componentes cliente:
218
+
219
+ ```ts
220
+ import { useNumber, useCurrency, useDate } from "react-intlayer/format";
221
+ // o en aplicaciones Next.js
222
+ import { useNumber, useCurrency, useDate } from "next-intlayer/client/format";
223
+ ```
224
+
225
+ Componentes servidor (o runtime React Server):
226
+
227
+ ```ts
228
+ import { useNumber, useCurrency, useDate } from "intlayer/server/format";
229
+ // o en aplicaciones Next.js
230
+ import { useNumber, useCurrency, useDate } from "next-intlayer/server/format";
231
+ ```
232
+
233
+ > Esos hooks considerarán el locale desde el `IntlayerProvider` o `IntlayerServerProvider`
234
+
235
+ ## Historial de la documentación
236
+
237
+ | Versión | Fecha | Cambios |
238
+ | ------- | ---------- | -------------------------------------- |
239
+ | 5.8.0 | 2025-08-18 | Añadida documentación de formateadores |