- PVSM.RU - https://www.pvsm.ru -

Доброго времени суток, Geektimes.
Когда я только начинал переводить приложения, информации по переводам, в принципе, было немного, и касалась она в больше технической стороны вопроса — как декомпилировать приложение, какие инструменты использовать и общие рекомендации, да и по большей части она была везде одинаковой. И, честно говоря, было тяжеловато разбираться в тонне информации без какого-либо относительно хорошего руководства. В данной статье я попробую собрать всю информацию, касаемую переводов и инструментов, облегчающих такой труд. Надеюсь, что желающим стать переводчиками приложений это послужит по меньшей мере хорошим руководством.
Заинтересовавшихся прошу под кат.

Я зачастую сталкивался с тем, что, когда пишешь разработчику с пожеланием перевода на русский язык, предлагая свою кандидатуру, появляется несколько вариантов:
Ресурс для перевода всем миром по нитке хорош скоростью перевода, однако, опасен тем, что зачастую не всегда его переводят те, кто может перевести корректно. Обзор таких ресурсов на Хабре [5]. Например, Вы знаете, что такой-то пункт в меню приложения отвечает за определённую функцию, и пишете перевод в соответствующую ячейку на этом ресурсе. А потом какой-то умелец берёт и исправляет на неправильный, на, скажем, дословный перевод, который не является корректным. Вы снова исправляете на нужный, но кто-то упорный снова переименовывает. Есть ресурсы, где за каждый предлагаемый перевод можно голосовать, например, если кто-то предложил вариант «А», а Вы — «Б», то другие пользователи могут голосовать либо за «А», либо за «Б», и чей перевод наберёт больше голосов, тот и будет правильным. Хотя я не раз видел, что голосуют за откровенно некорректный вариант. Ну и, безусловно, надо понимать, что считать перевод только своим Вы не сможете, если Вам важно авторство перевода.
Если разработчик прислал Вам файлы локализации, то тут всё гораздо проще — берём свой инструмент для перевода и вперёд, а с разработчиком можно даже договориться о том, чтобы указал Вас в качестве переводчика — Вам приятно, а разработчик получает ещё одну локализацию.
Если же разработчик говорит, что локализация есть и качественная, а Вы явно видите там ошибку, да и не одну, и на ресурсе для перевода всем миром перевода нет, то остаётся только делать свои моды, если же, конечно, разработчик отказывается брать Вашу локализацию. Такая же ситуация, если разработчик Вам не ответил.
Лично я советую всегда попробовать сначала связаться с разработчиком, т.к. это может Вам упростить жизнь, а дальше уже выбирайте — будете ли Вы переводить на сайте, или будете делать свой перевод.

По сути, инструмента-то два, один основан на декомпиляции самого пакета, а другой — на работе непосредственно с самой ресурсной таблицей пакета.
Apktool [6] и его модификации:
Что такое apktool, можно узнать на просторах, это прекрасно гуглится и объясняется везде, где только можно. Собственно, все инструменты ниже основаны на нём, все я не перечислю, но постараюсь добавить самые основные.
B.A.R.S.:
B.A.R.S. [12] — принципиально другой инструмент перевода, он не перекомпилирует пакеты, а патчит ресурсную таблицу с заменой или добавлением строк, что позволяет снизить вероятность ошибок рекомпиляции практически на 99%.
Итог:
Если Вы хотите производить модификацию .apk-пакета в более полном понимании процесса (например, элементарное вырезание лишних языков, замена иконок и прочее) + перевод, то Вам нужны инструменты, основанные на apktool — все инструкции по использованию и прочим хитростям можно найти на просторах, у меня не стоит цели описывать всё тут. Вся беда apktool в том, что он перепаковывает приложение, что может создать дополнительные трудности.
Если Вы хотите только локализовывать, тогда можно обойтись B.A.R.S., однако, требуется настроить репозиторий с переводом. Впрочем, возня на час-другой сможет Вас избавить от головняка по сборке, которая может случиться с apktool.
Внимание! Настоятельно рекомендую связываться с разработчиком при создании модов — они нередко идут на встречу, разрешая делать с приложением что угодно, только без выкладки в общий доступ. По сути, никакого технического значения обращение к разработчику не имеет, но это этическая сторона вопроса, которая действительно важна. Например, я связывался с разработчиком одной программы-таскера и отправил ему перевод, однако, много перевода было в коде и без рекомпиляции приложения собрать локализованный пакет было невозможно. Разработчик ответил, что «разрешить выкладывать в общий доступ он не может, но использовать для себя — сколько угодно», и даже сам указал в каких именно строках кода лежит перевод.

