我正在尝试为以下印度语加载strings.xml文件:
并尝试使用values-or-rIN,..etc
。并使用以下代码加载语言环境:
public void changeLang(String lang) {
Configuration config = getBaseContext().getResources().getConfiguration();
if (!"".equals(lang) && !config.locale.getLanguage().equals(lang)) {
SharedPreferences.Editor ed = PreferenceManager.getDefaultSharedPreferences(this).edit();
ed.putString(getString(R.string.locale_lang), lang);
ed.commit();
locale = new Locale(lang);
Locale.setDefault(locale);
Configuration conf = new Configuration(config);
conf.locale = locale;
getBaseContext().getResources().updateConfiguration(conf, getBaseContext().getResources().getDisplayMetrics());
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(this.getString(R.string.locale_lang), lang);
editor.commit();
}
}
以上代码适用于所有国际语言。但不适用于上述语言。我看到很多答案,因为我们需要加载相应语言的字体ttf文件。但我不想加载字体(TypeFace)。我想加载strings.xml。
有人可以建议如何加载印度语的strings.xml吗?可能吗?或者我应该为上述语言使用字体ttf吗?
答案 0 :(得分:2)
这样的古吉拉特语:
Locale myLocale = new Locale("gu");
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
改变" gu"与其他语言名称 我在我的应用程序中使用古吉拉特语。这完美地运作
答案 1 :(得分:1)
我按照以下方式完成了这项工作:
String lang = "ml";//for malyalam language
if(lang.equalsIgnoreCase(getResources().getString(R.string.text_item_ml))) {
lang = Constants.LANGUAGE_CODE_MALAYALAM;
country = Constants.COUNTRY_CODE_INDIA;
}
Locale locale;
if (country == null) {
locale = new Locale(lang);
} else {
locale = new Locale(lang, country);
}
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
onConfigurationChanged(config);
值文件夹名称应为:
值-ML-RIN
values-gu-rIN
如果您的手机不支持特定字符,那么只需要其他字体不需要自定义字体,我制作的应用程序支持12种印度本地语言,没有任何自定义字体。
使用以下方法
检查您的手机是否支持特定信息public static boolean isSupported(Context context, String text) {
final int WIDTH_PX = 200;
final int HEIGHT_PX = 80;
int w = WIDTH_PX, h = HEIGHT_PX;
Resources resources = context.getResources();
float scale = resources.getDisplayMetrics().density;
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
Bitmap bitmap = Bitmap.createBitmap(w, h, conf); // this creates a MUTABLE bitmap
Bitmap orig = bitmap.copy(conf, false);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.rgb(0, 0, 0));
paint.setTextSize((int) (14 * scale));
// draw text to the Canvas center
Rect bounds = new Rect();
paint.getTextBounds(text, 0, text.length(), bounds);
int x = (bitmap.getWidth() - bounds.width()) / 2;
int y = (bitmap.getHeight() + bounds.height()) / 2;
canvas.drawText(text, x, y, paint);
boolean res = !orig.sameAs(bitmap);
orig.recycle();
bitmap.recycle();
return res;
}
希望它会对你有帮助!