Upgrade to Pro — share decks privately, control downloads, hide ads and more …

One l10n story

One l10n story

A short talk about working experience in Django website localization.

AlexDobrushskiy

November 12, 2014
Tweet

Other Decks in Programming

Transcript

  1. С чего все начиналось • Много текстового контента • Все

    реализовано на шаблонах • Сайт переведен на 23 языка • Для одной страницы – 23 шаблона(!) • Новости тоже были в виде hardcoded-шаблонов
  2. Не говоря о техническом несовершенстве, имелись следующие минусы • Контент-менеджеру

    (КМ) нужно ориентироваться во множестве шаблонов • КМ должен знать синтаксис Django-шаблонов, а также HTML, CSS и JS, чтобы ничего не сломать • КМ должен уметь пользоваться VCS • Обновление контента невозможно без админа
  3. Management-команды • Makemessages – генерирует *.po – словари • Переводчик

    переводит словари • Compilemessages компилирует переводы в *.mo – файлы
  4. Po-файл • Portable object – человеко- читаемый файл • Набор

    пар строк MSGID: MSGSTR • Пригоден для перевода переводчиком • Кроме переводов, содержит комментарии и служебные отметки • Существуют удобные утилиты (PoEdit) • Пригоден для редактирования в текстовом редакторе
  5. Нужно было облегчить жизнь контент- менеджеров • Тексты хранить в

    БД • Перевод всех текстов на 23 языка • Минимизация расходов на перевод • Минимум действий контент-менеджера
  6. Как разбить HTML на фразы для перевода? • Большие куски

    – плохо (расходы на переводчика) • Маленькие куски (слово) – плохо. «Пословный перевод». • Предложения. Уже лучше. • Абзац/блочный тег - оптимально
  7. Translate Toolkit • https://github.com/translate/translate • Умеет конвертировать HTML в PO,

    достаточно разумно • Имеет еще пару десятков(!) конвертеров из различных форматов в PO и обратно • То, что нужно. • Но есть баги
  8. Итоговый алгоритм • Добавление/изменение текста в БД • Генерация шаблона

    • Перед вызовом makemessages пишем все шаблоны во временный файл • В итоге – весь контент оказывается в словарях и пригоден для перевода
  9. Дальнейшие удобства контент-менеджера • Makemessages запускается по кнопке из админки

    • Выгрузка словарей в CSV, загрузка готовых переводов • Можно загрузить словарь для конкретной страницы