2016-10-21 3 views
-1

런타임에 NSLocalizedString을 사용하여 가져온 lang을 변경하려고합니다.런타임에 응용 프로그램 언어 변경

내가 같은이 질문은 이미 요구하고 있음을 알고,하지만 난

스위프트 (3)에 대한 답변을 찾을 수없는 나는이 시도 :

UserDefaults.standard.removeObject(forKey: "AppleLanguages") 
UserDefaults.standard.set("en", forKey: "AppleLanguages") 
UserDefaults.standard.synchronize() 

과 :

let language = "en" 
let path = Bundle.main.path(forResource: language, ofType: "lproj") 
let bundle = Bundle(path: path!) 
let string = bundle?.localizedString(forKey: "AppleLanguages", value: language, table: nil) 

하지만, 아무 것도 작동하지 않습니다 ....

도움 주셔서 감사합니다!

답변

2

결국 저는 Github에서 사용할 수있는 맞춤형 로컬 라이저 클래스를 사용했습니다.이 클래스는 앱의 어느 곳에서나 언어를 전환 할 수 있으며 앱을 추가로 실행하기 위해 저장할 수도 있습니다.

notification.name == kNotificationLanguageChanged 

에 :

notification.name.rawValue == kNotificationLanguageChanged 

https://github.com/micazeve/iOS-CustomLocalisator

그것은 빠른 2.2로 작성하지만, 엑스 코드가 자동으로 스위프트 3. 코드를 업데이트한다 그냥 데모의 장소로 변경했다