Проверка Localizable.strings
Перетащите два или больше файлов .strings и посмотрите, чего не хватает, что задвоено, что так и не перевели и какие строки не разбираются. Ничего не загружается: это обычно боевые файлы, и они остаются на этой странице.
Правило про дублирующиеся значения
Два ключа с одинаковым английским значением — это та ошибка, которая возвращается снова и снова. Переводчик видит одну и ту же строку дважды, переводит дважды и получает два разных результата, а хуже того — язык, которому в двух контекстах нужны разные слова, получает одно на оба, и никто этого не замечает, пока не пожалуется носитель. Проверка не смотрит на регистр и конечную пунктуацию, потому что "Done" и "Done." — это одна и та же беда в шляпе.
«Совпадает» — не то же самое, что «не переведено»
Значение, совпадающее с базовым файлом, обычно значит, что до него просто не дошли руки. Иногда оно верное: название бренда, единица измерения, сокращение, которое во всех языках остаётся тем же. Инструмент их помечает, а решение оставляет вам, потому что иначе придётся либо пропускать настоящие пробелы, либо зудеть над каждым OK.
Плохие строки сообщаются, а не проглатываются
Грамматика .strings небольшая, но её крайние случаи вполне реальны: блочные комментарии, экранированные кавычки внутри значений, пропущенная точка с запятой, типографская кавычка, вставленная из таблицы. Разборщик, молча пропускающий то, чего не понял, скажет вам, что файл в порядке, пока какой-нибудь ключ тихо отсутствует. Поэтому каждая неразобранная строка выводится с номером, чтобы вы могли на неё посмотреть.
И UTF-16 тоже
Xcode годами писал .strings в UTF-16, и во многих репозиториях такие файлы лежат до сих пор. Поэтому файлы сначала проверяются на метку порядка байтов и декодируются соответственно, чтобы UTF-16 не пришёл стеной нулевых байтов и сотней ошибок разбора.
Часто задаваемые вопросы
А .xcstrings поддерживается?
Пока нет. Каталог строк — это JSON другой формы, и он заслуживает собственной обработки, а не прослойки, которая работает наполовину.
Какой файл брать за базовый?
Тот, что считается эталонным, — обычно язык разработки. С ним сравнивается всё, поэтому ключ, которого нет в базовом, но есть в другом файле, попадает в «лишние», а не в «недостающие».
Что считается проблемой?
Недостающий ключ, повторяющееся значение, значение, совпадающее с базовым, или строка, которая не разобралась. Счётчик складывает всё это по всем файлам.
Мои файлы куда-то загружаются?
Нет. Они читаются файловым ридером браузера, и сравнение идёт здесь же. Для этого инструмента это важнее обычного, потому что файлы боевые.
Сделано командой GO AI, которая раз за разом на это натыкалась. Все бесплатные инструменты