@intlayer/docs 7.3.4 → 7.3.6

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.
@@ -134,7 +134,7 @@ Configura tu diseño raíz y los diseños específicos por localización:
134
134
  #### Diseño Raíz
135
135
 
136
136
  ```tsx fileName="src/routes/{-$locale}/route.tsx"
137
- import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
137
+ import { createFileRoute, Outlet } from "@tanstack/react-router";
138
138
  import { IntlayerProvider, useLocale } from "react-intlayer";
139
139
 
140
140
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes";
@@ -384,16 +384,16 @@ import {
384
384
  getLocaleName,
385
385
  getPathWithoutLocale,
386
386
  getPrefix,
387
+ Locales,
387
388
  } from "intlayer";
388
- import { setLocaleInStorage, useIntlayer, useLocale } from "react-intlayer";
389
+ import { useLocale } from "react-intlayer";
389
390
 
390
391
  import { LocalizedLink, To } from "./localized-link";
391
392
 
392
393
  export const LocaleSwitcher: FC = () => {
393
- const { localeSwitcherLabel } = useIntlayer("locale-switcher");
394
394
  const { pathname } = useLocation();
395
395
 
396
- const { availableLocales, locale } = useLocale();
396
+ const { availableLocales, locale, setLocale } = useLocale();
397
397
 
398
398
  const pathWithoutLocale = getPathWithoutLocale(pathname);
399
399
 
@@ -403,25 +403,24 @@ export const LocaleSwitcher: FC = () => {
403
403
  <li key={localeEl}>
404
404
  <LocalizedLink
405
405
  aria-current={localeEl === locale ? "page" : undefined}
406
- aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeEl)}`}
407
- onClick={() => setLocaleInStorage(localeEl)}
406
+ onClick={() => setLocale(localeEl)}
408
407
  params={{ locale: getPrefix(localeEl).localePrefix }}
409
408
  >
410
409
  <span>
411
410
  {/* Localización - por ejemplo FR */}
412
- {localeItem}
411
+ {localeEl}
413
412
  </span>
414
413
  <span>
415
414
  {/* Idioma en su propia localización - por ejemplo Français */}
416
- {getLocaleName(localeItem, locale)}
415
+ {getLocaleName(localeEl, locale)}
417
416
  </span>
418
- <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
417
+ <span dir={getHTMLTextDir(localeEl)} lang={localeEl}>
419
418
  {/* Idioma en la localización actual - por ejemplo Francés con la localización actual configurada en Locales.SPANISH */}
420
- {getLocaleName(localeItem)}
419
+ {getLocaleName(localeEl)}
421
420
  </span>
422
421
  <span dir="ltr" lang={Locales.ENGLISH}>
423
422
  {/* Idioma en inglés - por ejemplo French */}
424
- {getLocaleName(localeItem, Locales.ENGLISH)}
423
+ {getLocaleName(localeEl, Locales.ENGLISH)}
425
424
  </span>
426
425
  </LocalizedLink>
427
426
  </li>
