좋아, 나는 공식적으로 깜짝 놀랐다. 나는 얼마 전부터 IOS 프로젝트를 시작했고, 처음에는 현지화로 약간의 혼란을 겪었는데, 이것은 조금은 혼란 스러웠다. 왜냐하면 나는 그 일을 제대로 수행 할 방법을 몰랐기 때문이다.NSLocalizedString은 아무 곳에도 정의되지 않은 텍스트를 반환합니다.
이제 처음부터 현지화를 결정하여 모든 .strings 파일을 버리고 적절한 다중 언어 구조를 만들었습니다. 비어있는 Localizable.strings 파일로 시작하여 앱을 실행하여 모든 것을 올바르게 정리했는지 확인합니다. 비어있는 Localizable.string 파일을 사용하여 "NSLocalizedString"호출이 단순히 키를 텍스트로 반환한다고 가정했습니다. 그들은하지 않습니다. 그들은 여전히 이전 .strings 파일에 있던 이전 텍스트를 반환합니다.
그냥 확인하는
, 나는 이와 같이, NSLocalizedString 호출 중 하나하에 NSLog 문을 넣어 :NSString *text = NSLocalizedString(key, nil);
NSLog(@"key=%@ text=%@", key, text);
가 그럼 난 반환 된 텍스트 내 전체 하드 디스크를 검색 할 수 있습니다. 내 하드 디스크에는 NSLocalizedString이 반환하는 문자열이 없습니다. 그리고 그것은 키와 완전히 다른 문자열이므로 NSLocalizedString으로도 생성 할 수 없습니다.
어떻게 이런 일이 발생할 수 있는지 알고 있습니까? 이전 정보가 Xcode에 의해 어딘가에 캐시되어 있습니까? 새 Localizable.strings 파일을 사용하도록 도구를 설득하려면 어떻게해야합니까? 분명히, 나는 이미 'clean'ed하고 전체 프로젝트를 재건했다.
기기에서 앱을 삭제하고 다시 실행 해보세요. 과거에는 삭제 된 리소스가 개발 중에 장치에서 삭제되지 않는다는 것을 알게되었습니다. –