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

时间:2017-12-30 23:30:02

标签: ios localization

这是一个棘手的问题。我的应用程序是英文的,我也将其本地化为法语。当我在法国设备上安装它时,它首先用英语加载但是当我关闭我的应用程序并打开它然后用法语加载。

1 个答案:

答案 0 :(得分:0)

有时语言不会出现 en 这样的预期代码,可能会来 en-US ,以避免像这样添加两个本地化文件的密钥

将此内容放在 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);

否则查找并使用默认包。