在app中设置区域设置的问题

时间:2013-04-23 05:52:42

标签: android locale

在我的应用程序中,我要求语言,可以是英语或德语。所选语言及其iso代码将保存到首选项中。在选定语言的基础上,我需要将所有文本更改为相应的语言。

为此,我创建了res / values和res / values-de;每个文件夹包含一个strings.xml文件。问题是: 1)我正在使用opengl打开相机和屏幕。在通过它们两者导航后,文本不会完全变为德语(如果被选中)。某些文本值更改为德语,甚至不在同一页面上。 2)即使没有通过摄像头和opengl屏幕,结果也不会总是100%实现,但与案例1相比总能得到更好的结果。

我的实施: 1)在启动画面的onResume()中,我在config.locale()的帮助下根据首选项更改了语言环境。 2)在清单文件中,每个活动都设置为activity:configChanges =“locale”。 3)在相机活动和opengl活动中,onConfigurationChanged()被覆盖,其中我再次按照首选项设置语言环境。

请指导如何解决区域设置问题。

3 个答案:

答案 0 :(得分:0)

  • 检查点1: 部分更新资源。确保您的所有语言都有正确命名的资源。
  • 此外,您可以尝试使用此代码。这是我更新我的应用程序的区域设置:

     public void updateLocale(String language) {
        Locale myLocale = new Locale(language);
        Locale.setDefault(myLocale);
        Resources res = getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        conf.locale = myLocale;
        res.updateConfiguration(conf, dm);
    }
    

让我知道它是否有帮助!

答案 1 :(得分:0)

我相信您需要在AndroidManifest文件中添加一些内容以指示区域设置更改。以下是一个示例:http://android.programmerguru.com/android-localization-at-runtime/

答案 2 :(得分:0)

我的应用程序遇到了类似的问题。 App在土耳其语和英语之间有强制语言更改选项。如果我的设备语言是英语,如果我使用土耳其语的应用程序,我可以使用以下代码轻松转换语言:

public void setAppLanguage(String languageCode) {

        String countryCode;

        if (languageCode.equals("tr")){
            countryCode = "TR";
        }else{
            countryCode = "US";
        }

        Locale locale = new Locale(languageCode, countryCode);
        Locale.setDefault(locale);
        Resources res = getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        conf.locale = locale;
        res.updateConfiguration(conf, dm);

        loginPrefsEditor.putString("uLang",languageCode);
        loginPrefsEditor.apply();


    }

但是,当我打开相机并从中返回时,应用语言会更改为默认手机语言。当我打开相机时,应用程序会杀死我的活动。从相机返回后,它刷新一切。因此,为了解决这个问题,我将强制更改语言方法放在每个活动的 onResume()方法中。

通过这样做,我将能够解决这个问题。