NSLocalizedString funziona solo la metà del tempo in cui restituisco il valore previsto per la chiave di riferimento. Le altre volte restituisco il nome della chiave specificato in NSLocalizedString e accade costantemente in ogni altra esecuzione.NSLocalizedString carica la stringa a volte, non sempre
Attualmente, sto solo supportando l'inglese al momento.
sto chiamando:
NSString *someText = NSLocalizedString(@"mystring.keyname", nil);
Contenuto del en.lproj/Localizable.strings:
"mystring.keyname" = "Hello there!";
Quando non funziona correttamente, someText's
valore è mystring.keyname
.
Ecco come sto testando l'affidabilità:
- (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?"));
}
Questo stampa i valori previsti ogni altra esecuzione:
Run #1:
Local Dict: (null)
localizedStringForKey: Hello there!
Localized String: Hello there!
Run #2:
Local Dict: (null)
localizedStringForKey: Wha happened?
Localized String: mystring.keyname
miei file sono disposti in quanto tali:
WORKSPACE_DIR/
my_workspace_name.xcworkspace
PROJECT_DIR/
- my_project_name.xcodeproj
RESOURCES_DIR/
- en.lproj/
Localizable.strings
Impostazioni a livello di progetto di 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 è configurato come UTF-16 anche se non vedo l'opzione Impostazioni testo in File Inspector con il file di stringhe selezionato. Ma ho verificato il tipo di codifica aprendo il file in TextWrangler che mostra la codifica come Unicode (UTF-16) con Unix LF.
Qualche suggerimento su come farlo funzionare tutto il tempo?
Hai mai trovato una soluzione per questo? Ottenuto lo stesso problema, in qualsiasi altro caso la localizzazione non funziona. –