티스토리 뷰

반응형

안녕하세요 :) Zedd입니다.

오늘은 로컬라이징!!!!!

저는 영어를 베이스로 만들고 있는데..물론 다 이해가지만 각 나라언어로 보여지면 어떨까 싶어서 

이번기회에 로컬라이징을 공부해보려고 합니다 XD

시작할게요!

로컬라이징이 뭐지 ㅇ.ㅇ?하시는 분들은

: 로컬라이징?써드파티?

글을 읽고오시면 될 것 같아요 :)



Localizing Your App


 

Localizing Your App은 Apple문서의 제목이랍니다 :)

위 문서에 iOS에서 로컬라이징이 어떻게 되는지!!! 그런거를 알려주고 있는데..


App의 사용자 인터페이스와 코드를 국제화(internationalizing)한 후에는 현지화(localization) 프로세스를 시작하세요.

사용자 지향 텍스트를 포함하는 모든 개발 언어 문자열 파일을 표준 XML지역화 교환 파일 형식(XLIFF)으로 내보냅니다.

XLIFF파일을 여러 언어로 번역하려면, 현지화팀에 제출합니다. 번역을 기다리는 동안, 계속해서 앱을 개발하세요.

XLIFF변환을 프로젝트로 가져와 추가 한 각 언어로 App을 테스트하십시오. 





일단 제가 문자열 파일을 만들어서 주면 어케어케 번역해서 나한테 준다는 소리 같네요.

그럼 해봅시다 진짜로


프로젝트를 만들어주세요 ㅎㅎ

그리고 새로운 파일을 하나 추가해줍시다. string파일이에요. 위에서 "문자열 파일"이 필요하다고 그랬죠?



이름은 Localizable.strings으로 해주세요.

그리고 Localizable.strings을 눌러서 오른쪽 inspector를 보면..



Localize...라는 게 있습니다. 

클릭해줍니다.

그럼 갑자기



이렇게 되는데.. Base를 체크해줍니다. Base가 영어니, English를 굳이 체크하지 않아도 됩니다. 

그리고 나서 PROJECT > Localizations부분으로 가주세요.


뭔가 여기서 할 것만 같은 느낌이 들죠?

+버튼을 클릭해줍니다. 



그럼



막 이런게 나옴...내가 로컬라이징 하고싶은 언어들을 선택해줍니다. 저는...한국어, 일본어, 중국어해볼게요 :)

일단 하나 클릭하면..



이런게 나오는데..아까 만들어준 Localizable.strings파일이 체크된게 보이죠? 꼭 체크해주세요.

Finish버튼을 누르면,



갑자기 우리의 Localizable.strings파일에 뭔가 생김..일본어랑 한국어 추가도 계속해볼게용



최종..

지금 찾아보니까 Base가 영어라고 합니다. 아까.. 



난 둘다 추가해줬는데 ㅎ ㅏ...그럼 우리는 Base만 필요한거고 English는 필요없죠?

이럴때는!!!

아까 Localizable.strings에 가서


체크 해제만 해주면 쉽게 사라진답니다. 이런식으로 쉽게 추가 제거 할 수 있어요 XD

자..이제 했으니....

본격적인 작업을 해봅시다.

저는 일단


테스트를 위해 Label을 하나 추가해줬어요 XD

자 이제 진짜 시작

저는 뭐 어떤 작업을 하면 애플이 짠~하고 번역해주는 그런건줄 알았는데...아니었음ㅎㅋ......

괜찮아요 번역기가 있으니까....



아까 만들어졌던 strings파일들...을 수정해줘야합니다. 

먼저 Base 파일로 가보죠.

  1. "Hello" = "Hello";


"키" = "로컬라이징 할 문자열";

위 형식을 반드시 지켜주셔야 합니다.



자, 우리는 Label에 텍스트를 넣어주려면, 이렇게하죠?

"Hello"라고 넣어줬어요. 이게 우리의 "원래" 문자열입니다. 



  1. "Hello" =


근데 Base에서는 기본이 영어랬으니까 그대로 해도 되겠죠? 


  1. "Hello" = "Hello";


세미콜론은 절대 빼먹으시면 안됩니다.


자..그럼 이제 한국어파일로 가봅시다. 


  1. "Hello" = "안녕";


이제 어떻게해야하는지 아시겠죠??



  1. "Hello" = "안녕";


    "Hello" = "你好";


    "Hello" = "こんにちは";



각각 위 코드를 넣어주면 되겠네요.


끝이냐? 아닙니다. 

이제 아까의 


  1. myGreetingLabel.text = "Hello"


이 부분을 고쳐주셔야 합니다.


  1. myGreetingLabel.text = NSLocalizedString("Hello", comment: "")



이렇게요. NSLocalizedString은 로컬라이징 된 String을 반환하는 메소드랍니다.


  1. "Hello" = "안녕";


    "Hello" = "你好";


    "Hello" = "こんにちは";



전부 Key는 "Hello"였죠? 

그래서 NSLocalizedString파라미터 안에 "Hello"가 들어가게 된거랍니다 :)

이렇게만 하면!!!! 이제 iOS기기의 기본언어가 한국어인사람은 "안녕"으로 뜨게 되고..일본어인사람은 일본어로 뜨게되고..이렇게 되는거죠!!!!!!!!!


제 폰은 기본언어가 한국어니..안녕으로 떠야겠죠? 뜨나 봅시다.


이얄



  1. myGreetingLabel.text = NSLocalizedString("Hello", comment: "")


이게 정석이긴 하지만.....보통 String을 Extension해서 쓴다고 합니다.

뭔소리냐구요?


  1. extension String {

        func localized(bundle: Bundle = .main, tableName: String = "Localizable") -> String 

    {

            return NSLocalizedString(self, tableName: tableName, value: "**\(self)**", comment: "")

        }

    }


    myGreetingLabel.text = "Hello".localized()


구구절절 안써도 되고, 이렇게 함수하나만 만들어주면 깔끔하게 사용할 수 있답니다.


  1. extension String {


         var localized: String {

               return NSLocalizedString(self, tableName: "Localizable", value: self, comment: "")

            }

    }


    myGreetingLabel.text = "Hello".localized



이렇게 연산프로퍼티로 만들어서 할 수 도 있음 ㅎ

저는 연산프로퍼티가 조금 더 깔끔해보이네요.


아무튼...오늘 이렇게 로컬라이징 하는 방법을 하나 알아가네요 :)

도움이 되었으면 좋겠습니당 키키


출처 :

https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPInternational/LocalizingYourApp/LocalizingYourApp.html

https://marcosantadev.com/app-localization-tips-swift/


반응형