Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改android应用程序中的语言环境(印地语)_Android_Locale_Hindi - Fatal编程技术网

更改android应用程序中的语言环境(印地语)

更改android应用程序中的语言环境(印地语),android,locale,hindi,Android,Locale,Hindi,为应用程序创建多语言支持,并可更改应用程序中的语言设置 到目前为止,英语、西班牙语、法语、俄语的一切都很好, 但不适用于印地语和汉语 1我以原始语言指定语言名称 但在应用程序中,而不是हिन्दी 我能看见印地语 \res\values hi\arrays.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="languages"> <

为应用程序创建多语言支持,并可更改应用程序中的语言设置

到目前为止,英语、西班牙语、法语、俄语的一切都很好, 但不适用于印地语和汉语

1我以原始语言指定语言名称 但在应用程序中,而不是हिन्दी 我能看见印地语

\res\values hi\arrays.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>

怎么了?我的代码或设备有问题吗?

这取决于设备。此外,请转到设置->语言与输入,检查您的设备是否支持印地语和中文。

I。首先:

你的帖子有很多逻辑和拼写错误。Lint将报告此类错误和警告,代码将不会编译

请参阅更正:

为应用程序创建多语言支持,并可更改应用程序中的语言设置

到目前为止,英语、西班牙语、法语、俄语的一切都很好, 但不适用于印地语和汉语

1我以原始语言指定语言名称 但在应用程序中,而不是हिन्दी 我能看见印地语

\res\values hi\arrays.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>

当您使用中文和印地语时,您使用的是以下区域设置,如字符串资源中所示:

<item name="chineese">zh-CN</item>
<item name="hindi">hi</item>
如果上述情况正确,则您的应用程序不接受或识别某些旧设备中的值zh和值hi

请分享您的设备制造商和型号,以便了解更多信息 可以进行调查

您的代码是正常的,因此您可以在任何其他应用程序中测试您的应用程序 和更新的设备

请在更改区域设置之前调用该方法 在onCreate回调中调用setContentView

也许你可以检查你的设备是否支持印地语和中文 语言设置->语言和输入

我的设备中没有印地语和中文 设置,但仍然可以在中识别区域设置hi和zh 应用程序,但我必须安装相应的字体,以防止 退路

请注意,印地语和汉语是来自不同时区的语言环境,因此很可能无法在相同的设备设置中找到它们

请确保您的代码正在其他新设备上运行。如果没有,则必须遵循以下步骤。首先有一些基本认识:

首先,如果您在设备设置中更改了区域设置,它应该不会影响应用程序级别的区域设置。也就是说,如果您的设备语言环境设置为西班牙语,并且您的应用程序级别语言环境首选项设置为印地语,那么如果这些组件中的每个组件都本地化了字符串,那么印地语应该继续显示在应用程序的每个片段/活动上。现在,如果您将区域设置从西班牙语更改为汉语,并且重新启动应用程序或设备,因为zh存储在您的首选项中,那么您的方法会在应用程序加载时将区域设置更改为汉语,并继续以中文显示文本

其次,如果您的语言依赖于字体,例如:由于您的应用程序中支持英语、印地语和中文语言环境,您必须在资产文件夹中使用所有TTF字体,并将字体面适当地应用于TextView、EditText、单选按钮、复选框、微调器等,当您从应用程序设置更改语言时。在这里,印地语和中文语言环境需要TTF字体在assets文件夹中,并且如上所述,必须在每个组件的字体中使用

第三,也是最重要的一点,更改区域设置的最佳位置是在onCreateBundle方法中调用活动的setContentViewlayout_id之前。因此,一旦更改了区域设置,就必须将控件发送回仪表板/主屏幕,以便立即看到效果

请看

你也可以看到


快乐编码:-

简而言之:在onCreate回调中,您应该将区域设置更改代码放在setContentView的正上方,因为您似乎没有在任何地方使用它来设置活动的布局。它有助于系统正确选择基于区域设置的字符串资源,并且根据区域设置,您可以正确选择字体,并应用于setFontFace。此外,请指定手机的品牌和型号,以及即使重新启动手机或应用程序,为什么不取hi值,也看到上面的评论了吗?@AbhinavSaxena我完全同意你的回答。但问题的解决完全取决于需求。开发人员可能有一些不同的要求,比如只支持设备中可用的语言。在这种情况下,我们不需要为每种语言维护不同的字体。我们只需要查询可用的localesupported语言,并显示选择语言的选项。如果我们为该语言维护了strings.xml
它将显示受尊重的语言,否则将显示默认语言。。。cntd@AbhinavSaxena..cntd...So遵循哪种解决方案完全取决于需求。因此,这取决于开发人员希望采用哪种方法。而且,我不想争论为什么我的答案是正确的。谢谢看,我的答案被一个反问题所保护,如果呢?。如果在同一台设备中不支持中文、西班牙文和印地语怎么办。在旧设备中,我根本看不到印地语字符。因此,当我实施下面的解决方案时,它成功了。在许多教程、博客中,您都没有找到一个使用字体资源在区域设置中保护回退的条款,因此一般认为这不会发生。
<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>
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