Настройки локализации не изменяют системный текст в Swift 4.2 - PullRequest
6 голосов
/ 23 января 2020

У меня есть поддержка 2 языков для моего приложения 1) Engli sh - ru 2) Немецкий - de

Я выполнил все процедуры по локализации, единственная проблема - всякий раз, когда я меняю язык с «en» на «de» или наоборот, после чего системный текст не меняется на последний язык, но он отражает, когда я убиваю приложение и снова открываю его.

Например:

enter image description here

Всплывающее окно Copy-LookUp-Share не привязано к немецкому языку. но другие вещи из файла .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
    }

К вашему сведению: подобное происходит в Приложение «WeChat» iOS.

1 Ответ

0 голосов
/ 06 февраля 2020

Это элементы частного меню UIKit SDK, и вы не можете управлять ими, возможно, они просто создаются один раз, а затем сохраняются в кэше.

Единственное, что вы можете попробовать, это принудительно обновить в момент смены языка, например

UIMenuController.shared.update()

Примечание: фактическое использование ключа «AppleLanguages» для этой цели не задокументировано, поэтому это похоже на хаки . L10N - это функция, созданная системными настройками.

...