2013-01-23 7 views
6

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?

+0

Hai mai trovato una soluzione per questo? Ottenuto lo stesso problema, in qualsiasi altro caso la localizzazione non funziona. –

risposta

1

Alcuni minuti dopo aver chiesto una soluzione, l'ho trovato. Ho incluso un'altra localizable.strings da una terza parte. Una volta rimosso, non più traduzioni perse a vicenda.

3

Se si dispone di un punto e virgola in più nel file localizzabile, crea ma non riesce a localizzare.

Problemi correlati