在Android中运行时更改应用程序语言

时间:2013-11-30 00:02:28

标签: android localization

我正在尝试更改Android应用的语言但没有成功。 我有:

/res/
  . values/
  .  . string.xml
  .  . values-es/
  .  . . strings.xml

两个字符串文件都包含相同内容,但内容根据语言代码进行翻译。 默认语言是英语,但我想做一些测试并使用西班牙语。

我使用上一个问题中编写的代码: Change app language programmatically in Android

这是我的LoginActivity(启动器)的onCreate方法:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    // setting default screen to login.xml
    setContentView(R.layout.login);

    Resources res = getBaseContext().getResources();
    // Change locale settings in the app.
    DisplayMetrics dm = res.getDisplayMetrics();
    android.content.res.Configuration conf = res.getConfiguration();
    conf.locale = new Locale("es");
    res.updateConfiguration(conf, dm);

    TextView registerScreen = (TextView) findViewById(R.id.link_to_register);

    // Listening to register new account link
    registerScreen.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // Switching to Register screen
            Intent i = new Intent(getApplicationContext(), RegisterActivity.class);
            startActivity(i);
        }
    });

    Button mainMenu = (Button) findViewById(R.id.btnLogin);

    // Listening to register new account link
    mainMenu.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // Switching to Register screen
            Intent i = new Intent(getApplicationContext(), MainMenuActivity.class);
            startActivity(i);
        }
    });
}

我的目标是Android 4.4。

但是,这不适用于我的Nexus 4 - Android 4.4,它总是使用英语。

1 个答案:

答案 0 :(得分:1)

values-es文件夹应与values文件夹位于同一级别。上面的示例看起来像values-es文件夹中有values