@@ -456,7 +455,7 @@ export const useI18nHTMLAttributes = () => {
456
455
  Luego úsalo en tu componente raíz:
457
456
 
458
457
  ```tsx fileName="src/routes/{-$locale}/index.tsx"
459
- import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
458
+ import { createFileRoute, Outlet } from "@tanstack/react-router";
460
459
  import { IntlayerProvider, useLocale } from "react-intlayer";
461
460
 
462
461
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes"; // importar el hook
@@ -496,18 +495,44 @@ import tsconfigPaths from "vite-tsconfig-paths";
496
495
 
497
496
  export default defineConfig({
498
497
  plugins: [
498
+ intlayerProxy(), // El proxy debe colocarse antes del servidor si usas Nitro
499
499
  tailwindcss(),
500
500
  reactRouter(),
501
501
  tsconfigPaths(),
502
502
  intlayer(),
503
- intlayerProxy(),
504
503
  ],
505
504
  });
506
505
  ```
507
506
 
508
507
  ---
509
508
 
510
- ### Paso 12: Configurar TypeScript (Opcional)
509
+ ### Paso 12: Internacionalizar tus Metadatos (Opcional)
510
+
511
+ También puedes usar el hook `getIntlayer` para acceder a tus diccionarios de contenido en toda tu aplicación:
512
+
513
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
514
+ import { createFileRoute } from "@tanstack/react-router";
515
+ import { getIntlayer } from "intlayer";
516
+
517
+ export const Route = createFileRoute("/{-$locale}/")({
518
+ component: RouteComponent,
519
+ head: ({ params }) => {
520
+ const { locale } = params;
521
+ const metaContent = getIntlayer("page-metadata", locale);
522
+
523
+ return {
524
+ meta: [
525
+ { title: metaContent.title },
526
+ { content: metaContent.description, name: "description" },
527
+ ],
528
+ };
529
+ },
530
+ });
531
+ ```
532
+
533
+ ---
534
+
535
+ ### Paso 13: Configurar TypeScript (Opcional)
511
536
 
512
537
  Intlayer utiliza la ampliación de módulos para aprovechar las ventajas de TypeScript y fortalecer tu base de código.
513
538
 
@@ -525,32 +550,6 @@ Asegúrate de que tu configuración de TypeScript incluya los tipos autogenerado
525
550
 
526
551
  ---
527
552
 
528
- ### Paso 13: Adaptar Nitro (Opcional)
529
-
530
- Si estás utilizando Nitro para tu salida de producción, nitro no incluirá el directorio `.intlayer` en el directorio de salida. Necesitas copiarlo manualmente.
531
-
532
- Ejemplo usando script de build:
533
-
534
- ```json5 fileName="package.json"
535
- {
536
- "scripts": {
537
- "dev": "vite dev --port 3000",
538
- "build": "vite build && cpr .intlayer .output/.intlayer", // Copiar carpeta .intlayer
539
- "serve": "vite preview",
540
- },
541
- }
542
- ```
543
-
544
- > cpr se utiliza para adaptar el comando y hacer que funcione en Windows.
545
- > Tendrás que instalar la utilidad `cpr` para usar este comando.
546
- >
547
- > - `npm install --save-dev cpr`
548
- > - `yarn add --dev cpr`
549
- > - `pnpm add --save-dev cpr`
550
- > - `bun add --save-dev cpr`
551
-
552
- ---
553
-
554
553
  ### Configuración de Git
555
554
 
556
555
  Se recomienda ignorar los archivos generados por Intlayer. Esto te permite evitar comprometerlos en tu repositorio Git.
@@ -134,7 +134,7 @@ Configurez votre mise en page racine et les mises en page spécifiques aux local
134
134
  #### Mise en page racine
135
135
 
136
136
  ```tsx fileName="src/routes/{-$locale}/route.tsx"
137
- import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
137
+ import { createFileRoute, Outlet } from "@tanstack/react-router";
138
138
  import { IntlayerProvider, useLocale } from "react-intlayer";
139
139
 
140
140
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes";
@@ -388,16 +388,16 @@ import {
388
388
  getLocaleName,
389
389
  getPathWithoutLocale,
390
390
  getPrefix,
391
+ Locales,
391
392
  } from "intlayer";
392
- import { setLocaleInStorage, useIntlayer, useLocale } from "react-intlayer";
393
+ import { useLocale } from "react-intlayer";
393
394
 
394
395
  import { LocalizedLink, To } from "./localized-link";
395
396
 
396
397
  export const LocaleSwitcher: FC = () => {
397
- const { localeSwitcherLabel } = useIntlayer("locale-switcher");
398
398
  const { pathname } = useLocation();
399
399
 
400
- const { availableLocales, locale } = useLocale();
400
+ const { availableLocales, locale, setLocale } = useLocale();
401
401
 
402
402
  const pathWithoutLocale = getPathWithoutLocale(pathname);
403
403
 
@@ -407,25 +407,24 @@ export const LocaleSwitcher: FC = () => {
407
407
  <li key={localeEl}>
408
408
  <LocalizedLink
409
409
  aria-current={localeEl === locale ? "page" : undefined}
410
- aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeEl)}`}
411
- onClick={() => setLocaleInStorage(localeEl)}
410
+ onClick={() => setLocale(localeEl)}
412
411
  params={{ locale: getPrefix(localeEl).localePrefix }}
413
412
  >
414
413
  <span>
415
414
  {/* Locale - ex. FR */}
416
- {localeItem}
415
+ {localeEl}
417
416
  </span>
418
417
  <span>
419
418
  {/* Langue dans sa propre locale - ex. Français */}
420
- {getLocaleName(localeItem, locale)}
419
+ {getLocaleName(localeEl, locale)}
421
420
  </span>
422
- <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
421
+ <span dir={getHTMLTextDir(localeEl)} lang={localeEl}>
423
422
  {/* Langue dans la locale courante - ex. Francés avec la locale courante définie sur Locales.SPANISH */}
424
- {getLocaleName(localeItem)}
423
+ {getLocaleName(localeEl)}
425
424
  </span>
426
425
  <span dir="ltr" lang={Locales.ENGLISH}>
427
426
  {/* Langue en anglais - ex. French */}
428
- {getLocaleName(localeItem, Locales.ENGLISH)}
427
+ {getLocaleName(localeEl, Locales.ENGLISH)}
429
428
  </span>
430
429
  </LocalizedLink>
431
430
  </li>
@@ -460,7 +459,7 @@ export const useI18nHTMLAttributes = () => {
460
459
  Ensuite, utilisez-le dans votre composant racine :
461
460
 
462
461
  ```tsx fileName="src/routes/{-$locale}/index.tsx"
463
- import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
462
+ import { createFileRoute, Outlet } from "@tanstack/react-router";
464
463
  import { IntlayerProvider, useLocale } from "react-intlayer";
465
464
 
466
465
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes"; // importer le hook
@@ -500,18 +499,44 @@ import tsconfigPaths from "vite-tsconfig-paths";
500
499
 
501
500
  export default defineConfig({
502
501
  plugins: [
502
+ intlayerProxy(), // Le proxy doit être placé avant le serveur si vous utilisez Nitro
503
503
  tailwindcss(),
504
504
  reactRouter(),
505
505
  tsconfigPaths(),
506
506
  intlayer(),
507
- intlayerProxy(),
508
507
  ],
509
508
  });
510
509
  ```
511
510
 
512
511
  ---
513
512
 
514
- ### Étape 12 : Configurer TypeScript (Optionnel)
513
+ ### Étape 12 : Internationaliser vos métadonnées (Optionnel)
514
+
515
+ Vous pouvez également utiliser le hook `getIntlayer` pour accéder à vos dictionnaires de contenu dans toute votre application :
516
+
517
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
518
+ import { createFileRoute } from "@tanstack/react-router";
519
+ import { getIntlayer } from "intlayer";
520
+
521
+ export const Route = createFileRoute("/{-$locale}/")({
522
+ component: RouteComponent,
523
+ head: ({ params }) => {
524
+ const { locale } = params;
525
+ const metaContent = getIntlayer("page-metadata", locale);
526
+
527
+ return {
528
+ meta: [
529
+ { title: metaContent.title },
530
+ { content: metaContent.description, name: "description" },
531
+ ],
532
+ };
533
+ },
534
+ });
535
+ ```
536
+
537
+ ---
538
+
539
+ ### Étape 13 : Configurer TypeScript (Optionnel)
515
540
 
516
541
  Intlayer utilise l'augmentation de module pour bénéficier de TypeScript et renforcer votre base de code.
517
542
 
@@ -529,32 +554,6 @@ Assurez-vous que votre configuration TypeScript inclut les types générés auto
529
554
 
530
555
  ---
531
556
 
532
- ### Étape 13 : Adapter Nitro (Optionnel)
533
-
534
- Si vous utilisez Nitro pour votre sortie de production, nitro n'inclura pas le répertoire `.intlayer` dans le répertoire de sortie. Vous devez le copier manuellement.
535
-
536
- Exemple utilisant le script de build :
537
-
538
- ```json5 fileName="package.json"
539
- {
540
- "scripts": {
541
- "dev": "vite dev --port 3000",
542
- "build": "vite build && cpr .intlayer .output/.intlayer", // Copier le dossier .intlayer
543
- "serve": "vite preview",
544
- },
545
- }
546
- ```
547
-
548
- > cpr est utilisé pour adapter la commande afin qu'elle fonctionne sur Windows.
549
- > Vous devrez installer l'utilitaire `cpr` pour utiliser cette commande.
550
- >
551
- > - `npm install --save-dev cpr`
552
- > - `yarn add --dev cpr`
553
- > - `pnpm add --save-dev cpr`
554
- > - `bun add --save-dev cpr`
555
-
556
- ---
557
-
558
557
  ### Configuration Git
559
558
 
560
559
  Il est recommandé d'ignorer les fichiers générés par Intlayer. Cela vous permet d'éviter de les committer dans votre dépôt Git.
@@ -137,7 +137,7 @@ export default config;
137
137
  #### रूट लेआउट
138
138
 
139
139
  ```tsx fileName="src/routes/{-$locale}/route.tsx"
140
- import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
140
+ import { createFileRoute, Outlet } from "@tanstack/react-router";
141
141
  import { IntlayerProvider, useLocale } from "react-intlayer";
142
142
 
143
143
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes";
@@ -380,16 +380,16 @@ import {
380
380
  getLocaleName,
381
381
  getPathWithoutLocale,
382
382
  getPrefix,
383
+ Locales,
383
384
  } from "intlayer";
384
- import { setLocaleInStorage, useIntlayer, useLocale } from "react-intlayer";
385
+ import { useLocale } from "react-intlayer";
385
386
 
386
387
  import { LocalizedLink, To } from "./localized-link";
387
388
 
388
389
  export const LocaleSwitcher: FC = () => {
389
- const { localeSwitcherLabel } = useIntlayer("locale-switcher");
390
390
  const { pathname } = useLocation();
391
391
 
392
- const { availableLocales, locale } = useLocale();
392
+ const { availableLocales, locale, setLocale } = useLocale();
393
393
 
394
394
  const pathWithoutLocale = getPathWithoutLocale(pathname);
395
395
 
@@ -399,25 +399,24 @@ export const LocaleSwitcher: FC = () => {
399
399
  <li key={localeEl}>
400
400
  <LocalizedLink
401
401
  aria-current={localeEl === locale ? "page" : undefined}
402
- aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeEl)}`}
403
- onClick={() => setLocaleInStorage(localeEl)}
402
+ onClick={() => setLocale(localeEl)}
404
403
  params={{ locale: getPrefix(localeEl).localePrefix }}
