Введение
Управление файлами локализации в проектах iOS и macOS может стать сложной задачей по мере роста приложения. Когда вы добавляете новые строки в файл базового языка, синхронизация всех файлов переводов становится утомительной и подверженной ошибкам. В этой статье рассматривается syncLproj — CLI-инструмент на Rust, предназначенный для автоматизации этого процесса синхронизации.
Проблема локализации
В разработке iOS/macOS локализация использует файлы .strings с простым форматом ключ-значение:
/* User interface strings */
"welcome_message" = "Welcome to our app!";
"login_button" = "Log In";
"signup_button" = "Sign Up";
При управлении несколькими языками возникает ряд проблем:
- Отсутствующие ключи: новые ключи, добавленные в базовый язык, автоматически не появляются в переводах
- Несогласованность порядка ключей: разные файлы имеют ключи в разном порядке, что затрудняет просмотр diff-ов
- Осиротевшие ключи: удалённые ключи остаются в файлах переводов
- Ручная работа: копирование ключей между десятками файлов занимает много времени и подвержено ошибкам
Традиционные подходы включают ручное редактирование или встроенные инструменты Xcode, которые не имеют возможностей автоматизации для CI/CD пайплайнов.