@intlayer/docs 7.0.1 → 7.0.2-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 (65) hide show
  1. package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +4 -11
  2. package/dist/cjs/common.cjs +5 -1
  3. package/dist/cjs/common.cjs.map +1 -1
  4. package/dist/esm/common.mjs +5 -1
  5. package/dist/esm/common.mjs.map +1 -1
  6. package/dist/types/common.d.ts.map +1 -1
  7. package/docs/ar/intlayer_with_nextjs_15.md +10 -6
  8. package/docs/ar/intlayer_with_nextjs_16.md +11 -7
  9. package/docs/de/intlayer_with_nextjs_15.md +10 -6
  10. package/docs/de/intlayer_with_nextjs_16.md +11 -7
  11. package/docs/en/CI_CD.md +4 -0
  12. package/docs/en/configuration.md +29 -42
  13. package/docs/en/formatters.md +4 -0
  14. package/docs/en/how_works_intlayer.md +4 -0
  15. package/docs/en/index.md +1 -0
  16. package/docs/en/intlayer_CMS.md +6 -0
  17. package/docs/en/intlayer_cli.md +8 -0
  18. package/docs/en/intlayer_with_nextjs_14.md +14 -6
  19. package/docs/en/intlayer_with_nextjs_15.md +14 -6
  20. package/docs/en/intlayer_with_nextjs_16.md +15 -7
  21. package/docs/en/intlayer_with_nextjs_page_router.md +4 -0
  22. package/docs/en/intlayer_with_nuxt.md +4 -0
  23. package/docs/en/intlayer_with_react_native+expo.md +7 -0
  24. package/docs/en/intlayer_with_react_router_v7.md +4 -0
  25. package/docs/en/intlayer_with_tanstack.md +4 -0
  26. package/docs/en/intlayer_with_vite+preact.md +4 -0
  27. package/docs/en/intlayer_with_vite+react.md +4 -0
  28. package/docs/en/intlayer_with_vite+solid.md +4 -0
  29. package/docs/en/intlayer_with_vite+svelte.md +4 -0
  30. package/docs/en/intlayer_with_vite+vue.md +4 -0
  31. package/docs/en/introduction.md +1 -0
  32. package/docs/en/roadmap.md +6 -0
  33. package/docs/en-GB/intlayer_with_nextjs_14.md +10 -6
  34. package/docs/en-GB/intlayer_with_nextjs_15.md +10 -6
  35. package/docs/en-GB/intlayer_with_nextjs_16.md +11 -7
  36. package/docs/es/intlayer_with_nextjs_14.md +11 -6
  37. package/docs/es/intlayer_with_nextjs_15.md +7 -4
  38. package/docs/es/intlayer_with_nextjs_16.md +11 -7
  39. package/docs/fr/intlayer_with_nextjs_15.md +10 -6
  40. package/docs/fr/intlayer_with_nextjs_16.md +12 -25
  41. package/docs/hi/intlayer_with_nextjs_15.md +10 -6
  42. package/docs/hi/intlayer_with_nextjs_16.md +11 -7
  43. package/docs/id/intlayer_with_nextjs_16.md +11 -7
  44. package/docs/it/intlayer_with_nextjs_15.md +10 -6
  45. package/docs/it/intlayer_with_nextjs_16.md +11 -7
  46. package/docs/ja/intlayer_with_nextjs_14.md +11 -6
  47. package/docs/ja/intlayer_with_nextjs_15.md +10 -6
  48. package/docs/ja/intlayer_with_nextjs_16.md +11 -7
  49. package/docs/ko/intlayer_with_nextjs_14.md +11 -6
  50. package/docs/ko/intlayer_with_nextjs_15.md +10 -6
  51. package/docs/ko/intlayer_with_nextjs_16.md +11 -7
  52. package/docs/pl/intlayer_with_nextjs_16.md +11 -7
  53. package/docs/pt/intlayer_with_nextjs_14.md +10 -7
  54. package/docs/pt/intlayer_with_nextjs_15.md +10 -6
  55. package/docs/pt/intlayer_with_nextjs_16.md +11 -7
  56. package/docs/ru/intlayer_with_nextjs_15.md +7 -4
  57. package/docs/ru/intlayer_with_nextjs_16.md +11 -7
  58. package/docs/tr/intlayer_with_nextjs_15.md +10 -6
  59. package/docs/tr/intlayer_with_nextjs_16.md +11 -7
  60. package/docs/vi/intlayer_with_nextjs_16.md +11 -7
  61. package/docs/zh/intlayer_with_nextjs_14.md +11 -6
  62. package/docs/zh/intlayer_with_nextjs_15.md +7 -4
  63. package/docs/zh/intlayer_with_nextjs_16.md +11 -7
  64. package/package.json +14 -14
  65. package/src/common.ts +7 -1
