@intlayer/docs 8.3.0-canary.4 → 8.3.1
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/docs/ar/compiler.md +84 -49
- package/docs/ar/configuration.md +80 -37
- package/docs/ar/intlayer_with_nextjs_16.md +174 -1
- package/docs/ar/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ar/intlayer_with_react_router_v7.md +224 -1
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/ar/intlayer_with_svelte_kit.md +175 -2
- package/docs/ar/intlayer_with_tanstack.md +176 -1
- package/docs/ar/intlayer_with_vite+preact.md +174 -1
- package/docs/ar/intlayer_with_vite+react.md +174 -1
- package/docs/ar/intlayer_with_vite+solid.md +174 -1
- package/docs/ar/intlayer_with_vite+svelte.md +174 -1
- package/docs/ar/intlayer_with_vite+vue.md +174 -1
- package/docs/de/compiler.md +83 -48
- package/docs/de/configuration.md +434 -212
- package/docs/de/intlayer_with_nextjs_16.md +176 -1
- package/docs/de/intlayer_with_nextjs_compiler.md +106 -349
- package/docs/de/intlayer_with_react_router_v7.md +225 -2
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +221 -79
- package/docs/de/intlayer_with_svelte_kit.md +158 -2
- package/docs/de/intlayer_with_tanstack.md +159 -1
- package/docs/de/intlayer_with_vite+preact.md +157 -1
- package/docs/de/intlayer_with_vite+react.md +157 -1
- package/docs/de/intlayer_with_vite+solid.md +159 -3
- package/docs/de/intlayer_with_vite+svelte.md +157 -1
- package/docs/de/intlayer_with_vite+vue.md +157 -1
- package/docs/en/compiler.md +60 -33
- package/docs/en/configuration.md +80 -57
- package/docs/en/intlayer_with_nextjs_16.md +176 -0
- package/docs/en/intlayer_with_nextjs_compiler.md +179 -1
- package/docs/en/intlayer_with_react_router_v7.md +159 -0
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +159 -0
- package/docs/en/intlayer_with_svelte_kit.md +159 -0
- package/docs/en/intlayer_with_tanstack.md +160 -1
- package/docs/en/intlayer_with_vite+preact.md +159 -0
- package/docs/en/intlayer_with_vite+react.md +159 -0
- package/docs/en/intlayer_with_vite+solid.md +148 -27
- package/docs/en/intlayer_with_vite+svelte.md +159 -0
- package/docs/en/intlayer_with_vite+vue.md +142 -41
- package/docs/en-GB/compiler.md +66 -34
- package/docs/en-GB/configuration.md +78 -36
- package/docs/es/compiler.md +83 -48
- package/docs/es/configuration.md +429 -206
- package/docs/es/intlayer_with_adonisjs.md +1 -1
- package/docs/es/intlayer_with_express.md +1 -1
- package/docs/es/intlayer_with_fastify.md +1 -1
- package/docs/es/intlayer_with_hono.md +1 -1
- package/docs/es/intlayer_with_nestjs.md +1 -1
- package/docs/es/intlayer_with_nextjs_16.md +176 -3
- package/docs/es/intlayer_with_nextjs_compiler.md +175 -2
- package/docs/es/intlayer_with_nuxt.md +1 -1
- package/docs/es/intlayer_with_react_router_v7.md +227 -4
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +162 -4
- package/docs/es/intlayer_with_svelte_kit.md +158 -2
- package/docs/es/intlayer_with_tanstack.md +160 -2
- package/docs/es/intlayer_with_vite+preact.md +162 -6
- package/docs/es/intlayer_with_vite+react.md +160 -4
- package/docs/es/intlayer_with_vite+solid.md +163 -7
- package/docs/es/intlayer_with_vite+svelte.md +157 -1
- package/docs/es/intlayer_with_vite+vue.md +165 -9
- package/docs/fr/compiler.md +81 -46
- package/docs/fr/configuration.md +355 -134
- package/docs/fr/intlayer_with_adonisjs.md +1 -1
- package/docs/fr/intlayer_with_express.md +1 -1
- package/docs/fr/intlayer_with_fastify.md +1 -1
- package/docs/fr/intlayer_with_hono.md +1 -1
- package/docs/fr/intlayer_with_nestjs.md +1 -1
- package/docs/fr/intlayer_with_nextjs_16.md +183 -7
- package/docs/fr/intlayer_with_nextjs_compiler.md +179 -3
- package/docs/fr/intlayer_with_react_router_v7.md +229 -3
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +237 -6
- package/docs/fr/intlayer_with_svelte_kit.md +158 -2
- package/docs/fr/intlayer_with_tanstack.md +159 -1
- package/docs/fr/intlayer_with_vite+preact.md +164 -8
- package/docs/fr/intlayer_with_vite+react.md +162 -6
- package/docs/fr/intlayer_with_vite+solid.md +163 -7
- package/docs/fr/intlayer_with_vite+svelte.md +157 -1
- package/docs/fr/intlayer_with_vite+vue.md +164 -8
- package/docs/hi/compiler.md +81 -46
- package/docs/hi/configuration.md +87 -44
- package/docs/hi/intlayer_with_nextjs_16.md +174 -1
- package/docs/hi/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/hi/intlayer_with_react_router_v7.md +224 -1
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/hi/intlayer_with_svelte_kit.md +158 -2
- package/docs/hi/intlayer_with_tanstack.md +159 -1
- package/docs/hi/intlayer_with_vite+preact.md +157 -1
- package/docs/hi/intlayer_with_vite+react.md +157 -1
- package/docs/hi/intlayer_with_vite+solid.md +157 -1
- package/docs/hi/intlayer_with_vite+svelte.md +157 -1
- package/docs/hi/intlayer_with_vite+vue.md +157 -1
- package/docs/id/compiler.md +84 -51
- package/docs/id/configuration.md +83 -45
- package/docs/id/intlayer_with_nextjs_16.md +174 -1
- package/docs/id/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/id/intlayer_with_react_router_v7.md +224 -1
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/id/intlayer_with_svelte_kit.md +158 -2
- package/docs/id/intlayer_with_tanstack.md +159 -1
- package/docs/id/intlayer_with_vite+preact.md +157 -1
- package/docs/id/intlayer_with_vite+react.md +157 -1
- package/docs/id/intlayer_with_vite+solid.md +157 -1
- package/docs/id/intlayer_with_vite+svelte.md +157 -1
- package/docs/id/intlayer_with_vite+vue.md +157 -1
- package/docs/it/compiler.md +81 -46
- package/docs/it/configuration.md +426 -204
- package/docs/it/intlayer_with_nextjs_16.md +174 -1
- package/docs/it/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/it/intlayer_with_react_router_v7.md +225 -2
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +226 -2
- package/docs/it/intlayer_with_svelte_kit.md +158 -2
- package/docs/it/intlayer_with_tanstack.md +159 -1
- package/docs/it/intlayer_with_vite+preact.md +157 -1
- package/docs/it/intlayer_with_vite+react.md +157 -1
- package/docs/it/intlayer_with_vite+solid.md +159 -3
- package/docs/it/intlayer_with_vite+svelte.md +157 -1
- package/docs/it/intlayer_with_vite+vue.md +157 -1
- package/docs/ja/compiler.md +94 -58
- package/docs/ja/configuration.md +88 -45
- package/docs/ja/intlayer_with_nextjs_16.md +174 -1
- package/docs/ja/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ja/intlayer_with_react_router_v7.md +184 -394
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +226 -2
- package/docs/ja/intlayer_with_svelte_kit.md +119 -595
- package/docs/ja/intlayer_with_tanstack.md +131 -642
- package/docs/ja/intlayer_with_vite+preact.md +111 -1231
- package/docs/ja/intlayer_with_vite+react.md +129 -1304
- package/docs/ja/intlayer_with_vite+solid.md +159 -3
- package/docs/ja/intlayer_with_vite+svelte.md +157 -1
- package/docs/ja/intlayer_with_vite+vue.md +157 -1
- package/docs/ko/compiler.md +88 -52
- package/docs/ko/configuration.md +87 -44
- package/docs/ko/intlayer_with_nextjs_16.md +174 -1
- package/docs/ko/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ko/intlayer_with_react_router_v7.md +225 -2
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +226 -2
- package/docs/ko/intlayer_with_svelte_kit.md +158 -2
- package/docs/ko/intlayer_with_tanstack.md +159 -1
- package/docs/ko/intlayer_with_vite+preact.md +157 -1
- package/docs/ko/intlayer_with_vite+react.md +157 -1
- package/docs/ko/intlayer_with_vite+solid.md +159 -3
- package/docs/ko/intlayer_with_vite+svelte.md +157 -1
- package/docs/ko/intlayer_with_vite+vue.md +157 -1
- package/docs/pl/compiler.md +84 -51
- package/docs/pl/configuration.md +83 -37
- package/docs/pl/intlayer_with_nextjs_16.md +174 -1
- package/docs/pl/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/pl/intlayer_with_react_router_v7.md +224 -1
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/pl/intlayer_with_svelte_kit.md +158 -2
- package/docs/pl/intlayer_with_tanstack.md +159 -1
- package/docs/pl/intlayer_with_vite+preact.md +157 -1
- package/docs/pl/intlayer_with_vite+react.md +157 -1
- package/docs/pl/intlayer_with_vite+solid.md +157 -1
- package/docs/pl/intlayer_with_vite+svelte.md +157 -1
- package/docs/pl/intlayer_with_vite+vue.md +157 -1
- package/docs/pt/compiler.md +81 -46
- package/docs/pt/configuration.md +404 -194
- package/docs/pt/intlayer_with_nextjs_16.md +174 -1
- package/docs/pt/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/pt/intlayer_with_react_router_v7.md +224 -1
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/pt/intlayer_with_svelte_kit.md +158 -2
- package/docs/pt/intlayer_with_tanstack.md +159 -1
- package/docs/pt/intlayer_with_vite+preact.md +157 -1
- package/docs/pt/intlayer_with_vite+react.md +157 -1
- package/docs/pt/intlayer_with_vite+solid.md +157 -1
- package/docs/pt/intlayer_with_vite+svelte.md +157 -1
- package/docs/pt/intlayer_with_vite+vue.md +157 -1
- package/docs/ru/compiler.md +90 -57
- package/docs/ru/configuration.md +76 -46
- package/docs/ru/intlayer_with_nextjs_16.md +174 -1
- package/docs/ru/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ru/intlayer_with_react_router_v7.md +224 -1
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/ru/intlayer_with_svelte_kit.md +158 -2
- package/docs/ru/intlayer_with_tanstack.md +159 -1
- package/docs/ru/intlayer_with_vite+preact.md +157 -1
- package/docs/ru/intlayer_with_vite+react.md +157 -1
- package/docs/ru/intlayer_with_vite+solid.md +157 -1
- package/docs/ru/intlayer_with_vite+svelte.md +157 -1
- package/docs/ru/intlayer_with_vite+vue.md +157 -1
- package/docs/tr/compiler.md +85 -52
- package/docs/tr/configuration.md +83 -40
- package/docs/tr/intlayer_with_nextjs_16.md +174 -1
- package/docs/tr/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/tr/intlayer_with_react_router_v7.md +224 -1
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/tr/intlayer_with_svelte_kit.md +158 -2
- package/docs/tr/intlayer_with_tanstack.md +159 -1
- package/docs/tr/intlayer_with_vite+preact.md +157 -1
- package/docs/tr/intlayer_with_vite+react.md +157 -1
- package/docs/tr/intlayer_with_vite+solid.md +157 -1
- package/docs/tr/intlayer_with_vite+svelte.md +157 -1
- package/docs/tr/intlayer_with_vite+vue.md +157 -1
- package/docs/uk/compiler.md +96 -61
- package/docs/uk/configuration.md +83 -37
- package/docs/uk/intlayer_with_nextjs_16.md +174 -1
- package/docs/uk/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/uk/intlayer_with_react_router_v7.md +224 -1
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/uk/intlayer_with_svelte_kit.md +157 -1
- package/docs/uk/intlayer_with_tanstack.md +159 -1
- package/docs/uk/intlayer_with_vite+preact.md +157 -1
- package/docs/uk/intlayer_with_vite+react.md +157 -1
- package/docs/uk/intlayer_with_vite+solid.md +157 -1
- package/docs/uk/intlayer_with_vite+svelte.md +157 -1
- package/docs/uk/intlayer_with_vite+vue.md +157 -1
- package/docs/vi/compiler.md +85 -50
- package/docs/vi/configuration.md +85 -39
- package/docs/vi/intlayer_with_nextjs_16.md +174 -1
- package/docs/vi/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/vi/intlayer_with_react_router_v7.md +224 -1
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/vi/intlayer_with_svelte_kit.md +158 -2
- package/docs/vi/intlayer_with_tanstack.md +159 -1
- package/docs/vi/intlayer_with_vite+preact.md +157 -1
- package/docs/vi/intlayer_with_vite+react.md +157 -1
- package/docs/vi/intlayer_with_vite+solid.md +157 -1
- package/docs/vi/intlayer_with_vite+svelte.md +157 -1
- package/docs/vi/intlayer_with_vite+vue.md +157 -1
- package/docs/zh/compiler.md +84 -49
- package/docs/zh/configuration.md +80 -37
- package/docs/zh/intlayer_with_adonisjs.md +1 -1
- package/docs/zh/intlayer_with_express.md +1 -1
- package/docs/zh/intlayer_with_fastify.md +1 -1
- package/docs/zh/intlayer_with_hono.md +1 -1
- package/docs/zh/intlayer_with_nestjs.md +1 -1
- package/docs/zh/intlayer_with_nextjs_16.md +174 -1
- package/docs/zh/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/zh/intlayer_with_react_router_v7.md +227 -4
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +228 -4
- package/docs/zh/intlayer_with_svelte_kit.md +158 -2
- package/docs/zh/intlayer_with_tanstack.md +159 -1
- package/docs/zh/intlayer_with_vite+preact.md +159 -3
- package/docs/zh/intlayer_with_vite+react.md +157 -1
- package/docs/zh/intlayer_with_vite+solid.md +161 -5
- package/docs/zh/intlayer_with_vite+svelte.md +157 -1
- package/docs/zh/intlayer_with_vite+vue.md +158 -2
- package/package.json +6 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-12-06
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: Next.js i18n - Come tradurre un'app Next.js 16 nel 2026
|
|
5
5
|
description: Scopri come rendere il tuo sito Next.js 16 multilingue. Segui la documentazione per internazionalizzare (i18n) e tradurlo.
|
|
6
6
|
keywords:
|
|
@@ -1440,6 +1440,179 @@ return (
|
|
|
1440
1440
|
> - [`dir` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir)
|
|
1441
1441
|
> - [`aria-current` attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current)
|
|
1442
1442
|
|
|
1443
|
+
### (Opzionale) Passaggio 1 : Estrarre il contenuto dei tuoi componenti
|
|
1444
|
+
|
|
1445
|
+
Se hai una base di codice esistente, trasformare migliaia di file può richiedere molto tempo.
|
|
1446
|
+
|
|
1447
|
+
Per facilitare questo processo, Intlayer propone un [compilatore](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/compiler.md) / [estrattore](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/extract.md) per trasformare i tuoi componenti ed estrarre il contenuto.
|
|
1448
|
+
|
|
1449
|
+
Per configurarlo, puoi aggiungere una sezione `compiler` nel tuo file `intlayer.config.ts`:
|
|
1450
|
+
|
|
1451
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
1452
|
+
import { type IntlayerConfig } from "intlayer";
|
|
1453
|
+
|
|
1454
|
+
const config: IntlayerConfig = {
|
|
1455
|
+
// ... Resto della tua configurazione
|
|
1456
|
+
compiler: {
|
|
1457
|
+
/**
|
|
1458
|
+
* Indica se il compilatore deve essere abilitato.
|
|
1459
|
+
*/
|
|
1460
|
+
enabled: true,
|
|
1461
|
+
|
|
1462
|
+
/**
|
|
1463
|
+
* Definisce il percorso dei file di output
|
|
1464
|
+
*/
|
|
1465
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1466
|
+
|
|
1467
|
+
/**
|
|
1468
|
+
* Indica se i componenti devono essere salvati dopo essere stati trasformati. In questo modo, il compilatore può essere eseguito solo una volta per trasformare l'app e poi rimosso.
|
|
1469
|
+
*/
|
|
1470
|
+
saveComponents: false,
|
|
1471
|
+
|
|
1472
|
+
/**
|
|
1473
|
+
* Prefisso chiave dizionario
|
|
1474
|
+
*/
|
|
1475
|
+
dictionaryKeyPrefix: "",
|
|
1476
|
+
},
|
|
1477
|
+
};
|
|
1478
|
+
|
|
1479
|
+
export default config;
|
|
1480
|
+
```
|
|
1481
|
+
|
|
1482
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
1483
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1484
|
+
const config = {
|
|
1485
|
+
// ... Resto della tua configurazione
|
|
1486
|
+
compiler: {
|
|
1487
|
+
/**
|
|
1488
|
+
* Indica se il compilatore deve essere abilitato.
|
|
1489
|
+
*/
|
|
1490
|
+
enabled: true,
|
|
1491
|
+
|
|
1492
|
+
/**
|
|
1493
|
+
* Definisce il percorso dei file di output
|
|
1494
|
+
*/
|
|
1495
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1496
|
+
|
|
1497
|
+
/**
|
|
1498
|
+
* Indica se i componenti devono essere salvati dopo essere stati trasformati. In questo modo, il compilatore può essere eseguito solo una volta per trasformare l'app e poi rimosso.
|
|
1499
|
+
*/
|
|
1500
|
+
saveComponents: false,
|
|
1501
|
+
|
|
1502
|
+
/**
|
|
1503
|
+
* Prefisso chiave dizionario
|
|
1504
|
+
*/
|
|
1505
|
+
dictionaryKeyPrefix: "",
|
|
1506
|
+
},
|
|
1507
|
+
};
|
|
1508
|
+
|
|
1509
|
+
export default config;
|
|
1510
|
+
```
|
|
1511
|
+
|
|
1512
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
1513
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1514
|
+
const config = {
|
|
1515
|
+
// ... Resto della tua configurazione
|
|
1516
|
+
compiler: {
|
|
1517
|
+
/**
|
|
1518
|
+
* Indica se il compilatore deve essere abilitato.
|
|
1519
|
+
*/
|
|
1520
|
+
enabled: true,
|
|
1521
|
+
|
|
1522
|
+
/**
|
|
1523
|
+
* Definisce il percorso dei file di output
|
|
1524
|
+
*/
|
|
1525
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1526
|
+
|
|
1527
|
+
/**
|
|
1528
|
+
* Indica se i componenti devono essere salvati dopo essere stati trasformati. In questo modo, il compilatore può essere eseguito solo una volta per trasformare l'app e poi rimosso.
|
|
1529
|
+
*/
|
|
1530
|
+
saveComponents: false,
|
|
1531
|
+
|
|
1532
|
+
/**
|
|
1533
|
+
* Prefisso chiave dizionario
|
|
1534
|
+
*/
|
|
1535
|
+
dictionaryKeyPrefix: "",
|
|
1536
|
+
},
|
|
1537
|
+
};
|
|
1538
|
+
|
|
1539
|
+
module.exports = config;
|
|
1540
|
+
```
|
|
1541
|
+
|
|
1542
|
+
<Tabs>
|
|
1543
|
+
<Tab value='Comando di estrazione'>
|
|
1544
|
+
|
|
1545
|
+
Esegui l'estrattore per trasformare i tuoi componenti ed estrarre il contenuto
|
|
1546
|
+
|
|
1547
|
+
```bash packageManager="npm"
|
|
1548
|
+
npx intlayer extract
|
|
1549
|
+
```
|
|
1550
|
+
|
|
1551
|
+
```bash packageManager="pnpm"
|
|
1552
|
+
pnpm intlayer extract
|
|
1553
|
+
```
|
|
1554
|
+
|
|
1555
|
+
```bash packageManager="yarn"
|
|
1556
|
+
yarn intlayer extract
|
|
1557
|
+
```
|
|
1558
|
+
|
|
1559
|
+
```bash packageManager="bun"
|
|
1560
|
+
bunx intlayer extract
|
|
1561
|
+
```
|
|
1562
|
+
|
|
1563
|
+
</Tab>
|
|
1564
|
+
<Tab value='Compilatore Babel'>
|
|
1565
|
+
|
|
1566
|
+
```bash packageManager="npm"
|
|
1567
|
+
npm install @intlayer/babel --save-dev
|
|
1568
|
+
```
|
|
1569
|
+
|
|
1570
|
+
```bash packageManager="pnpm"
|
|
1571
|
+
pnpm add @intlayer/babel --save-dev
|
|
1572
|
+
```
|
|
1573
|
+
|
|
1574
|
+
```bash packageManager="yarn"
|
|
1575
|
+
yarn add @intlayer/babel --save-dev
|
|
1576
|
+
```
|
|
1577
|
+
|
|
1578
|
+
```bash packageManager="bun"
|
|
1579
|
+
bun add @intlayer/babel --dev
|
|
1580
|
+
```
|
|
1581
|
+
|
|
1582
|
+
```js fileName="babel.config.js"
|
|
1583
|
+
const {
|
|
1584
|
+
intlayerExtractBabelPlugin,
|
|
1585
|
+
getExtractPluginOptions,
|
|
1586
|
+
} = require("@intlayer/babel");
|
|
1587
|
+
|
|
1588
|
+
module.exports = {
|
|
1589
|
+
presets: ["next/babel"],
|
|
1590
|
+
plugins: [
|
|
1591
|
+
// Estrai il contenuto dai componenti nei dizionari
|
|
1592
|
+
[intlayerExtractBabelPlugin, getExtractPluginOptions()],
|
|
1593
|
+
],
|
|
1594
|
+
};
|
|
1595
|
+
```
|
|
1596
|
+
|
|
1597
|
+
```bash packageManager="npm"
|
|
1598
|
+
npm run build # Oppure npm run dev
|
|
1599
|
+
```
|
|
1600
|
+
|
|
1601
|
+
```bash packageManager="pnpm"
|
|
1602
|
+
pnpm run build # O pnpm run dev
|
|
1603
|
+
```
|
|
1604
|
+
|
|
1605
|
+
```bash packageManager="yarn"
|
|
1606
|
+
yarn build # O yarn dev
|
|
1607
|
+
```
|
|
1608
|
+
|
|
1609
|
+
```bash packageManager="bun"
|
|
1610
|
+
bun run build # Or bun run dev
|
|
1611
|
+
```
|
|
1612
|
+
|
|
1613
|
+
</Tab>
|
|
1614
|
+
</Tabs>
|
|
1615
|
+
|
|
1443
1616
|
### (Opzionale) Passo 11: Creazione di un componente Link localizzato
|
|
1444
1617
|
|
|
1445
1618
|
Per garantire che la navigazione della tua applicazione rispetti la lingua corrente, puoi creare un componente `Link` personalizzato. Questo componente aggiunge automaticamente il prefisso della lingua corrente agli URL interni. Ad esempio, quando un utente francofono clicca su un link alla pagina "About", viene reindirizzato a `/fr/about` invece che a `/about`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-01-10
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: Next.js i18n - Trasforma un'app Next.js esistente in un'app multilingue nel 2026
|
|
5
5
|
description: Scopri come rendere multilingue la tua applicazione Next.js esistente utilizzando Intlayer Compiler. Segui la documentazione per internazionalizzarla (i18n) e tradurla con l'IA.
|
|
6
6
|
keywords:
|
|
@@ -501,6 +501,179 @@ Caratteristiche:
|
|
|
501
501
|
|
|
502
502
|
Consulta la [documentazione dell'estensione](https://intlayer.org/doc/vs-code-extension) per i dettagli.
|
|
503
503
|
|
|
504
|
+
### (Opzionale) Passaggio 1 : Estrarre il contenuto dei tuoi componenti
|
|
505
|
+
|
|
506
|
+
Se hai una base di codice esistente, trasformare migliaia di file può richiedere molto tempo.
|
|
507
|
+
|
|
508
|
+
Per facilitare questo processo, Intlayer propone un [compilatore](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/compiler.md) / [estrattore](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/extract.md) per trasformare i tuoi componenti ed estrarre il contenuto.
|
|
509
|
+
|
|
510
|
+
Per configurarlo, puoi aggiungere una sezione `compiler` nel tuo file `intlayer.config.ts`:
|
|
511
|
+
|
|
512
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
513
|
+
import { type IntlayerConfig } from "intlayer";
|
|
514
|
+
|
|
515
|
+
const config: IntlayerConfig = {
|
|
516
|
+
// ... Resto della tua configurazione
|
|
517
|
+
compiler: {
|
|
518
|
+
/**
|
|
519
|
+
* Indica se il compilatore deve essere abilitato.
|
|
520
|
+
*/
|
|
521
|
+
enabled: true,
|
|
522
|
+
|
|
523
|
+
/**
|
|
524
|
+
* Definisce il percorso dei file di output
|
|
525
|
+
*/
|
|
526
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* Indica se i componenti devono essere salvati dopo essere stati trasformati. In questo modo, il compilatore può essere eseguito solo una volta per trasformare l'app e poi rimosso.
|
|
530
|
+
*/
|
|
531
|
+
saveComponents: false,
|
|
532
|
+
|
|
533
|
+
/**
|
|
534
|
+
* Prefisso chiave dizionario
|
|
535
|
+
*/
|
|
536
|
+
dictionaryKeyPrefix: "",
|
|
537
|
+
},
|
|
538
|
+
};
|
|
539
|
+
|
|
540
|
+
export default config;
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
544
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
545
|
+
const config = {
|
|
546
|
+
// ... Resto della tua configurazione
|
|
547
|
+
compiler: {
|
|
548
|
+
/**
|
|
549
|
+
* Indica se il compilatore deve essere abilitato.
|
|
550
|
+
*/
|
|
551
|
+
enabled: true,
|
|
552
|
+
|
|
553
|
+
/**
|
|
554
|
+
* Definisce il percorso dei file di output
|
|
555
|
+
*/
|
|
556
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
557
|
+
|
|
558
|
+
/**
|
|
559
|
+
* Indica se i componenti devono essere salvati dopo essere stati trasformati. In questo modo, il compilatore può essere eseguito solo una volta per trasformare l'app e poi rimosso.
|
|
560
|
+
*/
|
|
561
|
+
saveComponents: false,
|
|
562
|
+
|
|
563
|
+
/**
|
|
564
|
+
* Prefisso chiave dizionario
|
|
565
|
+
*/
|
|
566
|
+
dictionaryKeyPrefix: "",
|
|
567
|
+
},
|
|
568
|
+
};
|
|
569
|
+
|
|
570
|
+
export default config;
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
574
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
575
|
+
const config = {
|
|
576
|
+
// ... Resto della tua configurazione
|
|
577
|
+
compiler: {
|
|
578
|
+
/**
|
|
579
|
+
* Indica se il compilatore deve essere abilitato.
|
|
580
|
+
*/
|
|
581
|
+
enabled: true,
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
* Definisce il percorso dei file di output
|
|
585
|
+
*/
|
|
586
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
587
|
+
|
|
588
|
+
/**
|
|
589
|
+
* Indica se i componenti devono essere salvati dopo essere stati trasformati. In questo modo, il compilatore può essere eseguito solo una volta per trasformare l'app e poi rimosso.
|
|
590
|
+
*/
|
|
591
|
+
saveComponents: false,
|
|
592
|
+
|
|
593
|
+
/**
|
|
594
|
+
* Prefisso chiave dizionario
|
|
595
|
+
*/
|
|
596
|
+
dictionaryKeyPrefix: "",
|
|
597
|
+
},
|
|
598
|
+
};
|
|
599
|
+
|
|
600
|
+
module.exports = config;
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
<Tabs>
|
|
604
|
+
<Tab value='Comando di estrazione'>
|
|
605
|
+
|
|
606
|
+
Esegui l'estrattore per trasformare i tuoi componenti ed estrarre il contenuto
|
|
607
|
+
|
|
608
|
+
```bash packageManager="npm"
|
|
609
|
+
npx intlayer extract
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
```bash packageManager="pnpm"
|
|
613
|
+
pnpm intlayer extract
|
|
614
|
+
```
|
|
615
|
+
|
|
616
|
+
```bash packageManager="yarn"
|
|
617
|
+
yarn intlayer extract
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
```bash packageManager="bun"
|
|
621
|
+
bunx intlayer extract
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
</Tab>
|
|
625
|
+
<Tab value='Compilatore Babel'>
|
|
626
|
+
|
|
627
|
+
```bash packageManager="npm"
|
|
628
|
+
npm install @intlayer/babel --save-dev
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
```bash packageManager="pnpm"
|
|
632
|
+
pnpm add @intlayer/babel --save-dev
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
```bash packageManager="yarn"
|
|
636
|
+
yarn add @intlayer/babel --save-dev
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
```bash packageManager="bun"
|
|
640
|
+
bun add @intlayer/babel --dev
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
```js fileName="babel.config.js"
|
|
644
|
+
const {
|
|
645
|
+
intlayerExtractBabelPlugin,
|
|
646
|
+
getExtractPluginOptions,
|
|
647
|
+
} = require("@intlayer/babel");
|
|
648
|
+
|
|
649
|
+
module.exports = {
|
|
650
|
+
presets: ["next/babel"],
|
|
651
|
+
plugins: [
|
|
652
|
+
// Estrai il contenuto dai componenti nei dizionari
|
|
653
|
+
[intlayerExtractBabelPlugin, getExtractPluginOptions()],
|
|
654
|
+
],
|
|
655
|
+
};
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
```bash packageManager="npm"
|
|
659
|
+
npm run build # Oppure npm run dev
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
```bash packageManager="pnpm"
|
|
663
|
+
pnpm run build # O pnpm run dev
|
|
664
|
+
```
|
|
665
|
+
|
|
666
|
+
```bash packageManager="yarn"
|
|
667
|
+
yarn build # O yarn dev
|
|
668
|
+
```
|
|
669
|
+
|
|
670
|
+
```bash packageManager="bun"
|
|
671
|
+
bun run build # Or bun run dev
|
|
672
|
+
```
|
|
673
|
+
|
|
674
|
+
</Tab>
|
|
675
|
+
</Tabs>
|
|
676
|
+
|
|
504
677
|
### Vai oltre
|
|
505
678
|
|
|
506
679
|
Puoi implementare l' [editor visuale](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md) o esternalizzare i contenuti col [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_CMS.md).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-09-04
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: React Router v7 i18n - Come tradurre un'app React Router v7 nel 2026
|
|
5
5
|
description: Scopri come aggiungere l'internazionalizzazione (i18n) alla tua applicazione React Router v7 utilizzando Intlayer. Segui questa guida completa per rendere la tua app multilingue con il routing consapevole della localizzazione.
|
|
6
6
|
keywords:
|
|
@@ -38,7 +38,7 @@ history:
|
|
|
38
38
|
|
|
39
39
|
Questa guida dimostra come integrare **Intlayer** per un'internazionalizzazione senza soluzione di continuità nei progetti React Router v7 con routing consapevole della localizzazione, supporto TypeScript e pratiche di sviluppo moderne.
|
|
40
40
|
|
|
41
|
-
##
|
|
41
|
+
## Indice
|
|
42
42
|
|
|
43
43
|
<TOC/>
|
|
44
44
|
|
|
@@ -508,6 +508,229 @@ export default function RootLayout() {
|
|
|
508
508
|
}
|
|
509
509
|
```
|
|
510
510
|
|
|
511
|
+
### (Opzionale) Passaggio 1 : Estrarre il contenuto dei tuoi componenti
|
|
512
|
+
|
|
513
|
+
Se hai una base di codice esistente, trasformare migliaia di file può richiedere molto tempo.
|
|
514
|
+
|
|
515
|
+
Per facilitare questo processo, Intlayer propone un [compilatore](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/compiler.md) / [estrattore](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/extract.md) per trasformare i tuoi componenti ed estrarre il contenuto.
|
|
516
|
+
|
|
517
|
+
Per configurarlo, puoi aggiungere una sezione `compiler` nel tuo file `intlayer.config.ts`:
|
|
518
|
+
|
|
519
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
520
|
+
import { type IntlayerConfig } from "intlayer";
|
|
521
|
+
|
|
522
|
+
const config: IntlayerConfig = {
|
|
523
|
+
// ... Resto della tua configurazione
|
|
524
|
+
compiler: {
|
|
525
|
+
/**
|
|
526
|
+
* Indica se il compilatore deve essere abilitato.
|
|
527
|
+
*/
|
|
528
|
+
enabled: true,
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* Definisce il percorso dei file di output
|
|
532
|
+
*/
|
|
533
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
534
|
+
|
|
535
|
+
/**
|
|
536
|
+
* Indica se i componenti devono essere salvati dopo essere stati trasformati. In questo modo, il compilatore può essere eseguito solo una volta per trasformare l'app e poi rimosso.
|
|
537
|
+
*/
|
|
538
|
+
saveComponents: false,
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* Prefisso chiave dizionario
|
|
542
|
+
*/
|
|
543
|
+
dictionaryKeyPrefix: "",
|
|
544
|
+
},
|
|
545
|
+
};
|
|
546
|
+
|
|
547
|
+
export default config;
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
551
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
552
|
+
const config = {
|
|
553
|
+
// ... Resto della tua configurazione
|
|
554
|
+
compiler: {
|
|
555
|
+
/**
|
|
556
|
+
* Indica se il compilatore deve essere abilitato.
|
|
557
|
+
*/
|
|
558
|
+
enabled: true,
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
* Definisce il percorso dei file di output
|
|
562
|
+
*/
|
|
563
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
564
|
+
|
|
565
|
+
/**
|
|
566
|
+
* Indica se i componenti devono essere salvati dopo essere stati trasformati. In questo modo, il compilatore può essere eseguito solo una volta per trasformare l'app e poi rimosso.
|
|
567
|
+
*/
|
|
568
|
+
saveComponents: false,
|
|
569
|
+
|
|
570
|
+
/**
|
|
571
|
+
* Prefisso chiave dizionario
|
|
572
|
+
*/
|
|
573
|
+
dictionaryKeyPrefix: "",
|
|
574
|
+
},
|
|
575
|
+
};
|
|
576
|
+
|
|
577
|
+
export default config;
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
581
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
582
|
+
const config = {
|
|
583
|
+
// ... Resto della tua configurazione
|
|
584
|
+
compiler: {
|
|
585
|
+
/**
|
|
586
|
+
* Indica se il compilatore deve essere abilitato.
|
|
587
|
+
*/
|
|
588
|
+
enabled: true,
|
|
589
|
+
|
|
590
|
+
/**
|
|
591
|
+
* Definisce il percorso dei file di output
|
|
592
|
+
*/
|
|
593
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
594
|
+
|
|
595
|
+
/**
|
|
596
|
+
* Indica se i componenti devono essere salvati dopo essere stati trasformati. In questo modo, il compilatore può essere eseguito solo una volta per trasformare l'app e poi rimosso.
|
|
597
|
+
*/
|
|
598
|
+
saveComponents: false,
|
|
599
|
+
|
|
600
|
+
/**
|
|
601
|
+
* Prefisso chiave dizionario
|
|
602
|
+
*/
|
|
603
|
+
dictionaryKeyPrefix: "",
|
|
604
|
+
},
|
|
605
|
+
};
|
|
606
|
+
|
|
607
|
+
module.exports = config;
|
|
608
|
+
```
|
|
609
|
+
|
|
610
|
+
<Tabs>
|
|
611
|
+
<Tab value='Comando di estrazione'>
|
|
612
|
+
|
|
613
|
+
Esegui l'estrattore per trasformare i tuoi componenti ed estrarre il contenuto
|
|
614
|
+
|
|
615
|
+
```bash packageManager="npm"
|
|
616
|
+
npx intlayer extract
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
```bash packageManager="pnpm"
|
|
620
|
+
pnpm intlayer extract
|
|
621
|
+
```
|
|
622
|
+
|
|
623
|
+
```bash packageManager="yarn"
|
|
624
|
+
yarn intlayer extract
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
```bash packageManager="bun"
|
|
628
|
+
bunx intlayer extract
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
</Tab>
|
|
632
|
+
<Tab value='Compilatore Babel'>
|
|
633
|
+
|
|
634
|
+
Aggiorna il tuo `vite.config.ts` per includere il plugin `intlayerCompiler`:
|
|
635
|
+
|
|
636
|
+
```ts fileName="vite.config.ts"
|
|
637
|
+
import { defineConfig } from "vite";
|
|
638
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
639
|
+
|
|
640
|
+
export default defineConfig({
|
|
641
|
+
plugins: [
|
|
642
|
+
intlayer(),
|
|
643
|
+
intlayerCompiler(), // Aggiunge il plugin del compilatore
|
|
644
|
+
],
|
|
645
|
+
});
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
```bash packageManager="npm"
|
|
649
|
+
npm run build # Oppure npm run dev
|
|
650
|
+
```
|
|
651
|
+
|
|
652
|
+
```bash packageManager="pnpm"
|
|
653
|
+
pnpm run build # O pnpm run dev
|
|
654
|
+
```
|
|
655
|
+
|
|
656
|
+
```bash packageManager="yarn"
|
|
657
|
+
yarn build # O yarn dev
|
|
658
|
+
```
|
|
659
|
+
|
|
660
|
+
```bash packageManager="bun"
|
|
661
|
+
bun run build # Or bun run dev
|
|
662
|
+
```
|
|
663
|
+
|
|
664
|
+
</Tab>
|
|
665
|
+
</Tabs>
|
|
666
|
+
|
|
667
|
+
---
|
|
668
|
+
|
|
669
|
+
## Configure TypeScript
|
|
670
|
+
|
|
671
|
+
Intlayer uses module augmentation to get benefits of TypeScript and make your codebase stronger.
|
|
672
|
+
|
|
673
|
+
Ensure your TypeScript configuration includes the autogenerated types:
|
|
674
|
+
|
|
675
|
+
```json5 fileName="tsconfig.json"
|
|
676
|
+
{
|
|
677
|
+
// ... your existing configurations
|
|
678
|
+
include: [
|
|
679
|
+
// ... your existing includes
|
|
680
|
+
".intlayer/**/*.ts", // Include the auto-generated types
|
|
681
|
+
],
|
|
682
|
+
}
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
---
|
|
686
|
+
|
|
687
|
+
## Git Configuration
|
|
688
|
+
|
|
689
|
+
It is recommended to ignore the files generated by Intlayer. This allows you to avoid committing them to your Git repository.
|
|
690
|
+
|
|
691
|
+
To do this, you can add the following instructions to your `.gitignore` file:
|
|
692
|
+
|
|
693
|
+
```plaintext fileName=".gitignore"
|
|
694
|
+
# Ignora i file generati da Intlayer
|
|
695
|
+
.intlayer
|
|
696
|
+
```
|
|
697
|
+
|
|
698
|
+
---
|
|
699
|
+
|
|
700
|
+
## VS Code Extension
|
|
701
|
+
|
|
702
|
+
To improve your development experience with Intlayer, you can install the official **Intlayer VS Code Extension**.
|
|
703
|
+
|
|
704
|
+
[Install from the VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
705
|
+
|
|
706
|
+
This extension provides:
|
|
707
|
+
|
|
708
|
+
- **Autocompletion** for translation keys.
|
|
709
|
+
- **Real-time error detection** for missing translations.
|
|
710
|
+
- **Inline previews** of translated content.
|
|
711
|
+
- **Quick actions** to easily create and update translations.
|
|
712
|
+
|
|
713
|
+
For more details on how to use the extension, refer to the [Intlayer VS Code Extension documentation](https://intlayer.org/doc/vs-code-extension).
|
|
714
|
+
|
|
715
|
+
---
|
|
716
|
+
|
|
717
|
+
## Go Further
|
|
718
|
+
|
|
719
|
+
To go further, you can implement the [visual editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_visual_editor.md) or externalize your content using the [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md).
|
|
720
|
+
|
|
721
|
+
---
|
|
722
|
+
|
|
723
|
+
## Documentation References
|
|
724
|
+
|
|
725
|
+
- [Intlayer Documentation](https://intlayer.org)
|
|
726
|
+
- [React Router v7 Documentation](https://reactrouter.com/)
|
|
727
|
+
- [useIntlayer hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/packages/react-intlayer/useIntlayer.md)
|
|
728
|
+
- [useLocale hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/packages/react-intlayer/useLocale.md)
|
|
729
|
+
- [Content Declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md)
|
|
730
|
+
- [Configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md)
|
|
731
|
+
|
|
732
|
+
This comprehensive guide provides everything you need to integrate Intlayer with React Router v7 for a fully internationalized application with locale-aware routing and TypeScript support.
|
|
733
|
+
|
|
511
734
|
### Passo 11: Aggiungere il middleware (Opzionale)
|
|
512
735
|
|
|
513
736
|
Puoi anche utilizzare `intlayerProxy` per aggiungere il routing lato server alla tua applicazione. Questo plugin rileverà automaticamente la lingua corrente basandosi sull'URL e imposterà il cookie della lingua appropriata. Se non viene specificata alcuna lingua, il plugin determinerà la lingua più adatta in base alle preferenze linguistiche del browser dell'utente. Se non viene rilevata alcuna lingua, verrà effettuato un reindirizzamento alla lingua predefinita.
|