2012-12-21 1 views
6

NSLocalizedString 구현을 디버깅하는 데 문제가 있습니다. 간단해야하지만, 내가하는 일은 함수는 KEY 문자열 만 반환합니다.iOS - NSLocalizedString은 키 문자열 만 반환합니다.

내가 엑스 코드 4.5 iOS6의, 그래서 내가 사용하고 있습니다 :

  1. 추가를 새 파일은 File.strings을했다.
  2. 내 프로젝트 설정에서 언어 설정으로 영어와 스페인어를 추가했습니다.
  3. 파일 관리자에서 "현지화"를 클릭하고 영어와 스페인어 옵션이 선택되었는지, 그리고 내 대상에 대한 대상 구성원이 선택되었는지 확인하십시오.
  4. .m 파일로 내 스페인어 File.strings
  5. 추가 NSLog(@"Localization: %@\n", NSLocalizedString(@"KEY", nil)); 내 영어 File.strings
  6. 추가 "KEY" = "TestSpanish";"KEY" = "TestEnglish";을 추가했습니다.

앱을 실행할 때 "KEY" 값은 항상 NSLog에 인쇄되어 표시됩니다. path가 유효한 경로,

NSString *path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; 
NSString *str = [[NSBundle bundleWithPath:path] localizedStringForKey:@"KEY" value:@"" table:nil]; 
NSLog(@"Localization: %@\n", str); 

을 여전히 값 "KEY "인쇄, 아직

사람이 어떤이 있습니까 :

이 뛰어하려면 조금 더, 나뿐만 아니라이 시도. 실마리를 디버깅하는 방법은 무엇입니까? 나는 그곳의 모든 질문/답변을 읽은 것 같지만 어떤 도움도 도움이되지 않습니다.

NSLocalizedString은 ak와 일치하지 않을 때 KEY 문자열을 반환한다는 것을 알고 있습니다. 하지만 내 앱이 키와 일치하지 않는 이유를 디버그 할 수있는 방법이 표시되지 않습니다.

나는 약 12 ​​번 정도 앱을 삭제/정리했습니다.

+0

'table : nil'이'table : @ "File"'이 아니어야합니까? –

+0

@ H2CO3 : 와우, 네, 고마워요. 저것은 영어 판을 움켜 잡는다. 그리고 나는 그것이 기쁜 슈퍼 다행이다.하지만 궁극적으로 NSLocalizedString이 필요하므로 해당 메서드의 편리 성을 사용할 수 있습니다. NSLocalizedString을 사용하기 위해 "File.strings"을 다른 이름으로 변경해야합니까 ??? – Brett

+0

당신은 접근 할 것으로 예상되는 모든 지역화를 "XXX.lproj/Localized.strings"에 넣어야합니다. 또한 ** 왜 NSLocalizedString()을 사용해야합니까 **? –

답변

10

table:nil을 지정하면 NSBundle은 기본 표 (SOMELANG.lproj/Localizable.strings에있는 표)에서 현지화를 가져 오려고 시도합니다. 다른 곳에서 현지화가있는 경우, 당신은 명시 적으로 table:@"File"를 사용하여 테이블을 지정해야합니다 (또는 이와 유사한 방식으로 NSLocalizedStringFromTable() 매크로를 사용 : 당신을

NSString *value = NSLocalizedStringFromTable(@"key", @"File", nil); 
+0

완벽! 감사! – Brett

0

가 Localizable.strings에 InfoPlist.strings 파일 (이중 카릭 이름 바꾸기) 후 . 그 키에 대한 올바른 문자열을 얻을 것이다 나의 경우

1

을 문제가 문자열의 경우와 있었다 다음 Localizable.strings했던 반면 는 "bla.bla.blabla.Book S 많은"그것 "로 정의 bla.bla.blabla.Book s lot "

키 문자열이 올바른 대소 문자인지 다시 확인하십시오. 복사 붙여 넣기가 더 좋습니다.

+0

그들은 동일합니다 ... – Warpzit

+0

@Warpzit, 그의 경우 - 어쩌면. 나는 열쇠가 대소 문자를 구분한다는 것을 지적하고있다. – user3099609

+0

당신은 내가 X = X로 문제가 있다고 말하고 있습니다 ... 그건 문제가 아닙니다, 지금 당신이 제 경우 X! = Y에서 말했다면 말이죠. 그것은 의미가 있습니다 ... – Warpzit