@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
|
@@ -805,15 +805,17 @@ export const generateMetadata = async ({
|
|
|
805
805
|
* ```
|
|
806
806
|
*/
|
|
807
807
|
const multilingualUrls = getMultilingualUrls("/");
|
|
808
|
+
const localizedUrl =
|
|
809
|
+
multilingualUrls[locale as keyof typeof multilingualUrls];
|
|
808
810
|
|
|
809
811
|
return {
|
|
810
812
|
...metadata,
|
|
811
813
|
alternates: {
|
|
812
|
-
canonical:
|
|
814
|
+
canonical: localizedUrl,
|
|
813
815
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
814
816
|
},
|
|
815
817
|
openGraph: {
|
|
816
|
-
url:
|
|
818
|
+
url: localizedUrl,
|
|
817
819
|
},
|
|
818
820
|
};
|
|
819
821
|
};
|
|
@@ -884,15 +886,16 @@ const generateMetadata = async ({ params }) => {
|
|
|
884
886
|
* ```
|
|
885
887
|
*/
|
|
886
888
|
const multilingualUrls = getMultilingualUrls("/");
|
|
889
|
+
const localizedUrl = multilingualUrls[locale];
|
|
887
890
|
|
|
888
891
|
return {
|
|
889
892
|
...metadata,
|
|
890
893
|
alternates: {
|
|
891
|
-
canonical:
|
|
894
|
+
canonical: localizedUrl,
|
|
892
895
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
893
896
|
},
|
|
894
897
|
openGraph: {
|
|
895
|
-
url:
|
|
898
|
+
url: localizedUrl,
|
|
896
899
|
},
|
|
897
900
|
};
|
|
898
901
|
};
|
|
@@ -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 – руководство по i18n 2025
|
|
5
5
|
description: Узнайте, как сделать ваш сайт на Next.js 16 многоязычным. Следуйте документации для интернационализации (i18n) и перевода.
|
|
6
6
|
keywords:
|
|
@@ -823,15 +823,17 @@ export const generateMetadata = async ({
|
|
|
823
823
|
* ```
|
|
824
824
|
*/
|
|
825
825
|
const multilingualUrls = getMultilingualUrls("/");
|
|
826
|
+
const localizedUrl =
|
|
827
|
+
multilingualUrls[locale as keyof typeof multilingualUrls];
|
|
826
828
|
|
|
827
829
|
return {
|
|
828
830
|
...metadata,
|
|
829
831
|
alternates: {
|
|
830
|
-
canonical:
|
|
832
|
+
canonical: localizedUrl,
|
|
831
833
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
832
834
|
},
|
|
833
835
|
openGraph: {
|
|
834
|
-
url:
|
|
836
|
+
url: localizedUrl,
|
|
835
837
|
},
|
|
836
838
|
};
|
|
837
839
|
};
|
|
@@ -863,15 +865,16 @@ export const generateMetadata = async ({ params }) => {
|
|
|
863
865
|
* ```
|
|
864
866
|
*/
|
|
865
867
|
const multilingualUrls = getMultilingualUrls("/");
|
|
868
|
+
const localizedUrl = multilingualUrls[locale];
|
|
866
869
|
|
|
867
870
|
return {
|
|
868
871
|
...metadata,
|
|
869
872
|
alternates: {
|
|
870
|
-
canonical:
|
|
873
|
+
canonical: localizedUrl,
|
|
871
874
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
872
875
|
},
|
|
873
876
|
openGraph: {
|
|
874
|
-
url:
|
|
877
|
+
url: localizedUrl,
|
|
875
878
|
},
|
|
876
879
|
};
|
|
877
880
|
};
|
|
@@ -903,15 +906,16 @@ const generateMetadata = async ({ params }) => {
|
|
|
903
906
|
* ```
|
|
904
907
|
*/
|
|
905
908
|
const multilingualUrls = getMultilingualUrls("/");
|
|
909
|
+
const localizedUrl = multilingualUrls[locale];
|
|
906
910
|
|
|
907
911
|
return {
|
|
908
912
|
...metadata,
|
|
909
913
|
alternates: {
|
|
910
|
-
canonical:
|
|
914
|
+
canonical: localizedUrl,
|
|
911
915
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
912
916
|
},
|
|
913
917
|
openGraph: {
|
|
914
|
-
url:
|
|
918
|
+
url: localizedUrl,
|
|
915
919
|
},
|
|
916
920
|
};
|
|
917
921
|
};
|
|
@@ -769,15 +769,17 @@ export const generateMetadata = async ({
|
|
|
769
769
|
* ```
|
|
770
770
|
*/
|
|
771
771
|
const multilingualUrls = getMultilingualUrls("/");
|
|
772
|
+
const localizedUrl =
|
|
773
|
+
multilingualUrls[locale as keyof typeof multilingualUrls];
|
|
772
774
|
|
|
773
775
|
return {
|
|
774
776
|
...metadata,
|
|
775
777
|
alternates: {
|
|
776
|
-
canonical:
|
|
778
|
+
canonical: localizedUrl,
|
|
777
779
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
778
780
|
},
|
|
779
781
|
openGraph: {
|
|
780
|
-
url:
|
|
782
|
+
url: localizedUrl,
|
|
781
783
|
},
|
|
782
784
|
};
|
|
783
785
|
};
|
|
@@ -809,15 +811,16 @@ export const generateMetadata = async ({ params }) => {
|
|
|
809
811
|
* ```
|
|
810
812
|
*/
|
|
811
813
|
const multilingualUrls = getMultilingualUrls("/");
|
|
814
|
+
const localizedUrl = multilingualUrls[locale];
|
|
812
815
|
|
|
813
816
|
return {
|
|
814
817
|
...metadata,
|
|
815
818
|
alternates: {
|
|
816
|
-
canonical:
|
|
819
|
+
canonical: localizedUrl,
|
|
817
820
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
818
821
|
},
|
|
819
822
|
openGraph: {
|
|
820
|
-
url:
|
|
823
|
+
url: localizedUrl,
|
|
821
824
|
},
|
|
822
825
|
};
|
|
823
826
|
};
|
|
@@ -849,15 +852,16 @@ const generateMetadata = async ({ params }) => {
|
|
|
849
852
|
* ```
|
|
850
853
|
*/
|
|
851
854
|
const multilingualUrls = getMultilingualUrls("/");
|
|
855
|
+
const localizedUrl = multilingualUrls[locale];
|
|
852
856
|
|
|
853
857
|
return {
|
|
854
858
|
...metadata,
|
|
855
859
|
alternates: {
|
|
856
|
-
canonical:
|
|
860
|
+
canonical: localizedUrl,
|
|
857
861
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
858
862
|
},
|
|
859
863
|
openGraph: {
|
|
860
|
-
url:
|
|
864
|
+
url: localizedUrl,
|
|
861
865
|
},
|
|
862
866
|
};
|
|
863
867
|
};
|
|
@@ -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 uygulamanızı nasıl çevirirsiniz – i18n rehberi 2025
|
|
5
5
|
description: Next.js 16 web sitenizi çok dilli hale nasıl getireceğinizi keşfedin. Uluslararasılaştırma (i18n) ve çeviri için dokümantasyonu takip edin.
|
|
6
6
|
keywords:
|
|
@@ -814,15 +814,17 @@ export const generateMetadata = async ({
|
|
|
814
814
|
* ```
|
|
815
815
|
*/
|
|
816
816
|
const multilingualUrls = getMultilingualUrls("/");
|
|
817
|
+
const localizedUrl =
|
|
818
|
+
multilingualUrls[locale as keyof typeof multilingualUrls];
|
|
817
819
|
|
|
818
820
|
return {
|
|
819
821
|
...metadata,
|
|
820
822
|
alternates: {
|
|
821
|
-
canonical:
|
|
823
|
+
canonical: localizedUrl,
|
|
822
824
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
823
825
|
},
|
|
824
826
|
openGraph: {
|
|
825
|
-
url:
|
|
827
|
+
url: localizedUrl,
|
|
826
828
|
},
|
|
827
829
|
};
|
|
828
830
|
};
|
|
@@ -854,15 +856,16 @@ export const generateMetadata = async ({ params }) => {
|
|
|
854
856
|
* ```
|
|
855
857
|
*/
|
|
856
858
|
const multilingualUrls = getMultilingualUrls("/");
|
|
859
|
+
const localizedUrl = multilingualUrls[locale];
|
|
857
860
|
|
|
858
861
|
return {
|
|
859
862
|
...metadata,
|
|
860
863
|
alternates: {
|
|
861
|
-
canonical:
|
|
864
|
+
canonical: localizedUrl,
|
|
862
865
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
863
866
|
},
|
|
864
867
|
openGraph: {
|
|
865
|
-
url:
|
|
868
|
+
url: localizedUrl,
|
|
866
869
|
},
|
|
867
870
|
};
|
|
868
871
|
};
|
|
@@ -894,15 +897,16 @@ const generateMetadata = async ({ params }) => {
|
|
|
894
897
|
* ```
|
|
895
898
|
*/
|
|
896
899
|
const multilingualUrls = getMultilingualUrls("/");
|
|
900
|
+
const localizedUrl = multilingualUrls[locale];
|
|
897
901
|
|
|
898
902
|
return {
|
|
899
903
|
...metadata,
|
|
900
904
|
alternates: {
|
|
901
|
-
canonical:
|
|
905
|
+
canonical: localizedUrl,
|
|
902
906
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
903
907
|
},
|
|
904
908
|
openGraph: {
|
|
905
|
-
url:
|
|
909
|
+
url: localizedUrl,
|
|
906
910
|
},
|
|
907
911
|
};
|
|
908
912
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-12-06
|
|
3
|
-
updatedAt: 2025-10-
|
|
3
|
+
updatedAt: 2025-10-26
|
|
4
4
|
title: Cách dịch ứng dụng Next.js 16 của bạn – Hướng dẫn i18n 2025
|
|
5
5
|
description: Khám phá cách làm cho trang web Next.js 16 của bạn đa ngôn ngữ. Theo dõi tài liệu để quốc tế hóa (i18n) và dịch nó.
|
|
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
|
};
|
|
@@ -743,15 +743,17 @@ export const generateMetadata = ({
|
|
|
743
743
|
* ```
|
|
744
744
|
*/
|
|
745
745
|
const multilingualUrls = getMultilingualUrls("/");
|
|
746
|
+
const localizedUrl =
|
|
747
|
+
multilingualUrls[locale as keyof typeof multilingualUrls];
|
|
746
748
|
|
|
747
749
|
return {
|
|
748
750
|
...metadata,
|
|
749
751
|
alternates: {
|
|
750
|
-
canonical:
|
|
752
|
+
canonical: localizedUrl,
|
|
751
753
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
752
754
|
},
|
|
753
755
|
openGraph: {
|
|
754
|
-
url:
|
|
756
|
+
url: localizedUrl,
|
|
755
757
|
},
|
|
756
758
|
};
|
|
757
759
|
};
|
|
@@ -778,15 +780,17 @@ export const generateMetadata = ({ params: { locale } }) => {
|
|
|
778
780
|
* ```
|
|
779
781
|
*/
|
|
780
782
|
const multilingualUrls = getMultilingualUrls("/");
|
|
783
|
+
const localizedUrl =
|
|
784
|
+
multilingualUrls[locale];
|
|
781
785
|
|
|
782
786
|
return {
|
|
783
787
|
...metadata,
|
|
784
788
|
alternates: {
|
|
785
|
-
canonical:
|
|
789
|
+
canonical: localizedUrl,
|
|
786
790
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
787
791
|
},
|
|
788
792
|
openGraph: {
|
|
789
|
-
url:
|
|
793
|
+
url: localizedUrl,
|
|
790
794
|
},
|
|
791
795
|
};
|
|
792
796
|
};
|
|
@@ -816,15 +820,16 @@ const generateMetadata = ({ params: { locale } }) => {
|
|
|
816
820
|
* ```
|
|
817
821
|
*/
|
|
818
822
|
const multilingualUrls = getMultilingualUrls("/");
|
|
823
|
+
const localizedUrl = multilingualUrls[locale];
|
|
819
824
|
|
|
820
825
|
return {
|
|
821
826
|
...metadata,
|
|
822
827
|
alternates: {
|
|
823
|
-
canonical:
|
|
828
|
+
canonical: localizedUrl,
|
|
824
829
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
825
830
|
},
|
|
826
831
|
openGraph: {
|
|
827
|
-
url:
|
|
832
|
+
url: localizedUrl,
|
|
828
833
|
},
|
|
829
834
|
};
|
|
830
835
|
};
|
|
@@ -797,15 +797,17 @@ export const generateMetadata = async ({
|
|
|
797
797
|
* ```
|
|
798
798
|
*/
|
|
799
799
|
const multilingualUrls = getMultilingualUrls("/");
|
|
800
|
+
const localizedUrl =
|
|
801
|
+
multilingualUrls[locale as keyof typeof multilingualUrls];
|
|
800
802
|
|
|
801
803
|
return {
|
|
802
804
|
...metadata,
|
|
803
805
|
alternates: {
|
|
804
|
-
canonical:
|
|
806
|
+
canonical: localizedUrl,
|
|
805
807
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
806
808
|
},
|
|
807
809
|
openGraph: {
|
|
808
|
-
url:
|
|
810
|
+
url: localizedUrl,
|
|
809
811
|
},
|
|
810
812
|
};
|
|
811
813
|
};
|
|
@@ -876,15 +878,16 @@ const generateMetadata = async ({ params }) => {
|
|
|
876
878
|
* ```
|
|
877
879
|
*/
|
|
878
880
|
const multilingualUrls = getMultilingualUrls("/");
|
|
881
|
+
const localizedUrl = multilingualUrls[locale];
|
|
879
882
|
|
|
880
883
|
return {
|
|
881
884
|
...metadata,
|
|
882
885
|
alternates: {
|
|
883
|
-
canonical:
|
|
886
|
+
canonical: localizedUrl,
|
|
884
887
|
languages: { ...multilingualUrls, "x-default": "/" },
|
|
885
888
|
},
|
|
886
889
|
openGraph: {
|
|
887
|
-
url:
|
|
890
|
+
url: localizedUrl,
|
|
888
891
|
},
|
|
889
892
|
};
|
|
890
893
|
};
|
|
@@ -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:
|
|
@@ -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
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intlayer/docs",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Intlayer documentation",
|
|
6
6
|
"keywords": [
|
|
@@ -69,17 +69,17 @@
|
|
|
69
69
|
"watch": "webpack --config ./webpack.config.ts --watch"
|
|
70
70
|
},
|
|
71
71
|
"dependencies": {
|
|
72
|
-
"@intlayer/config": "7.0.
|
|
73
|
-
"@intlayer/core": "7.0.
|
|
74
|
-
"@intlayer/types": "7.0.
|
|
72
|
+
"@intlayer/config": "7.0.2",
|
|
73
|
+
"@intlayer/core": "7.0.2",
|
|
74
|
+
"@intlayer/types": "7.0.2"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
|
-
"@intlayer/api": "7.0.
|
|
78
|
-
"@intlayer/cli": "7.0.
|
|
77
|
+
"@intlayer/api": "7.0.2",
|
|
78
|
+
"@intlayer/cli": "7.0.2",
|
|
79
79
|
"@types/node": "24.9.1",
|
|
80
|
-
"@utils/ts-config": "7.0.
|
|
81
|
-
"@utils/ts-config-types": "7.0.
|
|
82
|
-
"@utils/tsdown-config": "7.0.
|
|
80
|
+
"@utils/ts-config": "7.0.2",
|
|
81
|
+
"@utils/ts-config-types": "7.0.2",
|
|
82
|
+
"@utils/tsdown-config": "7.0.2",
|
|
83
83
|
"fast-glob": "3.3.3",
|
|
84
84
|
"rimraf": "6.0.1",
|
|
85
85
|
"tsdown": "0.15.9",
|
|
@@ -87,11 +87,11 @@
|
|
|
87
87
|
"vitest": "4.0.3"
|
|
88
88
|
},
|
|
89
89
|
"peerDependencies": {
|
|
90
|
-
"@intlayer/api": "7.0.
|
|
91
|
-
"@intlayer/cli": "7.0.
|
|
92
|
-
"@intlayer/config": "7.0.
|
|
93
|
-
"@intlayer/core": "7.0.
|
|
94
|
-
"@intlayer/types": "7.0.
|
|
90
|
+
"@intlayer/api": "7.0.2",
|
|
91
|
+
"@intlayer/cli": "7.0.2",
|
|
92
|
+
"@intlayer/config": "7.0.2",
|
|
93
|
+
"@intlayer/core": "7.0.2",
|
|
94
|
+
"@intlayer/types": "7.0.2"
|
|
95
95
|
},
|
|
96
96
|
"engines": {
|
|
97
97
|
"node": ">=14.18"
|
package/src/common.ts
CHANGED
|
@@ -81,13 +81,19 @@ export const formatMetadata = (
|
|
|
81
81
|
locale: LocalesValues = defaultLocale as LocalesValues
|
|
82
82
|
): FileMetadata => {
|
|
83
83
|
const metadata = getMarkdownMetadata(file);
|
|
84
|
-
|
|
84
|
+
|
|
85
|
+
const slugs = (metadata.slugs ?? []).map(String);
|
|
86
|
+
const keywords = (metadata.keywords ?? []).map(String);
|
|
87
|
+
|
|
88
|
+
const relativeUrl = join('/', ...slugs);
|
|
85
89
|
|
|
86
90
|
const slicedDocKey = docKey.slice(1);
|
|
87
91
|
|
|
88
92
|
return {
|
|
89
93
|
...metadata,
|
|
90
94
|
docKey,
|
|
95
|
+
slugs,
|
|
96
|
+
keywords,
|
|
91
97
|
githubUrl: `${GITHUB_URL_PREFIX}${slicedDocKey}`.replace(
|
|
92
98
|
'/en/',
|
|
93
99
|
`/${locale}/`
|