disabled ln fn added

This commit is contained in:
Al Murad Uzzaman
2024-05-19 14:01:35 +06:00
parent 4df29fbf63
commit e2338efc6b
10 changed files with 127 additions and 85 deletions
+58 -13
View File
@@ -1,8 +1,6 @@
import config from "@/config/config.json";
import languagesJSON from "@/config/language.json";
import { getRelativeLocaleUrl } from "astro:i18n";
import fs from "fs";
import path from "path";
const { default_language } = config.settings;
const locales: { [key: string]: any } = {};
@@ -31,20 +29,57 @@ export function getLangFromUrl(url: URL): string {
return default_language;
}
// export const getTranslations = async (lang: string) => {
// const menu = await import(
// `../../config/menu.${lang || default_language}.json`
// );
// const dictionary = await import(
// `../../i18n/${lang || default_language}.json`
// );
// return { ...menu, ...dictionary };
// };
// export const supportedLang = [""].concat(
// languagesJSON.map((lang) => lang.languageCode),
// );
// Function to construct the URL based on trailing_slash value
export const getTranslations = async (lang: string) => {
const menu = await import(
`../../config/menu.${lang || default_language}.json`
);
const dictionary = await import(
`../../i18n/${lang || default_language}.json`
);
return { ...menu, ...dictionary };
const {
default_language,
disable_languages,
}: { default_language: string; disable_languages: string[] } =
config.settings;
if (disable_languages.includes(lang)) {
lang = default_language;
}
let language = languagesJSON.find((l) => l.languageCode === lang);
if (!language) {
lang = default_language;
language = languagesJSON.find((l) => l.languageCode === default_language);
}
if (!language) {
throw new Error("Default language not found");
}
const contentDir = language.contentDir;
let menu, dictionary;
try {
menu = await import(`../../config/menu.${lang}.json`);
dictionary = await import(`../../i18n/${lang}.json`);
} catch (error) {
menu = await import(`../../config/menu.${default_language}.json`);
dictionary = await import(`../../i18n/${default_language}.json`);
}
return { ...menu.default, ...dictionary.default, contentDir };
};
export const supportedLang = [""].concat(
languagesJSON.map((lang) => lang.languageCode),
);
// Function to construct the URL based on trailing_slash value
export const constructUrl = (
url: string,
lang: string,
@@ -76,3 +111,13 @@ export const constructUrl = (
return constructedUrl;
};
const supportedLang = ["", ...languagesJSON.map((lang) => lang.languageCode)];
const disabledLanguages = config.settings.disable_languages as string[];
// Filter out disabled languages from supportedLang
const filteredSupportedLang = supportedLang.filter(
(lang) => !disabledLanguages.includes(lang),
);
export { filteredSupportedLang as supportedLang };
-41
View File
@@ -1,41 +0,0 @@
import fs from "fs";
import path from "path";
import languages from "@/config/language.json";
export interface ChildNavigationLink {
name: string;
url: string;
}
export interface NavigationLink {
name: string;
url: string;
hasChildren?: boolean;
children?: ChildNavigationLink[];
}
interface Menu {
main: NavigationLink[];
footer: NavigationLink[];
}
export function loadMenu(lang: string): Menu {
// Find the language object based on the language code
const language = languages.find((l) => l.languageCode === lang);
if (!language) {
throw new Error(
`Language '${lang}' not found in the list of supported languages.`,
);
}
// Load menu data based on the language code
const menuPath: string = path.join(
process.cwd(),
"src",
"config",
`menu.${language.languageCode}.json`,
);
const menuData: string = fs.readFileSync(menuPath, "utf-8");
return JSON.parse(menuData) as Menu;
}