Доброго времени суток, Geektimes.

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

Заинтересовавшихся прошу под кат.

Вступление




Безусловно, самым главным является знание языка, с которого Вы собираетесь переводить. От знаний языка зависит будете ли Вы переводить «быстро» или «хорошо», или же сразу два в одном. Зачастую бывает так, что знаний в какой-то нужной сфере у Вас нет, тогда тут определённо нужно читать литературу по этой области. Например, если Вы хотите перевести приложение, которое занимается модифицированием системы, то следует изучать литературу именно об этом, т.к. технический английский бывает не таким уж и однозначным и зачастую отличается по значению от терминов в нетехнической сфере, а некоторые конструкции можно переводить по-разному, и корректный перевод Вы сможете сделать только, если Вы понимаете о чём идёт речь. Из этого вытекает уже второй критерий: понять, что на это реально требуется время и упорство, если Вы хотите делать всё качественно, а не через Google Translate.
Я не буду вдаваться в технические подробности операций непосредственно с самим .apk-файлом по вытаскиванию из него локализации, а так же внедрения в него Вашего перевода — Вы сами без труда сможете это найти на просторах, т.к. мануалов огромное количество, я же просто собрал информацию о возможных инструментах. Например, статья из песочницы Хабра, где примерно написан процесс декомпиляции приложения; статья на Хакере о том же самом + модификации; ещё статья, первая в гугле. Более подробно можно посмотреть, конечно же, мануалы самого гугла.

Первым делом





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

  • разработчик даёт ссылку на ресурс, где перевод осуществляется всем миром;
  • разработчик отвечает, что не планирует добавлять другой язык;
  • разработчик присылает Вам файлы локализации;
  • разработчик говорит, что локализация уже есть и она качественная;
  • разработчик не отвечает вовсе.


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

Инструменты для работы с .apk





По сути, инструмента-то два, один основан на декомпиляции самого пакета, а другой — на работе непосредственно с самой ресурсной таблицей пакета.

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.

Внимание! Настоятельно рекомендую связываться с разработчиком при создании модов — они нередко идут на встречу, разрешая делать с приложением что угодно, только без выкладки в общий доступ. По сути, никакого технического значения обращение к разработчику не имеет, но это этическая сторона вопроса, которая действительно важна. Например, я связывался с разработчиком одной программы-таскера и отправил ему перевод, однако, много перевода было в коде и без рекомпиляции приложения собрать локализованный пакет было невозможно. Разработчик ответил, что «разрешить выкладывать в общий доступ он не может, но использовать для себя — сколько угодно», и даже сам указал в каких именно строках кода лежит перевод.

Инструменты для работы с файлами локализации





Допустим, Вы получили файлы локализации так или иначе (или Вам прислал их разработчик, или Вы разобрали приложение), следующий шаг — перевод этих файлов. Для автоматизации перевода существует огромное количество инструментов, где используется «translation memory» («память переводов») — база, которая будет сопоставлять строки и выводить наиболее подходящий вариант перевода. Подробнее об этом можно почитать, опять же, на просторах.

  • Вручную — самый дедовский способ: открываем в текстовом редакторе (Notepad++ или любом другом, кроме нативного «Блокнота» в Windows!) и переводим. Медленно и архаично. В общем — хватит только на первые сотни три строк, далее лень и жалость к потерянному времени возьмёт своё.
  • TM-database — отличная легковесная программа, которая умеет работать со множеством форматов, поддерживает базу данных и активно поддерживается. Отличный выбор как для начинающих, так и для более прошаренных. Работает как на Windows, так и прекрасно запускается из-под Linux (Wine).
  • TranslatorApk — комбайн, который умеет и декомпилировать приложения, и относительно удобно работать с текстом. Вариант для тех, кто хочет иметь всё в одном.
  • Deja Vu, OmegaT, Trados, SDL Passolo и пр. инструменты.


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

Итог: создание собственной базы сможет упростить Вашу жизнь больше, чем общая база, но только в том случае, если в Вашей базе содержится действительно множество строк. Возможно, потребуется несколько лет на создание оной, но оно того стоит. В остальных случаях хватит и общей базы. Лично моя рекомендация — создавайте свою базу с нуля, либо берите «стандартную» базу и набивайте в неё свой перевод — стандартный перевод на то и стандартный, а к нему будут добавляться лично Ваши строки. Но не стоит думать, что база решит все Ваши проблемы, всегда придётся забивать вручную какую-то часть и править перевод из базы. Всегда после прогонки через базу смотрите на результат.

Словари и онлайн-сервисы





