감자주먹밥

[IOS] Localization - 어플 현지화, 나라 별 언어 대응 본문

IOS/UIKit

[IOS] Localization - 어플 현지화, 나라 별 언어 대응

JustHm 2023. 1. 17. 21:54
728x90

Localization

 

현지화 - Apple Developer

앱, 제품 페이지 및 마케팅 자료를 현지화하여 전 세계의 고객과 더 효과적으로 연결하는 방법에 대해 알아보십시오.

developer.apple.com

어플을 개발하고 출시했을 때 여러 나라의 언어를 대응해서 다양한 국가에 사용경험을 주기 위해서는 앱 현지화가 필수다.

국가마다 사용하는 언어를 대응해 개발하려면 Localizable을 사용하면 된다.

SwiftUI도 UIKit과 비슷하게 설정할 수 있다. 

Localization 설정

Project > Info > Localizations 를 보면 언어를 추가할 수 있는 항목이 있다.

기본으로 English가 Base로 설정되어 있고 한국어만 추가하고 한국어-영어 대응 해보기.

Strings File을 추가 이름은 꼭 Localizable로 해야된다.

파일을 생성 후 들어가서 오른쪽 인스펙터를 보면 Localize... 버튼이 활성화 되어 있다. 

내가 추가한 언어의 Localization을 할 수 있게 추가하고 체크해준다.

체크까지 하면 String File안에 추가한 언어별로 내부파일이 추가되어 있다.

각 파일에 맞는 언어로 대응을 해주면 된다. 작성 포맷은 "키값" = "표시될 언어값"; 이다. 세미콜론은 잊지 말기! Base는 영어기 때문에 영어를 키값으로 하고 작성해주면 된다.

//Localizable English
"Translate" = "Translate";
"Bookmark" = "Bookmark";
//Localizable Korean
"Translate" = "번역";
"Bookmark" = "즐겨찾기";

이렇게 StringFile을 다 작성하면 이제 실제 코드에 텍스트를 대응해주면 된다.

NSLocalizedString 메서드를 사용해서 키 값에 대응되는 텍스트를 기기언어에 맞춰 뽑아낼 수 있다.

tableName, bundle, value는 따로 설정은 안하지만 하나하나 알아보면..

  • key -> Localizable에 작성한 대응할 텍스트 키 값
  • tableName -> Localizable로 만든 파일을 테이블로 보고 파일 이름을 넣어주면 된다. 기본값은 nil인데 nil일 땐 Localizable이 기본값으로 들어간다
    • (그래서 StringFile 만들때 Localizable로 하라고 했던 것, 만약 파일 이름이 다른거라고 해도, tableName 파라미터에 파일 이름을 적어주면 대응 가능)
  • bundle -> Localizable StringFile이 있는 번들 선택. 기본이 main
  • value -> 테이블에서 키값을 찾을 수 없을 때 반환되는 string값.
  • comment -> 주석 같은거다.
NSLocalizedString("Translate", comment: "번역"),

간단하게는 키값만 사용하면 바로 적용이 된다.

만약 텍스트에 특정 변수를 같이 쓰고 싶다면 아래처럼 value에 문자열 보간 처리를 해주고, String format으로 arg를 넣어주면 된다.

// Localizable file
"argTest" = "%d arg test";

// 사용
let str = NSLocalizedString("argTest", comment: "test")
String(format: str, 10)

 

에러

validation failed: Couldn't parse property list because the input data was in an invalid format

다음과 같은 에러가 뜬다면 작성 포맷이 맞지 않는 것이니 세미콜론을 빠뜨리진 않았는지 확인해보면 된다.

728x90
Comments