iOS Localization - Обновление Localizable.strings только с новыми строками

Я искалGoogle а такжеПереполнение стека и до сих пор нет четкого ответа на простой и автоматизированный способ сделать это, но вот сценарий:

У меня есть приложение с 1000 строк, локализованных в en, fr, de, es, it.Я строю новую функцию, которая делает 10 отчетливо новымиNSLocalizedString() ключи.Я просто хочу, чтобы эти 10 новых строк были добавлены в конец файлов:en.lproj / Localizable.stringsfr.lproj / Localizable.stringses.lproj / Localizable.stringsde.lproj / Localizable.stringsit.lproj / Localizable.strings

genstrings получит все 1010 различных строк. Это боль, так как мне нужно «искать иголку в стоге сена», чтобы найти эти 10 строк каждый раз, когда я делаю обновление.

ОБНОВЛЕНИЕ 19-СЕНТЯБРЯ-2014 - XCode 6 - Apple наконец-то выпустила поддержку XLIFF-экспорта и импорта ваших файлов .stringsЧто нового в XCode 6? локализация

Лингуань (v1.1.3) хотя в большинстве случаев это прекрасный инструмент, в другом смысле он становится инструментом. Он объединяет изменения, но некоторые строки не соответствуют должным образом при объединении, поэтому каждый раз, когда он выполняет сканирование источников, он создает 100 новых дубликатов ключей, а также 10 строк, которые мне нужны, поэтому он выполняет больше работы.

FileMerge Как предлагается ниже, попробуйте провести различие между старой и новой версиямиgenstrings выходные файлы.genstrings выходные данные имеют строки, отсортированные по алфавиту, поэтому 10 строк, разбросанных по 1000, означают, что необходимо рассмотреть 200 различий. это соответствует/*...*/ и"..." = "..." и сказать, что... был обновлен Он не был обновлен, просто перемещен в новое место в файле. Все больше и больше похоже на то, что мне придется написать собственный инструмент.

MacHG + FileMerge примечание: по какой-то странной причине не нравится делать diff-файлы из репозитория с рабочей копией Localizable.strings. Левая и правая панели выглядят пустыми.ОБНОВИТЬ: Оказывается, вариации в некоторых наборах изменений сохраняются как UTF-16, а некоторые как UTF-8 шутят с тем, чтобы сделать правильный дифференциал.

Bash Script + FileMerge Я написал следующий скрипт, чтобы помочь сохранить мой английский справочный файл после каждого добавления новогоNSLocalizedString записей:

#LOCALISATION UPDATE SCRIPT
#
#This will create a temporary copy of the current 'en' reference file then generate the 
#latest reference file using the 'genstrings' tool. Finally forcing FileMerge to launch 
#and diff the changes.
#
#Last Updated: 2014-JAN-06
#Author(s): Josh Wilson

clear
#assuming this script is run from $SRCROOT

#Backup Existing 'en' reference
cp "en.lproj/Localizable.strings" "en.lproj/Localizable-src.strings"

#Scan source files for 'NSLocalizableString' macros
genstrings -q -u -o en.lproj Classes/*.{m,mm}
genstrings -q -u -a -o en.lproj Classes/iPad/*.{m,mm}
genstrings -q -u -a -o en.lproj Classes/iPhone/*.{m,mm}

#Force FileMerge to launch and diff the update (NOTE: piping to cat forces GUI to open)
opendiff "en.lproj/Localizable-src.strings" "en.lproj/Localizable.strings" | cat

#Cleanup up temporary file
rm "en.lproj/Localizable-src.strings"

Но это только обновляет файл EN, и мне не хватает способа обновления других языковых файлов новыми ключами. Этот был хорош для случаев, когда у меня нет английского слова в качестве ключа, а генструны бомбят"welcome_message" = "Welcome!" с участием"welcome_message" = "welcome_message"

POEditor http://poeditor.com/, Это онлайн-инструмент и подписка на основе 1000 строк. Кажется, работает хорошо, но было бы хорошо, если бы существовал инструмент, не основанный на подписке.

Traducto Pro Кажется, хорошо справляется с интеграцией с XCode, извлечением строк и объединением вещей. Но невозможно извлечь что-либо из этого, пока оно не будет полностью переведено, поэтому вы будете вынуждены пользоваться их услугами по переводу.

Конечно, эта функциональность была реализована раньше. Как Apple сохраняет свои приложения локализованными?

Сценаристы, я призываю тебя! Разработка iOS ведется уже в течение некоторого времени, и локализация является обычным делом, наверняка есть зрелое решение для этого к настоящему времени?

Python Script update_strings.py: Переполнение стека наконец, порекомендовал связанный вопрос и скрипт Python в этом ответеЛучшая практика с использованием NSLocalizedString выглядит многообещающе ...

Протестировал его и в его текущей форме (31 мая 2013 г.) он не обрабатывает многострочные комментарии, если у вас есть повторяющиеся записи комментариев (ожидается однострочный комментарий).

Может быть, нужно немного настроить регулярное выражение.

Ответы на вопрос(4)

Ваш ответ на вопрос