NSLocalizedString funktioniert nur die Hälfte der Zeit, wo ich den erwarteten Wert für den referenzierten Schlüssel zurückerhalten. Die anderen Male bekomme ich den Schlüsselnamen zurück, der in NSLocalizedString spezifiziert wird und geschieht konsequent auf jedem anderen Lauf.NSLocalizedString lädt die Zeichenfolge manchmal, nicht immer
Momentan unterstütze ich momentan nur Englisch.
Ich rufe:
NSString *someText = NSLocalizedString(@"mystring.keyname", nil);
Inhalt en.lproj/Localizable.strings:
"mystring.keyname" = "Hello there!";
Wenn es nicht korrekt funktioniert, someText's
Wert mystring.keyname
ist.
Hier ist, wie ich Zuverlässigkeit bin Tests:
- (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?"));
}
Dieser druckt die erwarteten Werte werden alle die anderen Lauf:
Run #1:
Local Dict: (null)
localizedStringForKey: Hello there!
Localized String: Hello there!
Run #2:
Local Dict: (null)
localizedStringForKey: Wha happened?
Localized String: mystring.keyname
Meine Dateien sind als solche angelegt:
WORKSPACE_DIR/
my_workspace_name.xcworkspace
PROJECT_DIR/
- my_project_name.xcodeproj
RESOURCES_DIR/
- en.lproj/
Localizable.strings
XCodes Projekt-Level-Einstellungen:
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 ist als UTF-16 konfiguriert, obwohl ich die Option Texteinstellungen im Dateiinspektor nicht mit der ausgewählten Zeichenfolgendatei sehen kann. Aber ich habe den Codierungstyp verifiziert, indem ich die Datei in TextWrangler geöffnet habe, die die Codierung als Unicode (UTF-16) mit Unix LF anzeigt.
Irgendwelche Vorschläge, wie Sie dies die ganze Zeit arbeiten lassen?
Haben Sie jemals eine Lösung dafür gefunden? Habe das gleiche Problem, bei jedem anderen Lauf funktioniert die Lokalisierung nicht. –