Lingo.dev + .strings (Xcode)
Lingo.dev CLI переводит файлы .strings для Xcode, сохраняя структуру ключ-значение, комментарии и конвенции локализации iOS. CLI поддерживает старые проекты и рабочие процессы Xcode, сохраняет контекст разработчика и инструкции в комментариях, сохраняет форматные спецификаторы iOS, такие как %@
и %d
, корректно обрабатывает кодировки UTF-16 и UTF-8, а также интегрируется со стандартными конвейерами локализации iOS.
Быстрая настройка
Настройка для старых файлов строк Xcode:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja"]
},
"buckets": {
"xcode-strings": {
"include": ["Resources/[locale].lproj/Localizable.strings"]
}
}
}
Напоминание: [locale]
— это заполнитель, который должен оставаться в конфигурации буквально, так как он заменяется на фактический локаль во время выполнения CLI.
Перевод файлов строк
npx lingo.dev@latest i18n
Сохраняет формат файла строк, комментарии разработчиков и специфические для iOS конвенции при переводе значений.
Структура файла строк
Основные пары ключ-значение
/* Основная навигация */
"nav.home" = "Главная";
"nav.settings" = "Настройки";
"nav.profile" = "Профиль";
/* Аутентификация */
"auth.login" = "Войти";
"auth.logout" = "Выйти";
"auth.register" = "Зарегистрироваться";
Форматные спецификаторы
/* Сообщения пользователю с заполнителями */
"welcome.user" = "С возвращением, %@!";
"items.count" = "У вас %d предметов в корзине";
"download.progress" = "Загрузка... %.1f%% завершено";
Многострочные строки
/* Длинный контент */
"terms.agreement" = "Используя это приложение, вы соглашаетесь с нашими условиями использования и политикой конфиденциальности. Пожалуйста, внимательно прочитайте их перед продолжением.";
"help.description" = "Эта функция помогает вам эффективно управлять своими задачами. Вы можете создавать, редактировать и организовывать свои рабочие элементы.";
Особенности iOS
Комментарии к локализации
/* Отображается на панели вкладок внизу */
"tab.home" = "Главная";
/* Текст кнопки для отправки формы */
"button.submit" = "Отправить";
/* Сообщение об ошибке, когда сеть недоступна */
"error.network" = "Пожалуйста, проверьте ваше интернет-соединение";
Комментарии разработчиков предоставляют контекст для переводчиков.
Специальные символы
/* Строки с кавычками и специальными символами */
"message.quote" = "Она сказала: \"Привет!\"";
"path.file" = "Документы\\МойФайл.txt";
"symbol.copyright" = "© 2024 Название компании";
Правильное экранирование кавычек и обратных слэшей сохранено.
Интеграция с Storyboard
/* Локализации для Storyboard */
"A8K-3L-9X7.text" = "Добро пожаловать";
"B9M-4N-0Y8.placeholder" = "Введите ваше имя";
"C0P-5Q-1Z9.title" = "Настройки";
Ключи, сгенерированные Interface Builder, обрабатываются корректно.
Расширенная конфигурация
Несколько файлов строк
"xcode-strings": {
"include": [
"Resources/[locale].lproj/Localizable.strings",
"Resources/[locale].lproj/InfoPlist.strings"
]
}
Блокировка системных ключей
"xcode-strings": {
"include": ["Resources/[locale].lproj/Localizable.strings"],
"lockedKeys": ["CFBundleName", "CFBundleDisplayName"]
}