en — это исходная локаль, с которой вы переводите, а
любая непереведенная локаль будет использовать ее по умолчанию.
В вашем приложении есть два типа переводимого текста, и оба проходят через один и тот же
каталог locales/:
- Метки манифеста — имена объектов и полей, заголовки представлений, пункты меню и другие строки, объявленные в метаданных вашего приложения.
- Строки фронт-компонента — пользовательский интерфейс для отображения React фронтальных компонентов.
Маркировка переднего компонента
Импортировать помощников перевода изtwenty-sdk/front-component:
Когда использовать, какой
Trans— статический текст в JSX. Используйте пропсыmessageиvaluesдля интерполяции, как вTrans message="Hi {name}" values={{ name }}; интерполяция напрямую в дочерних элементах не может быть статически извлечена.useTranslate().t— динамические строки внутри компонента. Повторно отображается, когда пользователь переключает язык. Предпочитать это внутри рендера.t(...)(импортировано напрямую) — перевод можно использовать где, включая обработчики событий, вспомогательные и область модулей — не только внутри рендера.msg(...)— ленивый дескриптор строк, объявленный данными (константы, config). Разрешите позже с помощьюt(descriptor).
Контекст
Передайтеcontext в недвусмысленный перевод идентичных исходных строк, которые переводят
по-разному:
Извлечение и перевод
Выполнить команду извлечения из вашей папки приложения:t()/msg()/Trans
из исходного кода вашего фронт‑компонента в locales/\<locale>.json, где ключом
является исходная строка. Заполните перевод:
{name}, заменяются во время выполнения — сохраняйте их в переводе
. Любая оставленная строка пуста возвращается к исходному тексту.
Как он запускается
twenty dev:build компилирует каталоги и предоставляет нужный язык для
текущего пользователя: метки манифеста разрешаются на стороне сервера, а каталоги фронтенд-компонентов
встраиваются в каждый бандл компонента. Во время выполнения компонент читает локаль
из контекста выполнения (текущий язык узла) и разрешает
каждую строку в соответствии со своим каталогом, возвращение к источнику, когда перевод
отсутствует. Переключение языка в хосте повторно рендерит строки Trans и
useTranslate().t в реальном времени.
Поскольку каталоги скомпилированы в момент сборки, обновление перевода означает
повторное выполнение twenty dev:build (и переразвертывание), то же самое, что и любые другие изменения.
Переводы скомпилированы в
twenty dev:build (и twenty apply). В непрерывном часе
показаны исходные строки, поэтому тестовый локализованный вывод
с одноразовой сборкой.Trans могут занимать несколько строк — пробельные символы схлопываются
так же, как их схлопывает JSX, поэтому оба этих варианта извлекаются в ключ Welcome back: