@neosjs/vitepress-theme
Version:
NeosJS VitePress theme
33 lines (32 loc) • 1.25 kB
JavaScript
import { computed } from "vue";
import { ensureStartingSlash } from "../support/utils.mjs";
import { useData } from "./data.mjs";
export function useLangs({
removeCurrent = true,
correspondingLink = false
} = {}) {
const { site, localeIndex, page, theme } = useData();
const currentLang = computed(() => ({
label: site.value.locales[localeIndex.value]?.label,
link: site.value.locales[localeIndex.value]?.link || (localeIndex.value === "root" ? "/" : `/${localeIndex.value}/`)
}));
const localeLinks = computed(
() => Object.entries(site.value.locales).flatMap(
([key, value]) => removeCurrent && currentLang.value.label === value.label ? [] : {
text: value.label,
link: normalizeLink(
value.link || (key === "root" ? "/" : `/${key}/`),
theme.value.i18nRouting !== false && correspondingLink,
page.value.relativePath.slice(currentLang.value.link.length - 1),
!site.value.cleanUrls
)
}
)
);
return { localeLinks, currentLang };
}
function normalizeLink(link, addPath, path, addExt) {
return addPath ? link.replace(/\/$/, "") + ensureStartingSlash(
path.replace(/(^|\/)index\.md$/, "$1").replace(/\.md$/, addExt ? ".html" : "")
) : link;
}