다국어 지원

  • 다국어 지원에 대한 필요성 등은 각설하고, 바로 어떻게 하면 다국어 지원 혹은 지역화를 할 수 있는지 알아보자!
  • 우선 늘 만들던대로 프로젝트를 생성한다.
  • base가 될 언어로 영어 혹은 한국어 아무거나 선택해 해당 언어로 일단 개발을 해둔다. (여기서는 일단 영어로 했음)

import UIKit



class ViewController: UIViewController {
    // MARK: - Properties
    // MARK: IBOutlet
    @IBOutlet weak var greetingLabel: UILabel!
    
    
    
    // MARK: - Methods
    // MARK: View Life Cycle
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
    
    // MARK: Memory Management
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    // MARK: IBAction
    
    @IBAction func didTapChangeButton(_ sender: UIButton) {
        self.greetingLabel.text = "Hello~!"
    }
    
}




  • 일단은 아주 간단하게 만들었는데, 버튼을 누르면 Label에 해당 국가의 인사말로 바꾸게 하고 싶다.
  • 어떻게 하면 될까?

2.

3.

4.

  • 여기에 다국어 지원을 위한 파일이 새로 생긴다.
  • 딱 보면 알겠지만 스토리 보드에서 만든 Label과 Button의 원본(영어) 문자열이 보인다.
  • 이걸 이렇게 수정해보자.

5.

6.

  • 짜잔~!
  • 영어로 만들었는데 알아서 한글로 나온다!
  • 버튼도 눌러볼까?

7.

  • 안타깝게도 이 방법은 스토리 보드에서 만든 것만 지원한다.
  • 그럼 코드로 쓴 것은 어떻게 할까?

8.

  • 우선 Strings File을 새로 만든다.

9.

  • 그 후 Localization을 눌러 지원하고 싶은 언어(한국어)를 선택한다.

10.

  • 그리고 바꾸고 싶은 영어 원문(key)를 쓰고 한국어(value)를 입력하고, 다음과 같이 코드를 수정하면 된다.
@IBAction func didTapChangeButton(_ sender: UIButton) {
        self.greetingLabel.text = NSLocalizedString("Hello~!", comment: "인사말")
}
  • Localizable.strings에서 key-value 형식으로 지정되기 때문에 key에 해당하는 “Hello~!”를 써주고, comment는 작동과는 상관없고 그저 개발자들이 보기 편하게 주석처럼 남길 수 있도록 한다.

결과