Мое устройство работает под управлением iOS 12 и имеет английский язык в качестве основного языка и иврит в качестве дополнительного языка.
Теперь я открываю свое приложение с английским языком в качестве базовой локализации.
InВ приложении у меня есть список из трех языков: английский, иврит и французский.
Сначала атрибут Locale.preferredLanguages
результат: ["en-IL", "he-IL", "fr-IL"]
Если я хочу локализовать все приложение без изменения языка операционной системы, я изменяю только массив AppleLanguages
на UserDefaults
следующим образом:
func currentAppleLanguage() -> String {
return (UserDefaults.standard.object(forKey: "AppleLanguages") as? NSArray)?
.firstObject as? String ?? ""
}
func setAppleLanguageTo(lang: String) {
UserDefaults.standard.set([lang], forKey: "AppleLanguages")
}
И после того, как я сделаюэто изменение, я перезапускаю свое приложение, и язык меняется.
Дело в том, что после того, как я изменил AppleLanguages
в UserDefaults
, например, на "he"
, атрибут Locale.preferredLanguages
превращается в: ["he"]
Так что теперь у меня нет резервных локализаций preferredLanguages
, которые устанавливаются в операционной системе в приложении настроек.
Более того, я бы хотел узнать, как получить текущийработает язык устройства в операционной системе дажеПосле того, как я изменил язык приложения с помощью AppleLanguages
, как это делает Facebook,
Я хотел бы отметить, что при редактировании рабочей схемыЯзык приложения на другой язык, он также меняет язык Apple.