如何将所有 NSLocalizedString 用法集中到一个文件中以供整个项目使用

How to centralise all NSLocalizedString usage into one file for use across the whole project

我打算通过将所有硬编码的 NSString 替换为 NSLocalizedString 变体来尝试使我的应用程序国际化。

我一直在尝试使用测试应用程序来查看不同的工作流程,我决定使用

一切都很好,但我只是想使用 strings.h 之类的东西来集中所有 NSLocalizedStrings 调用本身,这样我就有一个地方可以查看代码中使用的所有字符串。我最初尝试通过使用 #defines 来实现这一点,但遗憾的是,genstrings 或现在用于 XLIFF 导出的任何工作流都没有以这种方式定义的字符串。

这个问题

Best practice using NSLocalizedString

3年前走过类似的路。起初考虑了#defines,然后在其中一条评论中说

"I've talked with some other iOS devs recently, and they recommended the usage of static strings instead of macros, which makes sense."

我一直在努力让它工作但我很挣扎,想知道是否有人可以解释如何最好地使用静态字符串来达到这个目的?我在我的 header 中创建了一个静态字符串,但我无法在那里为它分配字符串,也无法通过稍后在应用程序初始化期间调用的 + 方法分配字符串。在这一点上,看起来我必须让它们成为单例的属性 class。有没有更简单的方法来获取这个集中的本地化字符串查找 table?

干杯

我能够让它工作的唯一方法是执行以下操作

Strings.h

extern NSString *NSLS_MY_TEST_STRING;

Strings.m

NSString *NSLS_MY_TEST_STRING;

- (void)InitialiseStrings
{
  NSLS_MY_TEST_STRING = NSLocalizedString(@"NSLS_MY_TEST_STRING", "My test string comment");
}

这工作得很好,可能有比需要更多的重复,但至少我们得到了一个集中的本地化字符串存储。

有人有更好的主意吗?

干杯