BLOG main image
분류 전체보기 (92)
Cocoa Touch (11)
Cocoa (10)
Objective-C (13)
Swift (6)
Development (11)
Tools (11)
Books (7)
etc (21)
Application release (1)
Document Project (1)
106,256 Visitors up to today!
Today 14 hit, Yesterday 5 hit
daisy rss
tistory 티스토리 가입하기!
2014. 2. 18. 12:10

Localize작업을 하다보면 언어에 따라 formatting이 바뀌는 경우가 있습니다.

예를 들면 영어 문장이 아래와 같다면


“You ate 2 apples during 30 minutes.”


한국어 문장은 


“당신은 30 분 동안 2 개의 사과를 먹었다.”


이렇게 되겠지요.


이것을 리소스 파일로 만들게 되면 아래와 같을 것입니다.


“You ate %d apples during %d minutes.” = “당신은 %d 분 동안 %d 개의 사과를 먹었다.”


문제는 영문에서의 아규먼트의 순서는 갯수-시간인데 비해 한국어는 시간-갯수가 됩니다.


이런 경우 문장을 수정해서 순서를 맞추는 방법도 있겠지만 결과물의 문장이 영 깔끔하지 않습니다.

이에, 해당 이슈를 처리할 방법이 있는지 구글링 해보았는데 아래와 같은 방법으로 처리가 가능하다는 글을 보았습니다. 저 역시 바로 떠오른 생각은 그랬고요.


“You ate ${count} apples during ${time} minutes.” = “당신은 ${time} 분 동안 ${count} 개의 사과를 먹었다.”


localized string을 만들때 ${}로 둘러싼 키 값에 해당 스트링으로 교체해주는 방법인데요, 이 방법은 NSLocalizedString을 바로 사용할 수 없을 뿐더러 해당 처리를 해주는 별도의 코드를 작성할 필요가 있습니다.


이 이야기를 자바 개발자에게 했더니…


“You ate %1$s apples during %2$s minutes.”같이 아규먼트에 인덱스를 줄 수 있다고 하네요.


아… 이런 Objective-C를 쓰면서 자바가 부럽긴 처음이었습니다.


그래서 시간 여유가 있어서 생각했던 모듈을 만들려고 애플 문서를 뒤적거리는 중에 아래와 같은 부분을 발견했습니다.


“One problem that often occurs during translation is that the translator may need to reorder parameters inside translated strings to account for differences in the source and target languages. If a string contains multiple arguments, the translator can insert special tags of the form n$ (where n specifies the position of the original argument) in between the formatting characters. These tags let the translator reorder the arguments that appear in the original string. The following example shows a string whose two arguments are reversed in the translated string:”


/* Message in alert dialog when something fails */


"%@ Error! %@ failed!" = "%2$@ blah blah, %1$@ blah!";


아아… 이런… 제가 공부를 너무 안했던 것이지요. Cocoa Framework에서도 이런 방법을 제공하고 있었던 것입니다.

상당히 민망해지는군요. :$



[..’] | 2014.02.27 06:15 | PERMALINK | EDIT/DEL | REPLY
OS X 10.9 / iOS 7에선 더 좋아졌죠. 혹시 아직 안보셨으면 Foundation 10.9 Release Notes의 맨 마지막 색션 보시면 재미있을 겁니다. 이런데다 슬적 끼워놓은게 맘에안들긴 하지만요.
https://developer.apple.com/librarY/mac/releasenotes/Foundation/RN-Foundation/index.html
maccrazy | 2014.03.03 11:05 신고 | PERMALINK | EDIT/DEL
앗. 안녕하세요~ 요즘 블로그 방문자가 별로 없어서 자주 안 들어와보게 되는데 그새 왔다가셨네요. :) 알려주신 링크 보니까 재미있네요. 이런걸 왜 이제야 넣었을까요? T_T 그나저나 잘 지내시죠? 블로그는 왜 닫으셨어요?
han9kin | 2015.03.02 00:33 신고 | PERMALINK | EDIT/DEL | REPLY
헛... "%1$s" 이거 printf에서부터 지원하는 건데...
man fprintf 하시면 자세한 설명이...
maccrazy | 2015.05.06 10:25 신고 | PERMALINK | EDIT/DEL
잇히히~ 어이야디야~ 나날이 바보되는 느낌.
Name
Password
Homepage
Secret