반응형
LinkedIn 개발자로 성장하면서 남긴 발자취들을 확인하실 수 있습니다.
Github WWDC Student Challenge 및 Cherish, Tiramisul 등 개발한 앱들의 코드를 확인하실 수 있습니다.
개인 앱 : Cherish 내 마음을 들여다보는 시간, 체리시는 디자이너와 PM과 함께 진행 중인 1인 개발 프로젝트입니다.
10년 후, 20년 후 나는 어떤 스토리 텔러가 되어 있을지 궁금하다. 내가 만약에 아직 조금 더 탐구하고 싶은 게 있고, 궁금한 게 있다면, 그게 설사 지금 당장의 내 인생에 도움이 안 되는 것 같더라도 경험해보자. 그 경험들을 온전히 즐기며 내 것으로 만들고, 내 일에 녹여내고... 그러다보면 그 점들이 모여 나란 사람을 그려내는 선이 될 테니까.

Recent Posts
Recent Comments
Total
관리 메뉴

꿈꾸는리버리

Localization : 다국어 처리 본문

오뚝이 개발자/iOS

Localization : 다국어 처리

rriver2 2022. 7. 11. 00:32
반응형

한국어 <-> 영어 둘 다 사용 가능한 다국어 앱을 만들기 위해 고군분투한 이야기..

 

  다국어 설정하기  

 

1) command + N -> Strings File 만들기

반드시 이름은 Localizable.strings 으로 !

 

2) Localizable.strings 파일에서의 인스펙터에서 localization 설정

 

3) 이렇게 두 언어를 넣어주면, 다음과 같이 설정이 가능하다 !

Text("hi")

이제 이렇게 치면 자동적으로 한국 지역 설정이 되어 있는 앱에서는 hi 대신 안녕이라고 읽힌다 !

주의) 반드시 세미콜론을 넣어야 한다 !

 

 

4) 만약 ,, 변수도 같이 넣고 싶다면?

Text("hi, \(name)")

-> 이 경우에는 아래와 같이 하면된다

"hi, %@" = "안녕, %@";

+ 정수인 경우에는 %lld 

 

 

4) 만약 ,, 많은 양을 좀 더 쉽게 변환 하기 위해서는 ?

localization 다국어 타이핑 쉽게 하기 (excel을 이용한) 참고

 


 

 두둥,,, 그런데 ..!! 문제가 생겼다..! 

 

  문제 상황  

Localization은 한 Text(”내용 한 줄”)에서 “내용 한 줄” 전체와 일치하는 Key를 찾아서 Value로 바꿔주는 형식이다.
Text(”Hi, \(userName)”)의 경우에는 userName이 %@로 인식이 되어서 Key(“Hi, %@”)를 찾아 한국어로 번역이 되는데,
Text(title)의 경우에는 title의 내용 일치하는 Key가 없어서 번역이 되지 않았다.
즉, title 전체와 동일한 key값이 없어서 localization이 적용되지 ...않..았다…

이 경우 사용자의 이름은 계속 변하기 때문에, 해결할 수 있는 방법이 없다고 생각했다.. 

 

  해결  

Localization 관련 WWDC를 보던 중,, LocalizedStringKey을 알게되었다 !

이렇게 새로 만든 스트럭트에 넘기는 매개변수의 타입을 LocalizedStringKey로 설정하니까

title로 넘기더라도 원하는 대로 작동하게 되었다 :) 

 

 

  참고 자료  

WWDC

공식문서

 


 

  추가적인 내용  

leading과 trailing

: 왜 오른쪽, 왼쪽이 아니라, leading과 trailing이라는 말을 쓰냐면,,, 

하단과 같이 언어 중에 오른쪽에서 왼쪽으로 써 내려가는 글씨가 있기 때문이다.

그래서 leading, trailing으로 함으로써, local에 맞게 자리를 배치할 수 있게 된다.

 

italic 체

italic체를 넣고 싶다면, 이렇게 *을 글자 사이에 넣으면 된다 !

 

시뮬레이터에서 확인하기

edit Scheme를 선택하고, 

앱의 언어를 바꿔주면 된다 ! ( 물론 시뮬레이터를 구동한 후에 설정에서 언어를 변경해줘도 반영된다 ! )

 

 

 

반응형
Comments