Android古吉拉特语和印地语支持的应用程序

时间:2014-03-01 07:55:20

标签: android hindi

我正在创建一个支持印地语和古吉拉特语的应用程序。我正在从应用程序设置屏幕设置应用程序语言。比如我给了用户选择英语/印地语/古吉拉特语的选项。

我在单选按钮选择的基础上设置Locale。我在持久性中保存选择,在此基础上我改变了应用程序中所有textview的字体。

一切正常工作..但它在应用程序运行之间将语言更改为英语。假设我从我的设置屏幕中选择了印地语并运行我的应用程序。在10-15分钟后突然从“值”目录中获取文本值,而不是从“values-hi”中获取文本值。我真的不明白为什么它从默认值目录。我的应用程序动态数据工作正常。它进入印地文甚至我的应用程序drawables也工作正常,但问题只是它从“值”目录中获取值。

当用户从我的APP设置屏幕中选择语言时使用此方法。

public void setLocale(Context context, String lang) {

    Locale myLocale = new Locale(lang);
    Resources res = context.getResources();
    DisplayMetrics dm = res.getDisplayMetrics();
    Configuration conf = res.getConfiguration();
    conf.locale = myLocale;
    res.updateConfiguration(conf, dm);

}

这种方法用于在ONGREATE方法中设置TEXTVIEW的面板

public static void setTypeface(TextView textView, Context context) {
    SharedPreferences sp = context.getSharedPreferences("language_selection", context.MODE_PRIVATE);
    String language = sp.getString("language", "English");

    if (language != null) {

        if (language.equalsIgnoreCase("Hindi")) {
            textView.setTypeface(Typeface.createFromAsset(context.getAssets(), "gargi.ttf"));
        }
        if (language.equalsIgnoreCase("Gujrati")) {
            textView.setTypeface(Typeface.createFromAsset(context.getAssets(), "SHRUTI.TTF"));
        }
    }
}

1 个答案:

答案 0 :(得分:1)

尝试以这种方式设置您选择的Language

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