gpt4 book ai didi

ios - 如何阅读本地化的 plist 作为字典?

转载 作者:行者123 更新时间:2023-11-28 09:12:33 24 4
gpt4 key购买 nike

如何将本地化的 plist 作为字典阅读?这感觉很有希望……

if let path = NSBundle.mainBundle().pathForResource("LocalizedDictionary", ofType: "plist", inDirectory: ???, forLocalization: "en") {
localizedDictionary = NSDictionary(contentsOfFile: path)
return localizedDictionary
}

但我显然在获取 inDirectory 参数的正确路径时遇到了问题。这是正确的方法吗?

如何将 plist 文件的本地化版本作为字典?

注意:我没有使用 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"].

我在我的所有项目中都导入了这个额外的内容。

关于ios - 如何阅读本地化的 plist 作为字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28786708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com