Lined Notebook

Localization 사용하기 in Swift

by 사슴비행기

Localization은 내 생각이긴 하지만,

나중에 추가하려고 하면 너무 힘들어지는 것 중에

하나가 아닐까 한다.

내가 String을 쓴 것을 모두 찾아야 하기도 하고

앱에서 띄우는 글씨가 아니라

통신으로 받은 글자를 띄우는 경우에도

필요하다면 찾아서 바꿔주어야 하기 때문이다.

 

-> 위에 말은 신경쓸 필요가 없었다.

-> 파일 하나만 만들어 놓으면 추후에 추가할 때

-> 기존에 적어 놓았던게 base언어로 추가되더라.

-> 마지막에 예시 화면 추가해 놓았음.

 

 

아무튼 지금 내가 진행하고 있는 프로젝트도

다국어지원을 하는 앱이기 때문에

필수적으로 넣어야 하는 기능 중 하나이다.

 

 

지금 넘겨받아서 유지보수 해야하는 앱은

이미 Localization이 되어 있지만

새로 만들고 있는 앱은 추가를 해야 했다.

그래서 오늘은 너무나도 쉬워보이는 Localization

삽질한 썰(?)을 풀어보려고 한다.

물론 해결법도 적어보려고 한다.

 

 

일단, 정말 깔끔하게 정리해준

글을 먼저 링크건다.

 

 

https://lokalise.com/blog/getting-started-with-ios-localization/

 

iOS localization: Step-by-step Guide - Lokalise Blog

This tutorial is based on Xcode 13.0, it shows how to setup iOS localization from zero to hero and use Lokalise as the translation management platform.

lokalise.com

 

 

찬찬히 따라하면 누구나 쉽게 추가할 수 있다.

'찬찬히'가 중요하다.

나처럼 대충 후다닥하면 초기설정부터 꼬일 가능성 90%..

 

 

원하는 파일 위치에 `우클릭`해서 파일을 추가한다.

그리고 'String File'을 찾아서 다음으로 넘어간다.

그 다음, 이름은 꼭!!!! Localizable로 할것.

왜인지는 모르겠지만,

궁금하다고 해보면 적용 안될 가능성 98%.. 일 것 같아서

시도해보지 않았다.

일단, 뭐가 되고나서 시범을 해봐야지 후...

 

 

 

 

그러면 이렇게 Localizable 파일이 추가된 걸 볼 수 있다.

그걸 클릭해서 인스펙터(inspector) 우측에 보이는 아래와 같은 화면에서

`Localize...`라는 버튼을 클릭해준다.

 

 

 

 

그러면 그 화면이 이렇게

English가 체크된 상태로 변경된다.

 

 

 

 

base 언어가 영어라고 하는데,

일단, 넘어간다.

왜냐면 내가 이거 신경써서

base 파일 지웠다가 삽질 엄청했다...

 

 

 

 

이제 프로젝트를 선택해서 `PROJECT``Info`를 살펴보면

Localizations가 있는 것을 확인 할 수 있다.

그리고 그 아래에 +버튼이 있는데 (작으니 자세히 봐보자)

그 버튼을 눌러서 새로운 여러 언어를 추가할 수 있다.

 

 

 

 

원하는 언어를 선택하면 오른쪽 사진과 같이

뭔가 체크하는 화면이 나오는데

이렇게 다 체크되어 있는 경우도 있고

storyboard 파일이 없는 경우도 있다.

 

(나도 다양한 케이스를 본 건 아니지만

아까 삽질했을 때는 base 언어를 지우면서

스토리보드를 잘 못 지운 것 같기도 하다.

하지만 해결법은 스토리보드와 상관없으니

일단 체크 할 수 있는건 다 체크하자)

 

 

 

 

 

그럼 왼쪽과 같이 새로운 언어가 추가되고

파일 목록에 보면 Localizable 하위 위치에

내가 추가한 언어 파일이 하나 더 늘어난 것을

볼 수 있다.

 

 

 

 

그 다음에 우리에게 필요한 것은

