禁止面向用户的文本应使用本地化的字符串宏警告

时间:2016-12-29 08:54:20

标签: objective-c cocoa xcode8

我正在使用未本地化的字符串并低于警告

  

面向用户的文本应使用本地化的字符串宏

如何取消此警告?

4 个答案:

答案 0 :(得分:19)

来自clang documentation

  

您可以使用仅返回其输入但注释为返回本地化字符串的函数来抑制分析器警告(并记录您的意图):

__attribute__((annotate("returns_localized_nsstring")))
static inline NSString *LocalizationNotNeeded(NSString *s) {
  return s;
}

[field setStringValue:LocalizationNotNeeded(@"Debug")];
     

有些项目也可能会发现使用NSLocalizedString很有用,但添加" DNL"或者"不要本地化"到字符串内容

答案 1 :(得分:12)

项目构建设置中的

: “静态分析器 - 问题 - Apple API” 将“缺少可定位性”设置为否

还要确保没有任何本地化,否则xcode 9会警告您再次启用“Missing Localizability”分析器警告。

这对我来说比较棘手,我不得不用文本编辑器打开项目文件(project.pbxproj)并手动清空“knownRegions”列表,否则它们不会被删除

答案 2 :(得分:0)

或者只是使用Xcode建议的本地化字符串宏:

 NSLocalizedString(@"My string that was giving me warnings", nil)

答案 3 :(得分:0)

另一种可能性是:

[NSMutableString stringWithString:@"Debug"];