我有一个 Phonegap 应用程序,我在其中使用相机插件。问题是,这些按钮不使用原生 iOS 语言,而是只有英文(“Retake”和“Use”等)。
我正在做的应用程序是儿童应用程序,但他们不是以英语为母语的人。所以我想用他们的母语来做。
有什么办法可以将这些按钮翻译成正确的语言?
我有一个 Phonegap 应用程序,我在其中使用相机插件。问题是,这些按钮不使用原生 iOS 语言,而是只有英文(“Retake”和“Use”等)。
我正在做的应用程序是儿童应用程序,但他们不是以英语为母语的人。所以我想用他们的母语来做。
有什么办法可以将这些按钮翻译成正确的语言?
我可以通过修改项目 plist ( platforms/ios/ProjectName/ProjectNAme-Info.plist
) 来更改标签语言。
我CFBundleDevelopmentRegion
从English
to更改fr_FR
并添加了这个数组:
<key>CFBundleLocalizations</key>
<array>
<string>fr</string>
</array>
如果你使用 XCode 作为 IDE 来开发你的项目,你可以将它本地化为一个普通的 iOS 项目。要知道如何做到这一点,您可以查看此其他帖子。您不需要为这些“单词”(Retake、Use 等)提供翻译,只需设置正确的本地化将告诉 iOS 使用本地语言。
但是,如果您使用 PhoneGap Build 来编译您的项目,请在 PhoneGap Build 论坛中查看此主题。与 XCode 过程类似,您需要在 /www 目录下创建一个名为“locales”的文件夹,并将您想要使用的语言放在那里。同样,您不需要为这些按钮提供翻译。iOS会自己做。
如果您不想在每次构建后手动更改 XCode 中的语言,您可以在 Mac 上的 phonegap/cordova 源代码中进行以下更新:
(以 cordova 3.6.3 和法语语言环境为例,您需要更新到您的版本和语言)
Folder : ~\.cordova\lib\npm_cache\cordova-ios\3.6.3\package\bin\templates\project\__PROJECT_NAME__\
File : __PROJECT_NAME__-Info.plist
Update :
=> Change <key>CFBundleDevelopmentRegion</key>
<string>English</string>
to <key>CFBundleDevelopmentRegion</key>
<string>France</string>
=> Add after it
<key>CFBundleLocalizations</key>
<array>
<string>fr</string>
</array>
Folder : ~\.cordova\lib\npm_cache\cordova-ios\3.6.3\package\bin\templates\project\__PROJECT_NAME__\Resources\
Update :
=> Create a 'fr.lproj' folder by Copy/Paste of the 'en.lproj' folder
=> Complete the translation in 'fr.lproj/Localizable.strings' file (not required)
这将影响您使用此 cordova 版本构建的所有项目。
之前备份您的cordova文件夹,不要将不需要的文件留在“模板”文件夹下,否则它们将被复制到最终包中。
希望能帮助到你。
幸运的是,Cordova 是开源的。
第一步是在Apache Cordova 错误跟踪器上报告错误。然后,克隆cordova 源代码以尝试了解为什么插件无法显示正确的语言。
它没有那么复杂。插件只是 javascript 函数和本机函数之间的粘合剂。
事实上,如果 iOS 找不到在 CFBundleLocalizations 中声明的本地化,CFBundleDevelopentRegion 似乎是一个后备方案。
您无需更改该密钥。只需在 .plist 中添加 ISO 国家代码数组(就像 Michaël 所做的那样)就足够了。
解决方案是在plist
文件中声明语言,例如:
<key>CFBundleLocalizations</key>
<array>
<string>it</string>
<string>es</string>
</array>
如果您不想手动执行此操作,因为您可能没有跟踪 plist 文件,您可以在运行时使用Cordova 自定义配置插件将缺少的密钥添加到plist
文件中cordova prepare