Безусловно, чтобы что-то вбивать в базу данных, надо знать как это переводится. Зачастую многие специальные термины переводятся совершенно различно от дословного перевода, а все их запомнить нереально. И вот тут приходится обращаться к словарям и переводчикам.

  • Мультитран — потрясающая платформа, где можно реально найти огромное количество терминов, причём, добавить туда можно тоже. Можно переводить что через сайт, что скачать себе базу и переводить через клиент.
  • ABBY Lingvo — клиент на ПК умеет даже разговаривать, огромная база переводов. Да и вообще компания известная, одна из лучших. Специальных терминов меньше, чем в Мультитране, но определённо может помочь, или уж, по меньшей мере, подкинуть вариант перевода.
  • PROMPT — известный переводчик, конкурент Google Translate, иногда выдаёт варианты, которых в Google Translate нет; приходится додумывать, но если есть подсказка — уже хорошо.
  • MyMemory — отличный ресурс, аналог Мультитрана, есть множество терминов и различных вариантов перевода.
  • QTranslate — отличный клиент для сервисов перевода, в котором можно сразу пробивать по каждому сервису, в т.ч. и по китайским.
  • Google Translate — в комментариях не нуждается. Может подсказать или даже перевести нормально. Довольно неплохо переводить с китайского.
  • Microsoft Language Portal — тут можно найти «память перевода» для продукции Microsoft (спасибо за подсказку virtualtomato).
  • Verifika — потрясающий сервис для нахождения обидных ошибок в переводе (двойные пробелы, целостность переменных, тегов и пр.). Невероятно полезный сервис, который плагин в Notepad++ не заменит (спасибо за подсказку virtualtomato).
  • Множество информации о переводах, ссылок на ресурсы для специализированного перевода и пр.


Использование сервисов типа Мультитрана так же значительно может облегчить Вам жизнь. Но если нет какого-то специального термина, то следует пробивать по трём ресурсам нужные слова и пытаться уловить смысл словосочетания — да такое тоже случается. Очень хорошую подсказку зачастую даёт строка с переводом, сам ключ, из него можно вытащить 95% информации за что отвечает эта строка. Ни в коем случае не увлекайтесь голым онлайн-переводом, практической пользы от такого перевода нет вообще, проще уже оставить на нативном языке, если это хотя бы английский. Но если уж такое произошло, что очень хочется перевести, а навыков и знаний особых нет — то следует прогнать через онлайн переводчик, смотреть на ключ строки и облагораживать. В процессе такого обучения с каждым разом Ваши знания будут увеличиваться, а перевод — шлифоваться. Самое главное — никогда не оставлять голый машинный перевод, если Вы прогоняете онлайн.

Заключение




Ну вот вроде бы и всё. Как видно — это не так уж и сложно, более того, заставляет мозги работать, да и знания никогда не бывают лишними. Общие рекомендации, если подводить итог, не отличаются от тех, что в статье — делать самостоятельно, небездумно копировать и переводить через переводчики без последующей обработки. Например, если переводить через переводчик с китайского на английский, а потом на русский — получится такой ужас, что лучше бы остался китайский. Самое главное тут — уважение к чужому труду (разработчику), к пользователям, которые будут смотреть на Ваш перевод (а стыдобище-то будет, если переводить абы как), и к себе лично. К счастью, с каждым годом инструменты и сервисы пилятся всё активнее, становится куда более удобно заниматься переводами. К слову, если разработчик адекватный, то за свою работу Вы сможете получить или какой-нибудь VIP-аккаунт, или маленький подарочек (мне как-то выслали футболку прикольную с прикольным монстриком — логотипом программы) — мелочь, а всё равно приятно. Уважайте друг друга и делайте работу качественно, если уж взялись.

Всем спасибо за внимание.