언어를 번역해줄 아이이다.

나는 내 친구 (무려 즐겨찾기 1번으로 등록되어 있다)

파파고를 쓸거다.

 

영알못 iOS 개발자의 비애...ㅠ

 

 

Localizable 파일의 규칙

 

"key값" = "실제 들어가야 하는 String";

 

 

이렇게 적어주면되는데

세미콜론(;)을 꼭 적어 주어야 한다.

안 적으면,

 

 

 

 

이런 경고문구가 뜨고 Build Fail이 뜬다.

 

 

 

 

일단 되는대로 막 써봤는데

번역기 돌린 것과 크게 다르지 않아서 잠깐 뿌듯해 하고

 

 

 

 

 

번역기가 알려준대로 고쳤다.

ㅋㅋㅋㅋ

정도만 가는 나란사람..

 

 

 

한국어 파일에도 번역된 걸로 써준다!

 

 

 

 

Localization을 적용할 화면 레이아웃도 잡아주고,

아래처럼 Label이 Localization을 적용해준다.

 

 

 

 

extension해서 편하게 쓰는 방법이 있지만

일단, 정석대로 해보고 됐을 때 바꿔도 늦지 않는다.

다른거 신경 쓰다가 안돼면

더 골치 아파진다..

이렇게 다 끝내고 실행하면,

아래와 같이 나오는 것을 볼 수 있다.

 

 

 

 

이제 번역된 걸로도 봐야겠지?

설정 - 일반 - 언어 - 한국어

이렇게 바꿔준다.

 

 

 

 

언어변경까지 시간이 좀 걸리고,

변경된 뒤에 다시 실행해 보면

잘 바뀐 것을 확인할 수 있다.

 

 

 

 

아까 내가 삽질 했던 부분

시뮬레이션 문제였다..

그대로 했는데도 적용이 안돼서 왜그런가 했는데

해결법은 시스템 언어를 바꿔주는 거였다.

위의 시뮬레이션 안에서 바꿔도 안되는 거라서,

 

 

 

 

Xcode 중앙 상단에 보이는 저 부분에서

프로젝트를 누르면

오른쪽 사진처럼(좀... 작네..? 확대해서 보세요;;ㅋㅋㅋㅋ)

Edit Scheme이라는 부분이 있다 클릭!

 

 

 

 

왼쪽에 `Run`에서 `Options` 클릭

그다음 `App Language` 부분을

원하는 언어로 바꾸면 된다...

 

xcode.... 시뮬레이션..... ㅂㄷㅂㄷ....

 

일본어 파일을 만들지 않았을 때는

어떻게 되나 싶어서 클릭해봤는데,

 

 

 

 

오, base가 영어라더니

정말 영어로 나온다!!

 

그래서 이왕 하는 김에 일본어 파일도 만들어 주기로 함.

 

 

 

 

모야.. 영어는 crying이라고 나오더니

일본어 왜케 번역 잘되누 ㅋㅋㅋㅋㅋ

완벽한 현지화네 ㅋㅋㅋㅋ

 

일본어 추가하면서 알게 된건데,

나중에 새로운 언어를 추가하면,

기존에 적어놨던 내용은 자동으로 추가된다.

 

 

 

 

단, base 언어(영어)로 추가된다는 점이 살짝 아쉽다.

(이미 미쳐돌아가는 xcode한테 더 바랬다간

더 미쳐돌아갈 테니 절대 바라지 말아야겠다)

 

그래도 일일히 추가해야 될 내용을

코드 내에서 찾아야 하지 않아도 되니깐

생각보다 편리한 것 같다.

 

 

Localization 끝... 휴

 

 

결론: Localization 잘못 추가하면

삭제하고 다시 추가할 때

기존에 남아 있던 파일이 있다는 둥,

잘못 삭제해서 스토리보드 파일 없어지는 둥,

base 언어파일이 없어지는 둥,

여러 문제가 있으니,

처음에 추가할 때 잘, 천천히 추가하자!

블로그의 정보

Beautiful Coding

사슴비행기

활동하기