diff --git a/src/config/config.json b/src/config/config.json index d3b4957..382577f 100755 --- a/src/config/config.json +++ b/src/config/config.json @@ -20,7 +20,8 @@ "pagination": 2, "summary_length": 200, "blog_folder": "blog", - "default_language": "en" + "default_language": "en", + "disable_languages": [] }, "params": { diff --git a/src/layouts/components/Logo.astro b/src/layouts/components/Logo.astro index c3ec2d0..0c7e59b 100644 --- a/src/layouts/components/Logo.astro +++ b/src/layouts/components/Logo.astro @@ -25,7 +25,15 @@ const { theme_switcher }: { theme_switcher: boolean } = config.settings; const { default_language } = config.settings; const { trailing_slash } = config.site; -const lang = getLangFromUrl(Astro.url); +let lang = getLangFromUrl(Astro.url); + +// Check if the current language is disabled +const disabledLanguages = config.settings.disable_languages as string[]; +if (disabledLanguages.includes(lang)) { + // Redirect to the default language or handle as per your application logic + lang = default_language; +} + const url = constructUrl("/", lang, default_language, trailing_slash); --- diff --git a/src/layouts/helpers/LanguageSwitcher.tsx b/src/layouts/helpers/LanguageSwitcher.tsx index 0d74e3b..feb601b 100644 --- a/src/layouts/helpers/LanguageSwitcher.tsx +++ b/src/layouts/helpers/LanguageSwitcher.tsx @@ -19,8 +19,10 @@ const LanguageSwitcher = ({ return path; }; - // Sort languages by weight - const sortedLanguages = languages.sort((a, b) => a.weight - b.weight); + // Sort languages by weight and filter out disabled languages + const sortedLanguages = languages + .filter(language => !config.settings.disable_languages.includes(language.languageCode)) + .sort((a, b) => a.weight - b.weight); return (
@@ -53,4 +55,4 @@ const LanguageSwitcher = ({ ); }; -export default LanguageSwitcher; +export default LanguageSwitcher; \ No newline at end of file diff --git a/src/layouts/partials/Footer.astro b/src/layouts/partials/Footer.astro index ecae36d..4c63215 100755 --- a/src/layouts/partials/Footer.astro +++ b/src/layouts/partials/Footer.astro @@ -3,14 +3,17 @@ import Logo from "@/components/Logo.astro"; import Social from "@/components/Social.astro"; import config from "@/config/config.json"; import social from "@/config/social.json"; -import { getLangFromUrl } from "@/lib/utils/i18nUtils"; -import { loadMenu } from "@/lib/utils/loadMenu"; +import { getLangFromUrl, getTranslations } from "@/lib/utils/i18nUtils"; import { markdownify } from "@/lib/utils/textConverter"; +import type { ContentEntryMap } from "astro:content"; import { getRelativeLocaleUrl } from "astro:i18n"; const lang = getLangFromUrl(Astro.url); -const menu = loadMenu(lang); -const { footer }: { footer: { name: string; url: string }[] } = menu; +const menu = await getTranslations(lang as keyof ContentEntryMap); +let footer: any = []; +if (menu) { + footer = menu.footer; +} ---