如何本地化cordovaiOS项目?
我一直在互联网上search,但没有我find的解决scheme似乎工作,我的问题是在Xcode 6,我们如何本地化cordova应用程序?
下面的图片说明了这个问题,我在iOS模拟器中testing了应用程序(我将模拟器的语言设置改为西class牙语),但input中的上下文菜单或像摄像机这样的插件仍然是英文的。 我把“ 本地化本土化发展地区 ”改为“ ES ”,但仍然是英文。 另外我在es.lproj文件夹中有Localizable.strings。
最后,我经过一番深入的研究,在一个在其他论坛帮助过我的人的帮助下,你必须把这个放在项目.plist中:
<key>CFBundleLocalizations</key> <array> <string>es</string> </array>
每个string都是您想要本地化的语言。
首选的答案是正确的,但缺点是本地的,即你必须修改cordova准备后的信息* .plist。
如果你想坚持cordova的风格(我推荐),你可以使用钩子或插件。
我是用插件做的,因为插件(从头开始)可以修改本机configuration的文件(AndroidManifest.xml或Info * .plist)。
请参阅https://stackoverflow.com/a/27947343/2728710
我做了什么:
- 创build一个新的特定插件名称“cordova-plugin-config-ios”
localPlugins /cordova-插件-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。 在其中安装制作的特定插件
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调用钩子
config.xml中
<hook src="hooks/add-local-plugins.sh" type="before_prepare" />
就我而言,钩子并不是强制性的,但是我喜欢它所带来的自由,并且能够logging程序做了什么(回声部分)。