2010-12-08 3 views
2

könnte jemand mir eine Idee geben, wie man das Problem findet. Ich habe eine App namens "MyApp". Ich möchte den App-Namen auf Deutsch lokalisieren. Ich habe ein Verzeichnis de.lproj im Hauptprojektverzeichnis. Es enthält eine Datei Localizable.strings und das funktioniert gut. Ich habe eine InfoPlist.strings-Datei hinzugefügt und dort gebe ich ein:Lokalisierung von CFBundleDisplayName funktioniert nicht, was auch immer ich versuche

CFBundleDisplayName = "Applikationsname";

Aber es würde nicht den übersetzten Namen anzeigen, es bleibt auf "MyApp". Hier ist, was habe ich versucht, so weit:

  • Dreifach überprüft die Rechtschreibung und Kapitalisierung
  • sauber alle
  • löschen App vom Gerät und in Simulator
  • löschen Benutzer dir in Simulator
  • die Englisch App geändert Name in MyApp-Info.plist - das funktioniert.
  • wieder lesen, was ich in Apples Dokumentation und viel Googeln finden konnte, dass es sollte funktionieren.

Was auch immer ich versuchte, ist der App-Name der aus MyApp-Info.plist. ich log dies auch im AppDelegate:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSArray *languages = [defaults objectForKey:@"AppleLanguages"]; 
NSString *currentLanguage = [languages objectAtIndex:0]; 
NSBundle *bundle = [NSBundle mainBundle]; 
NSDictionary *info = [bundle infoDictionary]; 
NSString *prodName = [info objectForKey:@"CFBundleDisplayName"]; 
NSLog(@"Product Name:%@",prodName); 
NSLog(@"Current Locale: %@", [[NSLocale currentLocale] localeIdentifier]); 
NSLog(@"Current language: %@", currentLanguage); 

Ausgang ist:

2010-12-08 12:51:00.886 MyApp[25148:207] Product Name:MyApp 
2010-12-08 12:51:00.946 MyApp[25148:207] Current Locale: de_DE 
2010-12-08 12:51:00.946 MyApp[25148:207] Current language: de 

So ist die Spracheinstellung ist richtig, aber die App lesen nicht die InfoPlist.strings-Datei? Irgendwelche Ideen, wie man von hier fortfährt?

Vielen Dank im Voraus für eine Antwort.

Antwort

1

Ok, es scheint endlich zu funktionieren. Ich vermute, dass ich die InfoPlist.strings falsch erstellt habe: Zeichenkette Datei aus der Registerkarte Ressourcen auswählen und de.lproj als Zielordner angeben.

Nachdem Sie die Datei gelöscht und eine neue Datei im Stammverzeichnis des Projekts erstellt haben, gelang es, lokalisierbare Versionen zu erstellen. Wenn jemand darauf stolpert, beachte, dass du die entsprechende Datei auch in en.lproj bearbeiten musst.

1

Ich löste dieses Problem heute. Sie sollten NSBundle ‚s -localizedInfoDictionary Methode verwenden, um das Wörterbuch zu bekommen, deshalb können Sie den lokalisierten String für CFBundleDislplayName

3

In meinem Fall zu bekommen, mein Xcode-Projekt hatte nur Lokalisierungen für:

  • Englisch (Development Language)
  • japanische

(und "Use Base-Internationalisierung" geprüft)

... aber meine InfoPlatte.Zeichenketten-Datei hatte nur Lokalisierungen für:

  • Basis
  • japanischen

Sobald ich eine englische Version der Datei hinzugefügt, um es zu arbeiten begann. Davor zeigte das App-Symbol den Zielnamen (Produktname) an, egal was ich versuchte.

Ich war unter der Annahme, dass „Base“ dient als Standard (dh „alle Sprachen, die nicht explizit unterstützt“), aber es scheint das tatsächliche Verhalten ist komplizierter ...

this helps jemand.

+1

Nicolas: Ich habe das gleiche bemerkt. Ich denke, dass die Basis-Lokalisierung als Standard eintritt, wenn die App geöffnet ist (d. H. Schnittstellen). Hast du ein bisschen tiefer gegraben? – allaire

+0

@allaire Nein, aber ich werde. Danke für die Eingabe! –

+0

Lassen Sie mich wissen, wenn Sie noch etwas finden :) – allaire