@intlayer/docs 7.3.5 → 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 @@ Configure seu layout raiz e layouts específicos para cada localidade:
134
134
  #### Layout Raiz
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";
@@ -391,16 +391,16 @@ import {
391
391
  getLocaleName,
392
392
  getPathWithoutLocale,
393
393
  getPrefix,
394
+ Locales,
394
395
  } from "intlayer";
395
- import { setLocaleInStorage, useIntlayer, useLocale } from "react-intlayer";
396
+ import { useLocale } from "react-intlayer";
396
397
 
397
398
  import { LocalizedLink, To } from "./localized-link";
398
399
 
399
400
  export const LocaleSwitcher: FC = () => {
400
- const { localeSwitcherLabel } = useIntlayer("locale-switcher");
401
401
  const { pathname } = useLocation();
402
402
 
403
- const { availableLocales, locale } = useLocale();
403
+ const { availableLocales, locale, setLocale } = useLocale();
404
404
 
405
405
  const pathWithoutLocale = getPathWithoutLocale(pathname);
406
406
 
@@ -410,25 +410,24 @@ export const LocaleSwitcher: FC = () => {
410
410
  <li key={localeEl}>
411
411
  <LocalizedLink
412
412
  aria-current={localeEl === locale ? "page" : undefined}
413
- aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeEl)}`}
414
- onClick={() => setLocaleInStorage(localeEl)}
413
+ onClick={() => setLocale(localeEl)}
415
414
  params={{ locale: getPrefix(localeEl).localePrefix }}
416
415
  >
417
416
  <span>
418
417
  {/* Local - ex. FR */}
419
- {localeItem}
418
+ {localeEl}
420
419
  </span>
421
420
  <span>
422
421
  {/* Idioma na sua própria Localização - ex. Français */}
423
- {getLocaleName(localeItem, locale)}
422
+ {getLocaleName(localeEl, locale)}
424
423
  </span>
425
- <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
424
+ <span dir={getHTMLTextDir(localeEl)} lang={localeEl}>
426
425
  {/* Idioma na Localização atual - ex. Francés com a localização atual definida para Locales.SPANISH */}
427
- {getLocaleName(localeItem)}
426
+ {getLocaleName(localeEl)}
428
427
  </span>
429
428
  <span dir="ltr" lang={Locales.ENGLISH}>
430
429
  {/* Idioma em Inglês - ex. French */}
431
- {getLocaleName(localeItem, Locales.ENGLISH)}
430
+ {getLocaleName(localeEl, Locales.ENGLISH)}
432
431
  </span>
433
432
  </LocalizedLink>
434
433
  </li>
@@ -463,7 +462,7 @@ export const useI18nHTMLAttributes = () => {
463
462
  Então use-o no seu componente raiz:
464
463
 
465
464
  ```tsx fileName="src/routes/{-$locale}/index.tsx"
466
- import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
465
+ import { createFileRoute, Outlet } from "@tanstack/react-router";
467
466
  import { IntlayerProvider, useLocale } from "react-intlayer";
468
467
 
469
468
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes"; // importar o hook
@@ -503,18 +502,44 @@ import tsconfigPaths from "vite-tsconfig-paths";
503
502
 
504
503
  export default defineConfig({
505
504
  plugins: [
505
+ intlayerProxy(), // O proxy deve ser colocado antes do servidor se você usar Nitro
506
506
  tailwindcss(),
507
507
  reactRouter(),
508
508
  tsconfigPaths(),
509
509
  intlayer(),
510
- intlayerProxy(),
511
510
  ],
512
511
  });
513
512
  ```
514
513
 
515
514
  ---
516
515
 
517
- ### Passo 12: Configurar o TypeScript (Opcional)
516
+ ### Passo 12: Internacionalizar seus Metadados (Opcional)
517
+
518
+ Você também pode usar o hook `getIntlayer` para acessar seus dicionários de conteúdo em toda a sua aplicação:
519
+
520
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
521
+ import { createFileRoute } from "@tanstack/react-router";
522
+ import { getIntlayer } from "intlayer";
523
+
524
+ export const Route = createFileRoute("/{-$locale}/")({
525
+ component: RouteComponent,
526
+ head: ({ params }) => {
527
+ const { locale } = params;
528
+ const metaContent = getIntlayer("page-metadata", locale);
529
+
530
+ return {
531
+ meta: [
532
+ { title: metaContent.title },
533
+ { content: metaContent.description, name: "description" },
534
+ ],
535
+ };
536
+ },
537
+ });
538
+ ```
539
+
540
+ ---
541
+
542
+ ### Passo 13: Configurar o TypeScript (Opcional)
518
543
 
