[Swift] 다국어(Localize) 처리하기

2018. 8. 27. 17:02iOS/Swift

안녕하세요 :)

이번 포스트에서는 앱 다국어 처리를 알아보도록 하겠습니다.




우선 프로젝트 - Info - Localizations에서 추가하고 싶은 언어를 추가합니다.



다국어화 할 타겟들을 선택합니다.



그럼 이렇게 스토리보드마다 다국어화 할 파일들이 생성됩니다!

저는 한국어를 사랑하니까 Korean을 추가했어요


이제 여기서 다국어 화 방법은 두가지로 나뉩니다.


1. 스토리 보드에서 다국어 처리하기


스토리보드에서 다국어 처리 하는 방법은 간단합니다.


Label을 생성한 후 Main.strings (Korean)에 들어가면

/* Class = "UILabel"; text = "Label"; ObjectID = "x0m-De-BWp"; */
"x0m-De-BWp.text" = "Label";

이런 코드가 있을 꺼에요


이 코드를

/* Class = "UILabel"; text = "Label"; ObjectID = "x0m-De-BWp"; */
"x0m-De-BWp.text" = "라벨";

이렇게 바꿔주면 다국어화 끝!


+) LaunchScreen은 다국어화 할 수 없습니다...

아마 custom class 가 안되서 그런게 아닐까요..?ㅜㅜ



2. 코드로 다국어 처리하기




New File - String File을 선택하여 다국어 처리를 위한 파일을 하나 생성합니다



이렇게 Localizable.strings라는 파일이 생겼습니다!


파일을 누르고 인스펙터에 에서 



Localization - Localize를 클릭!



어떤 언어로 뭐 만들꺼냐 묻는데 뭘 해도 딱히 상관은 없어요

어차피 나중에 수정가능가능




Localize 누르면 저렇게 버튼 대신에 체크리스트들이 나타납니다

저는 체크박스 세개 다 체크해줬음ㅎ


그리고 네비게이션 탭을 보면



Localizable.strings에 체크한 값들과 같은 파일들이 생겼네요!!!


Base는 보통 영어라서 English는 없어도 될듯 해요


// Localizable.strings (Base)

"Hello" = "Hello";

"Bye" = "Bye";


// Localizable.strings (Korean)

"Hello" = "안녕하세요";

"Bye" = "안녕";


이렇게 파일 별로 코드를 작성합니다


** 

여기서 주의 사항!

마지막에 세미콜론; 이거 필수입니다!

안하면



이런 에러가 뜨는데 코드가 얼마 없으면 금방 찾을 수 있지만 

코드가 길어지면 찾기도 힘들어요ㅜㅜ

잊지말고 꼭꼭 붙여줍시다!

**


다국어 코드를 다 입력했다면 컨트롤러로 가서 다국어화를 진행해 봅시다


        lbl.text = "Hello"  // 바꾸고 싶은 text


        lbl.text = String(format: NSLocalizedString("Hello", comment: ""))



이렇게 하면 바꿔주면 시스템 언어가 한국어라면 "안녕하세요" 라고 표시가 됩니다.


자, 이렇게 다국어화 작업이 끝이 났습니다:)


BUT!


우리는 신속한 Swift를 사용하는 사람들!

저 긴 코드를 귀찮고 바쁜데 일일이 칠 수는 없잖아요?



다음 포스트에서는 저 긴 코드를 단 한 줄로 바꿔봅시다!!


봐주셔서 감사합니다!

다들 즐거운 코딩되세요><