我想在分组表中使用我的字典键输出。这必须与我的所有其他内容本地化。我可以使用NSLocalizedString作为密钥吗?
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
first_array, NSLocalizedString(@"First Array", @"The First Array"),
second_array, NSLocalizedString(@"Second Array", @"The Second Array"), nil];
答案 0 :(得分:13)
你可以,因为它只是一个字符串。也就是说,不要将这种技术用于你要写出来并稍后再读回来的词典,因为用户可能会在两者之间改变他或她的语言,然后你就会找到错误的键。 / p>
答案 1 :(得分:4)
正如Peter指出的那样,字典只关心密钥是实现NSCopying协议的对象。一个字符串对此表示满意,就合法性而言,它的内容并不重要。
在这种情况下,也许这不会是一个问题,但有很多时候,一个语言中的一个单词将根据单词用法的上下文映射到不同语言的两个不同单词。反之亦然,一种语言中的两个单词可能映射到不同语言的同一个单词。这是一个不太可能遇到的问题,但最好只将本地化值视为您向用户显示的值,并使用其他更严格定义的值作为关键值。
答案 2 :(得分:2)
这看起来像一个静态字典,它将在程序中创建一次,然后不再更改。因此,我没有看到它的问题。我认为,当你创建非可变字典时,这不会被更改和存档;因为如果是,那么归档文件将无法在具有不同语言环境的用户之间进行交换,因为密钥会有所不同。
但是,如果不是创建本地化数组并将它们加载到字典中,则可以只有一个本地化的plist文件加载到字典中。它可能会使您的代码更具可读性。