519
544
  O Intlayer utiliza a ampliação de módulos para aproveitar os benefícios do TypeScript e fortalecer sua base de código.
520
545
 
@@ -532,32 +557,6 @@ Certifique-se de que sua configuração do TypeScript inclua os tipos gerados au
532
557
 
533
558
  ---
534
559
 
535
- ### Passo 13: Adaptar Nitro (Opcional)
536
-
537
- Se você estiver usando Nitro para sua saída de produção, o nitro não incluirá o diretório `.intlayer` no diretório de saída. Você precisa copiá-lo manualmente.
538
-
539
- Exemplo usando script de build:
540
-
541
- ```json5 fileName="package.json"
542
- {
543
- "scripts": {
544
- "dev": "vite dev --port 3000",
545
- "build": "vite build && cpr .intlayer .output/.intlayer", // Copiar pasta .intlayer
546
- "serve": "vite preview",
547
- },
548
- }
549
- ```
550
-
551
- > cpr é usado para adaptar o comando para fazê-lo funcionar no Windows.
552
- > Você terá que instalar o utilitário `cpr` para usar este comando.
553
- >
554
- > - `npm install --save-dev cpr`
555
- > - `yarn add --dev cpr`
556
- > - `pnpm add --save-dev cpr`
557
- > - `bun add --save-dev cpr`
558
-
559
- ---
560
-
561
560
  ### Configuração do Git
562
561
 
563
562
  É recomendado ignorar os arquivos gerados pelo Intlayer. Isso permite evitar que eles sejam comitados no seu repositório Git.
@@ -134,7 +134,7 @@ export default config;
134
134
  #### Корневой макет
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";
@@ -381,16 +381,16 @@ import {
381
381
  getLocaleName,
382
382
  getPathWithoutLocale,
383
383
  getPrefix,
384
+ Locales,
384
385
  } from "intlayer";
385
- import { setLocaleInStorage, useIntlayer, useLocale } from "react-intlayer";
386
+ import { useLocale } from "react-intlayer";
386
387
 
387
388
  import { LocalizedLink, To } from "./localized-link";
388
389
 
389
390
  export const LocaleSwitcher: FC = () => {
390
- const { localeSwitcherLabel } = useIntlayer("locale-switcher");
391
391
  const { pathname } = useLocation();
392
392
 
393
- const { availableLocales, locale } = useLocale();
393
+ const { availableLocales, locale, setLocale } = useLocale();
394
394
 
395
395
  const pathWithoutLocale = getPathWithoutLocale(pathname);
396
396
 
@@ -400,25 +400,24 @@ export const LocaleSwitcher: FC = () => {
400
400
  <li key={localeEl}>
401
401
  <LocalizedLink
402
402
  aria-current={localeEl === locale ? "page" : undefined}
403
- aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeEl)}`}
404
- onClick={() => setLocaleInStorage(localeEl)}
403
+ onClick={() => setLocale(localeEl)}
405
404
  params={{ locale: getPrefix(localeEl).localePrefix }}
406
405
  >
407
406
  <span>
408
407
  {/* Локаль - например, FR */}
409
- {localeItem}
408
+ {localeEl}
410
409
  </span>
411
410
  <span>
412
411
  {/* Язык на его собственной локали - например, Français */}
413
- {getLocaleName(localeItem, locale)}
412
+ {getLocaleName(localeEl, locale)}
414
413
  </span>
415
- <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
414
+ <span dir={getHTMLTextDir(localeEl)} lang={localeEl}>
416
415
  {/* Язык на текущей локали - например, Francés при установленной локали Locales.SPANISH */}
417
- {getLocaleName(localeItem)}
416
+ {getLocaleName(localeEl)}
418
417
  </span>
419
418
  <span dir="ltr" lang={Locales.ENGLISH}>
420
419
  {/* Язык на английском - например, French */}
421
- {getLocaleName(localeItem, Locales.ENGLISH)}
420
+ {getLocaleName(localeEl, Locales.ENGLISH)}
422
421
  </span>
423
422
  </LocalizedLink>
424
423
  </li>
@@ -453,7 +452,7 @@ export const useI18nHTMLAttributes = () => {
453
452
  Затем используйте его в вашем корневом компоненте:
454
453
 
455
454
  ```tsx fileName="src/routes/{-$locale}/index.tsx"
