本地化不适用于App的初始加载

一年好景君须记,最是橙黄橘绿时。这篇文章主要讲述本地化不适用于App的初始加载相关的知识,希望能为你提供帮助。
这是一个棘手的问题。我的应用程序是英文的,我也将其本地化为法语。当我在法国设备上安装它时,它首先用英语加载但是当我关闭我的应用程序并打开它然后用法语加载它。
答案有时,语言不会出现在像en这样的预期代码中,以避免像这样添加两个本地化文件的密钥
把它放在en本地化文件中

"appLang"="en";

这在fr本地化文件中
"appLang"="fr";

当app启动这样的检查语言时
let ll = NSLocalizedString("appLang", comment: "")// instance is a shared object has a property to check language property in all parts of the app if(ll == "en") { instance.isEn= trueUserDefaults.standard.set([ll], forKey: "AppleLanguages")} else { instance.isEn= falseUserDefaults.standard.set([ll], forKey: "AppleLanguages") }

此外,你可以像这样强制捆绑
NSString *lang = (NSString *)[[NSLocale preferredLanguages] objectAtIndex:0];

接下来找到这种语言的包:
NSBundle *myLangBundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:lang ofType:@"lproj"]];

【本地化不适用于App的初始加载】如果找到了bundle,那么在NSLocalizedStringFromTableInBundle中使用它:
_label.text = NSLocalizedStringFromTableInBundle(@"LabelText",nil,myLangBundle,nil);

否则查找并使用默认包。

    推荐阅读