Перевод HTML и JavaScript с помощью сети доставки содержимого Weblate¶
Начиная с Weblate 4.2, можно экспортировать локализацию JavaScript и HTML в CDN с помощью надстройки CDN локализации JavaScript. Для публикации файлов переводов без загрузчика JavaScript используйте CDN файлов перевода.
Примечание
Эта функция настраивается на Hosted Weblate. В вашей установке она требует дополнительной настройки; см. LOCALIZE_CDN_URL и LOCALIZE_CDN_PATH. Также см. CDN локализации.
После установки в ваш компонент надстройка локализации JavaScript будет отправлять закоммиченные переводы (см. Отложенные коммиты) в CDN, и их можно будет использовать для локализации ваших веб-страниц.
Создание компонента¶
Сначала вам нужно будет создать одноязычный компонент, который будет содержать ваши строки; общие инструкции по этому поводу смотрите в главе «Добавление проектов и компонентов перевода».
Если у вас есть существующий репозиторий для начала (например, тот, который содержит файлы HTML), создайте в репозитории пустой файл JSON для исходного языка (см. Исходный язык), например locales/en.json. Содержимое должно быть {}, чтобы указать пустой объект. Как только вы это сделаете, репозиторий можно будет импортировать в Weblate и начать с настройки надстройки.
Подсказка
Если у вас уже есть существующий перевод, то вы можете поместить его в JSON-файлы для соответствующих языков, которые будут использоваться в Weblate.
Если вы из тех, кто не хочет делать всё это с существующим репозиторием (или если у вас его нет), то при создании компонента выберите Начать с нуля, а затем JSON-файл в качестве формата файла (на самом деле на этом этапе можно выбрать любой одноязычный формат).
Настройка дополнения Weblate CDN¶
Дополнение CDN локализации JavaScript предоставляет несколько вариантов конфигурации.
- Порог перевода
Переводы, достигшие данного порога будут включатьcя в CDN.
- Селектор CSS
Задаёт, какие строки из HTML-документов являются переводимыми, смотреть раздел Извлечение строк для Weblate CDN и Локализация HTML с помощью Weblate CDN.
- Имя языковой куки
Имя файла куки, содержащего выбранный пользователем язык. Используется во фрагменте JavaScript для Локализация HTML с помощью Weblate CDN.
- Извлечение строк из HTML-файлов
Список файлов в репозитории или URL-адреса, в которых Weblate будет искать переводимые строки, смотреть раздел Извлечение строк для Weblate CDN.
Извлечение строк для Weblate CDN¶
Строки перевода должны присутствовать в Weblate. Вы можете управлять ими вручную, использовать API для их создания или перечислить файлы или URL-адреса с помощью Извлечение строк из HTML-файлов, и Weblate извлечёт их автоматически. Файлы должны присутствовать в репозитории или содержать удалённые URL-адреса, которые будут регулярно загружаться и анализироваться Weblate. Удалённые URL-адреса ограничены ALLOWED_ASSET_DOMAINS, включая любые цели перенаправления.
При значении параметра Селектор CSS по умолчанию извлекаются элементы с CSS-классом l10n, к примеру, из следующего фрагмента будут извлечены две строки:
<section class="content">
<div class="row">
<div class="wrap">
<h1 class="section-title min-m l10n">Maintenance in progress</h1>
<div class="page-desc">
<p class="l10n">We're sorry, but this site is currently down for maintenance.</p>
</div>
</div>
</div>
</section>
Если вы не хотите изменять существующий код, вы также можете использовать * в качестве селектора для обработки всех элементов.
Примечание
Сейчас извлекается только текст элементов. Это дополнение не поддерживает локализацию атрибутов элементов или элементов с дочерними элементами.
Локализация HTML с помощью Weblate CDN¶
Для локализации HTML-документа необходимо загрузить скрипт weblate.js:
<script src="https://weblate-cdn.com/a5ba5dc29f39498aa734528a54b50d0a/weblate.js" async></script>
При загрузке автоматически будут найдены все соответствующие переводимые элементы (на основе настройки из параметра Селектор CSS) и их текст будет заменён переводом.
Язык пользователя определяется из настроенной куки, а при её отсутствии используется один из предпочтительных языков браузера пользователя.
Можно использовать параметр Имя языковой куки для интеграции с другими приложениями (например, выберите django_language при использовании Django).
Локализация JavaScript¶
Переводы на отдельные языки представляются в виде двуязычных файлов JSON в сети доставки содержимого. Чтобы их получить, вы можете использовать следующий код:
fetch(("https://weblate-cdn.com/a5ba5dc29f39498aa734528a54b50d0a/cs.json")
.then(response => response.json())
.then(data => console.log(data));
В этом случае придётся собственно реализовать саму логику локализации.
Публикация файлов переводов¶
Надстройка CDN файлов перевода публикует файлы переводов непосредственно в CDN. Она не генерирует загрузчик JavaScript и не преобразует переводы в двуязычный JSON.
Однофайловые переводы именуются с использованием кода языка и исходного расширения файла, например cs.json или de.po. Многофайловые переводы обслуживаются в подкаталоге кода языка с использованием путей относительно каталога переводов. Одноязычные компоненты включают файл исходного языка, в то время как двуязычные компоненты публикуют только файлы целевого языка. См. CDN локализации для настройки безопасного сервера.