multi language android application?

2019-05-02 08:55发布

I have to make my Android application in 3 languages ie German, English and dutch. i have made three folders in my android application names values-de and values-nl within the res directory. now when the user selects a specific language i perform the following code:

Resources res = getResources();
Configuration newConfig = new Configuration(res.getConfiguration());
newConfig.locale = Locale.ENGLISH;
res.updateConfiguration(newConfig, null);

all the strings in the different values folders have the same name, i.e a string with name add_site in the values folder has the same name in the values-de folder but with a different value. My application is not loading the German value when i set the locale to German? what could be the problem?

thank you for you help.

2条回答
Explosion°爆炸
2楼-- · 2019-05-02 09:35

To set the Configuration locale is not enough in case you also support a language which has a different layout direction LTR or RTL.

        Resources res = getResources();
        Configuration newConfig = new Configuration( res.getConfiguration() );
        Locale locale = new Locale( appLanguage );
        newConfig.locale = locale;
        newConfig.setLayoutDirection( locale );
        res.updateConfiguration( newConfig, null );
查看更多
趁早两清
3楼-- · 2019-05-02 09:42

Try putting this in onCreate() just after the call to super.onCreate:

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

EDIT: Here's another approach. It seems to be very flexible, but there seems to be some disagreement in the comments whether it works on all Android versions.

查看更多
登录 后发表回答