相关疑难解决方法(0)

使用NSLocalizedString的最佳实践

我(和所有其他人一样)使用NSLocalizedString本地化我的应用程序.

不幸的是,有几个"缺点"(不一定是NSLocalizedString本身的错误),包括

  • Xcode中的字符串没有自动完成功能.这使得工作不仅容易出错而且令人厌烦.
  • 您可能最终只是因为您不知道已经存在的等效字符串而重新定义字符串(即"请输入密码"与"先输入密码")
  • 类似于自动完成问题,你需要"记住"/ copypaste注释字符串,否则genstring最终会有一个字符串的多个注释
  • 如果要genstring在已经对某些字符串进行本地化后使用,则必须小心不要丢失旧的本地化.
  • 在整个项目中,相同的字符串分散.例如,您NSLocalizedString(@"Abort", @"Cancel action")在任何地方都使用过,然后Code Review要求您重命名字符串NSLocalizedString(@"Cancel", @"Cancel action")以使代码更加一致.

我所做的(以及经过一些搜索后,我认为很多人这样做)是有一个单独的strings.h文件,我#define所有的本地化代码.例如

// In strings.h
#define NSLS_COMMON_CANCEL NSLocalizedString(@"Cancel", nil)
// Somewhere else
NSLog(@"%@", NSLS_COMMON_CANCEL);
Run Code Online (Sandbox Code Playgroud)

这基本上提供了代码完成,一个更改变量名称的位置(因此不再需要genstring),以及一个自动重构的唯一关键字.但是,这需要花费大量结果来解决一系列#define非固有结构的语句(例如LocString.Common.Cancel或类似的东西).

所以,虽然这有点好,但我想知道你们是如何在你的项目中做到的.是否有其他方法可以简化NSLocalizedString的使用?甚至可能有一个封装它的框架?

localization objective-c nslocalizedstring ios

134
推荐指数
3
解决办法
7万
查看次数