Проверка Localizable.strings

Перетащите два или больше файлов .strings и посмотрите, чего не хватает, что задвоено, что так и не перевели и какие строки не разбираются. Ничего не загружается: это обычно боевые файлы, и они остаются на этой странице.

Перетащите папку .lproj или файлы .strings сюда или нажмите, чтобы выбрать

Правило о дублирующихся значениях

Два ключа с одинаковым английским значением — это та ошибка, которая возвращается снова и снова. Переводчик видит одну и ту же строку дважды, переводит дважды и получает два разных результата, а хуже того — язык, которому в двух контекстах нужны разные слова, получает одно на оба, и никто этого не замечает, пока не пожалуется носитель. Проверка не смотрит на регистр и конечную пунктуацию, потому что «Done» и «Done.» — это одна и та же беда в другой обёртке.

«Совпадает» — не то же самое, что «не переведено»

Значение, совпадающее с базовым файлом, обычно означает, что до него просто не дошли руки. Иногда оно верное: название бренда, единица измерения, сокращение, которое во всех языках остаётся тем же. Инструмент их помечает, а решение оставляет вам, потому что иначе придётся либо не замечать настоящие пропуски, либо придираться к каждому OK.

Ошибочные строки показываются, а не игнорируются

Грамматика .strings небольшая, но особые случаи в ней вполне реальны: блочные комментарии, экранированные кавычки внутри значений, пропущенная точка с запятой, типографская кавычка, вставленная из таблицы. Парсер, который молча пропускает то, чего не понял, скажет вам, что с файлом всё в порядке, хотя один из ключей будет незаметно потерян. Поэтому каждая неразобранная строка выводится с номером, чтобы вы могли на неё посмотреть.

И UTF-16 тоже

Xcode годами писал .strings в UTF-16, и во многих репозиториях такие файлы лежат до сих пор. Поэтому файлы сначала проверяются на метку порядка байтов и декодируются соответственно, чтобы UTF-16 не пришёл стеной нулевых байтов и сотней ошибок разбора.

Часто задаваемые вопросы

А .xcstrings поддерживается?

Пока нет. Каталог строк — это JSON другой формы, и он заслуживает собственной обработки, а не прослойки, которая работает наполовину.

Какой файл брать за базовый?

Тот, что считается эталонным, — обычно язык разработки. С ним сравнивается всё, поэтому ключ, которого нет в базовом, но есть в другом файле, попадает в «лишние», а не в «недостающие».

Что считается проблемой?

Недостающий ключ, повторяющееся значение, значение, совпадающее с базовым, или строка, которая не разобралась. Счётчик складывает всё это по всем файлам.

Отправляются ли мои файлы на сервер?

Нет. Их читает сам браузер, и сравнение идёт здесь же. Для этого инструмента это важнее обычного, потому что это настоящие файлы вашего продукта.

Сделано командой GO AI, которая раз за разом на это натыкалась. Все бесплатные инструменты