Перейти к основному содержимому

Интернационализация

Весь текст @lh-ui/react берётся из @lh-ui/share/locales; сама библиотека не хранит никаких копий текстов.

Языковые пакеты​

Встроены два языковых пакета, оба можно импортировать напрямую из входа пакета:

import { zhCN, enUS } from '@lh-ui/react'
ПакетЗначение locale
zhCNzh-CN (по умолчанию)
enUSen-US

Переключение через ConfigProvider​

import { LhConfigProvider } from '@lh-ui/react'

export default function App() {
return (
<LhConfigProvider locale="en-US">
<YourApp />
</LhConfigProvider>
)
}

Внутри LhConfigProvider вызывает lhlocale.setLocale(locale) в useEffect; это применяется глобально (включая императивные сервисы вроде message).

Чтение в компонентах​

Используйте useLhLocale(), чтобы получить функцию перевода:

import { useLhLocale } from '@lh-ui/react'

function Demo() {
const { t, tm, getLocale } = useLhLocale()

return (
<>
<p>Текущий язык: {getLocale()}</p>
<p>{t('input.placeholder')}</p>
{/* Второй аргумент t — динамическая интерполяция */}
<p>{t('form.required', 'Это поле обязательно')}</p>
</>
)
}
МетодОписание
t(path, fallbackOrParams?)Перевод; второй аргумент-строка служит запасным значением, объект — интерполируется; без него возвращается сам путь
tm(path)Получить исходное сообщение (записи в форме массива)
getLocale()Текущее значение locale
versionВерсия языкового пакета (используется внутри для запуска перерисовки)

Реактивное обновление​

useLhLocale подписывается на глобальный синглтон locale из share через useSyncExternalStore: любой вызов lhlocale.setLocale() автоматически перерисовывает все потребляющие компоненты.

import { lhlocale } from '@lh-ui/react'

// Императивное переключение (без участия ConfigProvider)
lhlocale.setLocale('en-US')

Расширение языковых пакетов​

Языковой пакет — это обычный объект; его можно расширить самостоятельно и передать в LhConfigProvider. За структурой ключей обращайтесь к zhCN.

SSR

И серверный, и клиентский снимок useSyncExternalStore — это version, поэтому подписка никогда не вызывает рассогласования гидратации на сервере.