@lobehub/chat
Version:
Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.
125 lines (113 loc) • 1.95 kB
text/typescript
import { DEFAULT_LANG } from '@/const/locale';
import resources from './default';
export const locales = [
'ar',
'bg-BG',
'de-DE',
'en-US',
'es-ES',
'fr-FR',
'ja-JP',
'ko-KR',
'pt-BR',
'ru-RU',
'tr-TR',
'zh-CN',
'zh-TW',
'vi-VN',
'fa-IR',
] as const;
export type DefaultResources = typeof resources;
export type NS = keyof DefaultResources;
export type Locales = (typeof locales)[number];
export const normalizeLocale = (locale?: string): string => {
if (!locale) return DEFAULT_LANG;
if (locale.startsWith('ar')) return 'ar';
if (locale.startsWith('fa')) return 'fa-IR';
if (locale.startsWith('cn')) return 'zh-CN';
for (const l of locales) {
if (l.startsWith(locale)) {
return l;
}
}
return DEFAULT_LANG;
};
type LocaleOptions = {
label: string;
value: Locales;
}[];
export const localeOptions: LocaleOptions = [
{
label: 'English',
value: 'en-US',
},
{
label: '简体中文',
value: 'zh-CN',
},
{
label: '繁體中文',
value: 'zh-TW',
},
{
label: '日本語',
value: 'ja-JP',
},
{
label: '한국어',
value: 'ko-KR',
},
{
label: 'Deutsch',
value: 'de-DE',
},
{
label: 'Español',
value: 'es-ES',
},
{
label: 'العربية',
value: 'ar',
},
{
label: 'Français',
value: 'fr-FR',
},
{
label: 'Português',
value: 'pt-BR',
},
{
label: 'Русский',
value: 'ru-RU',
},
{
label: 'Türkçe',
value: 'tr-TR',
},
{
label: 'Polski',
value: 'pl-PL',
},
{
label: 'Nederlands',
value: 'nl-NL',
},
{
label: 'Italiano',
value: 'it-IT',
},
{
label: 'Tiếng Việt',
value: 'vi-VN',
},
{
label: 'Български',
value: 'bg-BG',
},
{
label: 'فارسی',
value: 'fa-IR',
},
] as LocaleOptions;
export const supportLocales: string[] = [...locales, 'en', 'zh'];