405
404
  >
406
405
  <span>
407
406
  {/* लोकल - उदाहरण के लिए FR */}
408
- {localeItem}
407
+ {localeEl}
409
408
  </span>
410
409
  <span>
411
410
  {/* अपनी लोकल में भाषा - उदाहरण के लिए Français */}
412
- {getLocaleName(localeItem, locale)}
411
+ {getLocaleName(localeEl, locale)}
413
412
  </span>
414
- <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
413
+ <span dir={getHTMLTextDir(localeEl)} lang={localeEl}>
415
414
  {/* वर्तमान लोकल में भाषा - उदाहरण के लिए Francés जब वर्तमान लोकल Locales.SPANISH सेट हो */}
416
- {getLocaleName(localeItem)}
415
+ {getLocaleName(localeEl)}
417
416
  </span>
418
417
  <span dir="ltr" lang={Locales.ENGLISH}>
419
418
  {/* अंग्रेज़ी में भाषा - उदाहरण के लिए French */}
420
- {getLocaleName(localeItem, Locales.ENGLISH)}
419
+ {getLocaleName(localeEl, Locales.ENGLISH)}
421
420
  </span>
422
421
  </LocalizedLink>
423
422
  </li>
@@ -452,7 +451,7 @@ export const useI18nHTMLAttributes = () => {
452
451
  फिर इसे अपने रूट कॉम्पोनेंट में उपयोग करें:
453
452
 
454
453
  ```tsx fileName="src/routes/{-$locale}/index.tsx"
455
- import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
454
+ import { createFileRoute, Outlet } from "@tanstack/react-router";
456
455
  import { IntlayerProvider, useLocale } from "react-intlayer";
457
456
 
458
457
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes"; // हुक को इम्पोर्ट करें
@@ -492,18 +491,44 @@ import tsconfigPaths from "vite-tsconfig-paths";
492
491
 
493
492
  export default defineConfig({
494
493
  plugins: [
494
+ intlayerProxy(), // यदि आप Nitro का उपयोग करते हैं, तो प्रॉक्सी को सर्वर से पहले रखा जाना चाहिए
495
495
  tailwindcss(),
496
496
  reactRouter(),
497
497
  tsconfigPaths(),
498
498
  intlayer(),
499
- intlayerProxy(),
500
499
  ],
501
500
  });
502
501
  ```
503
502
 
504
503
  ---
505
504
 
506
- ### चरण 12: टाइपस्क्रिप्ट कॉन्फ़िगर करें (वैकल्पिक)
505
+ ### चरण 12: अपने मेटाडेटा को अंतर्राष्ट्रीयकृत करें (वैकल्पिक)
506
+
507
+ आप अपने एप्लिकेशन में अपनी सामग्री शब्दकोशों तक पहुंचने के लिए `getIntlayer` हुक का भी उपयोग कर सकते हैं:
508
+
509
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
510
+ import { createFileRoute } from "@tanstack/react-router";
511
+ import { getIntlayer } from "intlayer";
512
+
513
+ export const Route = createFileRoute("/{-$locale}/")({
514
+ component: RouteComponent,
515
+ head: ({ params }) => {
516
+ const { locale } = params;
517
+ const metaContent = getIntlayer("page-metadata", locale);
518
+
519
+ return {
520
+ meta: [
521
+ { title: metaContent.title },
522
+ { content: metaContent.description, name: "description" },
523
+ ],
524
+ };
525
+ },
526
+ });
527
+ ```
528
+
529
+ ---
530
+
531
+ ### चरण 13: टाइपस्क्रिप्ट कॉन्फ़िगर करें (वैकल्पिक)
507
532
 
508
533
  Intlayer टाइपस्क्रिप्ट के लाभ प्राप्त करने और आपके कोडबेस को मजबूत बनाने के लिए मॉड्यूल ऑगमेंटेशन का उपयोग करता है।
509
534
 
@@ -521,32 +546,6 @@ Intlayer टाइपस्क्रिप्ट के लाभ प्रा
521
546
 
522
547
  ---
523
548
 
524
- ### चरण 13: Nitro को अनुकूलित करें (वैकल्पिक)
525
-
526
- यदि आप अपने उत्पादन आउटपुट के लिए Nitro का उपयोग कर रहे हैं, तो nitro आउटपुट डायरेक्टरी में `.intlayer` डायरेक्टरी को शामिल नहीं करेगा। आपको इसे मैन्युअल रूप से कॉपी करना होगा।
527
-
528
- बिल्ड स्क्रिप्ट का उपयोग करते हुए उदाहरण:
529
-
530
- ```json5 fileName="package.json"
531
- {
532
- "scripts": {
533
- "dev": "vite dev --port 3000",
534
- "build": "vite build && cpr .intlayer .output/.intlayer", // .intlayer फ़ोल्डर कॉपी करें
535
- "serve": "vite preview",
536
- },
537
- }
538
- ```
539
-
540
- > cpr का उपयोग कमांड को Windows पर काम करने के लिए अनुकूलित करने के लिए किया जाता है।
541
- > इस कमांड का उपयोग करने के लिए आपको `cpr` उपयोगिता इंस्टॉल करनी होगी।
542
- >
543
- > - `npm install --save-dev cpr`
544
- > - `yarn add --dev cpr`
545
- > - `pnpm add --save-dev cpr`
546
- > - `bun add --save-dev cpr`
547
-
548
- ---
549
-
550
549
  ### गिट कॉन्फ़िगरेशन
551
550
 
552
551
  यह अनुशंसित है कि Intlayer द्वारा जनरेट की गई फाइलों को अनदेखा किया जाए। इससे आप उन्हें अपनी गिट रिपॉजिटरी में कमिट करने से बच सकते हैं।
@@ -145,7 +145,7 @@ Atur layout root Anda dan layout khusus locale:
145
145
  #### Layout Root
146
146
 
147
147
  ```tsx fileName="src/routes/{-$locale}/route.tsx"
148
- import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
148
+ import { createFileRoute, Outlet } from "@tanstack/react-router";
149
149
  import { IntlayerProvider, useLocale } from "react-intlayer";
150
150
 
151
151
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes";
@@ -392,16 +392,16 @@ import {
392
392
  getLocaleName,
393
393
  getPathWithoutLocale,
394
394
  getPrefix,
395
+ Locales,
395
396
  } from "intlayer";
396
- import { setLocaleInStorage, useIntlayer, useLocale } from "react-intlayer";
397
+ import { useLocale } from "react-intlayer";
397
398
 
398
399
  import { LocalizedLink, To } from "./localized-link";
399
400
 
400
401
  export const LocaleSwitcher: FC = () => {
401
- const { localeSwitcherLabel } = useIntlayer("locale-switcher");
402
402
  const { pathname } = useLocation();
403
403
 
404
- const { availableLocales, locale } = useLocale();
404
+ const { availableLocales, locale, setLocale } = useLocale();
405
405
 
406
406
  const pathWithoutLocale = getPathWithoutLocale(pathname);
407
407
 
@@ -411,25 +411,24 @@ export const LocaleSwitcher: FC = () => {
411
411
  <li key={localeEl}>
412
412
  <LocalizedLink
413
413
  aria-current={localeEl === locale ? "page" : undefined}
414
- aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeEl)}`}
415
- onClick={() => setLocaleInStorage(localeEl)}
414
+ onClick={() => setLocale(localeEl)}
416
415
  params={{ locale: getPrefix(localeEl).localePrefix }}
417
416
  >
418
417
  <span>
419
418
  {/* Locale - misalnya FR */}
420
- {localeItem}
419
+ {localeEl}
421
420
  </span>
422
421
  <span>
423
422
  {/* Bahasa dalam Locale-nya sendiri - misalnya Français */}
424
- {getLocaleName(localeItem, locale)}
423
+ {getLocaleName(localeEl, locale)}
425
424
  </span>
426
- <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
425
+ <span dir={getHTMLTextDir(localeEl)} lang={localeEl}>
427
426
  {/* Bahasa dalam Locale saat ini - misalnya Francés dengan locale saat ini disetel ke Locales.SPANISH */}
428
- {getLocaleName(localeItem)}
427
+ {getLocaleName(localeEl)}
429
428
  </span>
430
429
  <span dir="ltr" lang={Locales.ENGLISH}>
431
430
  {/* Bahasa dalam bahasa Inggris - misalnya French */}
432
- {getLocaleName(localeItem, Locales.ENGLISH)}
431
+ {getLocaleName(localeEl, Locales.ENGLISH)}
433
432
  </span>
434
433
  </LocalizedLink>
435
434
  </li>
@@ -464,7 +463,7 @@ export const useI18nHTMLAttributes = () => {
464
463
  Kemudian gunakan di komponen root Anda:
465
464
 
466
465
  ```tsx fileName="src/routes/{-$locale}/index.tsx"
467
- import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
466
+ import { createFileRoute, Outlet } from "@tanstack/react-router";
468
467
  import { IntlayerProvider, useLocale } from "react-intlayer";
469
468
 
470
469
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes"; // impor hook
@@ -504,18 +503,44 @@ import tsconfigPaths from "vite-tsconfig-paths";
504
503
 
505
504
  export default defineConfig({
506
505
  plugins: [
506
+ intlayerProxy(), // Proxy harus ditempatkan sebelum server jika Anda menggunakan Nitro
507
507
  tailwindcss(),
508
508
  reactRouter(),
509
509
  tsconfigPaths(),
510
510
  intlayer(),
511
- intlayerProxy(),
512
511
  ],
513
512
  });
514
513
  ```
515
514
 
516
515
  ---
517
516
 
518
- ### Langkah 12: Konfigurasi TypeScript (Opsional)
517
+ ### Langkah 12: Internasionalisasi Metadata Anda (Opsional)
518
+
519
+ Anda juga dapat menggunakan hook `getIntlayer` untuk mengakses kamus konten Anda di seluruh aplikasi:
520
+
521
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
522
+ import { createFileRoute } from "@tanstack/react-router";
523
+ import { getIntlayer } from "intlayer";
524
+
525
+ export const Route = createFileRoute("/{-$locale}/")({
526
+ component: RouteComponent,
527
+ head: ({ params }) => {
528
+ const { locale } = params;
529
+ const metaContent = getIntlayer("page-metadata", locale);
530
+
531
+ return {
532
+ meta: [
533
+ { title: metaContent.title },
534
+ { content: metaContent.description, name: "description" },
535
+ ],
536
+ };
537
+ },
538
+ });
539
+ ```
540
+
541
+ ---
542
+
543
+ ### Langkah 13: Konfigurasi TypeScript (Opsional)
519
544
 
520
545
  Intlayer menggunakan module augmentation untuk mendapatkan manfaat dari TypeScript dan membuat codebase Anda lebih kuat.
521
546
 
@@ -533,32 +558,6 @@ Pastikan konfigurasi TypeScript Anda menyertakan tipe yang dihasilkan secara oto
533
558
 
534
559
  ---
535
560
 
536
- ### Langkah 13: Menyesuaikan Nitro (Opsional)
537
-
538
- Jika Anda menggunakan Nitro untuk output produksi Anda, nitro tidak akan menyertakan direktori `.intlayer` dalam direktori output. Anda perlu menyalinnya secara manual.
539
-
540
- Contoh menggunakan script build:
541
-
542
- ```json5 fileName="package.json"
543
- {
544
- "scripts": {
545
- "dev": "vite dev --port 3000",
546
- "build": "vite build && cpr -r .intlayer .output/.intlayer", // Salin folder .intlayer
547
- "serve": "vite preview",
548
- },
549
- }
550
- ```
551
-
552
- > cpr digunakan untuk mengadaptasi perintah agar berfungsi di Windows.
553
- > Anda harus menginstal utilitas `cpr` untuk menggunakan perintah ini.
554
- >
555
- > - `npm install --save-dev cpr`
556
- > - `yarn add --dev cpr`
557
- > - `pnpm add --save-dev cpr`
558
- > - `bun add --save-dev cpr`
559
-
560
- ---
561
-
562
561
  ### Konfigurasi Git
563
562
 
564
563
  Disarankan untuk mengabaikan file yang dihasilkan oleh Intlayer. Ini memungkinkan Anda menghindari meng-commit file tersebut ke repositori Git Anda.