Поддержка различных языков

Это всегда хорошая практика, извлечь строки пользовательского интерфейса из кода приложения и держать их во внешнем файле. Android позволяет это легко сделать с помощью каталога ресурсов в каждом Android проекте.

Если вы создали свой проект с помощью инструментов Android SDK (читайте Создание Android проекта), инструменты создают res/ каталог, в верхнем уровне проекта. Внутри этого res/ каталога есть подкаталоги для различных типов ресурсов. Есть также несколько файлов по умолчанию, таких какres/values/strings.xml, который содержит значения ваших строк.

[wpanchor id=”1″]

 

Создайте региональные каталоги и строковые файлы


Чтобы добавить поддержку большего количества языков, создайте дополнительные valuesкаталоги внутри res/ , которые включают дефис и ISO код языка в конце имени каталога. Например,values-es/ является каталогом, содержащим простые ресурсы для региона с кодом языка “es”. Android загружает соответствующие ресурсы в соответствии с региональными настройками устройства во время выполнения. Для получения дополнительной информации см. Предоставление альтернативных ресурсов.

Как только вы решили, какие языки вы будете поддерживать, создайте подкаталоги ресурсов и файлы строковых ресурсов. Например:

MyProject/
    res/
       values/
           strings.xml
       values-es/
           strings.xml
       values-fr/
           strings.xml

Добавьте строковые значения для каждого региона в соответствующий файл.

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

Например, ниже приводятся некоторые различные ресурсы строковых файлов для различных языков.

Английский (по умолчанию), /values/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">My Application</string>
    <string name="hello_world">Hello World!</string>
</resources>

 

Испанский, /values-es/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Mi Aplicación</string>
    <string name="hello_world">Hola Mundo!</string>
</resources>

 

Французский, /values-fr/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Mon Application</string>
    <string name="hello_world">Bonjour le monde !</string>
</resources>

 

Примечание: Вы можете использовать языковый спецификатор (или любой конфигурационный спецификатор) для любого типа ресурсов, как например, если вы хотите обеспечить локализованные версии растровых изображений. Для получения дополнительной информации см. Локализация.

[wpanchor id=”2″]

Используйте строковые ресурсы


Вы можете ссылаться на свои ресурсы строк в исходном коде и других XML файлах, используя имя ресурса, определенное в <string> элементе в name атрибуте.

В исходном коде, вы можете обратиться к строке ресурса, используя синтаксис R.string.<string_name>. Есть множество методов, которые принимают строку ресурса таким образом.

Например:

// Get a string resource from your app's Resources
String hello = getResources().getString(R.string.hello_world);

// Or supply a string resource to a method that requires a string
TextView textView = new TextView(this);
textView.setText(R.string.hello_world);

 

В других XML файлах, вы можете обратиться к строке ресурса, используя синтаксис@string/<string_name> всякий раз, когда атрибут XML принимает строковое значение.

Например:

<TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="@string/hello_world" />

 

Додати коментар