remove multilingual and create a new multilingual branch

This commit is contained in:
Somrat
2024-11-18 09:55:18 +06:00
parent b092921209
commit f7bc32a629
82 changed files with 453 additions and 1928 deletions
+31 -42
View File
@@ -2,36 +2,33 @@
import Logo from "@/components/Logo.astro";
import ThemeSwitcher from "@/components/ThemeSwitcher.astro";
import config from "@/config/config.json";
import LanguageSwitcher from "@/helpers/LanguageSwitcher";
import {
getLangFromUrl,
getTranslations,
slugSelector,
} from "@/lib/utils/languageParser";
import type { ContentEntryMap } from "astro:content";
import menu from "@/config/menu.json";
import { IoSearch } from "react-icons/io5";
let lang = getLangFromUrl(Astro.url);
const menu = await getTranslations(lang as keyof ContentEntryMap);
const { navigation_button, settings } = config;
const { default_language } = config.settings;
const { pathname } = Astro.url;
const { get_started } = await getTranslations(lang as keyof ContentEntryMap);
const disabledLanguages = config.settings.disable_languages as string[];
if (disabledLanguages.includes(lang)) {
lang = default_language;
export interface ChildNavigationLink {
name: string;
url: string;
}
export interface NavigationLink {
name: string;
url: string;
hasChildren?: boolean;
children?: ChildNavigationLink[];
}
const { main }: { main: NavigationLink[] } = menu;
const { navigation_button, settings } = config;
const { pathname } = Astro.url;
---
<header class={`header z-30 ${settings.sticky_header && "sticky top-0"}`}>
<nav class="navbar container">
{/* logo */}
<!-- logo -->
<div class="order-0">
<Logo />
</div>
{/* navbar toggler */}
<!-- navbar toggler -->
<input id="nav-toggle" type="checkbox" class="hidden" />
<label
for="nav-toggle"
@@ -48,23 +45,21 @@ if (disabledLanguages.includes(lang)) {
transform="rotate(45 10 10)"></polygon>
</svg>
</label>
{/* /navbar toggler */}
<!-- /navbar toggler -->
<ul
id="nav-menu"
class="navbar-nav order-3 hidden w-full pb-6 lg:order-1 lg:flex lg:w-auto lg:space-x-2 lg:pb-0 xl:space-x-8"
>
{
menu?.main.map((menu: any) => (
main.map((menu) => (
<>
{menu.hasChildren ? (
<li class="nav-item nav-dropdown group relative">
<span
class={`nav-link inline-flex items-center ${
menu.children?.map(({ url }) => url).includes(pathname) ||
menu.children
?.map(({ url }: { url: string }) =>
slugSelector(url, lang),
)
?.map(({ url }) => `${url}/`)
.includes(pathname)
? "active"
: ""
@@ -76,13 +71,15 @@ if (disabledLanguages.includes(lang)) {
</svg>
</span>
<ul class="nav-dropdown-list hidden group-hover:block lg:invisible lg:absolute lg:block lg:opacity-0 lg:group-hover:visible lg:group-hover:opacity-100">
{menu.children?.map((child: any) => (
{menu.children?.map((child) => (
<li class="nav-dropdown-item">
<a
href={slugSelector(child.url, lang)}
href={child.url}
aria-label={child.name}
class={`nav-dropdown-link block ${
pathname === slugSelector(child.url, lang) && "active"
(pathname === `${child.url}/` ||
pathname === child.url) &&
"active"
}`}
>
{child.name}
@@ -94,9 +91,10 @@ if (disabledLanguages.includes(lang)) {
) : (
<li class="nav-item">
<a
href={slugSelector(menu.url, lang)}
href={menu.url}
class={`nav-link block ${
pathname === slugSelector(menu.url, lang) && "active"
(pathname === `${menu.url}/` || pathname === menu.url) &&
"active"
}`}
>
{menu.name}
@@ -106,7 +104,6 @@ if (disabledLanguages.includes(lang)) {
</>
))
}
{/* Navigation button */}
{
navigation_button.enable && (
<li class="mt-4 inline-block lg:hidden">
@@ -114,15 +111,13 @@ if (disabledLanguages.includes(lang)) {
class="btn btn-outline-primary btn-sm"
href={navigation_button.link}
>
{get_started}
{navigation_button.label}
</a>
</li>
)
}
</ul>
<div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0">
{/* Search button */}
{
settings.search && (
<button
@@ -134,20 +129,14 @@ if (disabledLanguages.includes(lang)) {
</button>
)
}
{/* Theme switcher */}
<ThemeSwitcher className="mr-5" />
{/* Language switcher */}
<LanguageSwitcher client:load lang={lang} pathname={pathname} />
{/* Navigation button */}
{
navigation_button.enable && (
<a
class="btn btn-outline-primary btn-sm hidden lg:inline-block"
href={navigation_button.link}
>
{get_started}
{navigation_button.label}
</a>
)
}