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?
Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? Mam ten sam problem, ale inne uruchomione lokalizacje nie działają. –