我有这个非常令人费解的问题。
我在 XCode 中创建了一个 Localizable.strings 文件,然后在其中创建了 2 种语言。
我用语言翻译填充了这些文件,进行了构建/清理,然后重新构建,但是本地化字符串无法显示在我的项目中。如果我尝试类似:
self.title = NSLocalizedString(@"HEAD", nil);
只有“HEAD”而不是翻译出现在设备模拟器中。
这是我的项目层次结构:
这是英文本地化文件的内容:
有任何想法吗?
我有这个非常令人费解的问题。
我在 XCode 中创建了一个 Localizable.strings 文件,然后在其中创建了 2 种语言。
我用语言翻译填充了这些文件,进行了构建/清理,然后重新构建,但是本地化字符串无法显示在我的项目中。如果我尝试类似:
self.title = NSLocalizedString(@"HEAD", nil);
只有“HEAD”而不是翻译出现在设备模拟器中。
这是我的项目层次结构:
这是英文本地化文件的内容:
有任何想法吗?
我自己找到了答案。
除了再次清理和构建项目以及我上面描述的所有内容。您还必须在 iPhone 模拟器中删除该应用程序,然后重新构建它!之后它完美地工作。
谈论让它变得简单苹果......
请确保:
几项检查:
Localizable.strings
且包含在目标中;
"
//
(NOT #
)开头确保在 Build Phases、Copy Bundle Resources 下有 Localizable.strings。
如果第一个字母是大写 Localizable.strings,请检查文件名
@jbssm 的解决方案有效,但更好的方法(确保资源将保持更新而无需每次清理和删除)将添加一个自定义脚本构建阶段,该阶段更改 Localizable.bundle 的访问时间。
我自己找到了 1 个答案。
确保所有值都以 ; 结尾。否则,它不起作用..
除了此线程中其他地方提到的所有提示外,Localizable.strings
在某些情况下还必须位于项目根文件夹中。
就我而言,我的 Localizable.strings 文件格式不正确,因为有一些剩余的文本。编译器没有抱怨,但是文件非法部分之后的所有字符串都被忽略了。我的文件看起来像这样:
“键1” = “字符串1”;
一个字符串
一个字符串
一个字符串
一个字符串";
“键2”=“字符串2”;
因此,请务必手动检查任何未正确处理的 Localizable.strings。您不能相信编译器会捕获所有格式错误。
还要删除 iPhone 模拟器中的应用程序,然后重新构建它!之后它完美地工作。
我想就另一个可能与 UIButton 相关的问题发出警告,该问题看起来像是本地化不起作用。
为了在 UIButton 上设置文本,请使用:
setTitle(_ title: String?, for state: UIControl.State)
代替:
button.titleLabel?.text