【问题标题】:Xcode 9 - Localization Issue Warning StoryboardXcode 9 - 本地化问题警告故事板
【发布时间】:2017-12-15 19:53:42
【问题描述】:

在撰写本文时,我目前正在测试 Xcode 9 beta 3。

查看情节提要时,我收到一个警告列表,指出在其他语言/地区我的固定约束会造成问题。

应用程序相当复杂,许多视图都遇到这些警告。

警告是:

Certain autolayout constraint combinations may result in an appropriate layout in the current development language but will pose issues in other languages and regions.

我知道该应用不会很快以任何其他语言使用。

有没有办法关闭这个警告?这听起来很傻,但我无法忍受看到我所有的观点都带有黄色的警告图标并在顶部计数(110 个警告!)

【问题讨论】:

  • 屏幕截图中的黄色三角形是可点击的,并提供一个带有建议分辨率的弹出窗口。解决问题是这里的理想解决方案。这些问题在后来的 Xcode 9 beta 版本以及 Xcode 9.1 中得到了改进。除了取消本地化文档之外,目前还没有一种方法可以关闭警告。请为任何看似不正确的警告提交错误(在 bugreport.apple.com),并附上示例文档。

标签: ios xcode storyboard interface-builder xcode9-beta


【解决方案1】:

不想要的警告的来源是 Xcode 默认为本地化“准备”故事板。它们是通过使用base internationalization 设置它们来“准备”的。

要在特定情节提要中完全禁用此警告,您需要让 Xcode 知道情节提要不应被视为可本地化。我能够做到这一点的最简单方法是将情节提要文件从Base.lproj 文件夹上移一级,然后将文件重新添加到项目中。一旦我这样做了,警告就消失了。

步骤

这个过程应该适用于新旧项目。使用使用 Xcode 9.1 创建的项目在 Xcode 9.1 上进行测试

  1. 将故事板从 Base.lproj 文件夹上移一级通过 Finder
  2. 通过 Xcode 从您的项目中删除情节提要参考
  3. 将情节提要拖放(或以其他方式重新添加)到您的项目中
  4. 使用文件检查器验证情节提要不再具有基本本地化

图解演练

Xcode 默认为本地化“准备”故事板

将情节提要文件移出 Base.lproj 文件夹以防止出现警告

删除文件引用

重新添加故事板

成功后您会看到“本地化...”按钮

如果你以后想本地化

只需点击“本地化...”按钮并按照 Xcode 的提示进行操作。此外,您实际上需要解决 Xcode 告诉您的警告。有多种方法可以解决它们,我推荐这个question 开始。

有关该过程的视频演示,请观看此screen recording

【讨论】:

  • 我通过 Finder 在项目中将情节提要文件上移了一个级别,但仍然是同样的问题。是否需要通过Xcode删除,然后在Xcode中添加到项目中?
  • 您需要使用 Finder 将其上移一个级别。它将位于名为 Base.lproj 或 English.lproj 或其他语言点 lproj 的文件夹中。使用查找器,将情节提要文件移出该文件夹。此时,Xcode 将不知道文件在哪里,所以删除引用并通过简单的拖放重新添加文件。
  • 太棒了。从长远来看,这会影响什么吗?当我选择这样做时,我可以将它移回Base.lproj 目录吗?在我继续使用此选项之前请确保。
  • 如果您决定要支持本地化,只需按 "Localize..." 按钮,Xcode 就会将您的故事板移动到您选择的 lproj 文件夹中(它将提示 Base 或您的开发语言)。
  • @NSPratik 谢谢你,我去更新指令图像,发现 Xcode 9.1 不再适用于修复文件引用的方法。我用删除和重新添加解决方案更新了说明,应该更清楚。
【解决方案2】:

假设您的应用未本地化,您需要在情节提要中恢复本地化设置。我们的一个设置为英语。取消选中英文框,或者您设置的任何内容。故事板位于带有语言代码的文件夹中,en 表示英语。取消选中此框会将其从项目目录中删除,因为应用程序不再查找 en 文件夹。在 finder 文件夹中找到故事板,将其从 en 文件夹中移出,然后将其拖回项目中。确保选中 Target Membership。必要时清洁、关闭、打开、强制退出等,您应该一切顺利!我们在一个情节提要中有 360 条警告,所以很高兴能解决这个问题!

【讨论】:

  • 故事板消失的时候很吓人,我在垃圾箱里找到了它,但我同意它解决了警告问题哈哈
【解决方案3】:

您还可以通过简单地将标签或按钮嵌入透明视图中来删除本地化问题警告。然后从标签或按钮中删除固定宽度约束并将其设置为该容器视图。

通过使用容器视图,您可以使警告静音并且仍然能够本地化情节提要。有时即使语言要更改,您也需要具有固定宽度的标签或按钮,如果您确定固定宽度足够大,那应该不是问题,但 Xcode 不知道,这就是为什么你收到警告;-)

【讨论】:

    【解决方案4】:

    一个简单的解决方案:为每个有问题的约束关闭“尊重语言方向”。

    https://stackoverflow.com/a/45764271/201828

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 2020-02-27
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      • 2018-11-22
      • 2016-01-05
      相关资源
      最近更新 更多