2013-07-09 5 views
0

У меня есть одно приложение для Android, поддерживающее языки diff.
У меня разные версии строк для каждого языка.Android поддерживает разные языки.

значение аа-значения-BB и ценность-куб.см и т.д.

Но мое приложение не отображает строки в диффе языков. Я сделал все необходимое для поддержки нескольких языков, но все же несколько раз приложение не отображает текст в diff. языки.

В чем может быть причина?

+0

Вы изменили язык своего телефона, чтобы проверить его? – VinceFR

+0

У меня есть одно меню настроек в моем приложении, которое используется для смены языка. который также вызывает «updateConfiguration» для установки локальных пользователей. – User7723337

ответ

0

Вы должны обработать и изменить стандартный телефон Locale. Представьте себе, что вы выбрали португальский язык (тег = «pt_PT»):

Locale locale = new Locale("pt_PT"); 
Locale.setDefault(locale); 
Configuration config = new Configuration(); 
config.locale = locale; 
getApplicationContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 

Теперь, когда вы: getString(R.string.YOUR_STRING_NAME) он возвращает строку, расположенную в значениях-пт.

Помните, чтобы добавить это ваш манифест (в деятельности, что вы whant контролировать язык):

android:configChanges="locale" 
+0

После перезапуска активности после изменения языка, после того, как вы не видите изменения языка для некоторых текстовых просмотров. не знаю, что вызывает это. – User7723337

+0

Попробуйте это перед кодом, который я опубликовал: public void reload() { \t Цель намерения = getIntent(); \t overridePendingTransition (0, 0); \t intent.addFlags (Intent.FLAG_ACTIVITY_NO_ANIMATION); \t отделка(); \t overridePendingTransition (0, 0); \t startActivity (намерение); \t} –

8

Посмотрите here; как указано:

Создания Locale каталогов и Струнных Файлы

Чтобы добавить поддержку большего количества языков, создать дополнительные ценности директорию внутри Реза /, которые включают дефис и код страны ISO в конце имени каталога. Например, values-es/- это каталог, содержащий простой ресурс для локалей с кодом языка «es». Android загружает соответствующие ресурсы в соответствии с языковыми настройками устройства во время выполнения.

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

MyProject/ Рез/ значения/ strings.xml значения-эс/ strings.xml значения-пт/ 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> 

французский,/ценности-FR/строки ,XML:

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

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

Я предполагаю, что сначала вы должны изменить имена папок.

+0

У меня такая же реализация, но когда я меняю язык из приложения, некоторые текстовые представления не отражают новый язык. – User7723337

+0

Пожалуйста, вставьте 'xml' для тех (или некоторых) из этих текстовых представлений, а также соответствующие ресурсы' @ string', которые они визуализируют (а также сообщают мне, в какой папке они расположены). Спасибо – g00dy

+0

Мое текстовое представление таково, и 'test_line1' находится в папках с языками языка, описанных вами. \ П User7723337

0

Это очень легко просто попробовать шаг, который предусмотрен в этом link

Некоторый код для ссылки

languageToLoad = "hi"; // your language 
    locale = new Locale(languageToLoad); 
    Locale.setDefault(locale); 
    config = new Configuration(); 
    config.locale = locale; 
    getBaseContext().getResources().updateConfiguration(config, 
      getBaseContext().getResources().getDisplayMetrics()); 
    this.setContentView(R.layout.activity_main); 

Его работа. Best Luck :)