Поддержка пользовательских Multi Language

Мне известно о создании нового каталога значений для языка с суффиксом кода языка. Для german: values-de или French: values-fr затем скопируйте наш string.xml в это и переведите каждую запись. И это работает на основе настроек локализации телефона

Я хотел знать, можем ли мы обойти настройки телефона и заставить пользователя выбрать нужный язык внутри приложения?

Мое требование: я хочу указать вариант выбора языка внутри своего приложения и сделать выбор пользователем языка, который он хочет для приложения. Как динамически переключаться между string.xml(для разных языков)???

заблаговременно

Ответы

Ответ 1

Создайте метод, который задает ваш основной язык. Скажем

public static void setDefaultLocale(Context context,String locale) {
        Locale locJa = new Locale(locale);
        Locale.setDefault(locJa);

        Configuration config = new Configuration();
        config.locale = locJa;

        context.getResources().updateConfiguration(config, context.getResources()
                .getDisplayMetrics());

        locJa = null;
        config = null;
    }

Теперь проверьте, когда пользователь выбрал Locale (здесь в основном я использовал меню для выбора языка).

Configuration config = new Configuration();
String newLocale = config.locale.getLanguage().substring(0, 2)
    .toLowerCase();
if ("ja".equalsIgnoreCase(newLocale)) {
// Call above method with context & newLocale
} 
// Sequentially you check for Locale & change that.

Ответ 2

Отметьте этот пост... Это одно и то же в основном.

Изменение локали в самом приложении

Locale appLoc = new Locale("en");
Locale.setDefault(appLoc);
Configuration appConfig = new Configuration();
appConfig.locale = appLoc;
getBaseContext().getResources().updateConfiguration(appConfig,
    getBaseContext().getResources().getDisplayMetrics());

Ответ 3

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

Locale appLoc = new Locale("xx");
Locale.setDefault(appLoc);
Configuration appConfig = new Configuration();
appConfig.locale = appLoc;
getBaseContext().getResources().updateConfiguration(appConfig,
    getBaseContext().getResources().getDisplayMetrics()); 

Ваша папка макета должна быть layout-xx, и ваша папка с выделением также должна быть drawable-xx. Но одно, что при изменении языка вам нужно обновить макет. Я использовал в своем приложении, запустил кнопку и установил фоновое изображение. Но иногда изображения не меняются, поэтому я сделал это следующим образом.

btn.setBackgroundDrawable(null);
btn.setBackgroundResource(R.drwable.yourimage);

Ответ 4

Очень просто перейти по этой ссылке

 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);

- См. больше на: http://www.theappguruz.com/blog/multi-language-support-to-android-app#sthash.eGmzq57K.dpuf