Коллеги, приветствую!
Для автоматизации перевода необходимо распотрошить strings.xml и перевести.
Для упрощения задачи - гуглоперевод с китайского на английский. Получается вполне читабельно, а ручками переводить больше тысячи строк - увольте.
Начало xml-файла такое:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="KSCSDK_UNKNOW_ERR_RUNTIME">客户端出了点问题,装个新版本再试一次吧。</string>
<string name="KSCSDK_UNKNOW_ERR_DATA">网络连接出了点问题,一会再试一次吧。</string>
<string name="KSCSDK_UNKNOW_ERR_NETWORK">网络连接出了点问题,一会再试一次吧。</string>
<string name="KSCSDK_UNKNOW_ERR_SERVER">客户端出了点问题,装个新版本再试一次吧。</string>
<string name="KSCSDK_UNKNOW_ERR_SERV_MSG">客户端出了点问题,装个新版本再试一次吧。</string>
<string name="KSCSDK_UNKNOW_ERR_LOCAL_IO">客户端出了点问题,一会再试一次吧。</string>
<string name="KSCSDK_UNKNOW_ERR">出了点问题,一会再试一次吧。</string>
<string name="KSCSDK_MISS_USER_TOKEN">出了点问题,重新登陆一次就好了。</string>
<string name="KSCSDK_NULL_PARAM">客户端出了点问题,一会再试一次吧。</string>
<string name="KSCSDK_INVALID_PARAM">客户端出了点问题,一会再试一次吧。</string>
<string name="KSCSDK_LIMIT_NO_SPACE">手机SD卡满了,删点东西再试一次吧。</string>
..ну и так далее.Что мне требуется:
1. Построчно парсить файл в цикле (while read line ; do)
2. Если в строке встречается нужный признак (string name=, например) - содержимое между > и < (на китайском или смешанном языке) переводится, перевод, например, присваивается текстовой переменной.
Если не встречается - содержимое направляется в новый файл, возврат на чтение новой строки.
3. Далее текст на китайском заменяется на текст на английском, содержимое направляется в новый файл.
Задача, понятное дело, осложняется тем, что в xml файле может встретиться и такое:
<string name="des_auth_account">"用户信息授权成功,
即将在\"%1$s\"端登录金山快盘客户端"</string>
<string name="qrcode_login_other_device">扫描二维码</string>
т.е. часть текста строчки переносится на другую строчку. Иными словами, надо не просто строчку парсить, а все содержимое между <string name= и закрывающим тегом </string>Буду рад любой помощи сообщества!
>[оверквотинг удален]
> в новый файл.
> Задача, понятное дело, осложняется тем, что в xml файле может встретиться и
> такое:
> <string name="des_auth_account">"用户信息授权成功,
> 即将在\"%1$s\"端登录金山快盘客户端"</string>
> <string name="qrcode_login_other_device">扫描二维码</string>
> т.е. часть текста строчки переносится на другую строчку. Иными словами, надо не
> просто строчку парсить, а все содержимое между <string name= и закрывающим
> тегом </string>
> Буду рад любой помощи сообщества!Да, чего-то меня совсем занесло. Задача решается на три порядка проще. Прошу прощения, вопрос снят.
Мое частное мнение: парсить xml чисто средствами shell скрипта - адское занятие. Плюс правильно я понимаю, что еще и юникод нужен? Возьмите хотя бы перл что ли, там есть несколько готовых модулей для xml, выбирайте любой. Мне (опять же частное мнение) в свое время очень XML::Twig понравился.