mirror of
https://github.com/10h30/astroplate.git
synced 2026-06-05 15:08:00 +09:00
slugSelector fn modified for trailing slash
This commit is contained in:
@@ -22,7 +22,7 @@
|
||||
"blog_folder": "blog",
|
||||
"default_language": "en",
|
||||
"disable_languages": [],
|
||||
"default_language_in_subdir": true
|
||||
"default_language_in_subdir": false
|
||||
},
|
||||
|
||||
"params": {
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user