본문 바로가기

Swift

[Swift] 로컬라이징(localizing)을 이용한 string 관리

참고 자료 : https://zeddios.tistory.com/368

 

iOS ) 왕초보를 위한 로컬라이징 / Localizing Your App

안녕하세요 :) Zedd입니다. 오늘은 로컬라이징!!!!! 저는 영어를 베이스로 만들고 있는데..물론 다 이해가지만 각 나라언어로 보여지면 어떨까 싶어서 이번기회에 로컬라이징을 공부해보려고 합니

zeddios.tistory.com

부제 : 하드코딩 해결하기

반복적으로 사용하는 string값은 어느 앱이나 존재합니다.

예를 들어 다양한 팝업, 얼럿에 '확인'같은 버튼의 문구가 사용되는 것 처럼 말이죠.

얼럿 버튼에 사용하는 '확인'이라는 스트링 텍스트는 다양한 얼럿에서 중복으로 사용할 수 있다.

그런데 어느 날 '확인'이라는 문구를 글로벌 앱으로 변화시킨다는 정책으로 'ok'로 바꾼다고 가정해봅시다.

위 상황이면 모든 '확인' string 데이터를 'ok'로 바꿔줘야 할까요?

AlertAction.title에 하드코딩된 title String value

이런 스트링 값이 수십개면 전부 바꿔줘야하고 귀찮기만 합니다. 그리고 간혹 휴먼 에러가 발생하기도 해서 직접 데이터를 입력하는 하드코딩은 권장하지 않습니다.

 

로컬라이징을 통해 하드코딩 해결하기

로컬라이징은 다양한 지역의 사용자를 위해 앱에서 사용하는 언어를 커스텀하는 기능입니다.

간단하게 아이폰을 처음 사면 'Hello' 라는 글자가 '안녕하세요', 'こんにちは', '你好' 등으로 나타내는 것과 같은 맥락입니다.

간단한 설명은 여기까지 하고 로컬라이징을 적용해봅시다

 

로컬라이징 적용하기

먼저 프로젝트 폴더 내 새로운 파일 만들기를 하고, string을 검색 해봅시다. 그리고 생성하는 파일의 이름은 Localizable.strings로 지정합니다.

 

이렇게 사용할 String값을 테이블화 해서 사용 가능하다
만약 NSLocalizedString("Key", comment: "") 방식이 복잡하다면 String+Extension으로 확장해 사용하면 편리하다

이렇게 사용하면 "Ok".localized를 통해 String을 이용하는 모든 컴포넌트의 값이 변경될 경우 Localizable.strings 파일의 "Ok"값만 변경해주면 일괄적으로 적용된다