1

我正在用英语和印尼语两种语言提出申请。为此,我在 res 文件夹中创建了两个字符串文件(values-en 和 values-in)

在我的一项活动中,我选择语言并更改语言环境。我正在使用以下代码执行此操作-

将语言 ID 传递给此方法-

public void setLocale(String lang) {
        Locale myLocale = new Locale(lang);

        Resources res = getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        conf.locale = myLocale;
        res.updateConfiguration(conf, dm);
    }

但是在将语言更改为印度尼西亚语之后发生了奇怪的事情。我的一些文本变成了印度尼西亚语,一些变成了英语。

例如-我有两个按钮(提交和上传收据)在活动中。

SUBMIT btn has- 英文是 SUBMIT,印度尼西亚文是 KIRIM

<string name="submit_btn_text">Submit</string>  for english
<string name="submit_btn_text">Kirim</string>   for indonesian

和 UPLOAD RECEIPT btn has- 在英语中它的文本是 Upload Receipt 在印度尼西亚它是 Upload Penerimaan

<string name="upload_receipt">Upload Receipt</string>  for english
<string name="upload_receipt">Upload Penerimaan</string>   for indonesian

但是在印度尼西亚提交 btn 文本到Kirim 但 Upload Receipt btn 仍然是“Upload Receipt”。它不会更改为 Upload Penerimaan。

这是如何发生的,因为其他文本会根据语言环境进行更改。此外,我在所有对话框弹出窗口中都面临同样的问题。所有对话框中的文本都保留为英文。

应该做什么?

4

1 回答 1

0

尝试按照其他答案的建议重新启动您的活动,请查看 Ben 的回答How do I restart an Android Activity

public void reload() {
    Intent intent = getIntent();
    overridePendingTransition(0, 0);
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    finish();

    overridePendingTransition(0, 0);
    startActivity(intent);  
}
于 2013-07-03T07:48:42.453 回答