Режим локализации преобразования¶
В режиме преобразования Lit Localize для каждой локали создается отдельная папка. Каждая папка содержит полную автономную сборку вашего приложения в этой локали, с удаленным кодом @lit/localize
:
- Вызовы
msg
заменяются на статическую локализованную версию строки или шаблона в каждой локали. - Теги
str
удаляются. - Удалены импорты
@lit/localize
. - Шаблоны оптимизированы для удаления ненужных выражений путем складывания их в родительские шаблоны, где это возможно.
Например, для исходного текста:
1 2 3 4 5 6 |
|
Будут созданы следующие файлы:
1 2 3 4 5 6 7 8 9 |
|
Настройка режима преобразования¶
В конфигурации lit-localize.json
установите для свойства mode
значение transform
, а для свойства output.outputDir
- место, где будут создаваться локализованные папки приложений. Дополнительные сведения см. в разделе Настройки режима трансформации.
В проекте на JavaScript или TypeScript опционально вызовите configureTransformLocalization
, передав объект со следующим свойством:
sourceLocale: string
: Локаль, в которой пишутся исходные шаблоны. Указывается в виде кода локали (например,"en"
).
configureTransformLocalization
возвращает объект со следующим свойством:
getLocale
: Функция, возвращающая код активной локали.
Например:
1 2 3 4 5 6 7 |
|
Установка начальной локали¶
В режиме преобразования активная локаль определяется загружаемым пакетом JavaScript. Как определить, какой пакет загружать при загрузке страницы, зависит от вас.
Например, если локаль вашего приложения отражается в пути URL, вы можете включить в HTML-файл встроенный скрипт, который проверяет URL и вставляет соответствующий тег <script>
:
Всегда проверяйте коды локалей при динамическом выборе имени скрипта. Приведенный ниже пример безопасен, поскольку скрипт может быть загружен только в том случае, если он соответствует одному из известных нам кодов локали, но если бы наша логика подбора была менее точной, это могло бы привести к ошибкам или атакам, внедряющим небезопасный JavaScript.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Для повышения производительности вы можете статически отобразить соответствующий тег скрипта в HTML-файле на сервере. Это позволит браузеру начать загрузку вашего скрипта как можно раньше.
Переключение локалей¶
В режиме преобразования функция setLocale
недоступна. Вместо этого перезагрузите страницу так, чтобы при следующей загрузке был выбран другой набор локалей.
Например, этот пользовательский элемент locale-picker
загружает новый URL при выборе новой локали из выпадающего списка:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
Интеграция с Rollup¶
Если вы используете Rollup и предпочитаете интегрированное решение вместо отдельного запуска команды lit-localize build
, импортируйте функцию localeTransformers
из @lit/localize-tools/lib/rollup.js
в ваш конфиг Rollup.
Эта функция генерирует массив объектов {locale, transformer}
, которые вы можете использовать в сочетании с опцией transformers
из @rollup/plugin-typescript
для генерации отдельного пакета для каждой локали.
Если вы пишете на JavaScript, не беспокойтесь, что здесь используется компилятор TypeScript. Lit Localize зависит от компилятора TypeScript для разбора, анализа и преобразования вашего исходного кода, но он работает и с обычными JavaScript-файлами!
Следующий файл rollup.config.mjs
генерирует минифицированный бандл для каждой из ваших локалей в директории ./bundled/<locale>/
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|