Перевод файлов iOS .strings
Файл .strings — это список строк "key" = "value";, где значение содержит спецификаторы формата, например %@. KAERIS переводит значения и проверяет, что все спецификаторы сохранены.
Эту страницу перевёл KAERIS и проверил каждую строку обратным переводом. Носитель языка ещё не проверял. Оригинал на английском
Как устроен файл .strings
Одна строка "key" = "value";, заметки в /* … */. Значения экранируют кавычки и переносы строк обратным слешем. Множественные числа здесь не используются: Xcode применяет .stringsdict или String Catalog, а KAERIS читает .strings и .xcstrings.
/* Greeting on the home screen */ "welcome" = "Welcome back, %@!"; "items_count" = "%1$d of %2$d items synced"; "quote" = "Press \"Done\" to continue.";
Особенности перевода .strings
%@ и позиционные спецификаторы
%@,%dи%1$d— заполнители. В языках с перестановкой слов позиционная форма сохраняет правильный порядок аргументов; изменённый или отсутствующий спецификатор будет отмечен.Экранирование
\"и\nвнутри значения корректно считываются и записываются, так что кавычка в переводе не заканчивает строку.Заметки остаются в исходнике
/* … */комментарии не переносятся в переведённый файл, который получает однострочный комментарий с указанием языка. Контекст для переводчиков сохраняйте в исходном файле.Длина
Немецкий и финский часто длиннее английского. Проверка предупреждает, если перевод значительно длиннее исходника, что важно для кнопок.
Реальный запуск: переведено на немецкий и проверено
Реальный запуск, 27 октября 2026, без ручных правок: kaeris translate Localizable.strings --langs de с kaeris 0.2.35, 4 секунды, модель openai/gpt-4.1-mini (резервная модель сервиса). Ниже — немецкий файл и результаты kaeris check.
/* de */ "welcome" = "Willkommen zurück, %@!"; "items_count" = "%1$d von %2$d Elementen synchronisiert"; "quote" = "Drücken Sie \"Fertig\", um fortzufahren.";
$ kaeris check --source Localizable.strings --langs de ✓ de: complete & placeholder-safe ✓ all locales complete & placeholder-safe
Что KAERIS делает с этим
Ключи и порядок сохранены
Каждый ключ записывается с переведённым значением.
Подсчёт спецификаторов
Потеря или изменение
%@или%1$dобнаруживается без модели.Бесплатная проверка для этого формата
Бесплатная проверка на /check считывает этот формат и работает без ключа или учетной записи. Команда терминала
kaeris checkтакже считывает его: она обрабатывает все 13 форматов начиная с kaeris 0.2.35, с теми же правилами и без отправки данных куда-либо.
Выполните в три шага
Установите CLI
Выполните
pip install kaeris.Перевод файла
Запустите
kaeris translate en.lproj/Localizable.strings --langs de,ja.Проверка результата
Загрузите исходник и перевод на бесплатной странице проверки.
pip install kaeris kaeris translate en.lproj/Localizable.strings --langs de,ja --verify
Вопросы
Сохраняет ли он %@ и %1$d?
Да. Спецификаторы сравниваются с исходным текстом после перевода, и потерянный или измененный спесификатор помечается. В реальном запуске выше %@, %1$d и %2$d все вернулись.
А как насчет множественного числа?
.strings не имеет синтаксиса для множественного числа. Xcode сохраняет множественное число в .stringsdict или в String Catalog; KAERIS читает каталог и разворачивает множественное число для каждого языка, см. страницу .xcstrings.
Это бесплатно?
Да, без учетной записи: 10 000 символов на файл и до 8 языков за запуск. Бесплатный API-ключ увеличивает лимит файлов до 50 000 символов. Пожизненная лицензия стоит $79 один раз, при использовании вашего собственного ключа OpenRouter; ежемесячные планы начинаются от $19. Цены
Могу ли я запускать его из терминала или в CI?
Да. pip install kaeris, затем kaeris translate en.lproj/Localizable.strings --langs de,ja. См. также iOS. GitHub Action выполняет тот же перевод в pull request. Документация CLI · GitHub Action
Продолжайте
Справочник по CLI · Справочник по проверке · Перевести в браузере · Бесплатная проверка · Конвертировать форматы · Псевдолокализация
Другие форматы: JSON · YAML · .po · ARB · XLIFF · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML