如何本地化Cordova iOS项目?
我一直在互联网上搜索,但我发现的解决方案似乎都不起作用,我的问题是Xcode 6,我们如何本地化Cordova应用程序 下图说明了问题所在,我在iOS模拟器中测试了该应用程序(我将模拟器的语言设置更改为西班牙语),但输入中的上下文菜单或一些类似插件的摄像头仍使用英语。我将“本地化本地开发区”更改为“es”,但仍使用英语。另外,我在es.lproj文件夹中有Localizable.strings如何本地化Cordova iOS项目?,ios,xcode,cordova,localization,project,Ios,Xcode,Cordova,Localization,Project,我一直在互联网上搜索,但我发现的解决方案似乎都不起作用,我的问题是Xcode 6,我们如何本地化Cordova应用程序 下图说明了问题所在,我在iOS模拟器中测试了该应用程序(我将模拟器的语言设置更改为西班牙语),但输入中的上下文菜单或一些类似插件的摄像头仍使用英语。我将“本地化本地开发区”更改为“es”,但仍使用英语。另外,我在es.lproj文件夹中有Localizable.strings 经过一番挖掘之后,我终于明白了,在一位在其他论坛上为我提供了巨大帮助的人的帮助下,你必须将此加入到项目
经过一番挖掘之后,我终于明白了,在一位在其他论坛上为我提供了巨大帮助的人的帮助下,你必须将此加入到项目中。请列出以下内容:
<key>CFBundleLocalizations</key>
<array>
<string>es</string>
</array>
CbundleLocalizations
锿
每个字符串都是您要本地化的语言。首选答案是正确的,但有一个缺点是使用本地语言,即。E您必须在cordova准备后修改Info*.plist 若你们想坚持Cordova的风格(我推荐),你们可以使用一个钩子或插件 我之所以使用插件,是因为插件(从零开始)能够修改本机配置的文件(AndroidManifest.xml或Info*.plist) 看 我所做的:
- 创建一个新的特定插件名称“cordova plugin config ios”
<?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>
- 通过config.xml调用钩子
<hook src="hooks/add-local-plugins.sh" type="before_prepare" />
在我的例子中,钩子不是强制性的,但我喜欢它带来的自由,并且能够记录程序所做的事情(echo部分)。在
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>
.我发布了我的工作方式:
在x代码中查找文件夹资源(位于根目录中)
选择文件夹资源
然后按主菜单文件->新建->文件
在“资源”字符串文件部分选择,然后按下一步
然后在另存为字段中,只写InfoPlist(“I”大写字母和“P”
(大写)
然后按Create
然后选择在资源中创建的文件InfoPlist.strings
文件夹,然后按右菜单中的“本地化”按钮
然后从项目导航器中选择项目并选择
项目列表中的项目
在底部的“信息”选项卡中,您可以选择任意语言
(在节中存在本地化)
您可以在参考资料文件夹中看到的语言
要本地化info.plist文件中的值(“键”),可以打开
使用文本编辑器并获取所有要本地化的键
您可以在任何InfoPlist.String中编写任何键作为示例,如
上例
"NSLocationAlwaysAndWhenInUseUsageDescription"="blabla";
"NSLocationAlwaysUsageDescription"="blabla2";
这就是所有的工作,你已经本地化了你的info.plist文件 转到任何插件的.plist文件并注释掉:
<!-- <key>CFBundleDevelopmentRegion</key>
<string>nl</string> -->
然后插件将使用系统设置语言和区域。对于许多情况,这可能是最实用的解决方案。您可以在应用程序代码中使用以下方法实现这一点:
EN
如何为语言使用iOS设备设置:
CbundledDevelopmentRegion似乎在默认情况下总是设置为en_US(或者这可能是因为我构建的笔记本电脑具有这些设置),从而以英语显示上下文菜单、文件上载对话框等
我发现将CbundleDevelopmentRegion设置为空会使用语言的设备设置。
请注意,有些插件似乎设置了语言,所以如果您无法让它工作,请检查您的插件。这是在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 answer将我带到了正确的轨道上应用程序本身是否仍然没有这种可能性?
<custom-config-file parent="CFBundleLocalizations" target="*-Info.plist" mode="replace">
<array>
<string>en</string>
</array>
</custom-config-file>
<platform name="ios">
<config-file parent="CFBundleDevelopmentRegion" target="*-Info.plist">
<array>
<string />
</array>
</config-file>
</platform>