stoat-for-desktop/components/i18n/Languages.ts

336 lines
8.2 KiB
TypeScript

export enum Language {
// English
ENGLISH = "en",
ENGLISH_STUPEFIED = "en_US",
// Foreign Languages
ARABIC = "ar",
ASSAMESE = "as",
AZERBAIJANI = "az",
BELARUSIAN = "be",
BULGARIAN = "bg",
BENGALI = "bn",
BRETON = "br",
CATALONIAN = "ca",
CEBUANO = "ceb",
CENTRAL_KURDISH = "ckb",
CZECH = "cs",
DANISH = "da",
GERMAN = "de",
GREEK = "el",
SPANISH = "es",
SPANISH_LATIN_AMERICA = "es_419",
ESTONIAN = "et",
FINNISH = "fi",
FILIPINO = "fil",
FRENCH = "fr",
IRISH = "ga",
HINDI = "hi",
CROATIAN = "hr",
HUNGARIAN = "hu",
ARMENIAN = "hy",
INDONESIAN = "id",
ICELANDIC = "is",
ITALIAN = "it",
JAPANESE = "ja",
KOREAN = "ko",
LUXEMBOURGISH = "lb",
LITHUANIAN = "lt",
MACEDONIAN = "mk",
MALAY = "ms",
NORWEGIAN_BOKMAL = "nb_NO",
DUTCH = "nl",
PERSIAN = "fa",
POLISH = "pl",
PORTUGUESE_BRAZIL = "pt_BR",
PORTUGUESE_PORTUGAL = "pt_PT",
ROMANIAN = "ro",
RUSSIAN = "ru",
SLOVAK = "sk",
SLOVENIAN = "sl",
ALBANIAN = "sq",
SERBIAN = "sr",
SINHALESE = "si",
SWEDISH = "sv",
TAMIL = "ta",
THAI = "th",
TURKISH = "tr",
UKRANIAN = "uk",
URDU = "ur",
VENETIAN = "vec",
VIETNAMESE = "vi",
CHINESE_SIMPLIFIED = "zh_Hans",
CHINESE_TRADITIONAL = "zh_Hant",
LATVIAN = "lv",
// Constructed Languages
TOKIPONA = "tokipona",
ESPERANTO = "esperanto",
// Joke Languages
OWO = "owo",
PIRATE = "pr",
BOTTOM = "bottom",
LEET = "leet",
PIGLATIN = "piglatin",
ENCHANTMENT_TABLE = "enchantment",
// Test Languages
DEV = "dev",
}
export interface LocaleOptions {
/**
* Date format
*
* Example values: DD/MM/YYYY, MM/DD/YYYY, YYYY/MM/DD
*/
dateFormat?: string;
/**
* Time format
*
* Example values: h:mm A, hh:mm
*/
timeFormat?: string;
/**
* Whether the UI should be right-to-left
*/
rtl?: boolean;
}
export interface LanguageEntry {
/**
* What should appear in the UI as the name for the language
*/
display: string;
/**
* What emoji should be displayed
*/
emoji: string;
/**
* Filename of the related language file
*/
i18n: string;
/**
* Dayjs locale file if different
*/
dayjs?: string;
/**
* Locale options
*/
localeOptions?: Pick<LocaleOptions, "rtl">;
/**
* Whether the language is a conlang (constructed language) or a joke
*/
cat?: "const" | "alt";
/**
* Whether the language has a maintainer
* (patched in)
*/
verified?: boolean;
/**
* Whether the language is incomplete
* (patched in)
*/
incomplete?: boolean;
}
export const Languages: { [key in Language]: LanguageEntry } = {
// English and "English"
en: {
display: "English (Traditional)",
emoji: "🇬🇧",
i18n: "en",
dayjs: "en-gb",
},
en_US: {
display: "English (Simplified)",
emoji: "🇺🇸",
i18n: "en_US",
dayjs: "en",
},
// Foreign languages
ar: {
display: "عربي",
emoji: "🇸🇦",
i18n: "ar",
localeOptions: { rtl: true },
verified: true,
},
as: {
display: "অসমীয়া",
emoji: "🇮🇳",
i18n: "as",
},
az: { display: "Azərbaycan dili", emoji: "🇦🇿", i18n: "az" },
be: { display: "Беларуская", emoji: "🇧🇾", i18n: "be" },
bg: { display: "Български", emoji: "🇧🇬", i18n: "bg" },
bn: { display: "বাংলা", emoji: "🇧🇩", i18n: "bn" },
br: { display: "Brezhoneg", emoji: "br", i18n: "br", verified: true },
ca: { display: "Català", emoji: "🇪🇸", i18n: "ca" },
ceb: { display: "Bisaya", emoji: "🇵🇭", i18n: "ceb" },
ckb: {
display: "کوردی",
emoji: "krd",
i18n: "ckb",
dayjs: "ku",
},
cs: { display: "Čeština", emoji: "🇨🇿", i18n: "cs" },
da: { display: "Dansk", emoji: "🇩🇰", i18n: "da" },
de: { display: "Deutsch", emoji: "🇩🇪", i18n: "de", verified: true },
el: { display: "Ελληνικά", emoji: "🇬🇷", i18n: "el" },
es: { display: "Español", emoji: "🇪🇸", i18n: "es" },
es_419: {
display: "Español (América Latina)",
emoji: "🇪🇸",
i18n: "es_419",
dayjs: "es",
},
et: { display: "eesti", emoji: "🇪🇪", i18n: "et", verified: true },
fi: { display: "suomi", emoji: "🇫🇮", i18n: "fi" },
fil: {
display: "Filipino",
emoji: "🇵🇭",
i18n: "fil",
dayjs: "tl-ph",
},
fr: { display: "Français", emoji: "🇫🇷", i18n: "fr", verified: true },
ga: { display: "Gaeilge", emoji: "🇮🇪", i18n: "ga" },
hi: { display: "हिन्दी", emoji: "🇮🇳", i18n: "hi" },
hr: { display: "Hrvatski", emoji: "🇭🇷", i18n: "hr" },
hu: { display: "Magyar", emoji: "🇭🇺", i18n: "hu", verified: true },
hy: { display: "հայերեն", emoji: "🇦🇲", i18n: "hy" },
id: { display: "Bahasa Indonesia", emoji: "🇮🇩", i18n: "id" },
is: { display: "Íslenska", emoji: "🇮🇸", i18n: "is" },
it: { display: "Italiano", emoji: "🇮🇹", i18n: "it" },
ja: { display: "日本語", emoji: "🇯🇵", i18n: "ja" },
ko: { display: "한국어", emoji: "🇰🇷", i18n: "ko" },
lb: { display: "Lëtzebuergesch", emoji: "🇱🇺", i18n: "lb" },
lt: { display: "Lietuvių", emoji: "🇱🇹", i18n: "lt" },
lv: { display: "Latviešu", emoji: "🇱🇻", i18n: "lv", verified: true },
mk: { display: "Македонски", emoji: "🇲🇰", i18n: "mk" },
ms: { display: "Bahasa Melayu", emoji: "🇲🇾", i18n: "ms" },
nb_NO: { display: "Norsk bokmål", emoji: "🇳🇴", i18n: "nb_NO", dayjs: "nb" },
nl: { display: "Nederlands", emoji: "🇳🇱", i18n: "nl" },
fa: { display: "فارسی", emoji: "🇮🇷", i18n: "fa", verified: true },
pl: { display: "Polski", emoji: "🇵🇱", i18n: "pl" },
pt_BR: {
display: "Português (do Brasil)",
emoji: "🇧🇷",
i18n: "pt_BR",
dayjs: "pt-br",
},
pt_PT: {
display: "Português (Portugal)",
emoji: "🇵🇹",
i18n: "pt_PT",
dayjs: "pt",
},
ro: { display: "Română", emoji: "🇷🇴", i18n: "ro" },
ru: { display: "Русский", emoji: "🇷🇺", i18n: "ru", verified: true },
sk: { display: "Slovensky", emoji: "🇸🇰", i18n: "sk" },
sl: { display: "Slovenščina", emoji: "🇸🇮", i18n: "sl" },
sq: { display: "Shqip", emoji: "🇦🇱", i18n: "sq" },
sr: { display: "Српски", emoji: "🇷🇸", i18n: "sr" },
si: { display: "සිංහල", emoji: "🇱🇰", i18n: "si" },
sv: { display: "Svenska", emoji: "🇸🇪", i18n: "sv", verified: true },
ta: { display: "தமிழ்", emoji: "🇮🇳", i18n: "ta" },
th: { display: "ไทย", emoji: "🇹🇭", i18n: "th" },
tr: { display: "Türkçe", emoji: "🇹🇷", i18n: "tr" },
ur: { display: "اردو", emoji: "🇵🇰", i18n: "ur" },
uk: { display: "Українська", emoji: "🇺🇦", i18n: "uk", verified: true },
vec: { display: "Vèneto", emoji: "vec", i18n: "vec", dayjs: "en-gb" },
vi: { display: "Tiếng Việt", emoji: "🇻🇳", i18n: "vi" },
zh_Hans: {
display: "简体中文",
emoji: "🇨🇳",
i18n: "zh_Hans",
dayjs: "zh",
},
zh_Hant: {
display: "繁體中文",
emoji: "🇹🇼",
i18n: "zh_Hant",
dayjs: "zh",
},
// Constructed languages
tokipona: {
display: "Toki Pona",
emoji: "🙂",
i18n: "tokipona",
dayjs: "en-gb",
cat: "const",
},
esperanto: {
display: "Esperanto",
emoji: "EO",
i18n: "eo",
dayjs: "eo",
cat: "const",
},
// Joke languages
owo: {
display: "OwO",
emoji: "😸",
i18n: "owo",
dayjs: "en-gb",
cat: "alt",
},
pr: {
display: "Pirate",
emoji: "🏴‍☠️",
i18n: "pr",
dayjs: "en-gb",
cat: "alt",
},
bottom: {
display: "Bottom",
emoji: "🥺",
i18n: "bottom",
dayjs: "en-gb",
cat: "alt",
},
leet: {
display: "1337",
emoji: "💾",
i18n: "leet",
dayjs: "en-gb",
cat: "alt",
},
enchantment: {
display: "Enchantment Table",
emoji: "🪄",
i18n: "enchantment",
dayjs: "en-gb",
cat: "alt",
},
piglatin: {
display: "Pig Latin",
emoji: "🐖",
i18n: "piglatin",
dayjs: "en-gb",
cat: "alt",
},
// Test Language
dev: {
display: "Developer Test",
emoji: "🦝",
i18n: "dev",
dayjs: "en-gb",
cat: "alt",
},
};