slugSelector fn modified for trailing slash

This commit is contained in:
Al Murad Uzzaman
2024-07-31 12:59:07 +06:00
parent f4c45c5b8f
commit 267f2efade
3 changed files with 57 additions and 17 deletions
+1 -1
View File
@@ -22,7 +22,7 @@
"blog_folder": "blog",
"default_language": "en",
"disable_languages": [],
"default_language_in_subdir": true
"default_language_in_subdir": false
},
"params": {
+9 -3
View File
@@ -1,5 +1,5 @@
import config from "@/config/config.json";
import languages from "@/config/language.json"; ``
import languages from "@/config/language.json";
import React from "react";
const LanguageSwitcher = ({
@@ -9,7 +9,7 @@ const LanguageSwitcher = ({
lang: string;
pathname: string;
}) => {
const { default_language } = config.settings;
const { default_language, default_language_in_subdir } = config.settings;
// Function to remove trailing slash if necessary
const removeTrailingSlash = (path: string) => {
@@ -33,11 +33,17 @@ const LanguageSwitcher = ({
const selectedLang = e.target.value;
let newPath;
const baseUrl = window.location.origin;
if (selectedLang === default_language) {
newPath = `${baseUrl}${removeTrailingSlash(pathname.replace(`/${lang}`, ""))}`;
if (default_language_in_subdir) {
newPath = `${baseUrl}/${default_language}${removeTrailingSlash(pathname.replace(`/${lang}`, ""))}`;
} else {
newPath = `${baseUrl}${removeTrailingSlash(pathname.replace(`/${lang}`, ""))}`;
}
} else {
newPath = `/${selectedLang}${removeTrailingSlash(pathname.replace(`/${lang}`, ""))}`;
}
window.location.href = newPath;
}}
value={lang}
+47 -13
View File
@@ -75,6 +75,47 @@ const filteredSupportedLang = supportedLang.filter(
export { filteredSupportedLang as supportedLang };
// export const slugSelector = (url: string, lang: string) => {
// const { default_language, default_language_in_subdir } = config.settings;
// const { trailing_slash } = config.site;
// let constructedUrl;
// // Determine the initial URL structure based on language
// if (url === "/") {
// constructedUrl = lang === default_language ? "/" : `/${lang}`;
// } else {
// constructedUrl = getRelativeLocaleUrl(lang, url, {
// normalizeLocale: false,
// });
// }
// // Adjust for trailing slash
// if (trailing_slash) {
// if (!constructedUrl.endsWith("/")) {
// constructedUrl += "/";
// }
// } else {
// if (constructedUrl.endsWith("/")) {
// constructedUrl = constructedUrl.slice(0, -1);
// }
// }
// // Ensure home URL is absolute
// if (constructedUrl === "") {
// constructedUrl = "/";
// }
// // Add language path if necessary
// if (lang === default_language) {
// constructedUrl = default_language_in_subdir
// ? `/${lang}${constructedUrl}`
// : constructedUrl;
// }
// return constructedUrl;
// };
export const slugSelector = (url: string, lang: string) => {
const { default_language, default_language_in_subdir } = config.settings;
const { trailing_slash } = config.site;
@@ -90,28 +131,21 @@ export const slugSelector = (url: string, lang: string) => {
});
}
// Add language path if necessary
if (lang === default_language && default_language_in_subdir) {
constructedUrl = `/${lang}${constructedUrl}`;
}
// Adjust for trailing slash
if (trailing_slash) {
if (!constructedUrl.endsWith("/")) {
constructedUrl += "/";
}
} else {
if (constructedUrl.endsWith("/")) {
if (constructedUrl.endsWith("/") && constructedUrl !== "/") {
constructedUrl = constructedUrl.slice(0, -1);
}
}
// Ensure home URL is absolute
if (constructedUrl === "") {
constructedUrl = "/";
}
// Add language path if necessary
if (lang === default_language) {
constructedUrl = default_language_in_subdir
? `/${lang}${constructedUrl}`
: constructedUrl;
}
return constructedUrl;
};