본문 바로가기

All Categories/iOS & Swift

iOS) localization(지역화) - 앱에서 다국어 지원하는 방법

반응형

안녕하세요! zhi재희입니다!

지난 게시물을 막 이직했을 때 적었던 것 같은데 또 이직을 했답니다 하하

현재 만드는 앱은 다국어를 지원하고 있어요~!

그래서 오늘은 앱에서 다국어를 지원을 위한 localization에 대해 알아보겠습니다~~

 

Localization? 지역화란?

로컬리제이션은 다른 나라에서도 이용할 수 있도록 각각 자국의 언어에 관한 기초적인 기능을 제공하는 것을 의미합니다.

예를 들어 저희 앱은 한국어와 영어를 지원하기 때문에,

같은 로그인 화면이라도 아이폰 언어 설정에 따라 아래 사진처럼 다르게 보이게 됩니다.

Beatflo 로그인 화면 다국어 지원

 

기본 세팅

먼저 label 하나를 만들어 주고,

import UIKit

class ViewController: UIViewController {

    // MARK: - UIComponent
    let label: UILabel = {
        let label = UILabel(frame: .zero)
        label.font = UIFont.systemFont(ofSize: 20, weight: .bold)
        label.textColor = .black
        label.text = "지역화"
        return label
    }()
    
    // MARK: - life cycle
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.view.backgroundColor = .white
        
        self.view.addSubview(label)
        
        label.translatesAutoresizingMaskIntoConstraints = false
        label.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true
        label.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
    }
}

Localization 예제 프로젝트 시작 화면

이 label의 text 다국어 지원을 해보겠습니다!

현재는 label.text = "지역화" 와 같은 방식으로 text를 직접 넣어주고 있습니다.

 

1. File -> New -> File -> String File -> Next

String File 만들기

2. Localizable 라는 이름으로 Create 

Localizable.strings 만들기

3. File inspector -> Localzation -> Localize... 클릭!

Localize... 클릭

클릭하면 English가 체크되어 있습니다. 기본 iOS Localization Base가 영어로 세팅되어 있는 상태입니다!

English가 기본 Base

4. Project -> Info -> Localization -> Localization -> + -> Korean (ko) 선택

Korean (ko) 추가

저는 스토리보드를 사용하지 않을 거기 때문에 Localzable.strings 파일만 선택해 줍니다.

Localizable.strings 파일 선택

그러면! Localizable.strings 파일에 이렇게 English, Korean이 생겨 있습니다!

English, Korean 다국어 지원 가즈아!

 

다국어 지원을 해보자 !

기본적인 세팅을 마쳤으니 본격적으로 다국어 지원을 해봅시다.

 

1. Localizable.string 에 각각 key, value 값 세팅

각각 Localizable.strings 파일에

"key" = "value";

형태로 넣어줄건데,

value 값은 실제 사용자에게 보여질 text, key 값은 보여줄 때 사용할 string 값을 넣어주면 됩니다.

예를 들어 만들어 놓은 label에 영어는 "Localization", 한글은 "지역화"로 보여주고 싶다면

key값을 동일하게 정해 각각 "Localization", "지역화"를 value 값으로 넣어주면 됩니다.

"Localization", "지역화"

2. String Extension으로 편리하게!

localizable 파일에서 key값으로 설정해 놓은 값으로 간단하게 다국어를 지원하기 위해

localized 함수를 만들어 줍니다.

extension String {
    func localized(bundle: Bundle = .main, tableName: String = "Localizable") -> String {
        return NSLocalizedString(self, tableName: tableName, value: self, comment: "")
    }
}

 

3. label.text 넣어주면 끝!

label.text를 "key".localized() 로 넣어줍니다.

label.text = "localization_test".localized()

지역화 성공~!

 

다음 시간에는 지역화의 연장선으로 Locale 다루는 법에 대해 알아보겠습니당 !

 

감사합니다 XD

 

 

 

 

반응형