【问题标题】:How to apply language correctly?如何正确应用语言?
【发布时间】:2012-11-20 04:11:43
【问题描述】:

我在 android 2.2 上使用多种语言。我在每个活动的 onCreate 中更改语言,如下所示:

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

当然,我在调用 setContentView 并将 android:configChanges="locale" 添加到清单之前放置​​了这些代码。但是,当第一次显示启动器活动时,有些单词会正确更改为我想要的语言,但有些单词会保持英语。其他活动(不是启动器活动)更改的语言是可以的。当我从其他活动切换回启动器活动时,它现在将所有单词正确更改为我想要的语言。我不知道为什么第一次启动器在启动器活动中有一些单词没有正确更改为我想要的语言。

感谢您的帮助。

【问题讨论】:

    标签: android


    【解决方案1】:

    你为什么不让它变得更简单呢?

    您可以在应用中创建不同的语言值目录 (res/values-en, res/values-fr, res/values-nl, et...),您将在其中存储与字符串键关联的语言值。

    所以一旦你的目录“values-en”被创建,右键点击它,添加一个Android xml Values File,命名为language.xml,然后点击next,然后在左侧面板中选择配置“Language”显示屏幕”,然后点击完成。

    然后在这个最近创建的文件中,为您要翻译的每个字符串创建所有键值对。完成后,将您的 language.xml 文件复制到另一个其他 values-xx 目录中,并更改所有字符串的值。

    因此,您在 values-en 中的 language.xml 文件将包含:

    <string name="hello">Hello</string>
    

    values-fr 中的 language.xml 文件将是:

    <string name="hello">Bonjour</string>
    

    然后要在您的活动中获取这些字符串值,只需调用

    String helloString = getResources().getString(R.String.hello);

    应用程序会根据设备语言配置自动加载正确的字符串资源

    【讨论】:

    • 是的,我知道这一点,而且我肯定有所有我支持的语言的资源文件夹。因为我想在我的应用程序本身中更改语言,所以它有点复杂。
    【解决方案2】:

    最后我找到了一个完全解决我的问题的解决方案。我发现系统会自动重置语言环境(或任何能够更改语言环境的设备),这就是为什么我设置了默认语言环境但它无法正常工作的原因。这是我的解决方案,您应该创建一个扩展应用程序的类,然后重写该方法,如下所示:

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        // TODO Auto-generated method stub
        Locale locale = new Locale(YourDesired_langCode);
        newConfig.locale = locale;
        super.onConfigurationChanged(newConfig);
    
        Locale.setDefault(locale);
        getBaseContext().getResources().updateConfiguration(newConfig,getBaseContext().getResources().getDisplayMetrics());
    }
    

    因此,每次在您的应用程序外部重置默认区域设置时,都会调用此方法,它会使用您所需的语言再次重置默认区域设置。现在效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      相关资源
      最近更新 更多