
Перевод каталогов строк Xcode за секунды
Формы множественного числа соответствуют CLDR. Варианты для устройств сохраняются. Состояния перевода отслеживаются. Ваши файлы .xcstrings переводятся прямо в IDE.
Перевод каталогов строк сложнее, чем кажется
В Xcode 15 каталоги строк заменили .strings и .stringsdict одним файлом JSON, но сложность никуда не исчезла. Для каждого языка нужны правильные категории множественного числа CLDR, варианты для устройств (iPhone, iPad и Mac) должны оставаться связанными со своими ключами, а из-за отслеживания состояний в Xcode одно неверное поле делает всю запись недействительной.
Для каждого языка нужны разные категории множественного числа CLDR: для арабского — все шесть, для японского — только other, для русского — четыре разные формы
Варианты строк для отдельных устройств (iPhone, iPad, Mac, Apple Watch) должны оставаться правильно связанными с родительскими ключами
Xcode отслеживает состояния перевода (new, needs_review, translated, stale): неверные значения состояния приводят к тому, что Xcode игнорирует или неправильно помечает переводы
При переходе с устаревших .strings/.stringsdict на .xcstrings возникают различия форматов, с которыми универсальные инструменты не справляются
{
"sourceLanguage": "en",
"version": "1.0",
"strings": {
"welcome_title": {
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Welcome to the App"
}
}
}
},
"item_count": {
"localizations": {
"en": {
"variations": {
"plural": {
"zero": {
"stringUnit": {
"state": "translated",
"value": "No items"
}
},
"one": {
"stringUnit": {
"state": "translated",
"value": "%lld item"
}
},
"other": {
"stringUnit": {
"state": "translated",
"value": "%lld items"
}
}
}
}
}
}
},
"device_greeting": {
"localizations": {
"en": {
"variations": {
"device": {
"iphone": {
"stringUnit": {
"state": "translated",
"value": "Tap to continue"
}
},
"ipad": {
"stringUnit": {
"state": "translated",
"value": "Tap or click to continue"
}
},
"mac": {
"stringUnit": {
"state": "translated",
"value": "Click to continue"
}
}
}
}
}
}
}
}
}{
"sourceLanguage": "en",
"version": "1.0",
"strings": {
"welcome_title": {
"extractionState": "manual",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Willkommen in der App"
}
}
}
},
"item_count": {
"localizations": {
"de": {
"variations": {
"plural": {
"zero": {
"stringUnit": {
"state": "translated",
"value": "Keine Elemente"
}
},
"one": {
"stringUnit": {
"state": "translated",
"value": "%lld Element"
}
},
"other": {
"stringUnit": {
"state": "translated",
"value": "%lld Elemente"
}
}
}
}
}
}
},
"device_greeting": {
"localizations": {
"de": {
"variations": {
"device": {
"iphone": {
"stringUnit": {
"state": "translated",
"value": "Tippen zum Fortfahren"
}
},
"ipad": {
"stringUnit": {
"state": "translated",
"value": "Tippen oder klicken zum Fortfahren"
}
},
"mac": {
"stringUnit": {
"state": "translated",
"value": "Klicken zum Fortfahren"
}
}
}
}
}
}
}
}
}Что сохраняет i18n Agent
Формы множественного числа
Для каждого целевого языка создаются правильные категории множественного числа CLDR: от одной категории для японского до шести для арабского
Варианты для устройств
Варианты строк для iPhone, iPad, Mac и Apple Watch остаются правильно связанными с родительскими ключами
Учёт состояний
Состояния перевода (new, needs_review, translated) задаются правильно, чтобы процесс локализации в Xcode работал корректно
Совместимость форматов
Результат полностью совместим с редактором каталогов строк Xcode и без проблем интегрируется как в новые, так и в перенесённые проекты
Работает со средствами разработки Apple
Как это работает

Без ручного копирования, извлечения строк и лишних действий. Только переведённые файлы.
Попробовать i18n Agent
Перетащите сюда файл перевода
JSON, YAML, PO, XML, CSV, Markdown, Properties
или нажмите, чтобы выбрать
Целевые языки
Часто задаваемые вопросы
Можно также перевести:
Для разработчиков
Установите инструмент CLI и переведите первый файл за 2 минуты.
Установить инструмент CLIДля корпоративных команд
Всё ещё связаны контрактом с TMS? Обсудим переход.