Подтвердить что ты не робот

Есть ли хорошие инструменты для псевдо-локализации iOS?

Я хотел бы узнать, насколько мы были в нашем iOS-коде при локализации строк. Мы еще не готовы пойти на переводчиков, но я бы хотел начать тестирование с псевдо-локализацией. Автоматизация этого процесса в файле Localizable.strings должна быть достаточно простой, но я не могу найти никаких инструментов, которые это делают. Честно говоря, я был бы доволен script, который просто изменил все мои строки на "NOT ENGLISH!". если такая вещь существует.

4b9b3361

Ответ 1

Это можно сделать с помощью Translate Toolkit.

Сначала вам нужно преобразовать файл .strings в PO с помощью prop2po:

$ prop2po Localizable.strings en.po

Это создаст файл PO с строками файла Localizable.strings в качестве исходных строк (в этом случае я использую английский как источник).

Как только у вас есть файл PO, перепишите его с помощью podebug в желаемый формат перезаписи.

$ podebug --rewrite=unicode en.po en_rewritten.po

Наконец, верните его в формат .strings(обратите внимание, что вам нужно передать исходный файл Localizable.strings в качестве шаблона):

$ po2prop en_rewritten.po rewritten.strings -t Localizable.strings

Полученный файл будет выглядеть примерно так:

"Account: %@" = "Ȧƈƈǿŭƞŧ: %@";

"Add command" = "Ȧḓḓ ƈǿḿḿȧƞḓ";

"Add connection." = "Ȧḓḓ ƈǿƞƞḗƈŧīǿƞ."

Ответ 2

хотя Translate Toolkit может предоставить решение, я искал более простой подход, используя bash script. создайте файл [changesDictionary.txt] (см. формат в конце этого сообщения) и запустите следующий script с языковым файлом в качестве параметра:

#  This script translate iOS strings file into pseudo languge for texting usage.
#  the script create a sed change and replace file based on [changesDictionary.txt].
#  the loop run across the input string file (ie. myFyle.strings)
#    and replace the secong strings with the dictionary values.
#  since the strings file is in BOM format (http://en.wikipedia.org/wiki/Byte_order_mark)
#   the input is converted from UTF16 to UTF8.
sed -e 's/^"\(.*\)" = "\(.*\)"$/s\/\1\/\2\/g/' changesDictionary.txt  > changesDictionary.sed

FILENAME=$1

while read -r; do
if [[ $REPLY = '/*'* ]] ; then
    echo "$REPLY"
else
    if [[ $REPLY = '' ]] ; then
        echo "$REPLY"
    else
        if [[ $REPLY = '"'* ]] ; then
            changes2=$(echo "$REPLY" | cut -d= -f2 | sed -f changesDictionary.sed)
            changes1=$(echo "$REPLY" | cut -d= -f1 )
            echo "$changes1=$changes2"
                        echo "$REPLY"
        fi
    fi
fi
done < <(iconv -f UTF-16 -t UTF-8 $FILENAME) | iconv -f UTF-8 -t UTF-16 >$FILENAME.new

script найдите файл [changeDictionary.txt] в следующем формате:

"a" = "á"
"b" = "β"
"c" = "ç"
"d" = "δ"
"e" = "è"
"f" = "ƒ"
"g" = "ϱ"
"h" = "λ"
"i" = "ï"
"j" = "J"
"k" = "ƙ"
"l" = "ℓ"
"m" = "₥"
"n" = "ñ"
"o" = "ô"
"p" = "ƥ"
"q" = "9"
"r" = "ř"
"s" = "ƨ"
"t" = "ƭ"
"u" = "ú"
"v" = "Ʋ"
"w" = "ω"
"x" = "ж"
"y" = "¥"
"z" = "ƺ"
"\ñ" = "\n"
"$δ" = "$d"
"$ï" = "$i"

вы можете использовать этот пример или создать свой собственный, обратите внимание на tp последние 3 строки изменения в файле. это восстановление конца строк и параметров до их обычного состояния. Я выбрал этот подход для упрощения script (я думаю, что производительность не оптимизирована).

Ответ 3

Я столкнулся с двумя решениями, которые еще не были упомянуты здесь:

  • Бесплатное приложение, называемое хранилищем Mac App, которое генерирует псевдолокализованные файлы .strings на основе вашего исходного кода (drag-and-drop). Он генерирует аналогичные строки тем, которые были предоставлены OP в вопросе.

    https://itunes.apple.com/us/app/pseudolocalizer/id503026674?mt=12

  • Служба онлайн-перевода Babble-on предлагает бесплатные псевдолокализованные файлы .strings на основе существующих файлов .strings(доступны другие варианты). У них есть дополнительная возможность генерации строк дольше, чем оригинальный английский, чтобы протестировать ваш графический интерфейс.

    http://www.ibabbleon.com/pseudolocalization.html

Ответ 4

Мы предоставляем псевдо локализацию как часть нашего сервиса в Tethras (www.tethras.com). Псевдо локализация бесплатна. Мы подчеркиваем все символы в ваших строках и увеличиваем длину текста на 30%. Это поможет вам протестировать не только жестко закодированные строки, но также позволит вам увидеть, что происходит с вашими макетами из-за расширения текста во время перевода.

Примеры:

Обычный текст

Wè prôvïdè psèúdô lôçálïzátïôñ ás párt ôƒ ôúr sèrvïçè át Tèthrás (Www.tèthrás.çôm). ôñè twô thrèè ƒôúr ƒïvè sïx Psèúdô lôçálïzátïôñ ïs ƒrèè. ôñè twô thrèè Wè ççèñò áll ôƒ thè çháráçtèrs ïñ ¥ ôúr strïñgs áñd èxtèñd thè lèñgth ôƒ thè tèxt b ¥ 30%. ôñè twô thrèè ƒôúr ƒïvè sïx Thïs wïll hèlp ¥ ôú tèst ñôt ôñl ¥ ƒôr hárd çôdèd strïñgs, bút wïll álsô lèt ¥ ôú sèè whát háppèñs tô ¥ ôúr lá ¥ ôúts dúè tô tèxt èxpáñsïôñ dúrïñg перевод. ôñè twô thrèè ƒôúr ƒïvè sïx sèvèñ èïght ñïñè tèñ

Localizable.strings

"Bring All to Front" = "Brïñg Áll tô ƒrôñt ôñè twô";
"Hide" = "Hïdè 12";
"Quit" = "Qúït 12";
"Hide Others" = "Hïdè Óthèrs ôñè ";

Престижность в желании проверить локализуемость вашего приложения до перевода. Это поможет вам сэкономить много времени и энергии во время фактического процесса перевода.