Android 多语言支持

Android mutilanguage support

我发现要让应用程序支持印地语等语言,您需要执行以下操作:- 1. 在 res 文件夹中,创建包含语言特定字符串文件的语言限定符的文件夹。 2. 在你的布局文件中,不要硬编码文本,而是使用@string/hello_info 等变量。 3.在assets下新建一个fonts文件夹,添加合适的.ttf文件进去。

然而,在某些地方,我还看到 另外 使用了以下内容。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView tv = (TextView) findViewById(R.id.textView);
    Typeface hindi = Typeface.createFromAsset(getAssets(), "fonts/mangle.ttf");
    tv.setTypeface(hindi);
}

现在需要这样做吗?如果需要,在什么情况下需要这样做?我只需要通过布局显示多语言文本。

此外,关于设备的区域设置,即假定例如在印度,区域设置将自动设置为该区域的适当值? 我怎样才能通过设备或模拟器对此进行测试?我的设备只显示英语(英国)、英语(美国)、法国和西班牙。 提前致谢

是的,这是必需的,因为

Typeface hindi = Typeface.createFromAsset(getAssets(), "fonts/mangle.ttf");
tv.setTypeface(hindi);

Typeface 使用 ttf 字体为您的 textViews 文本设置任何类型的字体 file.That 可以是印地文、法国、西班牙等。

此代码仅对设置 custom font 和您在资产上添加的 .ttf 文件有用:

TextView tv = (TextView) findViewById(R.id.textView);
    Typeface hindi = Typeface.createFromAsset(getAssets(), "fonts/mangle.ttf");
    tv.setTypeface(hindi);

所以答案是肯定的。

the locale would be automaticcally set to the appropriate value for that area?

如果设备语言是该语言,是。

语言文档: http://developer.android.com/training/basics/supporting-devices/languages.html

Localization-checklist: http://developer.android.com/distribute/tools/localization-checklist.html

您可以设置语言:

Locale locale = new Locale("en_US");
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    SettingActivity.this.getApplicationContext().getResources().updateConfiguration(config, null);
    langd.dismiss();
    Intent i = getBaseContext().getPackageManager()
            .getLaunchIntentForPackage(getBaseContext().getPackageName());
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(i);

并且设置完成后,会清屏,可以看到结果。