How to change the application language by user choice?

喜夏-厌秋 提交于 2019-12-05 08:14:39

问题


In my project there is a option for the user to select language. The whole application should change by selecting the language. Language is fetched from the server side.

I referred various sites and links, but couldn't find a better solution. Localization is not possible, because it's a huge app and also language is not fixed , it is fetched from the server side and it can be varied.

Is any other solution is available? Please help...


回答1:


Although its not recommended to use separate language for your app other than the Android system's . But you can still change it .

Below is the code :

private void setLocale (String localeCode , Bundle b ){
    Log.d(TAG+"set location function: "+localeCode);
    locale = new Locale(localeCode);
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
    getApplicationContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
    UserDetail.this.getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
    onCreate(null);
}

Use this method call on some user trigger:

setLocale("en-us",savedInstanceStat); // for english
setLocale("ar",savedInstanceStat); // for arabic

To learn more about android locals: http://www.icanlocalize.com/site/tutorials/android-application-localization-tutorial/




回答2:


You can use something like this:

Locale locale = new Locale(languageCode);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, null);

This will set the locale of the app to the desired one, not changing the global locale set on the device. All of the native localisation mechanisms will work with the context locale.



来源:https://stackoverflow.com/questions/31720987/how-to-change-the-application-language-by-user-choice

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!