Android:如何让App Locale独立于系统区域设置工作?

时间:2016-03-24 03:30:00

标签: java android android-studio locale

我遇到与显示语言相关的问题。我可以独立于OS系统更改应用程序内的语言(英语为“en”,日语为“ja”)。

然而,问题是当应用程序处于“ja”状态时,如果用户手动更改系统语言(不是“en”或“ja”),则应用程序会自动将语言更改为默认语言(“en”)。我想让我的应用程序的语言环境独立,无论用户手动更改语言,应用程序的语言仍然与他们注销时保持一致。

修改

有一些有用的链接,但它们仍然无法解决我的问题。例如: Change language programatically in Android

你可以给我任何建议去做吗?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

Try this one

import java.util.Locale; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.content.res.Configuration; 
import android.content.res.Resources; 
import android.util.DisplayMetrics; 

public void setLocale(String lang) { 
    myLocale = new Locale(lang); 
    Resources res = getResources(); 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    Configuration conf = res.getConfiguration(); 
    conf.locale = myLocale; 
    res.updateConfiguration(conf, dm); 
    Intent refresh = new Intent(this, AndroidLocalize.class); 
    startActivity(refresh); 
    finish();
} 

<强>增加:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    newConfig.setLocale(yourLocale);
    super.onConfigurationChanged(newConfig);
}

<强>中加入(2):

当您更改android:configChanges="layoutDirection|locale"时,您必须设置onConfigurationChanged()才能触发Locale
我无法完全理解为什么会发生这种情况,也许有一些RTL种语言......