2011-02-03 4 views
36

NSLocalizedString을 사용하여 자리 표시자를 포함하는 문자열을 어떻게 현지화합니까? 예를 들어형식 지정 자리 표시자를 사용하여 문자열을 지역화하려면 어떻게해야합니까?

:이 지역화 어떻게

[NSString stringWithFormat:@"You can afford %i at %@%li.",[kCash integerValue]/self.price, kYen, self.price] 

? 문자열을 여러 지역화 된 문자열로 분리합니까? 어떻게하면 다양한 문장 구조와 문법을 다룰 수 있습니까?

답변

19

현지화 된 문자열에 자리 표시자가 포함되어 있습니까? 그것은 당신이 말한 것처럼 당신이 다양한 단어 순서를 고려할 수 없었던 것처럼, 그렇지 않으면 할 수있는 유일한 적절한 방법입니다. 이 라인을 따라

뭔가 : stringWithFormat 정상으로 사용할 수

[NSString stringWithFormat:NSLocalizedString(@"Foo %i", @"Foo %i"), 123] 
+0

윌이 일하지만? NSLocalizedString은 자리 표시 자에 대해 알고 있으며 임의의 텍스트로 간주하지 않습니까? – Moshe

+3

이것은 하나의 인수에 대해 작동하지만 두 개의 인수가있는 경우 많은 언어에서 자리 표시자가 나타나는 순서를 변경하고자 할 것입니다. –

+18

-1 주문에 민감한 텍스트에는이 코드가 적용되지 않습니다. 대신 위치 지정 인수 (예 : % 1 $ @)를 사용해야합니다. 또한 NSLocalizedString의 두 번째 매개 변수는 번역 할 텍스트의 컨텍스트를보다 잘 이해할 수 있도록 번역자에게 주석을 제공하기위한 것입니다. 초기 텍스트를 반복하는 것은 의미가 없으며, 특히 포맷터 문자열에서는 의미가 없습니다. – rbrown

5

이하는 또 다른 방법은 지역화 된 파일에, 당신은 할 수있다 :

key = "String with %@ placeholder"; 

[NSString stringWithFormat:@"You can afford %1$i at %[email protected]%3$li.", 
           [kCash integerValue]/self.price, kYen, self.price] 
여기

더 많은 정보 - 당신의 예에서, 숫자 자리 표시자를 사용하는 것은 아마 좋은 생각이다

및 구현시 :

[NSString stringWithFormat: NSLocalizedString(@"key", ""), @"string replacing placeholder"]; 

여러 가지 인수를 사용하여이 작업을 수행 할 수 있습니다. 로컬 화 파일 전체에서 일관성이 있어야합니다.

1

이 방법은보다 효율적으로 보인다

[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"Key", @"Comment for localised string"), value]; 
관련 문제