456
- import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
455
+ import { createFileRoute, Outlet } from "@tanstack/react-router";
457
456
  import { IntlayerProvider, useLocale } from "react-intlayer";
458
457
 
459
458
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes"; // импортируем хук
@@ -493,18 +492,44 @@ import tsconfigPaths from "vite-tsconfig-paths";
493
492
 
494
493
  export default defineConfig({
495
494
  plugins: [
495
+ intlayerProxy(), // Прокси должен быть размещен перед сервером, если вы используете Nitro
496
496
  tailwindcss(),
497
497
  reactRouter(),
498
498
  tsconfigPaths(),
499
499
  intlayer(),
500
- intlayerProxy(),
501
500
  ],
502
501
  });
503
502
  ```
504
503
 
505
504
  ---
506
505
 
507
- ### Шаг 12: Настройка TypeScript (необязательно)
506
+ ### Шаг 12: Интернационализация метаданных (необязательно)
507
+
508
+ Вы также можете использовать хук `getIntlayer` для доступа к вашим словарям контента во всем приложении:
509
+
510
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
511
+ import { createFileRoute } from "@tanstack/react-router";
512
+ import { getIntlayer } from "intlayer";
513
+
514
+ export const Route = createFileRoute("/{-$locale}/")({
515
+ component: RouteComponent,
516
+ head: ({ params }) => {
517
+ const { locale } = params;
518
+ const metaContent = getIntlayer("page-metadata", locale);
519
+
520
+ return {
521
+ meta: [
522
+ { title: metaContent.title },
523
+ { content: metaContent.description, name: "description" },
524
+ ],
525
+ };
526
+ },
527
+ });
528
+ ```
529
+
530
+ ---
531
+
532
+ ### Шаг 13: Настройка TypeScript (необязательно)
508
533
 
509
534
  Intlayer использует расширение модулей (module augmentation), чтобы использовать преимущества TypeScript и сделать вашу кодовую базу более надежной.
510
535
 
