本地化设置不会改变 Swift 4.2 中系统定义的文本

Suh*_*til 7 localization objective-c ios swift

我的应用程序有 2 个语言支持 1) 英语 - en 2) 德语 - de

我已经完成了所有本地化程序,唯一的问题是每当我将语言从“en”更改为“de”,反之亦然,然后在系统文本没有更改为最新的语言之后,但它会在我杀死应用程序时反映出来并重新打开它。

例如:

在此处输入图片说明

popover Copy-LookUp-Share 不本地化为 German Lang。但是 .string 文件中的其他内容已正确处理。

我的更改语言代码:

func setLanguage(languageCode:String) {
        var appleLanguages = UserDefaults.standard.object(forKey: "AppleLanguages") as! [String]
        appleLanguages.remove(at: 0)
        appleLanguages.insert(languageCode, at: 0)
        UserDefaults.standard.set(appleLanguages, forKey: "AppleLanguages")
        UserDefaults.standard.synchronize()

        if let languageDirectoryPath = Bundle.main.path(forResource: languageCode, ofType: "lproj")  {
            bundle = Bundle.init(path: languageDirectoryPath)
        } else {
            resetLocalization()
        }
        }


    func resetLocalization() {
        bundle = Bundle.main
    }
Run Code Online (Sandbox Code Playgroud)

仅供参考:类似的事情发生在“微信”iOS 应用程序中。

Asp*_*eri 0

这些是 UIKit SDK 私有菜单项,您无法控制它们,可能它们只是创建一次然后保留缓存。

您唯一可以尝试的就是在语言更改时强制更新,例如

UIMenuController.shared.update()
Run Code Online (Sandbox Code Playgroud)

注意:实际上没有记录为此目的使用“AppleLanguages”键,因此它有点笨拙。L10N 是系统设置起源的功能,经过设计。