From e2338efc6b9340e8d67f0f0d5b691af361ae4a57 Mon Sep 17 00:00:00 2001 From: Al Murad Uzzaman Date: Sun, 19 May 2024 14:01:35 +0600 Subject: [PATCH] disabled ln fn added --- src/config/config.json | 3 +- src/layouts/components/Logo.astro | 10 +++- src/layouts/helpers/LanguageSwitcher.tsx | 8 ++- src/layouts/partials/Footer.astro | 13 +++-- src/layouts/partials/Header.astro | 29 ++++++---- src/lib/utils/i18nUtils.ts | 71 +++++++++++++++++++----- src/lib/utils/loadMenu.ts | 41 -------------- src/pages/404.astro | 20 ++++++- src/pages/[...lang]/contact.astro | 6 +- src/pages/[...lang]/index.astro | 11 ++-- 10 files changed, 127 insertions(+), 85 deletions(-) delete mode 100644 src/lib/utils/loadMenu.ts 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; +} ---