Xcode本地化失效问题
Xcode本地化失效问题

Xcode本地化失效问题

环境配置

  1. Mac Sonoma 14.5
  2. Xcode Version 15.4 (15F31d)

情景复现

因为我有一款“存钱猪猪”应用,目前还是初版。然后我打算推翻现有的内容,重新梳理这款软件的架构,其中比较重要的操作是删除了之前的文件,包括本地化问题、View等等问题。

删除后,重新实施本地化时,发现失效了。

我在配置Localizable文件时,我原本是默认中文,为了更好的推广应用,改为英文,并配置了简体中文的应用名称以及应用内容,但是应用无论如何都只显示英文的应用名称和内容。

好在,我之前提交到Github上了代码,我把之前的版本拉过来,进行问题的排查。

问题排查

首先是将新版本的代码复制到旧版本上,发现旧版本的本地化是正常的,虽然我在新版本中添加了lottie动画、渐变色等效果,但在旧版本上都能复现。

随后,开始对比参数,发现各项参数都是正常的,我甚至怀疑因为我改新版本时,调整了iOS最低的支持版本导致的问题,修改了支持版本仍然报错。

经过一上午的反复比较,发现旧版本和新版本的Localizable文件的命名不一样的,因为新版本为了做区分,将String Catalog类型的文件命名为LocalizableCatalog,将String File(Legacy)类型的文件命名为LocalizableLegacy。

然后我尝试修改新版本的String File(Legacy)文件的命名,将其改为旧版本的名称,本地化效果重新实现。

(本地化文件改为旧名称,本地化效果实现)

(本地化文件改为非旧名称,本地化效果失效)

经过几次测试,发现问题就是存在于本地化文件命名的问题。

这个文件影响了应用的本地化文件名称。

除此之外,另一个String Catalog文件也存在本地化失效的问题,我以为是String File(Legacy)是这个BUG间接导致的String Catalog文件的失效,然后我将现有的String Catalog文件删除后,重新创建String Catalog,发现还是本地化失效。

然后,我默默的将String Catalog类型文件改为旧版本的命名,应用内容的本地化效果实现。

(本地化文件改为旧名称,本地化效果实现)

(本地化文件改为非旧名称,本地化效果失效)

总结

经过了一个上午的仔细排查,问题出在本地化文件的命名,问题的原因可能为Xcode的BUG,在Xcode项目开始创建Localizable文件后,Xcode会将创建的Localizable文件的命名作为常量进行存储。如果后面修改了这个文件的命名,本地化效果就会失效。

以上是我在排查Xcode本地化失效问题时,自我作出的总结,也可能是其他字段导致的问题。

每遇到一个BUG,就会耽误我很长的一段开发进度,都2024年了,有时还是会出现莫名其妙的闪退,应该好好修一修Xcode,另外对于支持版本的事,我也发现很多特性都是iOS 14 或者iOS 15才能使用,如果不设置最低的支持版本,可能本地化的功能都实现不了,根本不考虑向下兼容的事。

希望果子能重视一下这些问题。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注