Смена языка приложения в настройках
В системе Android очень удобная для использования система локализации, достаточно создать папку и в ней файл со строками. Но в приложение сложно встроить все возможные языки, и не плохо бы предоставить пользователю выбор языка, отличного от стандартного.
Приведу пример такой ситуации:
В приложении есть 2 языка стандартный английский и русский. Это приложение решил установить украинец, у которого аппарат на украинском языке, но так же он хорошо знает русский, а английский не очень. Но вот Андроид, обнаружив, что в приложении нет украинского языка, запустит приложение со стандартным языком, который в нашей ситуации — английский, а для того, что бы приложение запустить на русском, необходимо менять язык системы, что не очень хорошо.
Вот для этой и многих подобных ситуаций есть решение, в настройки вывести пункт выбора языка, который включает автоматический выбор языка, английский, русский, etc. (смотря какие требуются).
Приступим к написанию.
1. Необходимо создать класс Application и определить его в манифесте в соответственном разделе application в параметре android:name=»».
например:
(хотя у некоторых этот класс уже может быть)
2. Создать настройку с выбором языка, для этого в файле настроек добавим:
3. В файл со строками добавим нужные строки:
4. А в файл с массивами 2 текстовых массива:
5. В созданном классе в методе onCreate объявим строковую переменную «lang», чтение переменной из настроек, изменение конфигурации приложение, и метод, который вызывается при изменении конфигурации, в котором еще раз её меняем (без повторной смены язык не хотел меняться во всем приложении). В итоге получим следующий класс:
6. После для того, что бы язык применился, необходимо полностью перезапустить приложение (finish(); тут не поможет, так как перезапускает только активити), для этого использую команду System.exit();
(В примере сделал пункт перезапуска по будильнику).
7. Для того, что бы в не возникло проблем в сети советуют в манифесте к каждому активити, в котором используется локализация:
А так же, что бы приложение отображалось правильно определить поддерживаемые размеры экранов:
Вот таким нехитрым образом можно упростить пользователю жизнь.