Допустим, Вы получили файлы локализации так или иначе (или Вам прислал их разработчик, или Вы разобрали приложение), следующий шаг — перевод этих файлов. Для автоматизации перевода существует огромное количество инструментов, где используется «translation memory» («память переводов») [13] — база, которая будет сопоставлять строки и выводить наиболее подходящий вариант перевода. Подробнее об этом можно почитать, опять же, на просторах.
Наиболее подходящие для перевода файлов локализации (.xml) — именно первые две программы, лично я сам пользуюсь TM-database. Например, у меня OmegaT начисто отказывался работать с .xml, приходилось копипастить в документ другого формата, удалять лишнее… В общем, напряжно. При использовании «памяти переводов» можно пользоваться что своей базой, что стандартной. Своя база хороша тем, что Вы добавляете в базу исключительно свой перевод, и при автоматическом переводе многое может перевестись корректно. При использовании «стандартной» базы или «общей», в которую все кладут по копеечке, вероятнее всего будет куда больше перевода, но опять же — он может быть неправильным или может отличаться от Вашего . Тут уже Ваш выбор. Так же есть функции онлайн-перевода — можно прогнать через онлайн-переводчик и затем редактировать, но об этом ниже.
Итог: создание собственной базы сможет упростить Вашу жизнь больше, чем общая база, но только в том случае, если в Вашей базе содержится действительно множество строк. Возможно, потребуется несколько лет на создание оной, но оно того стоит. В остальных случаях хватит и общей базы. Лично моя рекомендация — создавайте свою базу с нуля, либо берите «стандартную» базу и набивайте в неё свой перевод — стандартный перевод на то и стандартный, а к нему будут добавляться лично Ваши строки. Но не стоит думать, что база решит все Ваши проблемы, всегда придётся забивать вручную какую-то часть и править перевод из базы. Всегда после прогонки через базу смотрите на результат.

Безусловно, чтобы что-то вбивать в базу данных, надо знать как это переводится. Зачастую многие специальные термины переводятся совершенно различно от дословного перевода, а все их запомнить нереально. И вот тут приходится обращаться к словарям и переводчикам.
Использование сервисов типа Мультитрана так же значительно может облегчить Вам жизнь. Но если нет какого-то специального термина, то следует пробивать по трём ресурсам нужные слова и пытаться уловить смысл словосочетания — да такое тоже случается. Очень хорошую подсказку зачастую даёт строка с переводом, сам ключ, из него можно вытащить 95% информации за что отвечает эта строка. Ни в коем случае не увлекайтесь голым онлайн-переводом, практической пользы от такого перевода нет вообще, проще уже оставить на нативном языке, если это хотя бы английский. Но если уж такое произошло, что очень хочется перевести, а навыков и знаний особых нет — то следует прогнать через онлайн переводчик, смотреть на ключ строки и облагораживать. В процессе такого обучения с каждым разом Ваши знания будут увеличиваться, а перевод — шлифоваться. Самое главное — никогда не оставлять голый машинный перевод, если Вы прогоняете онлайн.
Всем спасибо за внимание.
Автор: Breathe_of_fate
Источник [29]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/android/103684
Ссылки в тексте:
[1] статья из песочницы Хабра: http://habrahabr.ru/sandbox/63285/
[2] статья на Хакере: https://xakep.ru/2013/10/22/modify-and-packing-android-apps/
[3] ещё статья, первая в гугле: http://androidp1.ru/dekompilyatsiya-apk-prilozheniya-android/
[4] мануалы самого гугла: http://developer.android.com/sdk/index.html
[5] Обзор таких ресурсов на Хабре: http://habrahabr.ru/post/229031/
[6] Apktool: https://ibotpeaches.github.io/Apktool/
[7] APK Studio: http://github.vaibhavpandey.com/apkstudio/
[8] APKToolGUI: https://github.com/INF1NUM/APKToolGUI
[9] Batch Apktool: http://bursoft-portable.blogspot.ru/p/blog-page_23.html
[10] jBART: http://burgerz.pro/jbart/
[11] MultiApkTool: http://forum.xda-developers.com/showthread.php?t=1310151/
[12] B.A.R.S.: http://forum.multirom.me/viewforum.php?f=61
[13] «translation memory» («память переводов»): https://ru.wikipedia.org/wiki/Память_переводов
[14] Notepad++: https://notepad-plus-plus.org/
[15] TM-database: http://yehongmei.narod.ru/home_rus.htm
[16] TranslatorApk: http://4pda.ru/forum/index.php?s=&showtopic=456798&view=findpost&p=21568755
[17] Déjà Vu: http://www.atril.com/
[18] OmegaT: http://www.omegat.org/ru/omegat.html
[19] Trados: http://www.translationzone.com/trados.html
[20] SDL Passolo: http://www.sdl.com/cxc/language/software-localization/passolo/
[21] мышления: http://www.braintools.ru
[22] Мультитран: http://www.multitran.ru/c/m.exe?a=1&SHL=2
[23] ABBY Lingvo: http://www.lingvo-online.ru/ru
[24] PROMPT: http://www.translate.ru/
[25] MyMemory: https://mymemory.translated.net/
[26] QTranslate: https://quest-app.appspot.com/
[27] Google Translate: https://translate.google.ru/
[28] Множество информации о переводах, ссылок на ресурсы для специализированного перевода и пр.: http://englishresource.narod.ru/
[29] Источник: http://geektimes.ru/post/265716/
Нажмите здесь для печати.