[iOS] 구글 스프레드 시트로 다양한 언어 Localizable.strings 만들고 적용

EmilY
8 min readJun 24, 2019

에밀리입니다.

오늘은 다양한 언어 지역화 적용을 위해

구글 스프레드 시트를 이용해 문자열 테이블을 만들고

지역화 시트를 자동 생성하고

프로젝트에 적용하는 방법을 알아보겠습니다

이 포스트는 다음 사이트를 참조하였습니다

<구글 스프레드 시트로 지역화 시트 만들기>

  1. 우선 아래 이미지와 같은 형식으로 구글 스프레드 시트를 생성해보겠습니다
    (원본링크 : https://docs.google.com/spreadsheets/d/1H3QRgSZC_27smVWyLGmQlqPwcvyXOO24Sth3-97jkHc/edit?usp=sharing)

본인 계정의 구글 문서에 들어가 ‘새 스프레드 시트’를 만듭니다

다음과 같이 생성하고 시트 이름은 ‘ios 스프레드 시트’로 지어주었습니다

그리고 위 사이트에 맞춰진 이미지와 동일한 양식을 ‘두번째줄’에 넣어줍니다

  • 여기서 첫번째 칸을 비우는 게 아주 중요합니다
  • Description, Keys 스펠링 주의
  • 나머지 열에 프로젝트에 적용할 언어를 계속해서 추가하면 됩니다
    (영어, 한국어, 일본어 같이 한글로 써도 무방)
  • 단, 언어 이름 옆에 (en) (ko) (ja) 같은 약어는 영어로 써야합니다
    (약어를 모를 경우 다음 이미지에서처럼 프로젝트>PROJECT>Info>Localizations> ‘+’ 버튼 눌러서 참조)

자, 이제 내용을 넣어야겠죠

  • Description : 지역화 시트 만들었을 경우 다음과 같은 주석에 해당합니다. 사실 없어도 무방하지만, 프로젝트 규모가 커지면 Keys의 단위를 나눌때 좋습니다.
// main이 Description
  • Keys : ok, cancel, hello 같은 값들을 위한 키값을 넣어줍니다
  • 나머지 열에 해당 언어로 번역된 말들을 넣어줍니다 (구글 번역기 love..)

이 때 마찬가지로 중요한 점은, 3번째 줄을 비워주어야 한다는 점입니다.

자, 이제 상단에 있는 메뉴바에서

‘도구>스크립트 편집기’를 클릭합니다

그러면 다음과 같은 화면이 나옵니다

이미지에 나와있는 기본 함수 myFunction()를 지우고

Localized.strings로 자동 추출해주는 코드를 넣어줄 것입니다.

코드는 아래 링크 코드 전체입니다.

( https://github.com/aurelhubert/android-ios-drive-export/blob/master/android-resources-export.gs)

저는 다음과 같이 iOS만 추출하도록 코드를 수정했습니다

코드를 넣고 프로젝트 이름 설정 후 저장

다시 스프레드 시트로 돌아가서 새로고침 하면…

메뉴바에 Your app이라는 새로운 메뉴가 생긴다!

당연히 리소스 생성 눌러주기

나같은 경우 리소스 생성을 누르면 ‘확인되지 않은 앱’이라는 창이 떴다

그래서 그냥 고급 설정으로 들어가서 허용해줬다..

그러면 시트 위에 ‘스크립트 실행 중’이라는 문구가 뜨고

완료되면 스크립트 생성 완료라고 바뀐다!

생성이 완료되면 내 구글 드라이브로 들어가서 확인해준다

Your app이라는 폴더가 생성됐고

iOS 폴더에

다음처럼 세 가지 지역화 시트가 생성 완료됐다!!!! 오예~~~😆

이름을 살펴보면 KO, JA, EN으로 약어가 파일 이름 끝에 붙은 게 보인다

이제 iOS 폴더를 다운로드 받으면

구글 스프레드 시트를 이용한 지역화 시트 추출은 끝!

<지역화 시트 적용>

하지만 아직 끝난게 아니다..

추출한 지역화 시트를 프로젝트에 적용해야 한다

우선 다운로드 받은 시트들을 살펴보자

이상한 점이 있다

지역화 시트는 확장자가 .strings 여야되는데 끝에 .txt도 붙어있다

이 경우 .txt를 지워주면 된다

이름 수정을 눌러서 .txt를 지워주고

엔터 치면 다음 창이 뜨는데

‘.strings 사용’ 버튼을 누르면 된다

그러면 .strings 파일이 되면서 아래 .txt 파일과 다른 아이콘으로 바뀐다

진정한 지역화 시트가 된 것

나머지 두 파일도 모두 진행해준다

전부 .strings가 된 파일들을 두고 만들어둔 프로젝트를 연다

프로젝트에 새로운 파일을 추가해준다

형식은 Strings File로

이름은 Localizable로 해줬다

생성된 Localizable.strings 파일을 클릭하고

우측의 File Inspector에서 Localization에서 Localiz…라고 된 버튼을 누른다

그럼 이렇게 뜬다

현재 베이스 언어가 영어라는 얘기다

자, 이제 다시

프로젝트 이름 > PROJECT > Info > Localizations 로 들어간다

현재 English만 있다…

아래 ‘+’ 버튼을 눌러 추가하고 싶은 언어를 추가해준다

추가할때 Localizable.strings가 체크돼있는지 꼭 확인!!

전부 추가하고 나면 처음 생성한 Localizable.strings 아래

세 가지 시트가 들어가있다

그럼 해당 시트가 들어있는 폴더를 열어보자

Finder로 들어가면

다음처럼 ko.lproj, ja.lproj, en.lproj 라는 파일이 세개 쭈루룩 나와있다

그러면 생성한 지역화 시트들을 해당 언어 파일에 넣어준다

이렇게.

그 뒤에 원래 있던 Localizable.strings 파일은 지우고

Localizable_KO.strings 였던 파일을 Localizable.strings로 만들어준다

굴러들어온 돌이 박힌 돌 뺀다더니…

나머지도 모두 같은 작업을 해주고 프로젝트로 돌아가면

쨘~내용이 들어가있다!

자, 이제 준비는 끝났다 적용해보자

ViewController에 Label을 넣고 IBOutlet을 참조해준다

그 뒤에

NSLocalizedString(key: String, comment: String)

함수를 이용해 지역화를 적용했다

지역화 시트가 위와 같을 때,

파라미터 comment에는 주석처리된 subview가, key에는 아래 문자열 중 좌측에 있는 Keys 값이 들어간다

이렇게

이제 프로젝트를 실행하면 되는데,

그 전에 테스트할 System Language를 임의로 설정해준다

상단의 Scheme를 누르고 Edit Scheme

Run > Options 에서 Application Language를 원하는 언어로 바꿔준다

그리고 실행해주면 …!!!

언어마다 다음과 같은 화면이 나타난다!

지역화 적용 완료!!!

--

--