Frontend: - replace the i18next stack with a small typed i18n module - hero clouds removed, llms.txt, HUD widget ARIA fixes and tests Mod: - TargetESP constellation mode; tracker and colors extracted - JumpCircles: 7 new shapes, shared animation and color pipeline - KillEffect blood mode with Burst/Fountain/Ring/Spray styles - main menu: menuLayout setting (orbs/hero) and hero screen - Simple Voice Chat soft integration: VoiceChat module and HUD panel - renderer/quick: static Draw facade with glass outline - vanilla chat: Baritone-style autocomplete popup for the % command prefix
61 lines
2.2 KiB
TypeScript
61 lines
2.2 KiB
TypeScript
import { I18n, type Lang } from '@shared/i18n/core'
|
|
import { setGlobalI18n } from '@shared/i18n/react'
|
|
import { accountEn } from '@features/account/i18n/en'
|
|
import { accountRu } from '@features/account/i18n/ru'
|
|
import { authEn } from '@features/auth/i18n/en'
|
|
import { authRu } from '@features/auth/i18n/ru'
|
|
import { clickguiEn } from '@features/clickgui/i18n/en'
|
|
import { configsEn } from '@features/configs/i18n/en'
|
|
import { clickguiRu } from '@features/clickgui/i18n/ru'
|
|
import { configsRu } from '@features/configs/i18n/ru'
|
|
import { deviceLinkEn } from '@features/device-link/i18n/en'
|
|
import { deviceLinkRu } from '@features/device-link/i18n/ru'
|
|
import { downloadEn } from '@features/download/i18n/en'
|
|
import { profileEn } from '@features/profile/i18n/en'
|
|
import { profileRu } from '@features/profile/i18n/ru'
|
|
import { showcaseEn } from '@features/showcase/i18n/en'
|
|
import { downloadRu } from '@features/download/i18n/ru'
|
|
import { showcaseRu } from '@features/showcase/i18n/ru'
|
|
import { landingEn } from '@features/landing/i18n/en'
|
|
import { landingRu } from '@features/landing/i18n/ru'
|
|
import { themesEn } from '@features/themes/i18n/en'
|
|
import { themesRu } from '@features/themes/i18n/ru'
|
|
import { commonEn } from '@shared/i18n/common.en'
|
|
import { commonRu } from '@shared/i18n/common.ru'
|
|
|
|
/** Creates an i18n instance and makes it the global one. Each call is independent, so tests can run in isolation. */
|
|
export function initI18n(lng?: Lang): I18n {
|
|
const instance = new I18n(
|
|
{
|
|
ru: {
|
|
common: commonRu,
|
|
auth: authRu,
|
|
landing: landingRu,
|
|
themes: themesRu,
|
|
clickgui: clickguiRu,
|
|
download: downloadRu,
|
|
deviceLink: deviceLinkRu,
|
|
account: accountRu,
|
|
configs: configsRu,
|
|
showcase: showcaseRu,
|
|
profile: profileRu,
|
|
},
|
|
en: {
|
|
common: commonEn,
|
|
auth: authEn,
|
|
landing: landingEn,
|
|
themes: themesEn,
|
|
clickgui: clickguiEn,
|
|
download: downloadEn,
|
|
deviceLink: deviceLinkEn,
|
|
account: accountEn,
|
|
configs: configsEn,
|
|
showcase: showcaseEn,
|
|
profile: profileEn,
|
|
},
|
|
},
|
|
lng,
|
|
)
|
|
setGlobalI18n(instance)
|
|
return instance
|
|
}
|