在字典中使用NSLocalizedString作为键是否可行?

7

我希望在分组表格中使用我的字典键作为输出。这需要与我的所有其他内容本地化。我可以将NSLocalizedString用作键吗?

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
    first_array, NSLocalizedString(@"First Array", @"The First Array"),
    second_array, NSLocalizedString(@"Second Array", @"The Second Array"), nil];
3个回答

13
您可以,因为它只是一个字符串。话虽如此,请不要在您要写出并稍后读回的字典中使用该技术,因为用户可能在其中更改他或她的语言,然后您将寻找错误的键。

4
正如Peter所指出的那样,字典只关心键是实现了NSCopying协议的对象。字符串满足这个条件,至于内容是否合法并不重要。
也许在这种情况下不会有问题,但有很多时候一个语言中的一个单词会映射到另一种语言中的两个不同的单词,具体取决于单词的使用上下文。反过来也可能发生,一个语言中的两个单词可能映射到另一种语言中的同一个单词。这是一个不太可能遇到的问题,但最好将本地化的值仅视为向用户显示的值,并使用其他更紧密定义的值作为键。

2
这似乎是一个静态字典,只会在程序中创建一次,之后不再更改。因此,我认为这没有问题。我猜你正在创建不可变的字典,这样它就不会被更改和归档;因为如果它被更改了,那么归档文件将不能在具有不同语言环境的用户之间交换,因为键名将不同。
然而,如果你不是创建本地化数组并将它们加载到字典中,而是可以直接加载到字典中的本地化plist文件,那么可能会使你的代码更易读。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接