2013-03-24 2 views
4

내 iPhone 앱에 두 개의 문자열을 현지화하고 싶습니다. 선택한 5 개 언어에 대해 지금까지 작동합니다. 그러나 특정 언어에 대한 키를 정의하지 않은 경우 하나의 문제가 있습니다. 영어로 모든 문자열을 영어로 정의했기 때문에 대체 언어로 영어를 선택해야합니다. 중요한 점은 모든 키가 번역되어서 아이폰이 스페인어로 설정된 경우에도 영어를 표시 할 수있는 이유는 중요하지 않다는 것입니다.현지화 대체 언어

예 :

EN :

"HELLO" = "hello" ; 
"PERSON" = "my friend" ; 

ES :

"HELLO" = "hola" ; 

예상 결과 :

아이폰이 영어로 설정되어있는 경우 I가 원하는말 : hello, my friend 그리고 languange가 스페인어로 설정된 경우 나는 hola, my friend라고 말하고 싶습니다. 현재 응용 프로그램은 hola, PERSON을 출력합니다. (NSLocalizedString 메서드를 사용합니다).

정말 쉬운 해결책이 있지만 좋은 것을 찾을 수 없습니다. 도움을 감사합니다,

마티아스

+1

일반적인 방법 NSLocalizedStringWithDefaultValue() '가됩니다. – mrueg

답변

7

다른 답변은 틀렸지 만 정확히 내가 원하는 것은 아니 었습니다.대신 나는 다른 방법을 찾았고 제 환경에서 완벽하게 작동하는 정적 방법을 작성했습니다. 다른 누군가가 똑같은 것을 원한다면 여기에 추가하고 싶었습니다.

4

기능 NSLocalizedStringdocumentation는 말한다 :

반환 값

localizedStringForKey 호출의 결과 : 값을 : 테이블 : 주에에게 번들 및 nil 테이블.

sayslocalizedStringForKey:value:table:에 대한

:

반환 값

테이블 TABLENAME의 키에 의해 지정된 문자열의 지역화 된 버전. 값이 nil이거나 빈 문자열이면 표에 현지화 된 문자열이 없으면 키를 반환합니다. key와 value가 모두 nil이면 빈 문자열을 반환합니다.

은 그래서 당신은 모든 언어에 대한 문자열을 지역화 또는 key 당신이 쉬운 솔루션은 키와 영어 텍스트를 사용하는 것입니다

1

사용하는의 값을 변경할 수 있습니다. 예 :

[NSString stringWithFormat:NSLocalizedString(@"%@, %@", "format for greeting"), 
          NSLocalizedString(@"Hello", "salutation"), 
          NSLocalizedString(@"my friend", "person")] 

문자열의 번역 된 버전이 없으면 영어 키가 사용됩니다.