Плюсы этого подхода:
-Пользователю дается выбор языка.
Минусы:
-Необходимость указывать в массивах добавляемые языки.
Как изменить язык приложения на андроид
Вариант предложенный здесь хорош, но я думаю у новичков от большого текста возникает боязнь к переводу/редактированию, по логике много=сложно. Предалаю новый вариант сего действия.
Oдна просьба, не пишите мне в личку с вопросами! Прочтите пару раз шапку, после этого задавайте вопрос в теме
Нам понадобятся: Java и Apk manager
Java качаем с сайта разработчика, то есть здесь или более свежую. Apk manager же можно, и даже нужно, качать отсюда.
ApkManagerRUS.rar ( 3.77 МБ )
(Зеркало)
Новая версия: APKmanager 5.7
APKTool v1.5.2 Новый способ изменения приложений (перевода) (Пост #22030406)
Apktool для мобильных устройств.
Используешь Linux-based ОS? Тебе сюда!
Главной особенностью этой версии есть то, что она переведена на русский и теперь ей пользоваться стало ещё проще. Но я всё же покажу вам как русифицировать или изменить нужное приложение.



Забыл сказать, готовое приложение находится по адресу /place-apk-here-for-modding/signedваше_приложение.apk
Надеюсь это подтолкнёт новичков к такому благородному делу, как локализация!
——Ответы на вопросы——
В:у меня такая проблема в программе apkmanager когда открываю scrip.bat на экране крякозябры
О:Нажми на иконку командной строки в левом верхнем углу, Свойства, Шрифт, выбери Lucida Console.
В: Сделал всё как написано, но при установке ошибка, что не так?
О: Данное приложение уже было установлено? Тогда надо его удалить вместе с данными перед установкой модифицированного.
—
В: В какой кодировки сохранять редактируемые файлы?
О: UTF-8, если используете NotePad++ смотрите Новый способ изменения приложений (перевода) .
—
В: Ошибка при сборке: «No resource identifier found for attribute ‘xlargeScreens’ in package ‘android'», что не так?
О (Лучший вариант) : Обновить Apktool по ссылке: http://android-apktool.googlecode.com/file. ol1.4.1.tar.bz2
О (Простой вариант) : Удалить из AndroidManifest.xml параметр xlargeScreens
После этого выполнить команду в консоли:
Если будут предложения по поводу FAQ, то пишите в личку, за темой почти не слежу.
Кстати, в Notepad++ появился плагин перевода.
Плагины — Plugin Manager — Show plugin manager — Available
Там ищем плагин Translate.
В свойствах Change language referense меняем приоритеты языков (SOURSE — исходный язык текста, DESTINATION — желаемый язык перевода), Ctrl-S и вуаля!
Далее в тексте выделяем слово/фразу и жмём Ctrl-Alt-Z Новый способ изменения приложений (перевода) (Пост #13458534)
В теме нет куратора. Если в теме есть пользователь, желающий стать Куратором и соответствующий Требованиям для кандидатов, он может подать заявку в теме Хочу стать куратором (предварительно изучив шапку темы и все материалы для кураторов).
До назначения куратора, по вопросам наполнения шапки, обращайтесь к модераторам раздела через кнопку под сообщениями, на которые необходимо добавить ссылки.
Как перевести Android приложение на нужный вам язык на лету с помощью Language Navi (Обновлено: приложение удалено из Play Маркет: скачать APK, замена)

Вы нашли в Google Play Маркет интересное приложение, но в нем отсутствует перевод на ваш язык? Не беда: вы в любой момент сможете перевести любое Android приложение на один из 103 языков с помощью приложения Language Navi.
Интересной особенностью Language Navi, которое только что появилось в Google Play Маркет является то, что оно не вносит никаких изменений приложение которое переводит. Принцип работы Language Navi основан на том, чтобы считывать текст с экрана вашего смартфона или планшета и переводить его на лету с помощью системы автоматического перевода Google.
Выглядит работа Language Navi достаточно фантастически: все тексты в запущенном вами приложении через пару-тройку секунд переводятся на язык, который вы заранее выбрали.
Среди достоинств и возможностей приложения:
— Не требует для работы Root прав
— Автоматическое определение исходного языка
— Перевод на один из 103 языков с помощью Переводчика Google
В ближайшем будущем разработчик обещает добавить:
— Локализацию самого приложения на разные языки
— Оптическое распознавание текста
Работает приложение на устройствах с операционной системой Android версии 8.0 Oreo и выше, и так как новинка пока еще находится на стадии разработки, она пока еще не лишена отдельных недостатков: Language Navi иногда переводит не все тексты, а размеры шрифтов перевода не всегда соответствуют размерам шрифта оригинала.
Тем не менее, тем кому нужно быстро перевести Android приложение на понятный язык, чтобы оперативно разобраться с его функциями и возможностями, оно придется как нельзя кстати.
Пользоваться Language Navi очень просто:
1. При первом запуске приложения вам нужно будет включить его службу в разделе «Спец. возможности» в меню основных настроек системы:

2. В списке приложений выбрать то, которое вы хотели бы перевести
3. Выбрать (при желании) язык с которого будет производиться перевод ( Translate from ) и язык на который вы хотели бы переводить приложения (Translate To)

4. Наслаждаться результатом
При необходимости вы можете быстро вернуться к искодному языку в приложении открыв шторку уведомлений системы и нажав на кнопку «Stop»

Скачать Language Navi вы можете совершенно бесплатно с этой страницы Google Play Маркет
Добавлено 02.02.2020:
Некоторое время назад Language Navi было удалено из онлайн-магазина Google. Но вы можете по-прежнему скачать его установочный APK файл по этому адресу.
В качестве замены мы могли бы порекомендовать вам воспользоваться приложением с неказистым названием «Перевести на экран» (Screen Translate), которое умеет делать то же самое, но несколько иным способом.
При его работе на экран выводится кнопка, на которую нужно нажать для выделения области экрана с текстом, который нужно перевести. Для перевода используются онлайн сервисы Google, Яндекс, Microsoft, Bing и прочие на выбор пользователя.
Скачать Screen Translate вы можете с этой страницы Google Play Маркет
Полноценное изменение языка в приложении android
У меня в приложении на android нужно сделать полноценное изменение локали. Будет менюшка, в которой будет список языков. При нажатии на элемент меню с языком, нужно менять язык runtime что значит на лету. Дальше после изменения языка, нужно его сохранить в настройках и дальше менять язык на следующих активити при их создании. Так же нужно сделать так, чтобы выбранный язык сетился и после перезагрузки приложения.
![]()
После долгих и постоянных попыток, я все-таки смог решить свою проблему. У меня есть менюшка со списком языков:
дальше у меня есть методы для изменения и сохранения языка:
вообще на этом этапе в приложении язык меняется runtime, но дальше нужно как-то при создании активити получать сохраненный язык и создавать активити уже с нужным языком. Вот в методе onCreate() я вставил такой кусок кода:
вроде у меня все работает, но возможно кто-то посоветует как-то улучшить мой способ. В любом случае надеюсь что это кому-то кроме меня поможет.