worked with lang subdir

This commit is contained in:
Al Murad Uzzaman
2024-05-19 17:40:46 +06:00
parent e2338efc6b
commit 340500efcc
10 changed files with 145 additions and 85 deletions
+25 -10
View File
@@ -1,7 +1,11 @@
---
import config from "@/config/config.json";
import dateFormat from "@/lib/utils/dateFormat";
import { getLangFromUrl, getTranslations } from "@/lib/utils/i18nUtils";
import {
constructUrl,
getLangFromUrl,
getTranslations,
} from "@/lib/utils/i18nUtils";
import { humanize, plainify, slugify } from "@/lib/utils/textConverter";
import type { ContentEntryMap } from "astro:content";
import { FaRegFolder, FaRegUserCircle } from "react-icons/fa";
@@ -9,12 +13,26 @@ import ImageMod from "./ImageMod.astro";
const { summary_length }: { summary_length: number; blog_folder: string } =
config.settings;
const { default_language } = config.settings;
const { default_language, default_language_in_path } = config.settings;
const { trailing_slash } = config.site;
const { data } = Astro.props;
const { title, image, date, author, categories } = data.data;
const lang = getLangFromUrl(Astro.url);
const { read_more } = await getTranslations(lang as keyof ContentEntryMap);
const constructLocalizedUrl = (url: string) => {
if (lang === default_language) {
return constructUrl(
default_language_in_path ? `/${lang}${url}` : url,
lang,
default_language,
trailing_slash
);
} else {
return constructUrl(url, lang, default_language, trailing_slash);
}
};
---
<div class="bg-body dark:bg-darkmode-body">
@@ -31,26 +49,23 @@ const { read_more } = await getTranslations(lang as keyof ContentEntryMap);
)
}
<h4 class="mb-3">
<a href={`${lang === default_language ? "" : `/${lang}`}/${data.slug}`}>
<a href={constructLocalizedUrl(`/${data.slug}`)}>
{title}
</a>
</h4>
<ul class="mb-4">
<li class="mr-4 inline-block">
<a
href={`${lang === default_language ? "" : `/${lang}`}/authors/${slugify(author)}`}
>
<a href={constructLocalizedUrl(`/authors/${slugify(author)}`)}>
<FaRegUserCircle className={"mr-2 -mt-1 inline-block"} />
{humanize(author)}
</a>
</li>
<li class="mr-4 inline-block">
<FaRegFolder className={"mr-2 -mt-1 inline-block"} />
{
categories.map((category: string, index: number) => (
<a
href={`${lang === default_language ? "" : `/${lang}`}/categories/${slugify(category)}`}
>
<a href={constructLocalizedUrl(`/categories/${slugify(category)}`)}>
{humanize(category)}
{index !== categories.length - 1 && ","}
</a>
@@ -62,7 +77,7 @@ const { read_more } = await getTranslations(lang as keyof ContentEntryMap);
<p class="mb-6">{plainify(data.body?.slice(0, Number(summary_length)))}</p>
<a
class="btn btn-outline-primary btn-sm"
href={`${lang === default_language ? "" : `/${lang}`}/${data.slug}`}
href={constructLocalizedUrl(`/${data.slug}`)}
>
{read_more}
</a>
+14 -3
View File
@@ -22,7 +22,7 @@ const {
} = config.site;
const { theme_switcher }: { theme_switcher: boolean } = config.settings;
const { default_language } = config.settings;
const { default_language, default_language_in_path } = config.settings;
const { trailing_slash } = config.site;
let lang = getLangFromUrl(Astro.url);
@@ -34,10 +34,21 @@ if (disabledLanguages.includes(lang)) {
lang = default_language;
}
const url = constructUrl("/", lang, default_language, trailing_slash);
const constructLocalizedUrl = (url: string) => {
if (lang === default_language) {
return constructUrl(
default_language_in_path ? `/${lang}${url}` : url,
lang,
default_language,
trailing_slash
);
} else {
return constructUrl(url, lang, default_language, trailing_slash);
}
};
---
<a href={url} class="navbar-brand inline-block">
<a href={constructLocalizedUrl("/")} class="navbar-brand inline-block">
{
src || srcDarkmode || logo || logo_darkmode ? (
<>