Есть достаточно много приложений, которые не имеют русской локализации. Как правило, это не вызывает дискомфорта для знающих английский язык (хотя бы поверхностно). Но что делать тем, кто в иностранных языках совершенно не силён? Или если приложение имеет только один язык, алфавит которого состоит из иероглифов и прочих нечитаемых крякозябр? Некоторые выходят из таких проблем, щёлкая по пунктам в приложениях, словно пальцем в небо. Но согласитесь, нелокализированное приложение вообще не смотрится на устройствах лингвистических приверед родного языка.
Да, существуют иные выходы: скачать из сети то или иное приложение, требующее перевода, в нашем случае — для русскоговорящих. Но и здесь не без проблем. Те, кто устанавливал приложения с пользовательскими переводами, могли лицезреть не только результат работы переводчика, но и его грамматические ошибки, которые порой не просто бесят, а выводят из себя! Но всё же, речь не об этом.
В этой инструкции я постарался описать многие нюансы перевода приложений, чтобы Вы тоже понимали, с чем работаете. К сожалению, эта инструкция не подходит для перевода игр и системных приложений, но в скором времени постараюсь подготовить инструкцию по переводу системных приложений, а также прошивок, в которых отсутствует русский язык.
Что у Вас должно быть:
Если вышеперечисленные пункты уже имеются, тогда приступим.
Описанные манипуляции проводились на Windows.
Поехали!
1. Распаковываем APKTool и рядом с ним располагаем непереведённое приложение (лучше все это добро поместить в корень диска C:\).
2. Запускаем командную строку (“Пуск”—”Выполнить”—”cmd”) и вводим:
Всё должно выглядеть примерно так:
3. После декомпиляции в APKTool заходим в только что созданную папку, которая назвается так же, как и само приложение. Папка “res” содержит ресурсы приложения, она нам и нужна. Зайдя в неё, мы видим определенное количество папок. Папки, которые начинаются с “values-xx” имеют в себе файлы с языковыми строками (values-en для английского языка, values-ru — для русского), а папка “values” — стандартный, базовый, так сказать, перевод. Если не будет хватать строк локализации в одном из файлов, содержащемся в папке “values-xx”, то приложение будет обращаться к стандартному языку, который лежит в “values”. Поэтому лучше не делать перевод поверх стандартного. Также, когда будет выбран русский язык в прошивке, приложение будет загружать языковой пакет из папки “values-ru”. Если у приложения нет русской локализации, то система будет загружать язык из папки “values”. Надеюсь, Вы меня поняли.
4.:
5. Открываем редактор и настраиваем его кодировку, а то у нас приложение не скомпилируется. В окне Notepad++ выбираем “Кодировки” и пункт “Кодировать в UTF-8”. В дальнейшем до каждого сохранения изменённых файлов проверяйте этот очень важный параметр.
6. Открываем в редакторе один из файлов локализации. Примерная структура строк в файлах “arrays.xml”, “plurals.xml”, “strings.xml” такова:
Там где выделено красным — строка, которую Вы можете править. Будьте внимательными, так как, если Вы по ошибке удалите начало или конец одного из тегов, декомпилированное приложение не будет собрано! Примеры правильного закрытия тега “:”, “,” и т.д.
7. Переводим. Пользуйтесь переводчиками, руководствуйтесь словарями и т.д.
8. Сохраняем все изменения (проверьте кодировку!) и, открыв командную строку, пишем:
Например:
Приложение скомпилировалось в папке “dist“, она расположена внутри папки, что создавалась при декомпилировании приложения.
9. После компиляции APKTool ничего не подписывает, а подпись нужна для установки приложения. Файлы подписи находятся в папке “META-INF” внутри приложения. Поэтому, нам остаётся всё это дело подписать.
Распаковываем куда угодно утилиту Sign+ и открываем её. Перетягиваем наше собранное приложение из папки “dist” в окно утилиты для подписи и нажимаем в окне на “Sign files”. В той папке, в которой находится наше переведённое приложение, появится новый архив, в названии которого содержится “_signed” — это и есть подписанное приложение.
Частые проблемы с использованием APKTool:
“C:\\1\res\values\styles.xml” — расположение файла, в котором допущена ошибка.
“40” — строка, где была допущена ошибка.
“Error parsing XML: not well-formed ” — Вы случайно удалили либо конец класса, либо его начало.
(я использовал “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 строке.
Нет ничего сложного. Главное — будьте внимательными и запаситесь терпением. Удачи!
Как изменить язык?
После декомпиляции появилась папка с файлом “smali” ,никаких папок “res” нет.
Разобрался?
apktool нужно установить. Инструкция тут: http://ibotpeaches.github.io/Apktool/install/
вообще ничего не получается.
пишет
“Ява” не является внутренней или внешней командой, исполняемой программой или пакетным файлом..
Спасибо,
сначала была ошибка , кодировка была не та.
Всё работает и ещё раз Спасибо .
Я вместо блокнота использую утилиту отсюда http://yehongmei.narod.ru/download_rus.htm
Довольно удобно получается
В папке values нет тех 3-х файлов. Что делать то?Оо
Было время – переводил строку загрузки в Jimm, редактируя в архиве jar файлы с форматом class :)
Когда-то давно играл в одну игрульку про рыбалку…цены на снаряжение были очень большими и поэтому я, не долго думая, разобрал приложение, заменил все цены на 1 и довольный собрал приложение. Перекинул в телефон, а устанавливаться не хочет из-за подписи! Теперь я понял, как её сделать, спасибо! Для взлома денег сейчас использую другую прогу и не мучаюсь, но вдруг в будущем пригодится это.
И за чем столько времени тратить ради какой-то донатной игры?