Как переводить Android приложения?

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

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

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

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

  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...
Теги: , , , ,
0
11 Комментарий
Сначала Новые
Сначала Старые Популярные
guest

Межтекстовые Отзывы
Посмотреть все комментарии
Эрика
Эрика
3 лет назад

Как изменить язык?

Please wait...
id233404254
id233404254
7 лет назад

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

Please wait...
Некий Хрен С Горы
Некий Хрен С Горы
6 лет назад
Ответ  id233404254

Разобрался?

Please wait...
vitaliy_p
vitaliy_p
9 лет назад

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

Please wait...
Владимир
Владимир
10 лет назад

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

Please wait...
Александер
Александер
10 лет назад

Спасибо,
сначала была ошибка , кодировка была не та.
Всё работает и ещё раз Спасибо .

Please wait...
sasha
sasha
10 лет назад

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

Please wait...
SenSmile
SenSmile
10 лет назад

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

Please wait...
Funkyredss
Funkyredss
11 лет назад

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

Please wait...
Иван
Иван
11 лет назад

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

Please wait...
Avon
Avon
11 лет назад
Ответ  Иван

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

Please wait...
Наверх