Комментарии (21)


  1. kloppspb
    14.11.2015 02:26

    >Использование сервисов типа Мультитрана так же значительно может облегчить Вам жизнь. Но если нет какого-то специального термина, то следует пробивать по 3-ём ресурсам нужные слова и пытаться уловить смысл словосочитания

    Вы што, спациально тролете?


    1. Breathe_of_fate
      14.11.2015 02:32

      Хм. Нет. Например, есть словосочитание из двух или трёх слов, и Мультитран его не знает. Остаётся пробивать слова по-отдельности и искать смысл уже по ним. Соответственно, если словосочитание есть — это экономит время. Словарь не сделает за Вас всю работу.


      1. kloppspb
        14.11.2015 02:35
        -2

        Вы не поняли… Мой посыл был в том, что для начала родной язык хорошо бы знать в объёме больше, чем «три коридора, из четвёртого выгнали».


      1. kloppspb
        14.11.2015 03:41
        +2

        А ты правда не тролль? Честно-честно? У меня глюк: я не могу представить себе живого человека, который пишет «словосочИтание».

        Но могу представить мальчика лет 10-12 (к 14 они такими тупыми быть перестают — в моей эльфийской реальности)


        1. Breathe_of_fate
          14.11.2015 10:04

          Писал ночью, глаз замылился. Исправил.


          1. ingumsky
            14.11.2015 12:50

            Вы тогда и «3-ём» исправьте, пожалуйста, в том же фрагменте. Ну и вообще, вам было бы неплохо перепроверить и поправить статью — ошибок в вашем материале о переводах, к сожалению, очень много.


            1. mullinsmikey
              15.11.2015 09:50

              Тем не менее, статья неплохая и полезная.


              1. Breathe_of_fate
                15.11.2015 12:21

                Спасибо за отзыв.


  1. rogrom
    16.11.2015 18:19

    делайте работу качественно, если уж взялись
    Вы предлагаете слить apk и модифицировать его, доложив файлы ресурсов, переведенных в promt/где-то, а затем отослать разработчику в надежде получить подарочек или прикольную футболку


  1. virtualtomato
    17.11.2015 13:19
    +2

    Очень хорошая статья и очень зрелый подход к выполнению перевода.

    Могу порекомендовать вам в качестве хорошего источника информации Microsoft Language Portal. Там вы можете найти TM с переводами строк из продуктов Microsoft, терминологию и стайлгайды.

    Также, по моим ощущениям, если нужен машинный перевод с китайского, то Bing Translator работает чуть лучше Google Translate.

    Вы не упомянули еще один важный этап в процессе перевода приложений. Это автоматическая проверка качества (Auto Quality Assurance). Этот этап позволяет переводчику избавиться от многих досадных ошибок быстро и легко. К таким ошибкам относятся двойные пробелы, разный перевод одинаковых сегментов, одинаковый перевод разных сегментов, терминологические ошибки, целостность переменных и тегов и пр. К автоматической проверке качества я также отношу инструменты проверки орфографии и грамматики (Spell Check), которые безусловно помогли бы вам избежать некоторых ошибок, которые вы допустили в этой статье из-за «замыленного глаза» :) В таких мощных CAT-программах как Deja Vu, Trados и MemoQ есть встроенные модули проверки качества. Но есть отличные отдельные инструменты. Например, Verifika. Если вы переводите на русский, то можете пользоваться бесплатно.

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

    Удачи вам в работе и продолжайте совершенствоваться!


    1. Breathe_of_fate
      17.11.2015 14:38

      то Bing Translator работает чуть лучше Google Translate

      Да, он есть в QTranslate. Тоже заметил, что зачастую переводит лучше. Китайский у меня тоже брал, кстати.

      Спасибо за информацию и комментарий, добавлю в статью — пусть будет всё на виду.


    1. Breathe_of_fate
      17.11.2015 14:49

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

      Да, логично делать каждую базу под конкретное приложение, или, например, проект. Но в TM-database, например, есть функция автоматического перевода с выводом диалога вставки нужной строки, если есть две разные строки с разным переводом, то есть когда в самой базе содержится строка ..._button_on с переводом «Вкл.» и «Включить», при автоматическом переводе у Вас программа спросит какую именно строку ей подставлять. Это позволяет уменьшить несколько файлов до одного. Другая проблема — если у Вас есть база без проектов, то это поможет. Но, конечно, проще делать проекты под каждое приложение, а потом просто обновлять перевод раз за разом.

      Например, Verifika

      Эх… А я-то делал по-старинке: смотрел на Грамота.ру, если в чём-то сомневался, а Notepad++ с плагином проверки правописания помогал. :)


    1. Breathe_of_fate
      17.11.2015 14:59

      А, ещё забыл сказать: TM-database прячет теги, чтобы их не дай Бог сломать, т.е. смотреть их можно, а вот редактировать — нет. Не все, правда, теги скрывает, но очень многие. В любом случае после перевода через программу файл открывается через текстовый редактор и ещё раз смотрится уже оттуда на наличие ошибок любого рода.


  1. scalywhale
    17.11.2015 13:43
    +2

    Хорошая статья. То, что вы разобрались во всём настолько глубоко, достойно уважения.
    Правда, не поддерживаю идею самостоятельной локализации и «выковыривания» ресурсов из .apk.
    Хочу рассказать вам, почему разработчики могут не предоставлять вам ресурсы для перевода:
    1. российский рынок им не интересен;
    2. все или некоторые функции продукта могут быть недоступны на территории России;
    3. разработчик не хочет запускать русскую локализацию без гарантий русскоязычной поддержки;
    4. волонтёрская локализация чревата тем, что переводчик-волонтёр ничем не обязан продукту и может испариться в любой момент, тогда разработчику придётся искать нового переводчика, смешивать русский и английский, либо отключать русский — гарантий регулярной поддержки нет никаких;
    5. так как вы волонтёр, с точки зрения дедлайнов на вас надавить нельзя, потому что вы ничем не обязаны, а отсутствие переведённых строк на каком-то языке может стать для продукта release-stopping issue;
    6. нанимать переводчика или агентство для русской локализации может быть неоправданно с финансовой точки зрения.
    7. другие причины (например, отсутствие русской локализации Telegram).

    Успехов!


    1. Breathe_of_fate
      17.11.2015 14:56

      Вы правы. Однако, я считаю, что глупо отказываться от локализации, которую Вам дали бесплатно. Волонтёры найдутся так или иначе. Более того, пока у Вас есть волонтёрский перевод, им можно обходится, параллельно собирая перевод со всех на подходящем ресурсе.
      Знаете, было немного обидно, когда я отправил файлы перевода, общей сложностью содержащие 3,5К строк, а разработчик сказал, что не будет добавлять в перевод, т.к. нет справки на русском, и сама справка висела у него на сайте на английском и немецком. Его-то можно понять, но и его программа была в топе Google Play, где люди жаловались на отсутствие русского, за который они даже были готовы заплатить (сама программа стоила около 300 рублей).


      1. virtualtomato
        17.11.2015 15:23
        +1

        Вот здесь почти всё, что нужно знать о краудсорсинге, чтобы понять, почему не так уж глупо отказываться от бесплатной локализации.

        Вы поймите, очень здорово и приятно, когда есть люди, готовые помогать разработчикам. Но сам по себе перевод, тем более выполненный в отрыве от требований компании, — важная, но малая часть того, что нужно для успешной локализации. На моём проекте, например, есть термины, которые категорически запрещено использовать в продукте, потому что это приведет к неверному позиционированию. Есть определенные категории, которые нуждаются в тщательном комментарии, иначе переводчик может неправильно их понять, просто потому, что он не внутри команды. Есть особенности разработки, с которыми тоже приходится считаться. Более того, в некоторых продуктах необходимо адаптировать под регион интерфейс и функциональность: календари, валюты, цены, единицы измерения. Поэтому, если кто-то принесет мне готовый перевод (который скорее всего будет неполным, потому что новые строки пишутся каждый день), я просто не смогу его принять без проверки. Это репутационный риск. А проверка — это дополнительные затраты. Поэтому не стоит обижаться на разработчиков, лучше помогайте тем, кто заранее на это согласился.


        1. Breathe_of_fate
          17.11.2015 15:27

          Вы абсолютно правы.
          Вот, собственно, так мы и переводим сами китайские прошивки (об этом я напишу отдельную статью) :) Там перевод лежит не только в «стандартных» ресурсах, но и в коде. Я уже не буду говорить о различиях в календаре, Т9 в номеронабирателе, полосе начальных букв имени контакта в записной книжке… Мороки — море.


      1. scalywhale
        17.11.2015 15:34

        не соглашусь, это не глупость, а клиентоориентированность.
        если разработчик берёт за своё приложение деньги, то и локализацию он должен поставлять соответствующего качества.
        Представьте, вы кореец, у вас крутое приложение «Компас» за 5 баксов, тут пишет вам условный Сергей из условного Липецка и говорит, что переведёт бесплатно. Вы соглашаетесь, он вам переводит с кучей ошибок, которые вы никогда не заметите, так как не знаете русского. И потом начинается самое интересное: пользователи начинают требовать деньги назад и так далее.

        Знаете, было немного обидно, когда я отправил файлы перевода, общей сложностью содержащие 3,5К строк, а разработчик сказал, что не будет добавлять в перевод

        А вы предварительно договорились о том, что будете переводить? Если нет, то считайте это тренировкой.

        глупо отказываться от локализации, которую Вам дали бесплатно

        Бесплатно не равно качественно :)

        В целом, я, конечно, поддерживаю ваш интерес и прокачивание умений в этой сфере, но прошу и разработчиков понять тоже.


        1. Breathe_of_fate
          17.11.2015 15:43

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


          1. scalywhale
            17.11.2015 15:53

            Ну оценить риски с точки зрения переводчика — очень наивно, ведь вы не вкладывали в разработку деньги и время и не рискуете репутацией продукта и команды.
            Меню принудительной смены языка — во-первых, лишний элемент интерфейса (не забудьте, мы говорим о мобильных приложениях, а не об интерфейсе 1С: Бухгалтерия); во-вторых, лишняя работа. В подавляющем большинстве приложений язык переключается вместе со сменой локали.
            Я сам пишу время от времени разработчикам приложений и предлагаю сделать русскую локализацию, мне охотно отвечают, но локализацию либо не добавляют, либо делают её усилиями своих ресурсов (внешних или внутренних).


            1. Breathe_of_fate
              17.11.2015 19:21

              Верно, но я смотрю в принципе по качеству и популярности продукта. Ну, лишний пукнт в настройках не загрузит приложение, ИМХО.