@@ -815,15 +815,17 @@ export const generateMetadata = async ({
815
815
  * ```
816
816
  */
817
817
  const multilingualUrls = getMultilingualUrls("/");
818
+ const localizedUrl =
819
+ multilingualUrls[locale as keyof typeof multilingualUrls];
818
820
 
819
821
  return {
820
822
  ...metadata,
821
823
  alternates: {
822
- canonical: multilingualUrls[locale as keyof typeof multilingualUrls],
824
+ canonical: localizedUrl,
823
825
  languages: { ...multilingualUrls, "x-default": "/" },
824
826
  },
825
827
  openGraph: {
826
- url: multilingualUrls[locale],
828
+ url: localizedUrl,
827
829
  },
828
830
  };
829
831
  };
@@ -855,15 +857,16 @@ export const generateMetadata = async ({ params }) => {
855
857
  * ```
856
858
  */
857
859
  const multilingualUrls = getMultilingualUrls("/");
860
+ const localizedUrl = multilingualUrls[locale];
858
861
 
859
862
  return {
860
863
  ...metadata,
861
864
  alternates: {
862
- canonical: multilingualUrls[locale],
865
+ canonical: localizedUrl,
863
866
  languages: { ...multilingualUrls, "x-default": "/" },
864
867
  },
865
868
  openGraph: {
866
- url: multilingualUrls[locale],
869
+ url: localizedUrl,
867
870
  },
868
871
  };
869
872
  };
@@ -895,15 +898,16 @@ const generateMetadata = async ({ params }) => {
895
898
  * ```
896
899
  */
897
900
  const multilingualUrls = getMultilingualUrls("/");
901
+ const localizedUrl = multilingualUrls[locale];
898
902
 
899
903
  return {
900
904
  ...metadata,
901
905
  alternates: {
902
- canonical: multilingualUrls[locale],
906
+ canonical: localizedUrl,
903
907
  languages: { ...multilingualUrls, "x-default": "/" },
904
908
  },
905
909
  openGraph: {
906
- url: multilingualUrls[locale],
910
+ url: localizedUrl,
907
911
  },
908
912
  };
909
913
  };
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-12-06
3
- updatedAt: 2025-10-09
3
+ updatedAt: 2025-10-26
4
4
  title: Comment traduire votre application Next.js 16 – guide i18n 2025
5
5
  description: Découvrez comment rendre votre site Next.js 16 multilingue. Suivez la documentation pour internationaliser (i18n) et traduire votre site.
6
6
  keywords:
@@ -306,23 +306,6 @@ module.exports = LocaleLayout;
306
306
 
307
307
  > Le segment de chemin `[locale]` est utilisé pour définir la locale. Exemple : `/en-US/about` fera référence à `en-US` et `/fr/about` à `fr`.
308
308
 
309
- const inter = Inter({ subsets: ["latin"] });
310
-
311
- const LocaleLayout = async ({ children, params: { locale } }) => {
312
- const { locale } = await params;
313
- return (
314
- <html lang={locale} dir={getHTMLTextDir(locale)}>
315
- <body className={inter.className}>{children}</body>
316
- </html>
317
- );
318
- };
319
-
320
- module.exports = LocaleLayout;
321
-
322
- ````
323
-
324
- > Le segment de chemin `[locale]` est utilisé pour définir la locale. Exemple : `/en-US/about` fera référence à `en-US` et `/fr/about` à `fr`.
325
-
326
309
  > À ce stade, vous rencontrerez l'erreur : `Error: Missing <html> and <body> tags in the root layout.`. Cela est attendu car le fichier `/app/page.tsx` n'est plus utilisé et peut être supprimé. À la place, le segment de chemin `[locale]` activera la page `/app/[locale]/page.tsx`. Par conséquent, les pages seront accessibles via des chemins comme `/en`, `/fr`, `/es` dans votre navigateur. Pour définir la locale par défaut comme page racine, référez-vous à la configuration du `proxy` à l'étape 7.
327
310
 
328
311
  Ensuite, implémentez la fonction `generateStaticParams` dans le Layout de votre application.
@@ -335,7 +318,7 @@ const LocaleLayout: NextLayoutIntlayer = async ({ children, params }) => {
335
318
  };
336
319
 
337
320
  export default LocaleLayout;
338
- ````
321
+ ```
339
322
 
340
323
  ```jsx {1} fileName="src/app/[locale]/layout.mjx" codeFormat="esm"
341
324
  export { generateStaticParams } from "next-intlayer"; // Ligne à insérer
@@ -842,15 +825,17 @@ export const generateMetadata = async ({
842
825
  * ```
843
826
  */
844
827
  const multilingualUrls = getMultilingualUrls("/");
828
+ const localizedUrl =
829
+ multilingualUrls[locale as keyof typeof multilingualUrls];
845
830
 
846
831
  return {
847
832
  ...metadata,
848
833
  alternates: {
849
- canonical: multilingualUrls[locale as keyof typeof multilingualUrls],
834
+ canonical: localizedUrl,
850
835
  languages: { ...multilingualUrls, "x-default": "/" },
851
836
  },
852
837
  openGraph: {
853
- url: multilingualUrls[locale],
838
+ url: localizedUrl,
854
839
  },
855
840
  };
856
841
  };
@@ -882,15 +867,16 @@ export const generateMetadata = async ({ params }) => {
882
867
  * ```
883
868
  */
884
869
  const multilingualUrls = getMultilingualUrls("/");
870
+ const localizedUrl = multilingualUrls[locale];
885
871
 
886
872
  return {
887
873
  ...metadata,
888
874
  alternates: {
889
- canonical: multilingualUrls[locale],
875
+ canonical: localizedUrl,
890
876
  languages: { ...multilingualUrls, "x-default": "/" },
891
877
  },
892
878
  openGraph: {
893
- url: multilingualUrls[locale],
879
+ url: localizedUrl,
894
880
  },
895
881
  };
896
882
  };
@@ -922,15 +908,16 @@ const generateMetadata = async ({ params }) => {
922
908
  * ```
923
909
  */
924
910
  const multilingualUrls = getMultilingualUrls("/");
911
+ const localizedUrl = multilingualUrls[locale];
925
912
 
926
913
  return {
927
914
  ...metadata,
928
915
  alternates: {
929
- canonical: multilingualUrls[locale],
916
+ canonical: localizedUrl,
930
917
  languages: { ...multilingualUrls, "x-default": "/" },
931
918
  },
932
919
  openGraph: {
933
- url: multilingualUrls[locale],
920
+ url: localizedUrl,
934
921
  },
935
922
  };
936
923
  };
@@ -773,15 +773,17 @@ export const generateMetadata = async ({
773
773
  * ```
774
774
  */
775
775
  const multilingualUrls = getMultilingualUrls("/");
776
+ const localizedUrl =
777
+ multilingualUrls[locale as keyof typeof multilingualUrls];
776
778
 
777
779
  return {
778
780
  ...metadata,
779
781
  alternates: {
780
- canonical: multilingualUrls[locale as keyof typeof multilingualUrls],
782
+ canonical: localizedUrl,
781
783
  languages: { ...multilingualUrls, "x-default": "/" },
782
784
  },
783
785
  openGraph: {
784
- url: multilingualUrls[locale],
786
+ url: localizedUrl,
785
787
  },
786
788
  };
787
789
  };
@@ -813,15 +815,16 @@ export const generateMetadata = async ({ params }) => {
813
815
  * ```
814
816
  */
815
817
  const multilingualUrls = getMultilingualUrls("/");
818
+ const localizedUrl = multilingualUrls[locale];
816
819
 
817
820
  return {
818
821
  ...metadata,
819
822
  alternates: {
820
- canonical: multilingualUrls[locale],
823
+ canonical: localizedUrl,
821
824
  languages: { ...multilingualUrls, "x-default": "/" },
822
825
  },
823
826
  openGraph: {
824
- url: multilingualUrls[locale],
827
+ url: localizedUrl,
825
828
  },
826
829
  };
827
830
  };
@@ -853,15 +856,16 @@ const generateMetadata = async ({ params }) => {
853
856
  * ```
854
857
  */
855
858
  const multilingualUrls = getMultilingualUrls("/");
859
+ const localizedUrl = multilingualUrls[locale];
856
860
 
857
861
  return {
858
862
  ...metadata,
859
863
  alternates: {
860
- canonical: multilingualUrls[locale],
864
+ canonical: localizedUrl,
861
865
  languages: { ...multilingualUrls, "x-default": "/" },
862
866
  },
863
867
  openGraph: {
864
- url: multilingualUrls[locale],
868
+ url: localizedUrl,
865
869
  },
866
870
  };
867
871
  };
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-10-25
3
- updatedAt: 2025-10-25
3
+ updatedAt: 2025-10-26
4
4
  title: अपने Next.js 16 ऐप का अनुवाद कैसे करें – i18n गाइड 2025
5
5
  description: जानें कि अपनी Next.js 16 वेबसाइट को बहुभाषी कैसे बनाएं। अंतरराष्ट्रीयकरण (i18n) और अनुवाद के लिए दस्तावेज़ का पालन करें।
6
6
  keywords:
@@ -834,15 +834,17 @@ export const generateMetadata = async ({
834
834
  * ```
835
835
  */
836
836
  const multilingualUrls = getMultilingualUrls("/");
837
+ const localizedUrl =
838
+ multilingualUrls[locale as keyof typeof multilingualUrls];
837
839
 
838
840
  return {
839
841
  ...metadata,
840
842
  alternates: {
841
- canonical: multilingualUrls[locale as keyof typeof multilingualUrls],
843
+ canonical: localizedUrl,
842
844
  languages: { ...multilingualUrls, "x-default": "/" },
843
845
  },
844
846
  openGraph: {
845
- url: multilingualUrls[locale],
847
+ url: localizedUrl,
846
848
  },
847
849
  };
848
850
  };
@@ -874,15 +876,16 @@ export const generateMetadata = async ({ params }) => {
874
876
  * ```
875
877
  */
876
878
  const multilingualUrls = getMultilingualUrls("/");
879
+ const localizedUrl = multilingualUrls[locale];
877
880
 
878
881
  return {
879
882
  ...metadata,
880
883
  alternates: {
881
- canonical: multilingualUrls[locale],
884
+ canonical: localizedUrl,
882
885
  languages: { ...multilingualUrls, "x-default": "/" },
883
886
  },
884
887
  openGraph: {
885
- url: multilingualUrls[locale],
888
+ url: localizedUrl,
886
889
  },
887
890
  };
888
891
  };
@@ -914,15 +917,16 @@ const generateMetadata = async ({ params }) => {
914
917
  * ```
915
918
  */
916
919
  const multilingualUrls = getMultilingualUrls("/");
920
+ const localizedUrl = multilingualUrls[locale];
917
921
 
918
922
  return {
919
923
  ...metadata,
920
924
  alternates: {
921
- canonical: multilingualUrls[locale],
925
+ canonical: localizedUrl,
922
926
  languages: { ...multilingualUrls, "x-default": "/" },
923
927
  },
924
928
  openGraph: {
925
- url: multilingualUrls[locale],
929
+ url: localizedUrl,
926
930
  },
927
931
  };
928
932
  };
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-12-06
3
- updatedAt: 2025-10-09
3
+ updatedAt: 2025-10-26
4
4
  title: Cara menerjemahkan aplikasi Next.js 16 Anda – panduan i18n 2025
5
5
  description: Temukan cara membuat situs web Next.js 16 Anda menjadi multibahasa. Ikuti dokumentasi untuk melakukan internasionalisasi (i18n) dan menerjemahkannya.
6
6
  keywords:
@@ -818,15 +818,17 @@ export const generateMetadata = async ({
818
818
  * ```
819
819
  */
820
820
  const multilingualUrls = getMultilingualUrls("/");
821
+ const localizedUrl =
822
+ multilingualUrls[locale as keyof typeof multilingualUrls];
821
823
 
822
824
  return {
823
825
  ...metadata,
824
826
  alternates: {
825
- canonical: multilingualUrls[locale as keyof typeof multilingualUrls],
827
+ canonical: localizedUrl,
826
828
  languages: { ...multilingualUrls, "x-default": "/" },
827
829
  },
828
830
  openGraph: {
829
- url: multilingualUrls[locale],
831
+ url: localizedUrl,
830
832
  },
831
833
  };
832
834
  };
@@ -858,15 +860,16 @@ export const generateMetadata = async ({ params }) => {
858
860
  * ```
859
861
  */
860
862
  const multilingualUrls = getMultilingualUrls("/");
863
+ const localizedUrl = multilingualUrls[locale];
861
864
 
862
865
  return {
863
866
  ...metadata,
864
867
  alternates: {
865
- canonical: multilingualUrls[locale],
868
+ canonical: localizedUrl,
866
869
  languages: { ...multilingualUrls, "x-default": "/" },
867
870
  },
868
871
  openGraph: {
869
- url: multilingualUrls[locale],
872
+ url: localizedUrl,
870
873
  },
871
874
  };
872
875
  };
@@ -898,15 +901,16 @@ const generateMetadata = async ({ params }) => {
898
901
  * ```
899
902
  */
900
903
  const multilingualUrls = getMultilingualUrls("/");
904
+ const localizedUrl = multilingualUrls[locale];
901
905
 
902
906
  return {
903
907
  ...metadata,
904
908
  alternates: {
905
- canonical: multilingualUrls[locale],
909
+ canonical: localizedUrl,
906
910
  languages: { ...multilingualUrls, "x-default": "/" },
907
911
  },
908
912
  openGraph: {
909
- url: multilingualUrls[locale],
913
+ url: localizedUrl,
910
914
  },
911
915
  };
912
916
  };
@@ -792,15 +792,17 @@ export const generateMetadata = async ({
792
792
  * ```
793
793
  */
794
794
  const multilingualUrls = getMultilingualUrls("/");
795
+ const localizedUrl =
796
+ multilingualUrls[locale as keyof typeof multilingualUrls];
795
797
 
796
798
  return {
797
799
  ...metadata,
798
800
  alternates: {
799
- canonical: multilingualUrls[locale as keyof typeof multilingualUrls],
801
+ canonical: localizedUrl,
800
802
  languages: { ...multilingualUrls, "x-default": "/" },
801
803
  },
802
804
  openGraph: {
803
- url: multilingualUrls[locale],
805
+ url: localizedUrl,
804
806
  },
805
807
  };
806
808
  };
@@ -832,15 +834,16 @@ export const generateMetadata = async ({ params }) => {
832
834
  * ```
833
835
  */
834
836
  const multilingualUrls = getMultilingualUrls("/");
837
+ const localizedUrl = multilingualUrls[locale];
835
838
 
836
839
  return {
837
840
  ...metadata,
838
841
  alternates: {
839
- canonical: multilingualUrls[locale],
842
+ canonical: localizedUrl,
840
843
  languages: { ...multilingualUrls, "x-default": "/" },
841
844
  },
842
845
  openGraph: {
843
- url: multilingualUrls[locale],
846
+ url: localizedUrl,
844
847
  },
845
848
  };
846
849
  };
@@ -872,15 +875,16 @@ const generateMetadata = async ({ params }) => {
872
875
  * ```
873
876
  */
874
877
  const multilingualUrls = getMultilingualUrls("/");
878
+ const localizedUrl = multilingualUrls[locale];
875
879
 
876
880
  return {
877
881
  ...metadata,
878
882
  alternates: {
879
- canonical: multilingualUrls[locale],
883
+ canonical: localizedUrl,
880
884
  languages: { ...multilingualUrls, "x-default": "/" },
881
885
  },
882
886
  openGraph: {
883
- url: multilingualUrls[locale],
887
+ url: localizedUrl,
884
888
  },
885
889
  };
886
890
  };
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-12-06
3
- updatedAt: 2025-10-09
3
+ updatedAt: 2025-10-26
4
4
  title: Come tradurre la tua app Next.js 16 – Guida i18n 2025
5
5
  description: Scopri come rendere il tuo sito Next.js 16 multilingue. Segui la documentazione per internazionalizzare (i18n) e tradurlo.
6
6
  keywords:
@@ -810,15 +810,17 @@ export const generateMetadata = async ({
810
810
  * ```
811
811
  */
812
812
  const multilingualUrls = getMultilingualUrls("/");
813
+ const localizedUrl =
814
+ multilingualUrls[locale as keyof typeof multilingualUrls];
813
815
 
814
816
  return {
815
817
  ...metadata,
816
818
  alternates: {
817
- canonical: multilingualUrls[locale as keyof typeof multilingualUrls],
819
+ canonical: localizedUrl,
818
820
  languages: { ...multilingualUrls, "x-default": "/" },
819
821
  },
820
822
  openGraph: {
821
- url: multilingualUrls[locale],
823
+ url: localizedUrl,
822
824
  },
823
825
  };
824
826
  };
@@ -850,15 +852,16 @@ export const generateMetadata = async ({ params }) => {
850
852
  * ```
851
853
  */
852
854
  const multilingualUrls = getMultilingualUrls("/");
855
+ const localizedUrl = multilingualUrls[locale];
853
856
 
854
857
  return {
855
858
  ...metadata,
856
859
  alternates: {
857
- canonical: multilingualUrls[locale],
860
+ canonical: localizedUrl,
858
861
  languages: { ...multilingualUrls, "x-default": "/" },
859
862
  },
860
863
  openGraph: {
861
- url: multilingualUrls[locale],
864
+ url: localizedUrl,
862
865
  },
863
866
  };
864
867
  };
@@ -890,15 +893,16 @@ const generateMetadata = async ({ params }) => {
890
893
  * ```
891
894
  */
892
895
  const multilingualUrls = getMultilingualUrls("/");
896
+ const localizedUrl = multilingualUrls[locale];
893
897
 
894
898
  return {
895
899
  ...metadata,
896
900
  alternates: {
897
- canonical: multilingualUrls[locale],
901
+ canonical: localizedUrl,
898
902
  languages: { ...multilingualUrls, "x-default": "/" },
899
903
  },
900
904
  openGraph: {
901
- url: multilingualUrls[locale],
905
+ url: localizedUrl,
902
906
  },
903
907
  };
904
908
  };
@@ -761,15 +761,17 @@ export const generateMetadata = ({
761
761
  * ```
762
762
  */
763
763
  const multilingualUrls = getMultilingualUrls("/");
764
+ const localizedUrl =
765
+ multilingualUrls[locale as keyof typeof multilingualUrls];
764
766
 
765
767
  return {
766
768
  ...metadata,
767
769
  alternates: {
768
- canonical: multilingualUrls[locale as keyof typeof multilingualUrls],
770
+ canonical: localizedUrl,
769
771
  languages: { ...multilingualUrls, "x-default": "/" },
770
772
  },
771
773
  openGraph: {
772
- url: multilingualUrls[locale],
774
+ url: localizedUrl,
773
775
  },
774
776
  };
775
777
  };
@@ -796,15 +798,17 @@ export const generateMetadata = ({ params: { locale } }) => {
796
798
  * ```
797
799
  */
798
800
  const multilingualUrls = getMultilingualUrls("/");
801
+ const localizedUrl =
802
+ multilingualUrls[locale];
799
803
 
800
804
  return {
801
805
  ...metadata,
802
806
  alternates: {
803
- canonical: multilingualUrls[locale],
807
+ canonical: localizedUrl,
804
808
  languages: { ...multilingualUrls, "x-default": "/" },
805
809
  },
806
810
  openGraph: {
807
- url: multilingualUrls[locale],
811
+ url: localizedUrl,
808
812
  },
809
813
  };
810
814
  };
@@ -834,15 +838,16 @@ const generateMetadata = ({ params: { locale } }) => {
834
838
  * ```
835
839
  */
836
840
  const multilingualUrls = getMultilingualUrls("/");
841
+ const localizedUrl = multilingualUrls[locale];
837
842
 
838
843
  return {
839
844
  ...metadata,
840
845
  alternates: {
841
- canonical: multilingualUrls[locale],
846
+ canonical: localizedUrl,
842
847
  languages: { ...multilingualUrls, "x-default": "/" },
843
848
  },
844
849
  openGraph: {
845
- url: multilingualUrls[locale],
850
+ url: localizedUrl,
846
851
  },
847
852
  };
848
853
  };
@@ -794,15 +794,17 @@ export const generateMetadata = async ({
794
794
  * ```
795
795
  */
796
796
  const multilingualUrls = getMultilingualUrls("/");
797
+ const localizedUrl =
798
+ multilingualUrls[locale as keyof typeof multilingualUrls];
797
799
 
798
800
  return {
799
801
  ...metadata,
800
802
  alternates: {
801
- canonical: multilingualUrls[locale as keyof typeof multilingualUrls],
803
+ canonical: localizedUrl,
802
804
  languages: { ...multilingualUrls, "x-default": "/" },
803
805
  },
804
806
  openGraph: {
805
- url: multilingualUrls[locale],
807
+ url: localizedUrl,
806
808
  },
807
809
  };
808
810
  };
@@ -834,15 +836,16 @@ export const generateMetadata = async ({ params }) => {
834
836
  * ```
835
837
  */
836
838
  const multilingualUrls = getMultilingualUrls("/");
839
+ const localizedUrl = multilingualUrls[locale];
837
840
 
838
841
  return {
839
842
  ...metadata,
840
843
  alternates: {
841
- canonical: multilingualUrls[locale],
844
+ canonical: localizedUrl,
842
845
  languages: { ...multilingualUrls, "x-default": "/" },
843
846
  },
844
847
  openGraph: {
845
- url: multilingualUrls[locale],
848
+ url: localizedUrl,
846
849
  },
847
850
  };
848
851
  };
@@ -874,15 +877,16 @@ const generateMetadata = async ({ params }) => {
874
877
  * ```
875
878
  */
876
879
  const multilingualUrls = getMultilingualUrls("/");
880
+ const localizedUrl = multilingualUrls[locale];
877
881
 
878
882
  return {
879
883
  ...metadata,
880
884
  alternates: {
881
- canonical: multilingualUrls[locale],
885
+ canonical: localizedUrl,
882
886
  languages: { ...multilingualUrls, "x-default": "/" },
883
887
  },
884
888
  openGraph: {
885
- url: multilingualUrls[locale],
889
+ url: localizedUrl,
886
890
  },
887
891
  };
888
892
  };
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-12-06
3
- updatedAt: 2025-10-09
3
+ updatedAt: 2025-10-26
4
4
  title: Next.js 16アプリの翻訳方法 – 2025年版i18nガイド
5
5
  description: Next.js 16のウェブサイトを多言語対応にする方法を紹介します。国際化(i18n)と翻訳のためのドキュメントに従ってください。
6
6
  keywords:
@@ -983,15 +983,17 @@ export const generateMetadata = async ({
983
983
  * ```
984
984
  */
985
985
  const multilingualUrls = getMultilingualUrls("/");
986
+ const localizedUrl =
987
+ multilingualUrls[locale as keyof typeof multilingualUrls];
986
988
 
987
989
  return {
988
990
  ...metadata,
989
991
  alternates: {
990
- canonical: multilingualUrls[locale as keyof typeof multilingualUrls],
992
+ canonical: localizedUrl,
991
993
  languages: { ...multilingualUrls, "x-default": "/" },
992
994
  },
993
995
  openGraph: {
994
- url: multilingualUrls[locale],
996
+ url: localizedUrl,
995
997
  },
996
998
  };
997
999
  };
@@ -1023,15 +1025,16 @@ export const generateMetadata = async ({ params }) => {
1023
1025
  * ```
1024
1026
  */
1025
1027
  const multilingualUrls = getMultilingualUrls("/");
1028
+ const localizedUrl = multilingualUrls[locale];
1026
1029
 
1027
1030
  return {
1028
1031
  ...metadata,
1029
1032
  alternates: {
1030
- canonical: multilingualUrls[locale],
1033
+ canonical: localizedUrl,
1031
1034
  languages: { ...multilingualUrls, "x-default": "/" },
1032
1035
  },
1033
1036
  openGraph: {
1034
- url: multilingualUrls[locale],
1037
+ url: localizedUrl,
1035
1038
  },
1036
1039
  };
1037
1040
  };
@@ -1063,15 +1066,16 @@ const generateMetadata = async ({ params }) => {
1063
1066
  * ```
1064
1067
  */
1065
1068
  const multilingualUrls = getMultilingualUrls("/");
1069
+ const localizedUrl = multilingualUrls[locale];
1066
1070
 
1067
1071
  return {
1068
1072
  ...metadata,
1069
1073
  alternates: {
1070
- canonical: multilingualUrls[locale],
1074
+ canonical: localizedUrl,
1071
1075
  languages: { ...multilingualUrls, "x-default": "/" },
1072
1076
  },
1073
1077
  openGraph: {
1074
- url: multilingualUrls[locale],
1078
+ url: localizedUrl,
1075
1079
  },
1076
1080
  };
1077
1081
  };