[英]How to read a localized plist as Dictionary?
我如何閱讀本地化的plist作為字典? 感覺很有希望...
if let path = NSBundle.mainBundle().pathForResource("LocalizedDictionary", ofType: "plist", inDirectory: ???, forLocalization: "en") {
localizedDictionary = NSDictionary(contentsOfFile: path)
return localizedDictionary
}
但顯然我在為inDirectory參數獲取正確路徑時遇到了問題。 這是正確的方法嗎?
如何將plist文件的本地化版本作為Dictionary?
注意:我沒有使用NSLocalizedString,因為在應用程序運行時遇到了一些問題,沒有切換語言。
這應該有所幫助。
像這樣創建一個NSDictionary類擴展。 可以對其進行調整並適應您的需要(例如加載“字符串”字典,或在參數中傳遞語言環境……)
@implementation NSDictionary (NSDictionary_Extras)
+(NSDictionary*)dictionaryWithName:(NSString*)name
{
NSDictionary *dict = NULL;
NSURL *dictURL = [[NSBundle mainBundle] URLForResource:name withExtension:@"plist"];
if (dictURL) {
dict = [NSDictionary dictionaryWithContentsOfURL:dictURL];
}
return dict;
}
+(NSDictionary*)localizedDictionaryWithName:(NSString*)name
{
NSDictionary *localizedDict = NULL;
NSString *localizationName = [[NSLocale preferredLanguages] objectAtIndex:0];
NSURL *localizedDictURL = [[NSBundle mainBundle] URLForResource:name withExtension:@"plist" subdirectory:[NSString stringWithFormat:@"%@.lproj",localizationName]];
// If resource doe not exist, we try at root ( resource must have a 'base' localization, or not being localized )
if (!localizedDictURL) {
localizedDictURL = [[NSBundle mainBundle] URLForResource:name withExtension:@"plist"];
}
if (localizedDictURL) {
localizedDict = [NSDictionary dictionaryWithContentsOfURL:localizedDictURL];
}
return localizedDict;
}
@end
然后,您只需使用以下命令加載plist:
NSDictionary* myDict = [NSDictionary dictionaryWithName:@"myDict"]
或一個本地化的plist
NSDictionary* myDict = [NSDictionary localizedDictionaryWithName:@"myDict"].
我在所有項目中都導入了此額外內容。
您無需更改任何代碼。
xCode的資源本地化很整潔,並且經常對您完全透明。 您只需要向主捆綁包索取正常的資源網址,然后從它們中加載即可。 NSBundle
執行為您提供本地化資源所需的任何映射。
有一個教程在這里讓我去說。 它有點過時了,但是重要的細節都沒有改變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.