В этом уроке
Вы также должны прочитать
Это всегда хорошая практика, извлечь строки пользовательского интерфейса из кода приложения и держать их во внешнем файле. 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" />