Files
pse.dev/app/i18n/settings.ts
2024-07-02 15:38:14 +01:00

113 lines
2.0 KiB
TypeScript

import type { InitOptions } from "i18next"
import { siteConfig } from "@/config/site"
export const fallbackLng = "en"
export const defaultNS = "translation"
export const cookieName = "i18next"
interface Language {
key: string
label: string
enabled?: boolean
}
/**
* List of languages
* @param key - language key
* @param label - language label
* @param enabled - enable or disable language (when disabled, it will not be shown in the language switcher)
*/
export const languageList: Language[] = [
{
key: "en",
label: "English",
enabled: true,
},
{
key: "es",
label: "Español",
enabled: true,
},
{
key: "zh-TW",
label: "正體中文",
enabled: true,
},
{
key: "it",
label: "Italiano",
enabled: true,
},
{
key: "vi",
label: "Tiếng Việt",
enabled: true,
},
{
key: "ko",
label: "한국어",
enabled: false,
},
{
key: "fr",
label: "Français",
enabled: true,
},
{
key: "de",
label: "Deutsch",
enabled: true,
},
{
key: "ja",
label: "日本語",
enabled: true,
},
{
key: "ar",
label: "Arabic",
enabled: false,
},
{
key: "zh-CN",
label: "中文",
enabled: false,
},
]
// list of language keys based on the languageList
const languageKeys = languageList
.map((item) => item.key)
.filter((item) => item !== fallbackLng)
export const languages = [fallbackLng, ...languageKeys] as const
export type LocaleTypes = (typeof languages)[number]
// list of only enabled languages
export const enabledLanguagesItems: { label: string; value: string }[] =
languageList
.filter((item) =>
siteConfig.showOnlyEnabledLanguages ? item.enabled : true
)
.map(({ key: value, label }) => {
return {
label,
value,
}
}) ?? []
export function getOptions(lng = fallbackLng, ns = defaultNS): InitOptions {
return {
debug: false,
supportedLngs: languages,
fallbackLng,
lng,
fallbackNS: defaultNS,
defaultNS,
ns,
}
}