NSLocalizedString: Warum addiert genstrings 1 $ und 2 $ zu meinen Formatbezeichnern?

8

Ich lokalisiere meine iPad / iPhone-App mit genstrings Classes/*.m , um die Localizable.strings -Datei zu generieren. Die meisten Strings funktionieren gut und ich bekomme die erwartete Ausgabe, aber mit einigen Strings fügt genstrings 1$ oder 1$ in der Mitte meiner Formatbezeichner wie folgt hinzu:

%Vor%

Ich hatte dieses Problem nicht mit anderen Apps, und wie Sie sehen, ist es nicht konsistent. Es scheint aber auch nicht zufällig zu sein, denn wenn ich genstrings für die gleichen Klassendateien wieder aktiviere, sind die 1$ usw. immer an der gleichen Stelle.

Ich kann sie belassen und die Strings funktionieren mit der korrekten Formatierung, aber ich habe sie manuell entfernt, weil ich nicht sicher bin, was% code% tun wird. Es ist nervig, die Strings manuell durchlaufen zu müssen (und ich werde wahrscheinlich irgendwann einen verpassen).

Ich denke, es könnte ein Problem mit der Textcodierung sein? Oder kann ich sie sicher in meinen Strings belassen und sie einfach ignorieren?

    
Domestic Cat 05.01.2011, 21:27
quelle

3 Antworten

13

Diese Zahlen beziehen sich auf die Argumentposition des Ersatzwerts. Zum Beispiel bedeutet %2$i "Ersetzen Sie dies durch das zweite Argument, das eine ganze Zahl sein sollte." Dies ist nützlich beim Lokalisieren von Sprachen, die unterschiedliche Wortanordnungen verwenden, da Dinge in einer anderen Reihenfolge als Englisch ersetzt werden können.

Mit anderen Worten, sie sind sicher zu verlassen oder zu entfernen, und sie werden nützlich sein für natürlich klingende Übersetzungen in andere Sprachen.

    
Justin Spahr-Summers 05.01.2011, 21:29
quelle
6

N$ teilt den printf -style Funktionen und Methoden die strikte Reihenfolge der Felder in der Formatzeichenfolge mit. Auf diese Weise müssen Sie bei der Lokalisierung in einer Sprache, in der die Reihenfolge anders ist, den Code nicht ändern - nur die Formatzeichenfolge:

%Vor%

Ausgabe:

%Vor%     
Jonathan Grynspan 05.01.2011 21:30
quelle
3

Sie können die Erzeugung von Positionsparametern ausschalten, wenn Sie es nicht mögen, indem Sie

übergeben

-noPositionalParameters

zu genstrings.

    
Ron Davis 07.07.2011 16:18
quelle