我一直在互联网上搜索,但我找到的解决方案似乎都没有,我的问题是Xcode 6,我们如何本地化Cordova应用程序?
下面的图片说明了问题,我在iOS模拟器中测试了应用程序(我将模拟器的语言设置更改为西班牙语)但输入中的上下文菜单或某些插件(如相机)仍然是英文版。我将“本地化原生开发区域”更改为“ es ”,但仍然使用英语。此外,我在 es.lproj 文件夹中有Localizable.strings。
答案 0 :(得分:5)
最后,经过一些挖掘,并在一个在其他论坛上给我很大帮助的人的帮助后,我想出来了,你必须把它放在项目.plist中:
<key>CFBundleLocalizations</key>
<array>
<string>es</string>
</array>
每个字符串都是您要本地化的语言。
答案 1 :(得分:2)
首选答案是正确的,但缺点是本机,我。即在cordova准备之后你必须修改Info * .plist。
如果您想坚持Cordova的风格(我推荐),您可以使用钩子或插件。
我是用插件做的,因为插件(从头开始)具有修改本机配置文件(AndroidManifest.xml或Info * .plist)的能力。
请参阅https://stackoverflow.com/a/27947343/2728710
我做了什么:
localPlugins /科尔多瓦-插件-CONFIG-IOS / plugin.xml的
<?xml version="1.0" encoding="UTF-8"?>
<plugin id="cordova-plugin-config-ios" version="0.0.1" xmlns="http://apache.org/cordova/ns/plugins/1.0">
<name>CRM Factory Cordova Localization iOS Plugin</name>
<description>A label translate example</description>
<!-- ios -->
<platform name="ios">
<config-file target="*-Info.plist" parent="CFBundleDevelopmentRegion">
<array>
<string>French</string>
</array>
</config-file>
<config-file target="*-Info.plist" parent="CFBundleLocalizations">
<array>
<string>fr_FR</string>
</array>
</config-file>
</platform>
</plugin>
add-local-plugins.sh
echo "Install specific plugin for modify Info*.plist"
cordova plugin add cordova-plugin-config-ios --searchpath ${projectDir}/localPlugins/cordova-plugin-config-ios
config.xml中
<hook src="hooks/add-local-plugins.sh" type="before_prepare" />
在我的情况下,钩子不是强制性的,但我喜欢它带来的自由,并且能够记录程序所做的事情(回声部分)。
答案 2 :(得分:1)
通过在<edit-config>
中使用config.xml
,也可以不使用钩子或插件来执行此操作。这是一个示例:
<platform name="ios">
<edit-config target="CFBundleLocalizations" file="*-Info.plist" mode="overwrite">
<array>
<string>en</string>
<string>es</string>
</array>
</edit-config>
</platform>
Cordova 6.4.0中引入了<edit-config>
中config.xml
的用法。
答案 3 :(得分:1)
我发布了工作方式:
您可以在任何InfoPlist.string之类的示例中编写任何密钥作为示例。 以上示例
"NSLocationAlwaysAndWhenInUseUsageDescription"="blabla";
"NSLocationAlwaysUsageDescription"="blabla2";
就可以了,您已经本地化了info.plist文件!
答案 4 :(得分:1)
如何使用 iOS 设备设置语言:
似乎 CFBundleDevelopmentRegion 在默认情况下始终设置为 en_US(或者这可能是因为我在具有这些设置的笔记本电脑上构建)从而以英语显示上下文菜单、文件上传对话框等。
我发现将 CFBundleDevelopmentRegion 设置为空会使用语言的设备设置。
请注意,某些插件似乎会设置语言,因此如果您无法使用它,请检查您的插件。这是在 Ionic 5 / Angular / Cordova 中测试的。
把它放在你的 config.xml ios 部分:
<platform name="ios">
<config-file parent="CFBundleDevelopmentRegion" target="*-Info.plist">
<array>
<string />
</array>
</config-file>
</platform>
感谢@maximillion-bartango 的回答让我走上正轨
答案 5 :(得分:0)
转到任何插件的.plist文件并注释掉:
<!-- <key>CFBundleDevelopmentRegion</key>
<string>nl</string> -->
然后,该插件将使用系统设置的语言和区域。在许多情况下,这可能是最实用的解决方案。
答案 6 :(得分:0)
您可以使用cordova-custom-config在应用代码本身中完成此操作:
<custom-config-file parent="CFBundleLocalizations" target="*-Info.plist" mode="replace">
<array>
<string>en</string>
</array>
</custom-config-file>