2009-06-24 66 views
7

我想用我的字典鍵在分組表中輸出。這必須與我所有的其他內容進行本地化。我可以使用NSLocalizedString作爲關鍵嗎?可以使用NSLocalizedString作爲字典中的鍵嗎?

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

回答

13

你可以,因爲它只是一個字符串。也就是說,不要將這種技術用於你要寫出來的字典,然後再讀回來,因爲用戶可能會在兩者之間改變他或她的語言,然後你會尋找錯誤的鍵。

2

這看起來像一個靜態字典,它將在您的程序中創建一次,然後不再更改。因此,我沒有看到它的問題。我認爲,當你創建非可變字典時,這不會被改變和存檔;因爲如果是這樣,則歸檔文件將無法在具有不同語言環境的用戶之間交換,因爲這些密鑰會有所不同。

但是,如果不是創建本地化的數組並將它們加載到字典中,而是隻需將一個本地化的plist文件加載到字典中即可。它可能會使你的代碼更具可讀性。

4

正如Peter指出的,字典只關心關鍵是實現NSCopying協議的對象。一個字符串表明了這一點,而且就合法性而言,內容並不重要。

也許在這種情況下它不會成爲問題,但有很多時候,一個語言中的一個單詞會根據單詞使用的上下文映射到不同語言的兩個不同單詞。反過來也是可能的,一種語言中的兩個詞可能映射到不同語言的相同詞。這是一個不太可能遇到的問題,但最好將本地化值僅作爲向用戶顯示的值來處理,並使用其他更加嚴格定義的值作爲關鍵字。

相關問題