Как извлечь строки из файлов plist для перевода (локализации)?

Мне нужно подготовить список строк для перевода моего приложения для iPhone. Я извлек строки из файлов *.m с помощью genstring и из файлов XIB с помощью команды ibtool.

Но у меня также есть множество текстов для перевода в файлах plist (типы строковых полей, заключенные в тег string). Есть ли хороший скрипт / команда bash для извлечения этих строк в плоский текстовый файл? Я мог просмотреть и отфильтровать его, чтобы мои переводчики могли работать с красивым списком, но не с XML-файлом, выглядящим странно.


person Lukasz    schedule 07.06.2011    source источник


Ответы (4)


Я сделал собственный сценарий оболочки, который пытается определить необходимые значения. Затем вы можете использовать localize.py модифицированным способом (см. ниже), чтобы автоматически создавать файлы перевода. (Разрыв строки где-то очень важен) Если нужно перевести больше сущностей, сценарий оболочки можно соответствующим образом изменить.

#!/bin/bash

rm -f $2

sed -n 'N;/<key>Title<\/key>/{N;/<string>.*<\/string>/{s/.*<string>\(.*\)<\/string>.*/\/*     \1 *\/\
"\1" = "\1";\
/p;};}' $1 >> $2

sed -n 'N;/<key>FooterText<\/key>/{N;/<string>.*<\/string>/{s/.*<string>\(.*\)<\/string>.*/\/* \1 *\/\
\"\1" = "\1";\
/p;}
;}' $1 >> $2

sed -n 'N;/<key>Titles<\/key>/{N;/<array>/{:a
N;/<\/array>/!{
/<string>.*<\/string>/{s/.*<string>\(.*\)<\/string>.*/\/* \1 *\/\
\"\1" = "\1";\
/p;}
ba
;};};}' $1 >> $2

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

person gamma    schedule 05.08.2011

Недавно мы сделали для этого небольшое онлайн-приложение. Пожалуйста, посмотрите: http://www.icapps.be/plist-translator/

person Olivier Dupont    schedule 13.10.2011
comment
Онлайн-приложение, похоже, больше не доступно. Есть ли новое место? - person newenglander; 19.06.2013

Я не могу придумать ни одной команды из головы. Тем не менее, plists — это прославленные xml-файлы, и для них доступны различные парсеры.

Не должно быть слишком сложно создать простой скрипт на Python, чтобы получить все строки из файла.

person Eytan    schedule 07.06.2011

Это помогает? http://www.icanlocalize.com/site/tutorials/how-to-translate-plist-files/

Мы предпочитаем платных клиентов, которые используют нашу систему перевода с нашими переводчиками, но вы можете бесплатно переводить самостоятельно в нашем графическом интерфейсе.

person ICanLocalize    schedule 08.06.2011
comment
Спасибо, но я не хочу переводить плисты. У меня уже есть команда переводчиков-носителей языка. Мне нужно только подготовить для них список строк. - person Lukasz; 08.06.2011