本地化不适用于App的初始加载
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了本地化不适用于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= true
UserDefaults.standard.set([ll], forKey: "AppleLanguages")
}
else
{
instance.isEn= false
UserDefaults.standard.set([ll], forKey: "AppleLanguages")
}
此外,你可以像这样强制捆绑
NSString *lang = (NSString *)[[NSLocale preferredLanguages] objectAtIndex:0];
接下来找到这种语言的包:
NSBundle *myLangBundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:lang ofType:@"lproj"]];
如果找到了bundle,那么在NSLocalizedStringFromTableInBundle
中使用它:
_label.text = NSLocalizedStringFromTableInBundle(@"LabelText",nil,myLangBundle,nil);
否则查找并使用默认包。
以上是关于本地化不适用于App的初始加载的主要内容,如果未能解决你的问题,请参考以下文章
休眠延迟加载不适用于 Spring Boot => 无法延迟初始化角色集合无法初始化代理 - 无会话
TableView 重新加载不适用于 SwiftUI 中的 UIViewRepresentable