2015-08-27 6 views
3

Я делаю приложение с многоязычным языком. Я понимаю концепцию string.xml для того, чтобы язык приложения был установлен на то, что по умолчанию используется для телефона. Есть ли способ переопределить это? Например, если у меня есть испанский телефон, который я использую в Испании, но я все еще хочу иметь приложение на английском языке?Изменить язык строк в Android. Активность

ответ

10

Вы можете изменить язык (локаль) приложения программно с помощью простой функции. Вам нужно только реализовать метод, аналогичный тому, который у вас есть ниже, который получает строку в качестве параметра (например, «en» для английского языка, «es» для испанского), где вы можете настроить языковой стандарт для своего приложения и обновить текущую деятельность чтобы отразить изменения. Язык, который вы применяли, не будет изменен, пока вы его вручную не измените вручную.

public void setLocale(String lang) { 
    myLocale = new Locale(lang); 
    Resources res = getResources(); 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    Configuration conf = res.getConfiguration(); 
    conf.locale = myLocale; 
    res.updateConfiguration(conf, dm); 
    Intent refresh = new Intent(this, AndroidLocalize.class); 
    startActivity(refresh); 
    finish(); 
} 

Убедитесь, что вы импортировать следующие пакеты:

import java.util.Locale; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.util.DisplayMetrics; 
import android.content.res.Resources; 
import android.content.res.Configuration; 

также добавить в манифесте внутри вашей деятельности тег android:configChanges="locale|orientation"

+0

простой и быстрый @Andreu ... +1 * A тез ... нет привет га Молта барин-де-Барселона на AQUI;) * –

+0

хахаха веселит человека ! – arodriguezdonaire

+0

Выглядит почти слишком хорошо, чтобы быть правдой. Я проверю это, когда у меня появится такая возможность, и если это сработает, как вы говорите, это действительно стоит +50! –

0

EDIT, как правильно сказали, это не то, что просили ОП, по-прежнему Я оставлю его здесь на всякий случай, когда кто-то завершает работу, пытаясь решить, на что я ответил.

От странице Android Developers:

Как создать альтернативные ресурсы

Большая часть локализации приложения предоставляет альтернативный текст для разных языков. В некоторых случаях вы также предоставите альтернативную графику, звуки, макеты и другие локальные ресурсы .

Приложение может указывать много каталогов res //, каждый с различными квалификаторами. Чтобы создать альтернативный ресурс для разных локалей, вы используете классификатор, который указывает язык или комбинацию языковых областей . (Имя каталога ресурсов должно соответствовать схеме именования, описанной в обеспечении альтернативных ресурсов, или иначе это не будет компилироваться.)

Пример:

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

res/values/strings.xml 
Contains English text for all the strings that the application uses, including text for a string named title. 
res/values-fr/strings.xml 
Contain French text for all the strings, including title. 
res/values-ja/strings.xml 
Contain Japanese text for all the strings except title. 

Если ваш код Java относится к R.string.title, вот что будет происходить во время выполнения:

If the device is set to any language other than French, Android will load title from the res/values/strings.xml file. 
If the device is set to French, Android will load title from the res/values-fr/strings.xml file. 

Обратите внимание, что если устройство установлено на японском языке, Android будет искать заголовка в файле/strings.xml Рез/значения-Ja. Но поскольку в этот файл нет такой строки , Android вернется к по умолчанию и загрузит заголовок на английском языке из файла res/values ​​/ strings.xml .

здесь также оригинальная ссылка для справки: http://developer.android.com/guide/topics/resources/localization.html

+0

Я думаю, что OP не спрашивает об этом, я думаю, он спрашивает, как программно изменить выбранный язык (кажется, что он уже знает, что он может установить разные файлы strings.xml) – arodriguezdonaire

+0

Да, это то, что я имел в виду «Я понимаю концепцию string.xml для установки языка приложения на то, что по умолчанию для телефона». Но все равно спасибо за официальное описание. Я никогда не краснул это, но я усвоил это с трудом :) Итак, это +1 ;-) –

+0

Кстати, я искал вокруг, но я не могу его найти. Кто-нибудь получил ссылку на место где указаны все коды официального языка (en-english, hi-hindi, ja-japaneese, fr-french и т. Д.)? –

Смежные вопросы