• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

FAQ Автоматическая Смена Названия Приложения В Зависимости От Языка Системы

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,481
Баллы
155
Многие видели и возможно разрабатывали мульти-язычные приложения. Такие приложения, автоматически меняют язык интерфейса и в некоторых случаях название приложения. В данной статье речь пойдёт об автоматической смене названия приложения в зависимости от выбранного языка в системе.




Начнём…


Запускаем студию, создаём новый проект. Проект автоматически получит название ProjectX (где Х – это число), изменить можно в Project Manager, это же название будет отображаться после установки приложения на устройство.



Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.





Мы знаем, чтобы изменить отображаемое название приложения, необходимо зайти в меню «Project->Options->Version Info» и там изменить свойство «label».


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

Теперь-то мы и попробуем решить эту задачку.


Что необходимо запомнить:

  1. Название приложения для выбранного на устройстве языка будет выбираться автоматически
  2. Для каждого языка создаётся отдельная папка в ресурсах (Об этом, более подробно, я расскажу ниже).
  3. Если в ресурсах приложения не найден каталог с языком системы и нет общего каталога для всех языков, то будет отображаться название вашего проекта из Project Manager

С первым пунктом всё ясно, перейдём сразу ко второму.


У приложения есть папка «res\», в ней хранятся все ресурсы (иконки, стили, SplashScreen и т.д.) приложения.

Идём в справку по Андроиду -

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Из неё понимаем, что Андроид поддерживает несколько квалификаторов для одного имени каталога. Квалификаторы пишутся через дефис после имени каталога. В нашем случае, квалификаторами будут двухбуквенные коды языка ISO 639-1. Также допускается указание региона через дефис после языка (подробнее читайте в справке по ссылке выше).


Примеры:
  • en
  • fr
  • en-rUS
  • fr-rFR
  • fr-rCA

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


Идём в справку -

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



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

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


Создаём каталог «res» в корневой папке проекта и заполняем его такими каталогами и файлами.
  • res\values\strings.xml (Название для отсутствующих языков, в моём примере, на английском языке)

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">English lang</string>
</resources>

  • res\values-ru\strings.xml (Русский язык)

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Русский язык</string>
</resources>

  • res\values-fr\strings.xml (Французский язык)

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Français langue</string>
</resources>



В итоге получится вот такая структура:



Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Теперь необходимо задеплоить эти файлы в приложение, тут ничего сложного нет, смотрите скрин ниже.

Задеплоили файлы:


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.





Ну и последний шаг. Забываем про «Project->Options->Version Info: label», т.к. теперь мы сами контролируем вывод названия.

Делаем сборку проекта через меню «Build» в Project Manager. После сборки, открываем файл «AndroidManifest.template.xml» из корневой папки проекта и …

Находим

%label%

Заменяем на

@string/app_name

Находим

%activityLabel%

Заменяем на

@string/app_name


Сохраняем файл.

Получится примерно так:


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.





Компилируем на устройстве и тестим.
 
Вверх Снизу