@@ -522,32 +547,6 @@ Intlayer использует расширение модулей (module augmen
522
547
 
523
548
  ---
524
549
 
525
- ### Шаг 13: Адаптация Nitro (необязательно)
526
-
527
- Если вы используете Nitro для вашего производственного вывода, nitro не будет включать директорию `.intlayer` в выходную директорию. Вам нужно скопировать её вручную.
528
-
529
- Пример с использованием скрипта сборки:
530
-
531
- ```json5 fileName="package.json"
532
- {
533
- "scripts": {
534
- "dev": "vite dev --port 3000",
535
- "build": "vite build && cpr .intlayer .output/.intlayer", // Копировать папку .intlayer
536
- "serve": "vite preview",
537
- },
538
- }
539
- ```
540
-
541
- > cpr используется для адаптации команды, чтобы она работала в Windows.
542
- > Вам потребуется установить утилиту `cpr` для использования этой команды.
543
- >
544
- > - `npm install --save-dev cpr`
545
- > - `yarn add --dev cpr`
546
- > - `pnpm add --save-dev cpr`
547
- > - `bun add --save-dev cpr`
548
-
549
- ---
550
-
551
550
  ### Конфигурация Git
552
551
 
553
552
  Рекомендуется игнорировать файлы, сгенерированные Intlayer. Это позволит избежать их коммита в ваш Git-репозиторий.
@@ -137,7 +137,7 @@ Kök düzeninizi ve yerel dile özgü düzenlerinizi ayarlayın:
137
137
  #### Kök Düzen
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";
@@ -394,16 +394,16 @@ import {
394
394
  getLocaleName,
395
395
  getPathWithoutLocale,
396
396
  getPrefix,
397
+ Locales,
397
398
  } from "intlayer";
398
- import { setLocaleInStorage, useIntlayer, useLocale } from "react-intlayer";
399
+ import { useLocale } from "react-intlayer";
399
400
 
400
401
  import { LocalizedLink, To } from "./localized-link";
401
402
 
402
403
  export const LocaleSwitcher: FC = () => {
403
- const { localeSwitcherLabel } = useIntlayer("locale-switcher");
404
404
  const { pathname } = useLocation();
405
405
 
406
- const { availableLocales, locale } = useLocale();
406
+ const { availableLocales, locale, setLocale } = useLocale();
407
407
 
408
408
  const pathWithoutLocale = getPathWithoutLocale(pathname);
409
409
 
@@ -412,26 +412,25 @@ export const LocaleSwitcher: FC = () => {
412
412
  {availableLocales.map((localeEl) => (
413
413
  <li key={localeEl}>
414
414
  <LocalizedLink
415
- aria-current={localeEl === locale ? "sayfa" : undefined}
416
- aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeEl)}`}
417
- onClick={() => setLocaleInStorage(localeEl)}
415
+ aria-current={localeEl === locale ? "page" : undefined}
416
+ onClick={() => setLocale(localeEl)}
418
417
  params={{ locale: getPrefix(localeEl).localePrefix }}
419
418
  >
420
419
  <span>
421
420
  {/* Dil Kodu - örn. FR */}
422
- {localeItem}
421
+ {localeEl}
423
422
  </span>
424
423
  <span>
425
424
  {/* Dil kendi yerelinde - örn. Français */}
426
- {getLocaleName(localeItem, locale)}
425
+ {getLocaleName(localeEl, locale)}
427
426
  </span>
428
- <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
427
+ <span dir={getHTMLTextDir(localeEl)} lang={localeEl}>
429
428
  {/* Dil mevcut yerelde - örn. Francés, mevcut yerel Locales.SPANISH olarak ayarlanmış */}
430
- {getLocaleName(localeItem)}
429
+ {getLocaleName(localeEl)}
431
430
  </span>
432
431
  <span dir="ltr" lang={Locales.ENGLISH}>
433
432
  {/* Dil İngilizce olarak - örn. French */}
434
- {getLocaleName(localeItem, Locales.ENGLISH)}
433
+ {getLocaleName(localeEl, Locales.ENGLISH)}
435
434
  </span>
436
435
  </LocalizedLink>
437
436
  </li>
@@ -466,7 +465,7 @@ export const useI18nHTMLAttributes = () => {
466
465
  Sonra bunu kök bileşeninizde kullanın:
467
466
 
468
467
  ```tsx fileName="src/routes/{-$locale}/index.tsx"
469
- import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
468
+ import { createFileRoute, Outlet } from "@tanstack/react-router";
470
469
  import { IntlayerProvider, useLocale } from "react-intlayer";
471
470
 
472
471
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes"; // hook'u içe aktar
@@ -506,18 +505,44 @@ import tsconfigPaths from "vite-tsconfig-paths";
506
505
 
507
506
  export default defineConfig({
508
507
  plugins: [
508
+ intlayerProxy(), // Nitro kullanıyorsanız, proxy sunucudan önce yerleştirilmelidir
509
509
  tailwindcss(),
510
510
  reactRouter(),
511
511
  tsconfigPaths(),
512
512
  intlayer(),
513
- intlayerProxy(),
514
513
  ],
515
514
  });
516
515
  ```
517
516
 
518
517
  ---
519
518
 
520
- ### Adım 12: TypeScript Yapılandırması (İsteğe Bağlı)
519
+ ### Adım 12: Meta Verilerinizi Uluslararasılaştırın (İsteğe Bağlı)
520
+
521
+ Uygulamanız genelinde içerik sözlüklerinize erişmek için `getIntlayer` hook'unu da kullanabilirsiniz:
522
+
523
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
524
+ import { createFileRoute } from "@tanstack/react-router";
525
+ import { getIntlayer } from "intlayer";
526
+
527
+ export const Route = createFileRoute("/{-$locale}/")({
528
+ component: RouteComponent,
529
+ head: ({ params }) => {
530
+ const { locale } = params;
531
+ const metaContent = getIntlayer("page-metadata", locale);
532
+
533
+ return {
534
+ meta: [
535
+ { title: metaContent.title },
536
+ { content: metaContent.description, name: "description" },
537
+ ],
538
+ };
539
+ },
540
+ });
541
+ ```
542
+
543
+ ---
544
+
545
+ ### Adım 13: TypeScript Yapılandırması (İsteğe Bağlı)
521
546
 
522
547
  Intlayer, TypeScript'in avantajlarından yararlanmak ve kod tabanınızı daha güçlü hale getirmek için modül genişletme (module augmentation) kullanır.
523
548
 
@@ -535,32 +560,6 @@ TypeScript yapılandırmanızın otomatik oluşturulan türleri içerdiğinden e
535
560
 
536
561
  ---
537
562
 
538
- ### Adım 13: Nitro'yu Uyarlama (İsteğe Bağlı)
539
-
540
- Üretim çıktınız için Nitro kullanıyorsanız, nitro çıktı dizinine `.intlayer` dizinini dahil etmeyecektir. Manuel olarak kopyalamanız gerekir.
541
-
542
- Build script kullanarak örnek:
543
-
544
- ```json5 fileName="package.json"
545
- {
546
- "scripts": {
547
- "dev": "vite dev --port 3000",
548
- "build": "vite build && cpr .intlayer .output/.intlayer", // .intlayer klasörünü kopyala
549
- "serve": "vite preview",
550
- },
551
- }
552
- ```
553
-
554
- > cpr, komutu Windows'ta çalışır hale getirmek için kullanılır.
555
- > Bu komutu kullanmak için `cpr` yardımcı programını yüklemeniz gerekir.
556
- >
557
- > - `npm install --save-dev cpr`
558
- > - `yarn add --dev cpr`
559
- > - `pnpm add --save-dev cpr`
560
- > - `bun add --save-dev cpr`
561
-
562
- ---
563
-
564
563
  ### Git Yapılandırması
565
564
 
566
565
  Intlayer tarafından oluşturulan dosyaların göz ardı edilmesi önerilir. Bu, bu dosyaların Git deposuna eklenmesini önlemenizi sağlar.
@@ -145,7 +145,7 @@ Thiết lập layout gốc của bạn và các layout theo ngôn ngữ cụ th
145
145
  #### Layout Gốc
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";
@@ -400,16 +400,16 @@ import {
400
400
  getLocaleName,
401
401
  getPathWithoutLocale,
402
402
  getPrefix,
403
+ Locales,
403
404
  } from "intlayer";
404
- import { setLocaleInStorage, useIntlayer, useLocale } from "react-intlayer";
405
+ import { useLocale } from "react-intlayer";
405
406
 
406
407
  import { LocalizedLink, To } from "./localized-link";
407
408
 
408
409
  export const LocaleSwitcher: FC = () => {
409
- const { localeSwitcherLabel } = useIntlayer("locale-switcher");
410
410
  const { pathname } = useLocation();
411
411
 
412
- const { availableLocales, locale } = useLocale();
412
+ const { availableLocales, locale, setLocale } = useLocale();
413
413
 
414
414
  const pathWithoutLocale = getPathWithoutLocale(pathname);
415
415
 
@@ -419,25 +419,24 @@ export const LocaleSwitcher: FC = () => {
419
419
  <li key={localeEl}>
420
420
  <LocalizedLink
421
421
  aria-current={localeEl === locale ? "page" : undefined}
422
- aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeEl)}`}
423
- onClick={() => setLocaleInStorage(localeEl)}
422
+ onClick={() => setLocale(localeEl)}
424
423
  params={{ locale: getPrefix(localeEl).localePrefix }}
425
424
  >
426
425
  <span>
427
426
  {/* Mã ngôn ngữ - ví dụ: FR */}
428
- {localeItem}
427
+ {localeEl}
429
428
  </span>
430
429
  <span>
431
430
  {/* Ngôn ngữ theo mã ngôn ngữ của chính nó - ví dụ: Français */}
432
- {getLocaleName(localeItem, locale)}
431
+ {getLocaleName(localeEl, locale)}
433
432
  </span>
434
- <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
433
+ <span dir={getHTMLTextDir(localeEl)} lang={localeEl}>
435
434
  {/* Ngôn ngữ theo mã ngôn ngữ hiện tại - ví dụ: Francés khi mã ngôn ngữ hiện tại là Locales.SPANISH */}
436
- {getLocaleName(localeItem)}
435
+ {getLocaleName(localeEl)}
437
436
  </span>
438
437
  <span dir="ltr" lang={Locales.ENGLISH}>
439
438
  {/* Ngôn ngữ bằng tiếng Anh - ví dụ: French */}
440
- {getLocaleName(localeItem, Locales.ENGLISH)}
439
+ {getLocaleName(localeEl, Locales.ENGLISH)}
441
440
  </span>
442
441
  </LocalizedLink>
443
442
  </li>
@@ -472,7 +471,7 @@ export const useI18nHTMLAttributes = () => {
472
471
  Sau đó sử dụng nó trong component gốc của bạn:
473
472
 
474
473
  ```tsx fileName="src/routes/{-$locale}/index.tsx"
475
- import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
474
+ import { createFileRoute, Outlet } from "@tanstack/react-router";
476
475
  import { IntlayerProvider, useLocale } from "react-intlayer";
477
476
 
478
477
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes"; // nhập hook
@@ -512,18 +511,44 @@ import tsconfigPaths from "vite-tsconfig-paths";
512
511
 
513
512
  export default defineConfig({
514
513
  plugins: [
514
+ intlayerProxy(), // Proxy nên được đặt trước server nếu bạn sử dụng Nitro
515
515
  tailwindcss(),
516
516
  reactRouter(),
517
517
  tsconfigPaths(),
518
518
  intlayer(),
519
- intlayerProxy(),
520
519
  ],
521
520
  });
522
521
  ```
523
522
 
524
523
  ---
525
524
 
526
- ### Bước 12: Cấu hình TypeScript (Tùy chọn)
525
+ ### Bước 12: Quốc tế hóa siêu dữ liệu của bạn (Tùy chọn)
526
+
527
+ Bạn cũng có thể sử dụng hook `getIntlayer` để truy cập các từ điển nội dung của bạn trong toàn bộ ứng dụng:
528
+
529
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
530
+ import { createFileRoute } from "@tanstack/react-router";
531
+ import { getIntlayer } from "intlayer";
532
+
533
+ export const Route = createFileRoute("/{-$locale}/")({
534
+ component: RouteComponent,
535
+ head: ({ params }) => {
536
+ const { locale } = params;
537
+ const metaContent = getIntlayer("page-metadata", locale);
538
+
539
+ return {
540
+ meta: [
541
+ { title: metaContent.title },
542
+ { content: metaContent.description, name: "description" },
543
+ ],
544
+ };
545
+ },
546
+ });
547
+ ```
548
+
549
+ ---
550
+
551
+ ### Bước 13: Cấu hình TypeScript (Tùy chọn)
527
552
 
528
553
  Intlayer sử dụng module augmentation để tận dụng các lợi ích của TypeScript và làm cho codebase của bạn mạnh mẽ hơn.
529
554
 
@@ -541,32 +566,6 @@ Intlayer sử dụng module augmentation để tận dụng các lợi ích củ
541
566
 
542
567
  ---
543
568
 
544
- ### Bước 13: Điều chỉnh Nitro (Tùy chọn)
545
-
546
- Nếu bạn đang sử dụng Nitro cho đầu ra sản xuất của mình, nitro sẽ không bao gồm thư mục `.intlayer` trong thư mục đầu ra. Bạn cần sao chép nó thủ công.
547
-
548
- Ví dụ sử dụng script build:
549
-
550
- ```json5 fileName="package.json"
551
- {
552
- "scripts": {
553
- "dev": "vite dev --port 3000",
554
- "build": "vite build && cpr .intlayer .output/.intlayer", // Sao chép thư mục .intlayer
555
- "serve": "vite preview",
556
- },
557
- }
558
- ```
559
-
560
- > cpr được sử dụng để điều chỉnh lệnh để làm cho nó hoạt động trên Windows.
561
- > Bạn sẽ phải cài đặt tiện ích `cpr` để sử dụng lệnh này.
562
- >
563
- > - `npm install --save-dev cpr`
564
- > - `yarn add --dev cpr`
565
- > - `pnpm add --save-dev cpr`
566
- > - `bun add --save-dev cpr`
567
-
568
- ---
569
-
570
569
  ### Cấu hình Git
571
570
 
572
571
  Khuyến nghị bạn nên bỏ qua các file được tạo bởi Intlayer. Điều này giúp bạn tránh việc commit chúng vào kho Git của mình.