Files
Trilium/packages/commons/src/lib/i18n.ts

99 lines
2.6 KiB
TypeScript
Raw Normal View History

export interface Locale {
id: string;
name: string;
/** `true` if the language is a right-to-left one, or `false` if it's left-to-right. */
rtl?: boolean;
/** `true` if the language is not supported by the application as a display language, but it is selectable by the user for the content. */
contentOnly?: boolean;
/** The value to pass to `--lang` for the Electron instance in order to set it as a locale. Not setting it will hide it from the list of supported locales. */
electronLocale?: "en" | "de" | "es" | "fr" | "zh_CN" | "zh_TW" | "ro" | "af" | "am" | "ar" | "bg" | "bn" | "ca" | "cs" | "da" | "el" | "en-GB" | "es-419" | "et" | "fa" | "fi" | "fil" | "gu" | "he" | "hi" | "hr" | "hu" | "id" | "it" | "ja" | "kn" | "ko" | "lt" | "lv" | "ml" | "mr" | "ms" | "nb" | "nl" | "pl" | "pt-BR" | "pt-PT" | "ru" | "sk" | "sl" | "sr" | "sv" | "sw" | "ta" | "te" | "th" | "tr" | "uk" | "ur" | "vi";
2025-04-28 10:56:20 +03:00
}
const UNSORTED_LOCALES: Locale[] = [
2025-04-28 10:56:20 +03:00
{
id: "en",
name: "English",
electronLocale: "en"
2025-04-28 10:56:20 +03:00
},
{
id: "de",
name: "Deutsch",
electronLocale: "de"
},
{
id: "es",
name: "Español",
electronLocale: "es"
},
{
id: "fr",
name: "Français",
electronLocale: "fr"
},
{
id: "cn",
name: "简体中文",
electronLocale: "zh_CN"
},
{
id: "tw",
name: "繁體中文",
electronLocale: "zh_TW"
},
{
id: "ro",
name: "Română",
electronLocale: "ro"
},
2025-08-07 23:44:11 +03:00
{
id: "ru",
name: "Русский",
electronLocale: "ru"
},
2025-08-24 10:53:21 +03:00
{
id: "uk",
name: "Українська",
electronLocale: "uk"
},
2025-08-14 14:51:53 +03:00
{
id: "ja",
name: "日本語",
electronLocale: "ja"
},
2025-04-28 10:56:20 +03:00
/*
* Right to left languages
*
* Currently they are only for setting the language of text notes.
*/
{ // Arabic
id: "ar",
name: "اَلْعَرَبِيَّةُ",
rtl: true,
contentOnly: true
},
{ // Hebrew
id: "he",
name: "עברית",
rtl: true,
contentOnly: true
},
{ // Kurdish
id: "ku",
name: "کوردی",
rtl: true,
contentOnly: true
},
{ // Persian
id: "fa",
name: "فارسی",
rtl: true,
contentOnly: true
}
] as const;
export const LOCALES: Locale[] = Array.from(UNSORTED_LOCALES)
.sort((a, b) => a.name.localeCompare(b.name));
export type LOCALE_IDS = typeof UNSORTED_LOCALES[number]["id"];