Swift로 현재 언어 코드를 얻는 방법은 무엇입니까?
Swift로 작성된 앱에서 장치의 언어 코드 (en, es ...)를 얻고 싶습니다. 어떻게 얻을 수 있습니까?
나는 이것을 시도하고있다 :
var preferredLanguages : NSLocale!
let pre = preferredLanguages.displayNameForKey(NSLocaleIdentifier, value: preferredLanguages)
그러나 이것은 nil을 반환합니다.
감사!
Swift 3에서
let langStr = Locale.current.languageCode
앱 언어 와 기기 로케일 언어 의 차이를 만드는 것이 중요합니다 (아래 코드는 Swift 3에 있습니다 ).
장치 언어를 반환합니다 .
let locale = NSLocale.current.languageCode
앱 언어를 반환합니다 .
let pre = Locale.preferredLanguages[0]
Swift 3 :
NSLocale.current.languageCode
앱에서 현재 사용되는 언어를 얻으려면 (선호하는 언어와 다름)
NSLocale.currentLocale().objectForKey(NSLocaleLanguageCode)!
Swift 5.1에서 :
Locale.current.languageCode
스위프트 3, 4, 4.2, 5
Locale.current.languageCode
정기적으로 컴파일되지 않습니다. 프로젝트에 현지화를 구현하지 않았기 때문입니다.
두 가지 가능한 해결책이 있습니다.
1) String(Locale.preferredLanguages[0].prefix(2))
전화 랭이 제대로 반환됩니다.
유형을 얻으려면 en-En
다음을 사용할 수 있습니다.Locale.preferredLanguages[0]
2) 선택 Project(MyApp)
-> Project (not Target)
->에 + 버튼을 Localizations
누른 다음 원하는 언어를 추가합니다.
스위프트 3
let preferredLanguage = Locale.preferredLanguages[0] as String
print (preferredLanguage) //en-US
let arr = preferredLanguage.components(separatedBy: "-")
let deviceLanguage = arr.first
print (deviceLanguage) //en
아래 코드를 사용할 수 있습니다.
var preferredLanguage : String = Bundle.main.preferredLocalizations.first!
사용자가 내 앱을 실행할 때마다 설정 앱에서 사용자가 선택한 언어를 추적하고 싶습니다. 아직 현지화되지 않았습니다 (내 앱은 영어로만 제공됨). 나는이 논리를 채택했다 :
배열 의 언어를 더 쉽게 처리 할 수 있도록 열거 형 을 만듭니다.
enum Language: String { case none = "" case en = "English" case fr = "French" case it = "Italian" } // add as many languages you want
Locale에 대한 몇 가지 확장 을 만듭니다.
extension Locale { static var enLocale: Locale { return Locale(identifier: "en-EN") } // to use in **currentLanguage** to get the localizedString in English static var currentLanguage: Language? { guard let code = preferredLanguages.first?.components(separatedBy: "-").last else { print("could not detect language code") return nil } guard let rawValue = enLocale.localizedString(forLanguageCode: code) else { print("could not localize language code") return nil } guard let language = Language(rawValue: rawValue) else { print("could not init language from raw value") return nil } print("language: \(code)-\(rawValue)") return language } }
필요할 때 간단히 확장 프로그램을 사용할 수 있습니다.
if let currentLanguage = Locale.currentLanguage { print(currentLanguage.rawValue) // Your code here. }
Swift에서는 로케일을 사용할 수 있습니다.
let locale = Locale.current.identifier
참고 URL : https://stackoverflow.com/questions/24591167/how-to-get-current-language-code-with-swift
'programing tip' 카테고리의 다른 글
UNIX 쉘 스크립트에서 10 진수를 16 진수로 변환 (0) | 2020.08.17 |
---|---|
Android에서 Viewpager 컨트롤러의 속도 저하 (0) | 2020.08.17 |
Return 키를 누를 때 프로그래밍 방식으로 키보드 iOS를 닫는 방법 (0) | 2020.08.17 |
객체 지향 프로그래밍에서 "인터페이스"의 정의는 무엇입니까? (0) | 2020.08.17 |
디렉토리의 대소 문자를 변경했는데 Git이 선택하지 않는 것 같습니다. (0) | 2020.08.17 |