125 lines
3.8 KiB
TypeScript
125 lines
3.8 KiB
TypeScript
import i18n from 'i18next';
|
|
import { initReactI18next } from 'react-i18next';
|
|
import {
|
|
SUPPORTED_LANGUAGE_CODES,
|
|
resolveSupportedLanguage,
|
|
type LanguageCode,
|
|
} from '../../shared/language';
|
|
|
|
// EN
|
|
import enCommon from './locales/en/common.json';
|
|
import enSettings from './locales/en/settings.json';
|
|
import enDashboard from './locales/en/dashboard.json';
|
|
import enChat from './locales/en/chat.json';
|
|
import enChannels from './locales/en/channels.json';
|
|
import enAgents from './locales/en/agents.json';
|
|
import enSkills from './locales/en/skills.json';
|
|
import enCron from './locales/en/cron.json';
|
|
import enSetup from './locales/en/setup.json';
|
|
|
|
// ZH
|
|
import zhCommon from './locales/zh/common.json';
|
|
import zhSettings from './locales/zh/settings.json';
|
|
import zhDashboard from './locales/zh/dashboard.json';
|
|
import zhChat from './locales/zh/chat.json';
|
|
import zhChannels from './locales/zh/channels.json';
|
|
import zhAgents from './locales/zh/agents.json';
|
|
import zhSkills from './locales/zh/skills.json';
|
|
import zhCron from './locales/zh/cron.json';
|
|
import zhSetup from './locales/zh/setup.json';
|
|
|
|
// JA
|
|
import jaCommon from './locales/ja/common.json';
|
|
import jaSettings from './locales/ja/settings.json';
|
|
import jaDashboard from './locales/ja/dashboard.json';
|
|
import jaChat from './locales/ja/chat.json';
|
|
import jaChannels from './locales/ja/channels.json';
|
|
import jaAgents from './locales/ja/agents.json';
|
|
import jaSkills from './locales/ja/skills.json';
|
|
import jaCron from './locales/ja/cron.json';
|
|
import jaSetup from './locales/ja/setup.json';
|
|
|
|
// RU
|
|
import ruCommon from './locales/ru/common.json';
|
|
import ruSettings from './locales/ru/settings.json';
|
|
import ruDashboard from './locales/ru/dashboard.json';
|
|
import ruChat from './locales/ru/chat.json';
|
|
import ruChannels from './locales/ru/channels.json';
|
|
import ruAgents from './locales/ru/agents.json';
|
|
import ruSkills from './locales/ru/skills.json';
|
|
import ruCron from './locales/ru/cron.json';
|
|
import ruSetup from './locales/ru/setup.json';
|
|
|
|
export const SUPPORTED_LANGUAGES = [
|
|
{ code: 'en', label: 'English' },
|
|
{ code: 'zh', label: '中文' },
|
|
{ code: 'ja', label: '日本語' },
|
|
{ code: 'ru', label: 'Русский' },
|
|
] as const satisfies ReadonlyArray<{ code: LanguageCode; label: string }>;
|
|
|
|
const resources = {
|
|
en: {
|
|
common: enCommon,
|
|
settings: enSettings,
|
|
dashboard: enDashboard,
|
|
chat: enChat,
|
|
channels: enChannels,
|
|
agents: enAgents,
|
|
skills: enSkills,
|
|
cron: enCron,
|
|
setup: enSetup,
|
|
},
|
|
zh: {
|
|
common: zhCommon,
|
|
settings: zhSettings,
|
|
dashboard: zhDashboard,
|
|
chat: zhChat,
|
|
channels: zhChannels,
|
|
agents: zhAgents,
|
|
skills: zhSkills,
|
|
cron: zhCron,
|
|
setup: zhSetup,
|
|
},
|
|
ja: {
|
|
common: jaCommon,
|
|
settings: jaSettings,
|
|
dashboard: jaDashboard,
|
|
chat: jaChat,
|
|
channels: jaChannels,
|
|
agents: jaAgents,
|
|
skills: jaSkills,
|
|
cron: jaCron,
|
|
setup: jaSetup,
|
|
},
|
|
ru: {
|
|
common: ruCommon,
|
|
settings: ruSettings,
|
|
dashboard: ruDashboard,
|
|
chat: ruChat,
|
|
channels: ruChannels,
|
|
agents: ruAgents,
|
|
skills: ruSkills,
|
|
cron: ruCron,
|
|
setup: ruSetup,
|
|
},
|
|
};
|
|
|
|
i18n
|
|
.use(initReactI18next)
|
|
.init({
|
|
resources,
|
|
lng: resolveSupportedLanguage(typeof navigator !== 'undefined' ? navigator.language : undefined),
|
|
fallbackLng: 'en',
|
|
supportedLngs: [...SUPPORTED_LANGUAGE_CODES],
|
|
defaultNS: 'common',
|
|
ns: ['common', 'settings', 'dashboard', 'chat', 'channels', 'agents', 'skills', 'cron', 'setup'],
|
|
interpolation: {
|
|
escapeValue: false, // React already escapes
|
|
},
|
|
react: {
|
|
useSuspense: false,
|
|
},
|
|
});
|
|
|
|
export default i18n;
|