2011-10-22 31 views
4

我正在嘗試使用InAppSettingsKit來管理我的設置。這將使用帶.plist文件的Settings.bundle以及所翻譯的每種語言的.strings文件。使用InAppSettingsKit從Settings.bundle本地化字符串

我可以使用設置應用程序確認我的字符串的翻譯在我的應用程序之外正常工作。但是,當我在我的應用程序中,翻譯沒有發生。

我認爲它歸結爲這樣的代碼,從InAppSettingsKit類IASKSettingsReader,與我以爲一對夫婦記錄語句我是有幫助的:

- (NSString*)titleForStringId:(NSString*)stringId { 
    NSLog(@"%@",[_bundle localizedStringForKey:stringId value:stringId table:self.localizationTable]); 
    NSLog(@"%@",[_bundle localizedInfoDictionary]); 
    return [_bundle localizedStringForKey:stringId value:stringId table:self.localizationTable]; 
} 

如果我理解正確的,這應該是使用一個表名稱self.localizationTable作爲翻譯的來源。這個值只是「根」。這不是所選語言中Root.strings文件的路徑,所以我猜測localizedStringForKey:value:table:方法必須使用指向正確路徑的某個全局系統引用。

我已確認字符串文件名全是「Root.strings」,大寫字母R,包括Root.plist文件中。

[_bundle localizedInfoDictionary] returns(null);這是對英語和法語的兩種語言設置。

我不知道如何調試。謝謝你提供的所有幫助。

回答

1

我使用InAppSettingsKit與本地化的文本沒有問題。有兩件事我可以想到,你可以檢查:你的Root.strings文件位於Settings.bundle的正確子目錄中(en.lproj和fr.lproj英文和法文?

是否有「字符串文件名」在你的Root.plist中它應該只包含一個字符串值「Root」

0

我解決這個問題已經有相當長的一段時間了,當時我還沒有完全理解它。在結束本問題的關心,我會指向以下文件以供將來參考:

NSBundle Class Reference

是指以下內容:

Resource Programming Guide

在第二份文件,請參考「字符串資源 - >加載字符串資源到你的代碼」

該解決方案包含一個正確配置的Root.strings文件,它顯示在文件列表中,如下所示:

enter image description here