![](https://habrastorage.org/files/861/6e8/971/8616e897144d4f6195907325c79d9b0e.png)
Доброго времени суток, Geektimes.
Когда я только начинал переводить приложения, информации по переводам, в принципе, было немного, и касалась она в больше технической стороны вопроса — как декомпилировать приложение, какие инструменты использовать и общие рекомендации, да и по большей части она была везде одинаковой. И, честно говоря, было тяжеловато разбираться в тонне информации без какого-либо относительно хорошего руководства. В данной статье я попробую собрать всю информацию, касаемую переводов и инструментов, облегчающих такой труд. Надеюсь, что желающим стать переводчиками приложений это послужит по меньшей мере хорошим руководством.
Заинтересовавшихся прошу под кат.
Вступление
Безусловно, самым главным является знание языка, с которого Вы собираетесь переводить. От знаний языка зависит будете ли Вы переводить «быстро» или «хорошо», или же сразу два в одном. Зачастую бывает так, что знаний в какой-то нужной сфере у Вас нет, тогда тут определённо нужно читать литературу по этой области. Например, если Вы хотите перевести приложение, которое занимается модифицированием системы, то следует изучать литературу именно об этом, т.к. технический английский бывает не таким уж и однозначным и зачастую отличается по значению от терминов в нетехнической сфере, а некоторые конструкции можно переводить по-разному, и корректный перевод Вы сможете сделать только, если Вы понимаете о чём идёт речь. Из этого вытекает уже второй критерий: понять, что на это реально требуется время и упорство, если Вы хотите делать всё качественно, а не через Google Translate.
Я не буду вдаваться в технические подробности операций непосредственно с самим .apk-файлом по вытаскиванию из него локализации, а так же внедрения в него Вашего перевода — Вы сами без труда сможете это найти на просторах, т.к. мануалов огромное количество, я же просто собрал информацию о возможных инструментах. Например, статья из песочницы Хабра, где примерно написан процесс декомпиляции приложения; статья на Хакере о том же самом + модификации; ещё статья, первая в гугле. Более подробно можно посмотреть, конечно же, мануалы самого гугла.
Первым делом
![](https://habrastorage.org/files/59d/011/a3e/59d011a3e33645e2bdb6b235d91435e7.png)
Я зачастую сталкивался с тем, что, когда пишешь разработчику с пожеланием перевода на русский язык, предлагая свою кандидатуру, появляется несколько вариантов:
- разработчик даёт ссылку на ресурс, где перевод осуществляется всем миром;
- разработчик отвечает, что не планирует добавлять другой язык;
- разработчик присылает Вам файлы локализации;
- разработчик говорит, что локализация уже есть и она качественная;
- разработчик не отвечает вовсе.
Ресурс для перевода всем миром по нитке хорош скоростью перевода, однако, опасен тем, что зачастую не всегда его переводят те, кто может перевести корректно. Обзор таких ресурсов на Хабре. Например, Вы знаете, что такой-то пункт в меню приложения отвечает за определённую функцию, и пишете перевод в соответствующую ячейку на этом ресурсе. А потом какой-то умелец берёт и исправляет на неправильный, на, скажем, дословный перевод, который не является корректным. Вы снова исправляете на нужный, но кто-то упорный снова переименовывает. Есть ресурсы, где за каждый предлагаемый перевод можно голосовать, например, если кто-то предложил вариант «А», а Вы — «Б», то другие пользователи могут голосовать либо за «А», либо за «Б», и чей перевод наберёт больше голосов, тот и будет правильным. Хотя я не раз видел, что голосуют за откровенно некорректный вариант. Ну и, безусловно, надо понимать, что считать перевод только своим Вы не сможете, если Вам важно авторство перевода.
Если разработчик прислал Вам файлы локализации, то тут всё гораздо проще — берём свой инструмент для перевода и вперёд, а с разработчиком можно даже договориться о том, чтобы указал Вас в качестве переводчика — Вам приятно, а разработчик получает ещё одну локализацию.
Если же разработчик говорит, что локализация есть и качественная, а Вы явно видите там ошибку, да и не одну, и на ресурсе для перевода всем миром перевода нет, то остаётся только делать свои моды, если же, конечно, разработчик отказывается брать Вашу локализацию. Такая же ситуация, если разработчик Вам не ответил.
Лично я советую всегда попробовать сначала связаться с разработчиком, т.к. это может Вам упростить жизнь, а дальше уже выбирайте — будете ли Вы переводить на сайте, или будете делать свой перевод.
Инструменты для работы с .apk
![](https://habrastorage.org/files/839/87f/cbc/83987fcbc14c429d83bc26ddf1118e27.png)
По сути, инструмента-то два, один основан на декомпиляции самого пакета, а другой — на работе непосредственно с самой ресурсной таблицей пакета.
Apktool и его модификации:
Что такое apktool, можно узнать на просторах, это прекрасно гуглится и объясняется везде, где только можно. Собственно, все инструменты ниже основаны на нём, все я не перечислю, но постараюсь добавить самые основные.
- Apktool — «оригинальный» вариант, консольный;
- APK Studio — мощный инструмент для работы с пакетом, мало подходит начинающим;
- APKToolGUI — очень удобный инструмент с оконным GUI, но, к сожалению, больше не поддерживается автором, код лежит на GitHub (на него и ведёт ссылка);
- Batch Apktool — по-моему, самый удобный и исправно функционирующий инструмент, который обладает каким-никаким GUI, имеет поддержку плагинов, активно развивается и это самый настоящий комбайн для модификации что прошивок, что отдельных приложений;
- jBART — зарекомендовавший себя отличный инструмент для перевода прошивок, но умеет работать и с одиночными пакетами, по сути, это надстройка над apktool, позволяющая пакетно переводить .apk-файлы и патчить код;
- MultiApkTool — неплохой комбайн, похожий на BatchApkTool;
- множество других.
B.A.R.S.:
B.A.R.S. — принципиально другой инструмент перевода, он не перекомпилирует пакеты, а патчит ресурсную таблицу с заменой или добавлением строк, что позволяет снизить вероятность ошибок рекомпиляции практически на 99%.
Итог:
Если Вы хотите производить модификацию .apk-пакета в более полном понимании процесса (например, элементарное вырезание лишних языков, замена иконок и прочее) + перевод, то Вам нужны инструменты, основанные на apktool — все инструкции по использованию и прочим хитростям можно найти на просторах, у меня не стоит цели описывать всё тут. Вся беда apktool в том, что он перепаковывает приложение, что может создать дополнительные трудности.
Если Вы хотите только локализовывать, тогда можно обойтись B.A.R.S., однако, требуется настроить репозиторий с переводом. Впрочем, возня на час-другой сможет Вас избавить от головняка по сборке, которая может случиться с apktool.
Внимание! Настоятельно рекомендую связываться с разработчиком при создании модов — они нередко идут на встречу, разрешая делать с приложением что угодно, только без выкладки в общий доступ. По сути, никакого технического значения обращение к разработчику не имеет, но это этическая сторона вопроса, которая действительно важна. Например, я связывался с разработчиком одной программы-таскера и отправил ему перевод, однако, много перевода было в коде и без рекомпиляции приложения собрать локализованный пакет было невозможно. Разработчик ответил, что «разрешить выкладывать в общий доступ он не может, но использовать для себя — сколько угодно», и даже сам указал в каких именно строках кода лежит перевод.
Инструменты для работы с файлами локализации
![](https://habrastorage.org/files/5dd/593/b11/5dd593b119ab4cf7ad808015a2be35fe.png)
Допустим, Вы получили файлы локализации так или иначе (или Вам прислал их разработчик, или Вы разобрали приложение), следующий шаг — перевод этих файлов. Для автоматизации перевода существует огромное количество инструментов, где используется «translation memory» («память переводов») — база, которая будет сопоставлять строки и выводить наиболее подходящий вариант перевода. Подробнее об этом можно почитать, опять же, на просторах.
- Вручную — самый дедовский способ: открываем в текстовом редакторе (Notepad++ или любом другом, кроме нативного «Блокнота» в Windows!) и переводим. Медленно и архаично. В общем — хватит только на первые сотни три строк, далее лень и жалость к потерянному времени возьмёт своё.
- TM-database — отличная легковесная программа, которая умеет работать со множеством форматов, поддерживает базу данных и активно поддерживается. Отличный выбор как для начинающих, так и для более прошаренных. Работает как на Windows, так и прекрасно запускается из-под Linux (Wine).
- TranslatorApk — комбайн, который умеет и декомпилировать приложения, и относительно удобно работать с текстом. Вариант для тех, кто хочет иметь всё в одном.
- Déjà Vu, OmegaT, Trados, SDL Passolo и пр. инструменты.
Наиболее подходящие для перевода файлов локализации (.xml) — именно первые две программы, лично я сам пользуюсь TM-database. Например, у меня OmegaT начисто отказывался работать с .xml, приходилось копипастить в документ другого формата, удалять лишнее… В общем, напряжно. При использовании «памяти переводов» можно пользоваться что своей базой, что стандартной. Своя база хороша тем, что Вы добавляете в базу исключительно свой перевод, и при автоматическом переводе многое может перевестись корректно. При использовании «стандартной» базы или «общей», в которую все кладут по копеечке, вероятнее всего будет куда больше перевода, но опять же — он может быть неправильным или может отличаться от Вашего мышления. Тут уже Ваш выбор. Так же есть функции онлайн-перевода — можно прогнать через онлайн-переводчик и затем редактировать, но об этом ниже.
Итог: создание собственной базы сможет упростить Вашу жизнь больше, чем общая база, но только в том случае, если в Вашей базе содержится действительно множество строк. Возможно, потребуется несколько лет на создание оной, но оно того стоит. В остальных случаях хватит и общей базы. Лично моя рекомендация — создавайте свою базу с нуля, либо берите «стандартную» базу и набивайте в неё свой перевод — стандартный перевод на то и стандартный, а к нему будут добавляться лично Ваши строки. Но не стоит думать, что база решит все Ваши проблемы, всегда придётся забивать вручную какую-то часть и править перевод из базы. Всегда после прогонки через базу смотрите на результат.
Словари и онлайн-сервисы
![](https://habrastorage.org/files/c42/d33/28d/c42d3328dee64347a917b7729d6d1c5a.png)
Безусловно, чтобы что-то вбивать в базу данных, надо знать как это переводится. Зачастую многие специальные термины переводятся совершенно различно от дословного перевода, а все их запомнить нереально. И вот тут приходится обращаться к словарям и переводчикам.
- Мультитран — потрясающая платформа, где можно реально найти огромное количество терминов, причём, добавить туда можно тоже. Можно переводить что через сайт, что скачать себе базу и переводить через клиент.
- ABBY Lingvo — клиент на ПК умеет даже разговаривать, огромная база переводов. Да и вообще компания известная, одна из лучших. Специальных терминов меньше, чем в Мультитране, но определённо может помочь, или уж, по меньшей мере, подкинуть вариант перевода.
- PROMPT — известный переводчик, конкурент Google Translate, иногда выдаёт варианты, которых в Google Translate нет; приходится додумывать, но если есть подсказка — уже хорошо.
- MyMemory — отличный ресурс, аналог Мультитрана, есть множество терминов и различных вариантов перевода.
- QTranslate — отличный клиент для сервисов перевода, в котором можно сразу пробивать по каждому сервису, в т.ч. и по китайским.
- Google Translate — в комментариях не нуждается. Может подсказать или даже перевести нормально. Довольно неплохо переводить с китайского.
- Microsoft Language Portal — тут можно найти «память перевода» для продукции Microsoft (спасибо за подсказку virtualtomato).
- Verifika — потрясающий сервис для нахождения обидных ошибок в переводе (двойные пробелы, целостность переменных, тегов и пр.). Невероятно полезный сервис, который плагин в Notepad++ не заменит (спасибо за подсказку virtualtomato).
- Множество информации о переводах, ссылок на ресурсы для специализированного перевода и пр.
Использование сервисов типа Мультитрана так же значительно может облегчить Вам жизнь. Но если нет какого-то специального термина, то следует пробивать по трём ресурсам нужные слова и пытаться уловить смысл словосочетания — да такое тоже случается. Очень хорошую подсказку зачастую даёт строка с переводом, сам ключ, из него можно вытащить 95% информации за что отвечает эта строка. Ни в коем случае не увлекайтесь голым онлайн-переводом, практической пользы от такого перевода нет вообще, проще уже оставить на нативном языке, если это хотя бы английский. Но если уж такое произошло, что очень хочется перевести, а навыков и знаний особых нет — то следует прогнать через онлайн переводчик, смотреть на ключ строки и облагораживать. В процессе такого обучения с каждым разом Ваши знания будут увеличиваться, а перевод — шлифоваться. Самое главное — никогда не оставлять голый машинный перевод, если Вы прогоняете онлайн.
Заключение
Ну вот вроде бы и всё. Как видно — это не так уж и сложно, более того, заставляет мозги работать, да и знания никогда не бывают лишними. Общие рекомендации, если подводить итог, не отличаются от тех, что в статье — делать самостоятельно, небездумно копировать и переводить через переводчики без последующей обработки. Например, если переводить через переводчик с китайского на английский, а потом на русский — получится такой ужас, что лучше бы остался китайский. Самое главное тут — уважение к чужому труду (разработчику), к пользователям, которые будут смотреть на Ваш перевод (а стыдобище-то будет, если переводить абы как), и к себе лично. К счастью, с каждым годом инструменты и сервисы пилятся всё активнее, становится куда более удобно заниматься переводами. К слову, если разработчик адекватный, то за свою работу Вы сможете получить или какой-нибудь VIP-аккаунт, или маленький подарочек (мне как-то выслали футболку прикольную с прикольным монстриком — логотипом программы) — мелочь, а всё равно приятно. Уважайте друг друга и делайте работу качественно, если уж взялись.
Всем спасибо за внимание.