it-swarm.com.de

Mehrere Localizable.strings-Dateien in einer iOS-App

Ist es möglich, mehrere Komponenten mit separaten Lokalisierungen in einer App zu haben?

Zum Beispiel möchte ich Strings in meiner App lokalisieren, aber auch ShareKit verwenden, das selbst lokalisiert ist (daher enthält mein Bundle 2 Localizable.strings an verschiedenen Speicherorten) .. _. ShareKit enthält also Ordner wie en.lproj und de.lproj enthalten localizable.strings-Dateien, und ich möchte sie für den Rest meines Projekts erstellen, aber sie getrennt halten.

Ich habe versucht, sie einfach getrennt zu halten, und das hat dazu geführt, dass die Zeichenfolgen meiner App nicht verwendet wurden. Irgendwelche Ideen?

34
Dimitris

Es gibt einen ganz einfachen Weg.

Es gibt mehrere Makros zum Lokalisieren, darunter NSLocalizedStringFromTable(). Dies erfordert drei Parameter:

  1. Die zu lokalisierende Zeichenfolge
  2. Der Tabellenname, der nur ein Dateiname ist
  3. Der Kommentar, genau wie in NSLocalizedString()

Wenn Sie einen Tabellennamen verwenden, können Sie eine andere String-Datei haben, d. H. Wenn ich NSLocalizedStringFromTable(@"name", @"MyStrings", @"whatever"); mache, dann setzen Sie meine Strings in MyStrings.strings, dann wird diese verwendet.

Siehe dazu Matt Gallaghers post .

81
Scott Little

jede Datei/Ressource kann lokalisierbar sein, auch die IB .xib-Dateien oder Bilder jpg/png, Sie müssen lediglich eine Datei in Ihrem Projekt auswählen, info öffnen, in das Register "Allgemein" gehen und "" drücken Datei lokalisierbar machen "... Dann können Sie jede gewünschte Sprache hinzufügen. xCode erstellt eine neue Datei, die die erste dupliziert, und legt sie in den richtigen Ordner ...

luca

0
meronix

Es ist nicht möglich zu tun, was Sie fragen. Sie können mehrere Localizable.strings-Dateien haben, jedoch nur eine pro Sprache in ihren jeweiligen .lproj-Ordnern.

Ich verstehe, dass Sie die ShareKit Localizable.strings-Dateien nicht bearbeiten möchten, da dies beim Aktualisieren ein Problem sein würde, aber ich denke, Sie müssen sich ansehen, wie viel Arbeit das tatsächlich kostet. Je nachdem, wie viele Sprachen Sie unterstützen müssen, ist es möglicherweise weniger Arbeit, Ihre eigenen Zeichenfolgen zu lokalisieren und am Ende der ShareKit Localizable.strings-Dateien hinzuzufügen, als Ihr eigenes Lokalisierungsschema zu implementieren.

Übrigens, um festzustellen, in welcher Sprache das Gerät aktuell eingestellt ist, können Sie Folgendes verwenden:

NSArray *preferedLocalizations = [[NSBundle mainBundle] preferredLocalizations];

Dadurch erhalten Sie ein Array von aus zwei Buchstaben bestehenden Sprachen. Das Element bei Index 0 ist die aktuell ausgewählte Sprache. Dies kann hilfreich sein, wenn Sie logische Entscheidungen basierend auf der Sprache treffen müssen.

0
jj0b

oh ok, ich kenne ShareKit nicht, aber ich schätze, Sie können die Textdateien nicht bearbeiten und Ihre neuen Wörter einfach zu den Dateien hinzufügen, oder?

dann können Sie in Betracht ziehen, Ihre eigene "Wörterbuch" -Datei zu erstellen und zu lokalisieren. Dann lesen Sie sie und legen Sie sie in ein NSDictionary, in dem Sie die einzelnen Wörter/Werte lesen können "myDict.plist" mit Schlüssel "Begrüßung" vom Typ String mit dem Wert "ciao" für das italienische und "hallo" im englischen

NSString *bundle = [[ NSBundle mainBundle] pathForResource:@"myDict" ofType:@"plist"];
NSMutableDictionary *savedStock = [[NSMutableDictionary alloc] initWithContentsOfFile:bundle];
NSString *greetingsTranslatedInTheGoodLanguage = [savedStock objectForKey:@"greeting"];
// just to try what you have read:
NSLog (@"translated by your own dictionary: %@", greetingsTranslatedInTheGoodLanguage);
[savedStock release];

luca

pslesen Sie auch die Kommentare ...

0
meronix