이런저런 일정들이 많아 오랜만에 글을 쓰는 기분이네요 !
오늘은 사이드 프로젝트 내에서 번역 관련해서 시행착오 겪었던 것을 모두 정리한 글을 써볼까 합니다
나중에 로컬라이징이 필요한 앱을 또 만들게 된다면
이 글만 참고하면 되게끔 글을 적어보려 합니다
다국어 앱을 만드시는 분들께 도움이 되길 바라며 😆
(아주 ~ 기본적인 내용은 없을 수도 있습니다. 그 부분은 다른 분들의 블로그를 참고해주세요 !)
프로젝트 내 로컬라이징 파일 추가하기


프로젝트 내 새 파일 추가 -> 상단 검색창에서 string을 검색하시면
Strings File을 추가하실 수 있습니다. 자동으로 되긴 하지만 꼭 Localizble.strings 라는 이름으로 생성해주세요!


이 파일을 클릭한 채로 우측을 보시면 Localization이라는 섹션이 있습니다.
여기에서 Localize 라는 버튼을 클릭해주시면 됩니다 :)
만약에 저는 다른 언어들도 지원하고 싶어요 ~ 하신다면 아래와 같이 해주세요


프로젝트 - Localization 쪽에서 + 버튼을 눌러 원하는 언어를 선택해줍니다.

그럼 이렇게 제가 선택한 언어의 Localizable 파일이 만들어지는 것을 확인하실 수 있습니다.
번역 스프레드 시트 관리하기
혼자 개인 앱을 만드는 경우가 아니라면 기획자 - 디자이너 - 개발자 (안드/iOS)
세 명이서 볼 수 있는 하나의 번역 파일이 있는 것이 가장 좋습니다 !
새로운 화면이 생길 때마다 새로운 번역 값들이 생길 것이고
그때마다 새로운 번역 파일을 전달받아 개발자가 직접 입력하게 되면 오타가 생길 수도 있습니다.

이렇게 스프레드 시트를 만들어 기획자 혹은 관리자가 담당하여 관리하고
개발자들은 script를 통해 적혀있는 값들을 파일화해서 뽑아 쓰는 것이 가장 안전합니다 :)
스크립트 만들기
위의 블로그를 참고하여 이 스크립트를 바탕으로
각자의 앱에 맞는 방식으로 변경해나가시면 좋습니다 :)

이렇게 스프레드 시트 내 확장 프로그램 중 Apps Script를 선택합니다.

위의 블로그에 나와있는 Script 파일을 복붙 해주고 저장해줍니다 :)




그럼 가장 우측에 새로운 메뉴가 생긴 것을 확인하실 수 있습니다 !
이 버튼을 누르고 리소스 생성을 눌러주면 자신의 구글 드라이브 내에 번역 관련 폴더가 생기고
그 폴더 내에 이렇게 Localizable 파일이 들어있는 것을 확인하실 수 있습니다 :)
기존 파일을 대체해서 사용해주시면 된답니다 !
이렇게 하면 개발자가 직접적으로 로컬라이징 값들에 손을 댈 일이 없어집니다
번역 전용 String extension
NSLocalizedString("Hello", comment: "")
Swift에서 번역을 적용하는 기본 형태는 위와 같습니다 ! :)
이렇게 작성하면 "Hello"를 키로 가지는 값을 찾아 해당 언어에 맞는 String 값을 return 해줍니다.
extension String {
var localized: String {
return NSLocalizedString(self, comment: "")
}
}
"Hello".localized // "안녕"
이렇게 String extension을 통해 localized라는 연산 프로퍼티를 작성해줍니다.
그럼 아래 코드와 같이 비교적 간단한 형태로 로컬라이징을 할 수 있습니다.
변수가 포함된 로컬라이징
"닉네임"님, 반가워요! 와 같은 로컬라이징이 필요한 경우가 있겠죠?
이럴 때는 "닉네임"이라는 값은 사람에 따라 달라질 수 있습니다.
// string file
"niceToMeetNickname" = "@님, 반가워요!";
// 사용
String(format: "niceToMeetNickname", "오뜨")
그럴 때는 이렇게 적어주면 됩니다.
언어에 따라 변수 순서가 다른 경우
언어에 따라 값이 들어가는 순서가 다른 경우가 있습니다
예를 들면 전체 ~개 중에 ~개가 남아있어요 같은 경우
한국어로는 10개 중에 3개 이런 식이지만 영어에서는 3 of 10 이렇게 순서가 뒤바뀝니다
// string file
"countOf" = "%i of %i";
// 사용
String(format: "countOf", 3, 10)
그런 상황에서 이렇게 적게 되면 언어에 따라 문제가 생길 수 있겠죠? 이럴 때는 이렇게 적어줍니다.
// 영어 string file
"countOf" = "%1$i of %2$i";
// 한국어 string file
"countOf" = "%2$i 중에 %1$i";
// 사용
String(format: "countOf", 3, 10)
// 3 of 10
// 10 중에 3
이런 변수가 포함된 로컬라이징도 extension으로 만들면 좋을 것 같은데요
그 방법은 아래와 같습니다.
extension String {
func localized(with arg: CVarArg...) -> String {
return String(format: self.localized(comment: ""), arg)
}
}
// 사용 예시
"ingredients_count".localized(with: totalCount)
마치며
이렇게 제가 로컬라이징이 포함된 앱을 개발하면서
겪었던 시행착오들과 여러 가지 꿀팁들을 적어보았습니다 :)
이 게시글이 다국어 앱을 처음 만들어 보시는 분들께 도움이 되길 바라면서 글 마치겠습니다
혹시 더 추가되면 좋을만한 사항이 있으시거나 궁금증이 있으시다면 언제나 댓글 남겨주세요 😊
'iOS > iOS' 카테고리의 다른 글
[iOS] iOS 16 enable Developer Mode (2) | 2022.09.24 |
---|---|
[iOS] 커스텀 폰트, 다국어 폰트 적용하기 (0) | 2022.09.04 |
[iOS] Xcode에서 쓰는 주석 정리하기 (1) | 2022.06.11 |
[iOS] isHidden에 대하여 (0) | 2022.04.02 |
[iOS] main.swift 에 대하여 - Command Line Tool (0) | 2022.02.12 |