Swift/학습

[Swift] iOS 로컬라이징을 한 번 알아보자!

언클린 2020. 6. 23. 16:50
728x90

이번 글에서는 로컬라이징에 대해서 알아보겠습니다. 

로컬라이징이란 간단히 설명해드리자면 현지화, 즉 다국적 버전으로 제작하여 여러 나라에서 대응이 가능한 것을 나타냅니다.

개인적으론 App도 많이 국제화가 되어있기 때문에 외국인들도 사용하기 편하게 하기 위해서는 필수적인 요소라고 생각합니다.

(저 같은 경우는 지금까지 참여한 App 전부가 이 로컬라이징을 진행하였습니다.)

그렇다면 이번 글을 통해서 어떤 식으로 하면 되는지 간단히 알아보고자 합니다.


1. Localizable.strings 파일 생성

우선 프로젝트 생성 후 Strings 파일로 Localizable.strings 파일을 추가해 줍니다.

2. 언어 추가

이제 언어를 추가해보는 작업을 진행해 보겠습니다. 우선 추가한 Localizable.strings 파일의 우측에 보시면 아래와 같은 버튼이 있습니다.

여기서 Localize... 를 클릭하시면 기본 베이스로 영어가 추가됩니다.

다음으로 이제 [Project] -> [Localizations] 탭으로 이동하셔서 대응할 언어들을 추가해 줍니다. 

(저 같은 경우는 간단히 한국어랑 일본어를 추가하였습니다.)

추가 시, 적용 파일에 대하여 나오는데 별 다른 사항 없으면 Finish를 눌러주시면 됩니다.

추가가 완료되었다면 1번 과정에서 생성한 Localizable.strings 파일에 추가한 언어들의 strings 파일이 생성된 것을 확인하실 수 있습니다.

3. 사용해보기

이제 그렇다면 어떤 식으로 사용하면 될지 한 번 알아보겠습니다. 

영어, 한국어, 일본어 아무 파일이나 눌러보시면 그저 빈 파일임을 아실 수 있습니다.

로컬라이징은 키값을 지정해서 사용하는데 형식이 "키" = "데이터";  가 됩니다.

다음으로 프로젝트에서 사용해보겠습니다.

간단히 라벨 하나 추가해 주시고 출력해보겠습니다. 

class ViewController: UIViewController {

    @IBOutlet weak var localizingText: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.localizingText.text = NSLocalizedString("str_hello_world_message", comment: "")
    }
}

4. 출력

스마트폰의 언어 설정을 해당 국가에 설정하시면 출력이 잘 되는 것을 확인하실 수 있습니다.

5. 활용법

로컬라이징 메시지에 임의의 데이터를 입력하여 출력하고 싶을 경우 아래와 같이 작성해 주시면 됩니다.

"str_data_text" = "%@ 는 좋다!";

%@로 임의의 데이터를 출력할 수 있게 설정한 후 아래와 같이 format을 사용하시면 출력할 수 있습니다.

let localized = NSLocalizedString("str_data_text", comment: "")
self.localizingText = String(format: localized, arguments: "스위프트")

 

그리고,

String의 확장 기능을 사용해서 구현하신다면 더욱 편하게 사용하실 수 있습니다.

extension String {
    static func localized(key: String, keyword: String) -> String {
        if keyword.isEmpty {
            return NSLocalizedString(key, comment: "")
        }
        let localized = NSLocalizedString(key, comment: "")
        return String(format: localized, keyword)
    }
}

6. 마무리 인사말

이번 글에서는 로컬라이징에 대하여 알아보았습니다. 

꼭 다국적 대응뿐만이 아니라 그냥 App의 문자열 관리에도 편하고 좋은 기능인 것 같습니다. 

(후에 추가적으로 다국적 대응이 시작되어도 금방 작성할 수도 있고...)

부족한 점이나 지적사항은 댓글에 부탁드립니다.

많은 도움이 되었으면 좋겠습니다.


#참조

https://developer.apple.com/documentation/xcode/localizing_your_app

 

Apple Developer Documentation

 

developer.apple.com


환경 

Xcode 11.3.1

Swift 5

 

 

 

 

728x90