Режим локализации преобразования¶
В режиме преобразования 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 | |