代码之家  ›  专栏  ›  技术社区  ›  iKK

Apple Watch上的默认本地化语言错误

  •  0
  • iKK  · 技术社区  · 7 年前

    我对Apple Watch本地化有一个问题:默认语言不起作用!

    (..unsing XCode 10.0、Swift4.2、iOS12和WatchOS4.2)

    在我的代码中,我将英语设置为默认语言。另外,我把德语定义为本地化。对于这两种语言,一切都很正常,根据iPhone的设置(即英语或德语),applewatch会反映出这两种语言。

    这一定是一个错误,它是非常烦人的世界各地的用户。

    请参阅以下图片,说明WatchKit应用程序中的本地化:

    enter image description here

    对于WatchKit扩展:

    enter image description here

    enter image description here

    2 回复  |  直到 7 年前
        1
  •  2
  •   coolioxlr    7 年前

    两年前我申请了一个雷达,直到今年的WWDC,我才得到任何更新,当时我追踪到了工程师,并抱怨这个问题。二战结束后,他们关闭了我的雷达作为一个重复的问题。

    尝试在Watch Extention中添加Localizable.strings(Base)文件,因为一些开发人员说这样做可以解决问题。

        2
  •  3
  •   iKK    7 年前

    下面是如何设置默认语言的说明;典型WatchKit应用程序的正确区域(Swift>第4.2版):

    作为前面的一句话:本文不介绍如何在整个项目中本地化脚本文件或字符串。本文仅限于默认的语言属性,如Apple Watch和Info.plist的本地化!

    首先,您有3个目标:

    • MyApp WatchKit目标

    国产化如下:

    (一) 循环流化床开发区 “(您可以选择任何默认语言和区域,例如-例如: en_US )

    enter image description here

    (二) 确保所有3个目标都有一个info.plist文件

    enter image description here (…不需要为info.plist文件添加其他语言…-i、 e.其他语言将添加到额外的infoPlist.strings文件中,如本文后续步骤所述……)

    顺便说一句,如果你想测试你的默认语言行为为你的苹果手表-确保你完全擦除和重置两个模拟器之前,改变iPhone语言的模拟器。似乎还需要删除和重新建立目标方案。这样做可以测试您的Apple Watch的语言行为,即使是不是基础语言或本地化语言的语言。。。

    (三) 确保所有3个目标的info.plist文件都位于相应的 文件夹

    enter image description here

    (D) 最后,如果Xcode此时显示错误:对于所有3个目标,转到Target->生成设置->info.plist文件…和 考虑到info.plist文件位于Base.lproj子文件夹中

    enter image description here

    电子) 如果all设置正确,那么所有3个目标的Xcode组文件夹和基设置如下所示:

    enter image description here

    // -----------------------------------------------------------------------------
    

    现在,如果要为Info.plist添加其他语言功能,则需要在本地化开始时为每个希望进行语言自定义的目标引入InfoPlist.strings文件。

    本文将在下面介绍如何本地化infoPlist.strings文件(不要与我们刚才对只负责iPhone和Apple Watch默认语言设置的基本语言定义所做的操作相混淆)。同样,本文没有展示故事板或字符串的本地化。如果你想了解这一点,请参阅其他文章。。

    info.plist文件的本地化:

    在目标内部(或至少在info.plist文件中要本地化的目标内部)-执行以下操作:

    (一) 转到文件->新建->文件。。。和 添加字符串文件 你选择的目标

    enter image description here

    (二) 将文件命名为InfoPlist.strings 并将其保存在目标文件夹结构中的某个位置(以及任何一组Xcode引用树中的任何位置)

    三) 在InfoPlist.string(您选择的目标)中, 编写要本地化的密钥 (用引号括起来) 后跟等号和本地化文本 所选语言(也用引号,后跟分号)。

    以下是德国本地化的一个示例:

    /* App name localization */
    "CFBundleDisplayName" = "MyApp_Name_in_German";
    
    /* Privacy - Health Share Usage Description */
    "NSHealthShareUsageDescription" = "Erlaubnis für Herzfrequenz Messung nötig.";
    
    /* Privacy - Health Update Usage Description */
    "NSHealthUpdateUsageDescription" = "Erlaubnis für Herzfrequenz Messung nötig.";
    

    四) 选择正确的目标和语言 (对于每个相应的目标-尽管可以理解,WatchKit目标很可能不需要InfoPlist.strings本地化-但其他两个目标确实需要[即MyApp目标和MyApp WatchKit扩展])。

    enter image description here

    如果设置正确,其中一个目标文件夹组将如下所示:

    enter image description here (其中,InfoPlist.strings是相应语言的本地化版本,Info.plist是基本语言的本地化版本)

    // -----------------------------------------------------------------------------
    

    我们不要问苹果为什么要把Apple Watch正确地归为默认语言而变得如此复杂;此外,对于InfoPlist.strings,如何本地化不同的语言也非常明显。

    推荐文章