2009-06-24 4 views
7

그룹화 된 테이블에서 출력하기 위해 사전 키를 사용하고 싶습니다. 이것은 내 모든 다른 콘텐츠와 함께 현지화되어야합니다. NSLocalizedString을 키로 사용할 수 있습니까?NSLocalizedString을 사전의 키로 사용해도됩니까?

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: 
    first_array, NSLocalizedString(@"First Array", @"The First Array"), 
    second_array, NSLocalizedString(@"Second Array", @"The Second Array"), nil]; 

답변

13

문자열이기 때문에 가능합니다. 즉, 사용자가 자신의 언어를 변경할 수 있기 때문에 나중에 쓰고 나중에 다시 읽어 들일 사전에 대해이 기술을 사용하지 말고 틀린 키를 찾을 것입니다.

2

이것은 프로그램에서 한 번 생성 된 다음 다시 변경되지 않는 정적 사전처럼 보입니다. 나는 그런 문제를 보지 못한다. 나는 당신이 변형 할 수없는 사전을 만들 때 그것을 바꿔서 보관하지 않을 것입니다. 그렇다면 키가 다를 수 있기 때문에 보관 파일을 다른 로케일을 사용하는 사용자간에 교환 할 수 없기 때문입니다.

그러나 현지화 된 배열을 만들고 사전에로드하는 대신 사전에로드 된 지역화 된 plist 파일을 사용할 수 있습니다. 그것은 당신의 코드를 더 읽기 쉽게 만들 수 있습니다.

4

피터가 지적했듯이 사전은 키가 NSCopying 프로토콜을 구현하는 개체라는 점만을 염두에 둡니다. 문자열은 그것을 통계로 나타내며 합법성에 관한 한 내용은 중요하지 않습니다.

아마도이 경우에는 문제가되지 않지만 한 언어의 한 단어는 단어 사용의 문맥에 따라 다른 언어의 두 단어로 여러 번 매핑됩니다. 그 반대의 경우도 가능합니다. 한 언어의 두 단어가 다른 언어의 같은 단어에 매핑 될 수 있습니다. 이 문제는 발생할 가능성이 거의 없지만 지역화 된 값을 사용자에게 표시하는 값으로 만 취급하고 다른보다 긴밀하게 정의 된 값을 키로 사용하는 것이 가장 좋습니다.

관련 문제