2013-01-23 2 views
6

NSLocalizedString은 참조 된 키의 예상 값을 가져 오는 절반의 시간에만 작동합니다. NSLocalizedString에 지정된 키 이름을 얻는 다른 시간은 다른 모든 실행에서 일관되게 발생합니다.NSLocalizedString은 때때로 문자열을로드합니다.

현재 현재 영어 만 지원하고 있습니다.

내가 전화 해요 : en.lproj/Localizable.strings의

NSString *someText = NSLocalizedString(@"mystring.keyname", nil); 

내용 :

"mystring.keyname" = "Hello there!"; 

이 제대로 작동하지 않습니다, someText's 값이 mystring.keyname입니다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    NSBundle *bundle = [NSBundle bundleForClass:[self class]]; 
    NSLog(@"Strings file: %@", [bundle pathForResource:@"Localizable" ofType:@".strings"]); 
    NSLog(@"Localizations: %@", [bundle localizations]); 
    NSLog(@"Local Dict: %@", [bundle localizedInfoDictionary]); 
    NSLog(@"localizedStringForKey: %@", [bundle localizedStringForKey:@"mystring.keyname"value:@"Wha happened?" table:nil]); 
    NSLog(@"Localized String: %@", NSLocalizedString(@"mystring.keyname", @"Are you sure you want to start a new game?")); 
} 

이 예상 값마다 다른 실행을 출력 : 여기에

내가 신뢰성을 테스트하고있어 방법

내 파일과 같은 배치되어
Run #1: 
Local Dict: (null) 
localizedStringForKey: Hello there! 
Localized String: Hello there! 

Run #2: 
Local Dict: (null) 
localizedStringForKey: Wha happened? 
Localized String: mystring.keyname 

:

WORKSPACE_DIR/ 
    my_workspace_name.xcworkspace 
    PROJECT_DIR/ 
    - my_project_name.xcodeproj 
    RESOURCES_DIR/ 
     - en.lproj/ 
      Localizable.strings 

Xcode의 프로젝트 수준 설정 :

1) Build Phases has Localizable.strings listed in the "Copy Bundle Resources". 

2) Build Settings: 
    Convert Copied Files => YES 
    Property List Output Encoding => binary 
    Strings file Output Encoding => UTF-16   

3) Info.plist's: CFBundleDevelopmentRegion => 'en' 

File Inspector에서 문자열 파일을 선택한 텍스트 설정 옵션이 보이지 않지만 Localizable.strings은 UTF-16으로 구성됩니다. 하지만 Unix LF를 사용하여 유니 코드 (UTF-16)로 인코딩하는 TextWrangler에서 파일을 열어 인코딩 유형을 확인했습니다.

항상 작동시키는 방법에 대한 제안 사항이 있으십니까?

+0

해결 방법을 찾으셨습니까? 동일한 문제가 발생하여 다른 지역화가 작동하지 않습니다. –

답변

1

몇 분 후에 해결책을 찾았습니다. 제 3 자로부터 다른 Localizable.strings을 포함 시켰습니다. 일단 내가 그것을 제거, 더 이상 잃어버린 번역을 실행합니다.

3

지역화 가능 파일에 추가 세미콜론이 있으면 빌드되지만 현지화가 실패합니다.