【发布时间】:2011-07-12 08:03:07
【问题描述】:
我们如何根据语言菜单中的选择更改语言。
【问题讨论】:
-
你的意思是如何实现一个菜单让用户可以切换语言?预先选择的语言(用户已经在他/她的手机中设置的语言)有什么问题?
标签: android localization internationalization
我们如何根据语言菜单中的选择更改语言。
【问题讨论】:
标签: android localization internationalization
公共静态字体hindiTypeface;
public static Typeface getTypeface(Context mContext) {
int languageOptionValue = 0;
if (WelcomeActivity.userSettings != null) {
languageOptionValue = WelcomeActivity.userSettings.getInt(
"language", 0);
}
if (languageOptionValue == 1) {
if (hindiTypeface == null)
hindiTypeface = initHindiFont(mContext);
return hindiTypeface;
} else {
return Typeface.DEFAULT;
}
}
public static Typeface initHindiFont(Context mContext) {
AssetManager assetManagerHindi = mContext.getAssets();
try {
assetManagerHindi.open("droid_hindi.ttf");
} catch (IOException e) {
e.printStackTrace();
}
return Typeface.createFromAsset(assetManagerHindi, "droid_hindi.ttf");
}
这些用于在 api 级别 4 中玩印地语文本。
【讨论】:
在您的 res 文件夹中,您应该有一个名为 values 的文件夹。在该文件夹中,放置一个 strings.xml 文件。
strings.xml 文件应该包含类似这样的内容
<resources>
<string name="app_name">My App Name</string>
<string name="someText">someText in default language</string>
<string name="nonTranslatedText">someText only in default language</string>
</resources>
如果您想支持其他语言,只需在 res 中创建额外的 values 文件夹,其中还包含一个 string.xml 文件,其中包含翻译。
因此,例如,如果您想支持荷兰语,请在 values-nl 文件夹中创建一个 strings.xml,其中包含以下内容:
<resources>
<string name="app_name">My App Name in Dutch</string>
<string name="someText">someText in Dutch</string>
</resources>
当用户切换语言时,Android 会自动选择翻译。如果找不到给定语言的翻译(例如:nonTranslatedText 字符串),它将默认为在 res/values/strings.xml 中找到的翻译。
您可以在这样的布局中引用这些字符串:
<Button android:id="@+id/someId" style="@style/someStyle" android:text="@string/someText"/>
或者在这样的java对象中:
context.getString(R.string.someText);
【讨论】: