最佳答案
我(像所有其他人一样)使用 NSLocalizedString
来本地化我的应用程序。
不幸的是,有几个“缺点”(不一定是 NSLocalizedString 本身的错误) ,包括
genstring
将为一个字符串提供多个注释genstring
,则必须小心不要丢失旧的本地化。NSLocalizedString(@"Abort", @"Cancel action")
,然后 CodeReview 要求您将字符串重命名为 NSLocalizedString(@"Cancel", @"Cancel action")
,以使代码更加一致。我所做的(经过一些搜索,我认为很多人都这样做)是有一个单独的 strings.h
文件,其中我 #define
所有的本地化代码。比如说
// In strings.h
#define NSLS_COMMON_CANCEL NSLocalizedString(@"Cancel", nil)
// Somewhere else
NSLog(@"%@", NSLS_COMMON_CANCEL);
这实际上提供了代码完成、一个更改变量名的位置(因此不再需要 genstring)和一个用于自动重构的惟一关键字。然而,这样做的代价是最终得到一大堆本身没有结构化的 #define
语句(比如 LocString)。常见。取消或类似的东西)。
所以,虽然这个工作有点好,我想知道你们是如何做到这一点,在你们的项目。是否有其他方法来简化 NSLocalizedString 的使用?有没有一个框架来封装它?