如何本地化Cordova iOS项目?

时间:2014-10-12 11:32:40

标签: ios xcode cordova localization project

我一直在互联网上搜索,但我找到的解决方案似乎都没有,我的问题是Xcode 6,我们如何本地化Cordova应用程序?

下面的图片说明了问题,我在iOS模拟器中测试了应用程序(我将模拟器的语言设置更改为西班牙语)但输入中的上下文菜单或某些插件(如相机)仍然是英文版。我将“本地化原生开发区域”更改为“ es ”,但仍然使用英语。此外,我在 es.lproj 文件夹中有Localizable.strings。

context menu

7 个答案:

答案 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

我做了什么:

  • 制作一个新的特定插件名称&#34; cordova-plugin-config-ios&#34;

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。在其中,安装特定的插件

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" />

在我的情况下,钩子不是强制性的,但我喜欢它带来的自由,并且能够记录程序所做的事情(回声部分)。

答案 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)

我发布了工作方式:

  1. 在x代码中找到“资源”文件夹(位于根目录中)
  2. 选择文件夹“资源”
  3. 然后按主菜单File-> New-> File ...
  4. 在“资源”字符串文件部分中选择,然后按Next
  5. 然后在“另存为”字段中仅写入InfoPlist(“ I”大写字母和“ P” 首都)
  6. 然后按创建
  7. 然后选择在参考资料中创建的文件InfoPlist.strings 文件夹,然后在右侧菜单中按“本地化”按钮
  8. 然后从“项目浏览器”中选择项目,然后选择 项目列表中的项目
  9. 在底部的信息标签中,您可以根据需要选择多种语言 (在“本地化”部分中)
  10. 您可以在资源文件夹中看到的语言
  11. 要从info.plist文件本地化值(“键”),可以打开  使用文本编辑器,并获取要本地化的所有键
  12. 您可以在任何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>