mirror of
https://github.com/privacy-scaling-explorations/pse.dev.git
synced 2026-01-13 16:18:07 -05:00
113 lines
2.0 KiB
TypeScript
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,
|
|
}
|
|
}
|