Локализация Django-приложения ... Заметка
DEV Community на русском

Локализация Django-приложения на 7 языков — RTL, JS-игра и честные моменты

Автор, работая в одиночку, локализовал крупное приложение на Django на семь языков с целью расширения его охвата. Это решение было продиктовано стремлением сделать бесплатные учебные материалы доступными для глобальной аудитории и повысить индексируемость сайта поисковыми системами. Ключевым архитектурным решением стало отделение «хрома» пользовательского интерфейса (кнопок, меток) от длинных текстов. Для элементов интерфейса использовалась система gettext Django, а учебные материалы хранились в виде файлов Markdown для каждого языка, при этом английский язык выступал в качестве резервного. Основные термины предметной области были намеренно оставлены на английском языке для обеспечения единообразия и соответствия профессиональным стандартам.К числу значительных технических задач относилась обработка макетов с направлением написания справа налево (RTL), что потребовало реализации логических свойств CSS для плавного зеркального отображения. Еще одной проблемой было несоответствие между языковыми тегами Django (например, zh-hans) и соглашениями об именовании каталогов с контентом (например, zh). Интеграция перевода с помощью JavaScript предполагала использование каталога djangojs в Django для динамических строк пользовательского интерфейса. Надежный модуль загрузки контента был крайне важен для обеспечения того, чтобы при частичном переводе языков система корректно переключалась на английский контент по умолчанию, а не выдавала ошибки 404. Были реализованы автоматические тесты на соответствие, чтобы гарантировать, что переведенные файлы сохраняют ту же структурную целостность, что и их английские аналоги. Наконец, система определяет языковые предпочтения посетителей на основе страны, указанной в IP-адресе, или настроек пользователя, при этом явное переключение позволяет переопределить значения по умолчанию. Автор открыто признал, что переводы на языки, отличные от английского, представляют собой черновые варианты, подготовленные с помощью ИИ и проходящие проверку. Такой дисциплинированный подход позволил одному разработчику успешно осуществить локализацию на несколько языков.