티스토리 뷰
반응형
안녕하세요 Gons 입니다.
오늘은 앱을 종료하지 않고 언어변경을 해보겠습니다.
먼저 다국어 설정이 완료된 상태여야합니다.
다국어 설정이 안되신 분들은
이전 포스팅을 확인해주세요.
저는 이렇게 준비해놨습니다.
@IBOutlet var myLabel: UILabel!
@IBOutlet var myLabel2: UILabel!
@IBOutlet var myLabel3: UILabel!
@IBOutlet var myLabel4: UILabel!
@IBOutlet var myLabel5: UILabel!
@IBOutlet var buttonKorean: UIButton!
@IBOutlet var buttonEnglish: UIButton!
시작하겠습니다.
기본적으로 앱 내에서 언어를 설정하면
폰 설정에 있는 언어를 따라가지 않습니다.
보통 NSLocalizedString 을 사용하는데 이 방법은 앱 내에서 언어를 변경해도 앱을 껐다 켜야만 언어가 바뀝니다.
override func viewDidLoad() {
super.viewDidLoad()
setLanguage()
}
func setLanguage() {
//기본 방법
myLabel.text = NSLocalizedString("Hello", comment: "")
//...
}
그래서 다국어 설정 파일에 접근해서 localizedString 으로 언어를 변경해줍니다.
func setLanguage() {
//설정된 언어 코드 가져오기
let language = UserDefaults.standard.array(forKey: "AppleLanguages")?.first as! String // 초기에 "ko-KR" , "en-KR" 등으로 저장되어있음
let index = language.index(language.startIndex, offsetBy: 2)
let languageCode = String(language[..<index]) //"ko" , "en" 등
//설정된 언어 파일 가져오기
let path = Bundle.main.path(forResource: languageCode, ofType: "lproj")
let bundle = Bundle(path: path!)
myLabel.text = bundle?.localizedString(forKey: "Hello", value: nil, table: nil)
myLabel2.text = bundle?.localizedString(forKey: "Welcome", value: nil, table: nil)
myLabel3.text = bundle?.localizedString(forKey: "Thank", value: nil, table: nil)
myLabel4.text = bundle?.localizedString(forKey: "Happy", value: nil, table: nil)
myLabel5.text = bundle?.localizedString(forKey: "Sorry", value: nil, table: nil)
buttonKorean.setTitle(bundle?.localizedString(forKey: "buttonKorean", value: nil, table: nil), for: .normal)
buttonEnglish.setTitle(bundle?.localizedString(forKey: "buttonEnglish", value: nil, table: nil), for: .normal)
}
UserDefaults "AppleLanguages" 에 설정된 언어가 저장되어 있고 앞으로 이 값을 통해 언어를 변경해주면 됩니다.
@IBAction func koreanClicked(_ sender: UIButton) {
//한국어로 변경
UserDefaults.standard.set(["ko"], forKey: "AppleLanguages")
UserDefaults.standard.synchronize()
//보통 메인화면으로 이동시켜줌
setLanguage()
}
@IBAction func englishClicked(_ sender: UIButton) {
//영어로 변경
UserDefaults.standard.set(["en"], forKey: "AppleLanguages")
UserDefaults.standard.synchronize()
//보통 메인화면으로 이동시켜줌
setLanguage()
}
실행해보겠습니다.
잘 변경되네요.
끝입니다.
저는 다음에 더 필요한 정보로 글을 쓰겠습니다.
읽어주셔서 감사합니다.
iOS Swift Xcode
반응형
'iOS Swift + UIKit' 카테고리의 다른 글
iOS Swift 웹뷰 html 바디 가져오기 (get webview html body tag) (0) | 2022.05.04 |
---|---|
iOS Swift 날짜 차이 구하기 (요일, 시간 사이 간격 변환 계산) Calc Date (0) | 2022.03.02 |
iOS Swift 다국어 설정 - Code Localizing (0) | 2021.04.02 |
iOS Swift 다국어 설정 - Storyboard Localizing (0) | 2021.04.01 |
iOS Swift 백그라운드 진입 시 민감한 정보 가리기 (개인정보 숨기기) (3) | 2021.03.22 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 리젝
- 로컬라이징
- 다국어
- 스위프트
- Localized
- SWIFT
- SKPaymentTransactionObserver
- ios
- Reject
- Authorization
- custom segment
- indicator
- Language
- localizing
- 인디케이터
- 아이오에스
- SKProductsRequestDelegate
- 프로그레스
- Localizations
- Xcode
- AppStore
- presentationcompactadaptation
- TabBar
- SKPayment
- 심사
- swiftUI
- 테이블뷰
- permission
- 엑스코드
- TabView
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함