如何本地化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程序做了什么(回声部分)。