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

Да, существуют иные выходы: скачать из сети то или иное приложение, требующее перевода, в нашем случае — для русскоговорящих. Но и здесь не без проблем. Те, кто устанавливал приложения с пользовательскими переводами, могли лицезреть не только результат работы переводчика, но и его грамматические ошибки, которые порой не просто бесят, а выводят из себя! Но всё же, речь не об этом.

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

Что у Вас должно быть:

  1. Письменная грамотность (если Ваш перевод не увидит весь мир, то не берите это в голову).
  2.  Утилита APKTool (последнюю версию можно всегда найти здесь).
  3. Утилита Sign+.
  4. Текстовый редактор (скачиваем последнюю версию Notepad++ отсюда).
  5. Нелоказированное приложение или уже переведенное, но с огромным, просто неимоверным количеством орфографических и пунктуационных ошибок.
  6. Терпение и внимательность (строк для перевода может быть «ну очень много»).

Если вышеперечисленные пункты уже имеются, тогда приступим.
Описанные манипуляции проводились на Windows.

Поехали!

1. Распаковываем APKTool и рядом с ним располагаем непереведённое приложение (лучше все это добро поместить в корень диска C:\).
2. Запускаем командную строку («Пуск»—»Выполнить»—»cmd») и вводим:

  • cd C:\
  • apktool d название_приложения.apk

Всё должно выглядеть примерно так:

  • cd C:\
  • apktool d com.pixlr.express.apk

3. После декомпиляции в APKTool заходим в только что созданную папку, которая назвается так же, как и само приложение. Папка «res» содержит ресурсы приложения, она нам и нужна. Зайдя в неё, мы видим определенное количество папок. Папки, которые начинаются с «values-xx» имеют в себе файлы с языковыми строками (values-en для английского языка, values-ru — для русского), а папка «values» — стандартный, базовый, так сказать, перевод. Если не будет хватать строк локализации в одном из файлов, содержащемся в папке «values-xx», то приложение будет обращаться к стандартному языку, который лежит в «values». Поэтому лучше не делать перевод поверх стандартного. Также, когда будет выбран русский язык в прошивке, приложение будет загружать языковой пакет из папки «values-ru». Если у приложения нет русской локализации, то система будет загружать язык из папки «values». Надеюсь, Вы меня поняли.

4.:

  1. Для тех, кто дополняет перевод или его исправляет: ничего не делаем, пропускаем пункт.
  2. Для тех, кто переводит с нуля: создаем папку «values-ru», копируем файлы «arrays.xml», «plurals.xml», «strings.xml» из папки «values» в папку «values-ru».

5. Открываем редактор и настраиваем его кодировку, а то у нас приложение не скомпилируется. В окне Notepad++ выбираем «Кодировки» и пункт «Кодировать в UTF-8». В дальнейшем до каждого сохранения изменённых файлов проверяйте этот очень важный параметр.

6. Открываем в редакторе один из файлов локализации. Примерная структура строк в файлах «arrays.xml», «plurals.xml», «strings.xml»  такова:

  1. arrays.xml: абвгдеёжзий
  2. plurals.xml: клмнопрстуф
  3. strings.xml: хцчшщъыьэюя

Там где выделено красным — строка, которую Вы можете править. Будьте внимательными, так как, если Вы по ошибке удалите начало или конец одного из тегов, декомпилированное приложение не будет собрано! Примеры правильного закрытия тега «:», «,» и т.д.

7. Переводим. Пользуйтесь переводчиками, руководствуйтесь словарями и т.д.

8. Сохраняем все изменения (проверьте кодировку!) и, открыв командную строку, пишем:

  • apktool b название_папки

Например:

  • apktool b com.pixlr.express

Приложение скомпилировалось в папке «dist«, она расположена внутри папки, что создавалась при декомпилировании приложения.

9. После компиляции APKTool ничего не подписывает, а подпись нужна для установки приложения. Файлы подписи находятся в папке «META-INF» внутри приложения. Поэтому, нам остаётся всё это дело подписать.

Распаковываем куда угодно утилиту Sign+ и открываем её. Перетягиваем наше собранное приложение из папки «dist» в окно утилиты для подписи и нажимаем в окне на «Sign files». В той папке, в которой находится наше переведённое приложение, появится новый архив, в названии которого содержится «_signed» — это и есть подписанное приложение.

Частые проблемы с использованием APKTool:

  1.  Некоторые несистемные приложения ни в какую не будут разбираться. Это не оплошность APKTool, а хорошо защищённое от таких, как «мы с Вами», скомпилированное приложение разработчика. Некоторые не уважают девелоперов приложений, т.е., при переводе везде заменяют копирайт разработчика на свой, а потом представляют псевдо-свои приложения сети, это не есть хорошо!
  2. При компилировании приложения могут возникать ошибки. APKTool всегда сообщает, в каком файле и в какой строке допущена ошибка. Несколько примеров:
  • C:\\1\res\values\styles.xml:40: error: Error parsing XML: not well-formed

«C:\\1\res\values\styles.xml» — расположение файла, в котором допущена ошибка.
«40» — строка, где была допущена ошибка.
«Error parsing XML: not well-formed » — Вы случайно удалили либо конец класса, либо его начало.

  • C:\\1\res\values\styles.xml:40: error: Resource entry «Example» already has bag item android:windowBackground.
  • C:\\1\res\values\styles.xml:39: Originally defined here

(я использовал «Example» только для примера).

«C:\\1\res\values\styles.xml» — расположение файла, в котором допущена ошибка.
«40» — строка, где была допущена ошибка.
«Resource entry «Example» already has bag item» — Атрибут «Example» уже содержит необходимый параметр на другой строке. А повтор на этой строке не нужен.
«C:\\1\res\values\styles.xml:39: Originally defined here» — расположение файла, в котором уже содержится атрибут для «Example», и он находится на 39 строке.

Нет ничего сложного. Главное — будьте внимательными и запаситесь терпением. Удачи!

Please wait...
Комменты

10 комментариев

сначала новые
по рейтингу сначала новые по хронологии
1
id233404254

После декомпиляции появилась папка с файлом "smali" ,никаких папок "res" нет.

2
Некий Хрен С Горы

Разобрался?

3

apktool нужно установить. Инструкция тут: http://ibotpeaches.github.io/Apktool/install/

4
Владимир

вообще ничего не получается.

пишет

"Ява" не является внутренней или внешней командой, исполняемой программой или пакетным файлом..

5

Спасибо,

сначала была ошибка , кодировка была не та.

Всё работает и ещё раз Спасибо .

6

Я вместо блокнота использую утилиту отсюда http://yehongmei.narod.ru/download_rus.htm

Довольно удобно получается

7

В папке values нет тех 3-х файлов. Что делать то?Оо

8

Было время - переводил строку загрузки в Jimm, редактируя в архиве jar файлы с форматом class :)

9

Когда-то давно играл в одну игрульку про рыбалку...цены на снаряжение были очень большими и поэтому я, не долго думая, разобрал приложение, заменил все цены на 1 и довольный собрал приложение. Перекинул в телефон, а устанавливаться не хочет из-за подписи! Теперь я понял, как её сделать, спасибо! Для взлома денег сейчас использую другую прогу и не мучаюсь, но вдруг в будущем пригодится это.

10

И за чем столько времени тратить ради какой-то донатной игры?

Новый комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.