import { defineMessage } from "react-intl";
import { IntlMessage } from "./types";
export const LOCALE = [
"en",
"es",
"de",
"zh",
"ru",
"fr",
"it",
"nl",
"ja",
"hi",
"pt",
"ko",
"pl",
"tr",
"he",
"hu",
"ar",
] as const;
export type Locale = (typeof LOCALE)[number];
export function isLocale(val: unknown): val is Locale {
if (typeof val !== "string") return false;
return LOCALE.includes(val as any);
}
export const DEFAULT_LOCALE: Locale = "en";
export const KEEP_EN_LOCALE = "en-keep";
export const OTHER_SETTINGS_LOCALE_KEY = "i18n";
export const OTHER_SETTINGS_REPLY_ENGLISH_KEY = "llm_reply_english";
export const LOCALIZATIONS: {
[key in Locale]: {
name: string;
flag: string;
native: string;
trans: IntlMessage;
};
} = {
en: {
name: "English",
flag: "🇺🇸",
native: "English",
trans: defineMessage({
id: "i18n.localization.lang.english",
defaultMessage: "English",
}),
},
de: {
name: "German",
flag: "🇩🇪",
native: "Deutsch",
trans: defineMessage({
id: "i18n.localization.lang.german",
defaultMessage: "German",
}),
},
es: {
name: "Spanish",
flag: "🇪🇸",
native: "Español",
trans: defineMessage({
id: "i18n.localization.lang.spanish",
defaultMessage: "Spanish",
}),
},
fr: {
name: "French",
flag: "🇫🇷",
native: "Français",
trans: defineMessage({
id: "i18n.localization.lang.french",
defaultMessage: "French",
}),
},
it: {
name: "Italian",
flag: "🇮🇹",
native: "Italiano",
trans: defineMessage({
id: "i18n.localization.lang.italian",
defaultMessage: "Italian",
}),
},
nl: {
name: "Dutch",
flag: "🇳🇱",
native: "Nederlands",
trans: defineMessage({
id: "i18n.localization.lang.dutch",
defaultMessage: "Dutch",
}),
},
pl: {
name: "Polish",
flag: "🇵🇱",
native: "Polski",
trans: defineMessage({
id: "i18n.localization.lang.polish",
defaultMessage: "Polish",
}),
},
hu: {
name: "Hungarian",
flag: "🇭🇺",
native: "Magyar",
trans: defineMessage({
id: "i18n.localization.lang.hungarian",
defaultMessage: "Hungarian",
}),
},
ar: {
name: "Arabic",
flag: "🇪🇬",
native: "العربية",
trans: defineMessage({
id: "i18n.localization.lang.arabic",
defaultMessage: "Arabic",
}),
},
pt: {
name: "Portuguese",
flag: "🇵🇹",
native: "Português",
trans: defineMessage({
id: "i18n.localization.lang.portuguese",
defaultMessage: "Portuguese",
}),
},
tr: {
name: "Turkish",
flag: "🇹🇷",
native: "Türkçe",
trans: defineMessage({
id: "i18n.localization.lang.turkish",
defaultMessage: "Turkish",
}),
},
he: {
name: "Hebrew",
flag: "🇮🇱",
native: "עִבְרִית",
trans: defineMessage({
id: "i18n.localization.lang.hebrew",
defaultMessage: "Hebrew",
}),
},
zh: {
name: "Chinese",
flag: "🇨🇳",
native: "中文",
trans: defineMessage({
id: "i18n.localization.lang.chinese",
defaultMessage: "Chinese",
}),
},
ja: {
name: "Japanese",
flag: "🇯🇵",
native: "日本語",
trans: defineMessage({
id: "i18n.localization.lang.japanese",
defaultMessage: "Japanese",
}),
},
hi: {
name: "Hindi",
flag: "🇮🇳",
native: "हिन्दी",
trans: defineMessage({
id: "i18n.localization.lang.hindi",
defaultMessage: "Hindi",
}),
},
ko: {
name: "Korean",
flag: "🇰🇷",
native: "한국어",
trans: defineMessage({
id: "i18n.localization.lang.korean",
defaultMessage: "Korean",
}),
},
ru: {
name: "Russian",
flag: "🇷🇺",
native: "Русский",
trans: defineMessage({
id: "i18n.localization.lang.russian",
defaultMessage: "Russian",
}),
},
} as const;