为应用程序创建多语言支持,可以更改应用程序中的语言设置。
至于现在,一切都适用于英语、西班牙语、法语、俄语,但不适用于印地语和汉语。
1) 我以原始语言指定语言名称,但在应用程序中指定,而不是हिन्दी 我能看到“印地语”。
\res \ values hi \数组。xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="languages">
<item name="english">English</item>
<item name="russian">Русский</item>
<item name="spanish">Espagnol</item>
<item name="russian">Français</item>
<item name="chineese">中国</item>
<item name="hindi">हिन्दी</item>
</string-array>
<string-array name="languagesValues">
<item name="english">en</item>
<item name="russian">ru</item>
<item name="spanish">es</item>
<item name="russian">fr</item>
<item name="chineese">zh-CN</item>
<item name="hindi">hi</item>
</string-array>
</resources>
2) 选择“印地语”后结束-实际上选择了默认值(英语)
\res\values hi\strings。xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">लकी बीनने</string>
<string name="score">0000</string>
<string name="settings">सेटिंग</string>
<string name="start_button">प्रारंभ</string>
<string name="about_button">के बारे में</string>
<string name="about">लियोनिद द्वारा बनाया गया</string>
<string name="feedback">प्रतिक्रिया भेजें </string>
<string name="high_score">उच्च स्कोर के</string>
<string name="score_set">स्कोर निर्धारित किया गया है \r\nमें:</string>
<string name="game_over">खेल खत्म</string>
....
在首选项中保存区域设置。
public class Settings extends PreferenceActivity {
Locale myLocale;
static boolean localeChanged;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
// language changing
Preference langPreference = getPreferenceScreen().findPreference(
"language");
langPreference.setOnPreferenceChangeListener(languageChangeListener);
}
Preference.OnPreferenceChangeListener languageChangeListener = new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
switch (newValue.toString()) {
case "en":
setLocale("en");
break;
case "ru":
setLocale("ru");
break;
case "fr":
setLocale("fr");
break;
case "es":
setLocale("es");
break;
case "zh-CN":
setLocale("zh-CN");
break;
case "hi":
setLocale("hi");
break;
}
localeChanged = true;
return true;
}
};
// * manually changing locale/
public void setLocale(String lang) {
myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(this, Settings.class);
startActivity(refresh);
finish();
}
怎么了?我的代码或设备是否有问题?
一、 第一件事:
你的帖子有很多逻辑和拼写错误<代码>Lint将报告此类错误和警告,代码将不会编译。
请参阅更正:
为应用程序创建多语言支持,可以更改应用程序中的语言设置。
就目前而言,英语、西班牙语、法语、俄语都很好,但印地语和汉语都不行。
1) 我以原始语言指定语言名称,但在应用程序中指定,而不是हिन्दी 我能看到“印地语”。
\res \ values hi \数组。xml
<string-array name="languages">
<item name="english">English</item>
<item name="russian">Русский</item>
<item name="spanish">Espagnol</item>
<item name="french">Français</item>
<item name="chinese">中国</item>
<item name="hindi">हिन्दी</item>
</string-array>
<string-array name="languagesValues">
<item name="english">en</item>
<item name="russian">ru</item>
<item name="spanish">es</item>
<item name="french">fr</item>
<item name="chinese">zh-CN</item>
<item name="hindi">hi</item>
</string-array>
[评论]
>
拼写错误:汉语、法语。
逻辑错误:在两个数组中重复使用俄语键,第二次重复时,应该是法语。
二、对@Chandrakanth回答的改进:
这取决于设备,您的设备似乎是旧的,而您的代码是正确的。给你原因:
从我的回答开始,我想引用你的问题:
As for now everything works fine for English, Spanish, French, Russian
languages, but doesn't work for Hindi and Chinese.
当您使用中文和印地语时,您使用的是字符串资源中的以下语言环境:
<item name="chineese">zh-CN</item>
<item name="hindi">hi</item>
请将其重构为:
<item name="chinese">zh</item>
<item name="hindi">hi</item>
因此,您应该将值文件夹用作:
values-zh and values-hi
如果上述是正确的,那么您的应用程序不接受或识别某些旧设备中的value s-zh
和value s-hi
。
>
请分享您的设备品牌、制造商和型号,以便进行更多调查。
您的代码正常,因此您可以在任何其他和更新的设备上测试您的应用程序。
请在调用“onCreate”内的“setContentView”之前,调用更改语言环境的方法。
也许您可以通过转到设置来检查您的设备是否支持印地语和中文-
我有一些设备在设备设置中没有印地语和中文,但仍然可以在应用程序中识别语言环境,尽管我必须安装相应的字体以防止回退。
请注意,印地语和汉语是来自不同时区的语言环境,因此很可能无法在相同的设备设置中找到它们。
请查看您的代码是否在其他新设备上运行。如果没有,那么您必须按照以下步骤操作。首先有一些基本的理解:
首先,如果在设备设置中更改区域设置,则不会影响应用程序级区域设置。也就是说,如果您的设备区域设置设置为西班牙语,并且您的应用程序级区域设置首选项设置为印地语,那么如果这些组件中的每个组件都本地化了字符串,那么印地语应该继续显示在应用程序的每个片段/活动上。现在,如果您将语言环境从西班牙语更改为中文,并且重新启动了应用程序或设备,因为您的首选项中存储了zh,因此您的方法会在应用程序加载时将语言环境更改为中文,并继续以中文显示文本。
其次,如果您的
语言
依赖于字体
,例如:由于您的应用程序中有English
、印地语
和Chinese
语言环境支持,您必须在资产文件夹
中拥有所有TTF字体
并将Font-face
应用于TextView
、EditText
、Radio Button
、Check Box
、Spinner
等适当地,当您从应用程序设置
更改语言时。在这里,印地语
和中文
语言环境需要TTF
字体在资产
文件夹中,并且必须用于每个组件的
font-face
如上所述。
第三,也是最重要的,更改区域设置的最佳位置是在
onCreate(Bundle restoreState)
方法中调用活动
的setContentView(layout_id)
之前。因此,一旦更改了区域设置
,您必须将控件发送回仪表板/home
屏幕,以便立即看到效果。
请从视图中查看Android get hosting活动
您还可以在Android中看到如何使用XML资源使用字体资产
以及在Android中为组件使用样式
快乐编码:-)
这取决于设备。此外,请转到设置检查您的设备是否支持印地语和中文--
问题内容: 我在Edittext的addTextChangedListener方法中已自定义,一切正常,但是当我更改语言(语言环境)时,我的addTextChangedListener无法正常工作。 我搜索了我的问题并找到了解决方案: 但我不知道如何使用此代码。 问题答案: 您可以尝试先转换为,然后将其投射到
我在我的应用程序中使用日期格式化程序来显示一些日期。但我希望这个日期以阿拉伯语显示。所以我试图像这样改变格式化程序的区域设置: 但它不起作用。。 如果我改成这样: 会工作正常...但我希望日期显示在阿拉伯语... 如何做到这一点?我希望日期是例如١١ يناير ٢٠١٨..怎么办?
我的Android应用程序支持两种语言:阿拉伯语和英语。阿拉伯语是默认语言。 现在,为了使阿拉伯语成为默认语言,我正在闪屏中将我的应用程序区域设置更改为阿拉伯语。并且我为区域设置更改维护了英语和阿拉伯语字符串文件。但是,当我单击其他一些随机片段(例如导航菜单项)时,我的应用程序静态字符串会更改回英语区域设置。 我想这是因为我的应用程序默认语言环境可能已更改为英语。此问题是随机生成的,未注意到任何特
在我的应用程序中,用户应该能够切换区域设置(用于在页面上呈现文本的语言)。大量教程使用FacesContext.get货币实例()。getViewRoot()。setLocale()。例如:http://www.mkyong.com/jsf2/jsf-2-internationalization-example/.但是,这在JSF 2.0中根本不起作用(它在1.2中确实起作用)。这种语言从不切换。
问题内容: 我有一个Spring应用程序,希望用户能够更改首选语言环境。当前,用户可以更改当前会话的语言环境,但是我希望能够保存users选项,以便每当他们登录时,使用已保存的语言环境(如果存在)。我有一个mysql数据库,用于存储用户区域设置首选项。我创建了一个自定义AuthenticationSuccessHandler,以处理将语言环境更改为已保存的语言环境的操作,该方法适用于已将语言环境保
我熟悉Java,但只是学习Android编程。我非常喜欢他们的Hello,LinearLayout示例中的颜色栏,所以我一直在尝试将其扩展为一个可以用于我13个月大的孩子的小程序。我让它显示七种颜色的标签和四行。我想做的一件事(因为我会双语),就是能够动态更改区域设置显示语言,而无需退出应用程序,加载新区域设置,然后再次启动应用程序(这很有效,但很乏味)。因此,七个颜色条的标签适合所选语言,但我希