@intlayer/docs 7.0.1 → 7.0.2
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/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +4 -11
- package/dist/cjs/common.cjs +5 -1
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/esm/common.mjs +5 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/docs/ar/intlayer_with_nextjs_15.md +10 -6
- package/docs/ar/intlayer_with_nextjs_16.md +11 -7
- package/docs/de/intlayer_with_nextjs_15.md +10 -6
- package/docs/de/intlayer_with_nextjs_16.md +11 -7
- package/docs/en/CI_CD.md +4 -0
- package/docs/en/configuration.md +29 -42
- package/docs/en/formatters.md +4 -0
- package/docs/en/how_works_intlayer.md +4 -0
- package/docs/en/index.md +1 -0
- package/docs/en/intlayer_CMS.md +6 -0
- package/docs/en/intlayer_cli.md +8 -0
- package/docs/en/intlayer_with_nextjs_14.md +14 -6
- package/docs/en/intlayer_with_nextjs_15.md +14 -6
- package/docs/en/intlayer_with_nextjs_16.md +15 -7
- package/docs/en/intlayer_with_nextjs_page_router.md +4 -0
- package/docs/en/intlayer_with_nuxt.md +4 -0
- package/docs/en/intlayer_with_react_native+expo.md +7 -0
- package/docs/en/intlayer_with_react_router_v7.md +4 -0
- package/docs/en/intlayer_with_tanstack.md +4 -0
- package/docs/en/intlayer_with_vite+preact.md +51 -26
- package/docs/en/intlayer_with_vite+react.md +4 -0
- package/docs/en/intlayer_with_vite+solid.md +4 -0
- package/docs/en/intlayer_with_vite+svelte.md +4 -0
- package/docs/en/intlayer_with_vite+vue.md +4 -0
- package/docs/en/introduction.md +1 -0
- package/docs/en/releases/v7.md +10 -12
- package/docs/en/roadmap.md +6 -0
- package/docs/en-GB/intlayer_with_nextjs_14.md +10 -6
- package/docs/en-GB/intlayer_with_nextjs_15.md +10 -6
- package/docs/en-GB/intlayer_with_nextjs_16.md +11 -7
- package/docs/es/intlayer_with_nextjs_14.md +11 -6
- package/docs/es/intlayer_with_nextjs_15.md +7 -4
- package/docs/es/intlayer_with_nextjs_16.md +11 -7
- package/docs/fr/intlayer_with_nextjs_15.md +10 -6
- package/docs/fr/intlayer_with_nextjs_16.md +12 -25
- package/docs/hi/intlayer_with_nextjs_15.md +10 -6
- package/docs/hi/intlayer_with_nextjs_16.md +11 -7
- package/docs/id/intlayer_with_nextjs_16.md +11 -7
- package/docs/it/intlayer_with_nextjs_15.md +10 -6
- package/docs/it/intlayer_with_nextjs_16.md +11 -7
- package/docs/ja/intlayer_with_nextjs_14.md +11 -6
- package/docs/ja/intlayer_with_nextjs_15.md +10 -6
- package/docs/ja/intlayer_with_nextjs_16.md +11 -7
- package/docs/ko/intlayer_with_nextjs_14.md +11 -6
- package/docs/ko/intlayer_with_nextjs_15.md +10 -6
- package/docs/ko/intlayer_with_nextjs_16.md +11 -7
- package/docs/pl/intlayer_with_nextjs_16.md +11 -7
- package/docs/pt/intlayer_with_nextjs_14.md +10 -7
- package/docs/pt/intlayer_with_nextjs_15.md +10 -6
- package/docs/pt/intlayer_with_nextjs_16.md +11 -7
- package/docs/ru/intlayer_with_nextjs_15.md +7 -4
- package/docs/ru/intlayer_with_nextjs_16.md +11 -7
- package/docs/tr/intlayer_with_nextjs_15.md +10 -6
- package/docs/tr/intlayer_with_nextjs_16.md +11 -7
- package/docs/vi/intlayer_with_nextjs_16.md +11 -7
- package/docs/zh/intlayer_with_nextjs_14.md +11 -6
- package/docs/zh/intlayer_with_nextjs_15.md +7 -4
- package/docs/zh/intlayer_with_nextjs_16.md +11 -7
- package/package.json +14 -14
- package/src/common.ts +7 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-12-06
|
|
3
|
-
updatedAt: 2025-10-
|
|
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:
|
|
819
|
+
canonical: localizedUrl,
|
|
818
820
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
819
821
|
},
|
|
820
822
|
openGraph: {
|
|
821
|
-
url:
|
|
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:
|
|
860
|
+
canonical: localizedUrl,
|
|
858
861
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
859
862
|
},
|
|
860
863
|
openGraph: {
|
|
861
|
-
url:
|
|
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:
|
|
901
|
+
canonical: localizedUrl,
|
|
898
902
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
899
903
|
},
|
|
900
904
|
openGraph: {
|
|
901
|
-
url:
|
|
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:
|
|
770
|
+
canonical: localizedUrl,
|
|
769
771
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
770
772
|
},
|
|
771
773
|
openGraph: {
|
|
772
|
-
url:
|
|
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:
|
|
807
|
+
canonical: localizedUrl,
|
|
804
808
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
805
809
|
},
|
|
806
810
|
openGraph: {
|
|
807
|
-
url:
|
|
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:
|
|
846
|
+
canonical: localizedUrl,
|
|
842
847
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
843
848
|
},
|
|
844
849
|
openGraph: {
|
|
845
|
-
url:
|
|
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:
|
|
803
|
+
canonical: localizedUrl,
|
|
802
804
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
803
805
|
},
|
|
804
806
|
openGraph: {
|
|
805
|
-
url:
|
|
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:
|
|
844
|
+
canonical: localizedUrl,
|
|
842
845
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
843
846
|
},
|
|
844
847
|
openGraph: {
|
|
845
|
-
url:
|
|
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:
|
|
885
|
+
canonical: localizedUrl,
|
|
882
886
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
883
887
|
},
|
|
884
888
|
openGraph: {
|
|
885
|
-
url:
|
|
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-
|
|
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:
|
|
992
|
+
canonical: localizedUrl,
|
|
991
993
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
992
994
|
},
|
|
993
995
|
openGraph: {
|
|
994
|
-
url:
|
|
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:
|
|
1033
|
+
canonical: localizedUrl,
|
|
1031
1034
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
1032
1035
|
},
|
|
1033
1036
|
openGraph: {
|
|
1034
|
-
url:
|
|
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:
|
|
1074
|
+
canonical: localizedUrl,
|
|
1071
1075
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
1072
1076
|
},
|
|
1073
1077
|
openGraph: {
|
|
1074
|
-
url:
|
|
1078
|
+
url: localizedUrl,
|
|
1075
1079
|
},
|
|
1076
1080
|
};
|
|
1077
1081
|
};
|
|
@@ -746,15 +746,17 @@ export const generateMetadata = ({
|
|
|
746
746
|
* ```
|
|
747
747
|
*/
|
|
748
748
|
const multilingualUrls = getMultilingualUrls("/");
|
|
749
|
+
const localizedUrl =
|
|
750
|
+
multilingualUrls[locale as keyof typeof multilingualUrls];
|
|
749
751
|
|
|
750
752
|
return {
|
|
751
753
|
...metadata,
|
|
752
754
|
alternates: {
|
|
753
|
-
canonical:
|
|
755
|
+
canonical: localizedUrl,
|
|
754
756
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
755
757
|
},
|
|
756
758
|
openGraph: {
|
|
757
|
-
url:
|
|
759
|
+
url: localizedUrl,
|
|
758
760
|
},
|
|
759
761
|
};
|
|
760
762
|
};
|
|
@@ -781,15 +783,17 @@ export const generateMetadata = ({ params: { locale } }) => {
|
|
|
781
783
|
* ```
|
|
782
784
|
*/
|
|
783
785
|
const multilingualUrls = getMultilingualUrls("/");
|
|
786
|
+
const localizedUrl =
|
|
787
|
+
multilingualUrls[locale];
|
|
784
788
|
|
|
785
789
|
return {
|
|
786
790
|
...metadata,
|
|
787
791
|
alternates: {
|
|
788
|
-
canonical:
|
|
792
|
+
canonical: localizedUrl,
|
|
789
793
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
790
794
|
},
|
|
791
795
|
openGraph: {
|
|
792
|
-
url:
|
|
796
|
+
url: localizedUrl,
|
|
793
797
|
},
|
|
794
798
|
};
|
|
795
799
|
};
|
|
@@ -819,15 +823,16 @@ const generateMetadata = ({ params: { locale } }) => {
|
|
|
819
823
|
* ```
|
|
820
824
|
*/
|
|
821
825
|
const multilingualUrls = getMultilingualUrls("/");
|
|
826
|
+
const localizedUrl = multilingualUrls[locale];
|
|
822
827
|
|
|
823
828
|
return {
|
|
824
829
|
...metadata,
|
|
825
830
|
alternates: {
|
|
826
|
-
canonical:
|
|
831
|
+
canonical: localizedUrl,
|
|
827
832
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
828
833
|
},
|
|
829
834
|
openGraph: {
|
|
830
|
-
url:
|
|
835
|
+
url: localizedUrl,
|
|
831
836
|
},
|
|
832
837
|
};
|
|
833
838
|
};
|
|
@@ -813,15 +813,17 @@ export const generateMetadata = async ({
|
|
|
813
813
|
* ```
|
|
814
814
|
*/
|
|
815
815
|
const multilingualUrls = getMultilingualUrls("/");
|
|
816
|
+
const localizedUrl =
|
|
817
|
+
multilingualUrls[locale as keyof typeof multilingualUrls];
|
|
816
818
|
|
|
817
819
|
return {
|
|
818
820
|
...metadata,
|
|
819
821
|
alternates: {
|
|
820
|
-
canonical:
|
|
822
|
+
canonical: localizedUrl,
|
|
821
823
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
822
824
|
},
|
|
823
825
|
openGraph: {
|
|
824
|
-
url:
|
|
826
|
+
url: localizedUrl,
|
|
825
827
|
},
|
|
826
828
|
};
|
|
827
829
|
};
|
|
@@ -853,15 +855,16 @@ export const generateMetadata = async ({ params }) => {
|
|
|
853
855
|
* ```
|
|
854
856
|
*/
|
|
855
857
|
const multilingualUrls = getMultilingualUrls("/");
|
|
858
|
+
const localizedUrl = multilingualUrls[locale];
|
|
856
859
|
|
|
857
860
|
return {
|
|
858
861
|
...metadata,
|
|
859
862
|
alternates: {
|
|
860
|
-
canonical:
|
|
863
|
+
canonical: localizedUrl,
|
|
861
864
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
862
865
|
},
|
|
863
866
|
openGraph: {
|
|
864
|
-
url:
|
|
867
|
+
url: localizedUrl,
|
|
865
868
|
},
|
|
866
869
|
};
|
|
867
870
|
};
|
|
@@ -893,15 +896,16 @@ const generateMetadata = async ({ params }) => {
|
|
|
893
896
|
* ```
|
|
894
897
|
*/
|
|
895
898
|
const multilingualUrls = getMultilingualUrls("/");
|
|
899
|
+
const localizedUrl = multilingualUrls[locale];
|
|
896
900
|
|
|
897
901
|
return {
|
|
898
902
|
...metadata,
|
|
899
903
|
alternates: {
|
|
900
|
-
canonical:
|
|
904
|
+
canonical: localizedUrl,
|
|
901
905
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
902
906
|
},
|
|
903
907
|
openGraph: {
|
|
904
|
-
url:
|
|
908
|
+
url: localizedUrl,
|
|
905
909
|
},
|
|
906
910
|
};
|
|
907
911
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-10-25
|
|
3
|
-
updatedAt: 2025-10-
|
|
3
|
+
updatedAt: 2025-10-26
|
|
4
4
|
title: Next.js 16 앱 번역 방법 – 2025 i18n 가이드
|
|
5
5
|
description: Next.js 16 웹사이트를 다국어로 만드는 방법을 알아보세요. 국제화(i18n) 및 번역을 위한 문서를 따라가세요.
|
|
6
6
|
keywords:
|
|
@@ -858,15 +858,17 @@ export const generateMetadata = async ({
|
|
|
858
858
|
* ```
|
|
859
859
|
*/
|
|
860
860
|
const multilingualUrls = getMultilingualUrls("/");
|
|
861
|
+
const localizedUrl =
|
|
862
|
+
multilingualUrls[locale as keyof typeof multilingualUrls];
|
|
861
863
|
|
|
862
864
|
return {
|
|
863
865
|
...metadata,
|
|
864
866
|
alternates: {
|
|
865
|
-
canonical:
|
|
867
|
+
canonical: localizedUrl,
|
|
866
868
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
867
869
|
},
|
|
868
870
|
openGraph: {
|
|
869
|
-
url:
|
|
871
|
+
url: localizedUrl,
|
|
870
872
|
},
|
|
871
873
|
};
|
|
872
874
|
};
|
|
@@ -898,15 +900,16 @@ export const generateMetadata = async ({ params }) => {
|
|
|
898
900
|
* ```
|
|
899
901
|
*/
|
|
900
902
|
const multilingualUrls = getMultilingualUrls("/");
|
|
903
|
+
const localizedUrl = multilingualUrls[locale];
|
|
901
904
|
|
|
902
905
|
return {
|
|
903
906
|
...metadata,
|
|
904
907
|
alternates: {
|
|
905
|
-
canonical:
|
|
908
|
+
canonical: localizedUrl,
|
|
906
909
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
907
910
|
},
|
|
908
911
|
openGraph: {
|
|
909
|
-
url:
|
|
912
|
+
url: localizedUrl,
|
|
910
913
|
},
|
|
911
914
|
};
|
|
912
915
|
};
|
|
@@ -938,15 +941,16 @@ const generateMetadata = async ({ params }) => {
|
|
|
938
941
|
* ```
|
|
939
942
|
*/
|
|
940
943
|
const multilingualUrls = getMultilingualUrls("/");
|
|
944
|
+
const localizedUrl = multilingualUrls[locale];
|
|
941
945
|
|
|
942
946
|
return {
|
|
943
947
|
...metadata,
|
|
944
948
|
alternates: {
|
|
945
|
-
canonical:
|
|
949
|
+
canonical: localizedUrl,
|
|
946
950
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
947
951
|
},
|
|
948
952
|
openGraph: {
|
|
949
|
-
url:
|
|
953
|
+
url: localizedUrl,
|
|
950
954
|
},
|
|
951
955
|
};
|
|
952
956
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-12-06
|
|
3
|
-
updatedAt: 2025-10-
|
|
3
|
+
updatedAt: 2025-10-26
|
|
4
4
|
title: Jak przetłumaczyć swoją aplikację Next.js 16 – przewodnik i18n 2025
|
|
5
5
|
description: Odkryj, jak uczynić swoją stronę Next.js 16 wielojęzyczną. Postępuj zgodnie z dokumentacją, aby zinternacjonalizować (i18n) i przetłumaczyć ją.
|
|
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:
|
|
819
|
+
canonical: localizedUrl,
|
|
818
820
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
819
821
|
},
|
|
820
822
|
openGraph: {
|
|
821
|
-
url:
|
|
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:
|
|
860
|
+
canonical: localizedUrl,
|
|
858
861
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
859
862
|
},
|
|
860
863
|
openGraph: {
|
|
861
|
-
url:
|
|
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:
|
|
901
|
+
canonical: localizedUrl,
|
|
898
902
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
899
903
|
},
|
|
900
904
|
openGraph: {
|
|
901
|
-
url:
|
|
905
|
+
url: localizedUrl,
|
|
902
906
|
},
|
|
903
907
|
};
|
|
904
908
|
};
|
|
@@ -634,6 +634,8 @@ export const generateMetadata = ({
|
|
|
634
634
|
* ```
|
|
635
635
|
*/
|
|
636
636
|
const multilingualUrls = getMultilingualUrls("/");
|
|
637
|
+
const localizedUrl =
|
|
638
|
+
multilingualUrls[locale as keyof typeof multilingualUrls];
|
|
637
639
|
|
|
638
640
|
return {
|
|
639
641
|
title: t<string>({
|
|
@@ -649,11 +651,11 @@ export const generateMetadata = ({
|
|
|
649
651
|
pt: "Minha descrição",
|
|
650
652
|
}),
|
|
651
653
|
alternates: {
|
|
652
|
-
canonical:
|
|
654
|
+
canonical: localizedUrl,
|
|
653
655
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
654
656
|
},
|
|
655
657
|
openGraph: {
|
|
656
|
-
url:
|
|
658
|
+
url: localizedUrl,
|
|
657
659
|
},
|
|
658
660
|
};
|
|
659
661
|
};
|
|
@@ -683,7 +685,7 @@ export const generateMetadata = ({ params: { locale } }) => {
|
|
|
683
685
|
* ```
|
|
684
686
|
*/
|
|
685
687
|
const multilingualUrls = getMultilingualUrls("/");
|
|
686
|
-
|
|
688
|
+
const localizedUrl = multilingualUrls[locale];
|
|
687
689
|
return {
|
|
688
690
|
title: t({
|
|
689
691
|
en: "My title",
|
|
@@ -698,11 +700,11 @@ export const generateMetadata = ({ params: { locale } }) => {
|
|
|
698
700
|
pt: "Minha descrição",
|
|
699
701
|
}),
|
|
700
702
|
alternates: {
|
|
701
|
-
canonical:
|
|
703
|
+
canonical: localizedUrl,
|
|
702
704
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
703
705
|
},
|
|
704
706
|
openGraph: {
|
|
705
|
-
url:
|
|
707
|
+
url: localizedUrl,
|
|
706
708
|
},
|
|
707
709
|
};
|
|
708
710
|
};
|
|
@@ -732,6 +734,7 @@ module.exports.generateMetadata = ({ params: { locale } }) => {
|
|
|
732
734
|
* ```
|
|
733
735
|
*/
|
|
734
736
|
const multilingualUrls = getMultilingualUrls("/");
|
|
737
|
+
const localizedUrl = multilingualUrls[locale];
|
|
735
738
|
|
|
736
739
|
return {
|
|
737
740
|
title: t({
|
|
@@ -747,11 +750,11 @@ module.exports.generateMetadata = ({ params: { locale } }) => {
|
|
|
747
750
|
pt: "Minha descrição",
|
|
748
751
|
}),
|
|
749
752
|
alternates: {
|
|
750
|
-
canonical:
|
|
753
|
+
canonical: localizedUrl,
|
|
751
754
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
752
755
|
},
|
|
753
756
|
openGraph: {
|
|
754
|
-
url:
|
|
757
|
+
url: localizedUrl,
|
|
755
758
|
},
|
|
756
759
|
};
|
|
757
760
|
};
|
|
@@ -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:
|
|
782
|
+
canonical: localizedUrl,
|
|
781
783
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
782
784
|
},
|
|
783
785
|
openGraph: {
|
|
784
|
-
url:
|
|
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:
|
|
823
|
+
canonical: localizedUrl,
|
|
821
824
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
822
825
|
},
|
|
823
826
|
openGraph: {
|
|
824
|
-
url:
|
|
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:
|
|
864
|
+
canonical: localizedUrl,
|
|
861
865
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
862
866
|
},
|
|
863
867
|
openGraph: {
|
|
864
|
-
url:
|
|
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-
|
|
3
|
+
updatedAt: 2025-10-26
|
|
4
4
|
title: Como traduzir sua aplicação Next.js 16 – guia i18n 2025
|
|
5
5
|
description: Descubra como tornar seu site Next.js 16 multilíngue. Siga a documentação para internacionalizar (i18n) e traduzir.
|
|
6
6
|
keywords:
|
|
@@ -842,15 +842,17 @@ export const generateMetadata = async ({
|
|
|
842
842
|
* ```
|
|
843
843
|
*/
|
|
844
844
|
const multilingualUrls = getMultilingualUrls("/");
|
|
845
|
+
const localizedUrl =
|
|
846
|
+
multilingualUrls[locale as keyof typeof multilingualUrls];
|
|
845
847
|
|
|
846
848
|
return {
|
|
847
849
|
...metadata,
|
|
848
850
|
alternates: {
|
|
849
|
-
canonical:
|
|
851
|
+
canonical: localizedUrl,
|
|
850
852
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
851
853
|
},
|
|
852
854
|
openGraph: {
|
|
853
|
-
url:
|
|
855
|
+
url: localizedUrl,
|
|
854
856
|
},
|
|
855
857
|
};
|
|
856
858
|
};
|
|
@@ -882,15 +884,16 @@ export const generateMetadata = async ({ params }) => {
|
|
|
882
884
|
* ```
|
|
883
885
|
*/
|
|
884
886
|
const multilingualUrls = getMultilingualUrls("/");
|
|
887
|
+
const localizedUrl = multilingualUrls[locale];
|
|
885
888
|
|
|
886
889
|
return {
|
|
887
890
|
...metadata,
|
|
888
891
|
alternates: {
|
|
889
|
-
canonical:
|
|
892
|
+
canonical: localizedUrl,
|
|
890
893
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
891
894
|
},
|
|
892
895
|
openGraph: {
|
|
893
|
-
url:
|
|
896
|
+
url: localizedUrl,
|
|
894
897
|
},
|
|
895
898
|
};
|
|
896
899
|
};
|
|
@@ -922,15 +925,16 @@ const generateMetadata = async ({ params }) => {
|
|
|
922
925
|
* ```
|
|
923
926
|
*/
|
|
924
927
|
const multilingualUrls = getMultilingualUrls("/");
|
|
928
|
+
const localizedUrl = multilingualUrls[locale];
|
|
925
929
|
|
|
926
930
|
return {
|
|
927
931
|
...metadata,
|
|
928
932
|
alternates: {
|
|
929
|
-
canonical:
|
|
933
|
+
canonical: localizedUrl,
|
|
930
934
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
931
935
|
},
|
|
932
936
|
openGraph: {
|
|
933
|
-
url:
|
|
937
|
+
url: localizedUrl,
|
|
934
938
|
},
|
|
935
939
|
};
|
|
936
940
|
};
|