2013-01-23 17 views
6

NSLocalizedString działa tylko połowę czasu, w którym otrzymuję oczekiwaną wartość dla przywoływanego klucza. Innym razem otrzymuję nazwę klucza określoną w NSLocalizedString i konsekwentnie dzieje się przy każdym innym uruchomieniu.NSLocalizedString ładuje łańcuch czasami, nie zawsze

Obecnie obecnie popieram tylko angielski.

Dzwonię:

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

Zawartość en.lproj/Localizable.strings:

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

Kiedy nie działa prawidłowo, someText's wartość jest mystring.keyname.

Oto jak ja testowania niezawodności:

- (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?")); 
} 

ten wypisuje wartości oczekiwanych co drugi run:

Run #1: 
Local Dict: (null) 
localizedStringForKey: Hello there! 
Localized String: Hello there! 

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

Moje pliki są określone jako takie:

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

Ustawienia poziomu projektu 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' 

Localizable.strings jest skonfigurowany jako UTF-16, chociaż nie widzę opcji Ustawienia tekstu w oknie Inspektora plików z wybranym plikiem tekstowym. Ale zweryfikowałem typ kodowania, otwierając plik w TextWrangler, który pokazuje kodowanie jako Unicode (UTF-16) z Uniksem LF.

Jakieś sugestie, jak uzyskać to działające przez cały czas?

+0

Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? Mam ten sam problem, ale inne uruchomione lokalizacje nie działają. –

Odpowiedz

1

Kilka minut po prośbie o rozwiązanie, znalazłem go. Zawarłem kolejną wersję Localizable.strings od strony trzeciej. Raz usunąłem to, nie więcej utraconych tłumaczeń co drugi raz.

3

Jeśli masz jakiś dodatkowy średnik w pliku, który można edytować, to nie uda się go zlokalizować.

Powiązane problemy