首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用NSLocalizedString的最佳实践

使用NSLocalizedString的最佳实践
EN

Stack Overflow用户
提问于 2012-03-28 02:43:45
回答 9查看 74.6K关注 0票数 143

我(像其他人一样)正在使用NSLocalizedString来本地化我的应用程序。

不幸的是,有几个“缺点”(不一定是NSLocalizedString本身的问题),包括

  • 不自动完成Xcode中的字符串。这使得工作不仅容易出错,而且令人厌烦。
  • 您可能因为不知道已经存在一个等效的字符串而最终重新定义一个字符串(即“请输入密码”vs.输入密码first")
  • Similarily到自动补全问题,你需要“记住”注释字符串,否则genstring将以多个注释结束一个字符串
  • 如果你想在你已经本地化一些字符串后使用genstring,你必须小心不要丢失你的旧的localizations.
  • Same字符串分散在你的整个项目中。例如,您在任何地方都使用NSLocalizedString(@"Abort", @"Cancel action"),然后Code Review要求您将该字符串重命名为NSLocalizedString(@"Cancel", @"Cancel action"),以使代码更一致。

我所做的(经过一些搜索之后,我想很多人都会这么做)是创建一个独立的strings.h文件,在这个文件中我会对所有的本地化代码进行#define。例如

代码语言:javascript
复制
// In strings.h
#define NSLS_COMMON_CANCEL NSLocalizedString(@"Cancel", nil)
// Somewhere else
NSLog(@"%@", NSLS_COMMON_CANCEL);

这本质上提供了代码完成、更改变量名的单一位置(因此不再需要genstring ),以及用于自动重构的唯一关键字。然而,这是以一大堆#define语句为代价的,这些语句本身并不是结构化的(比如LocString.Common.Cancel或类似的东西)。

所以,虽然这在某种程度上很好用,但我想知道你们在项目中是如何做到的。是否有其他方法可以简化NSLocalizedString的使用?有没有可能有一个框架来封装它?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9895621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档