2010-12-21 9 views
1

Ich verwende genstrings, um .strings Dateien aus Quellcodedateien in meinem Projekt zu generieren. Obwohl das Projekt technisch gesehen eine Cappuccino App ist, sollte diese Frage gleichermaßen für jedes Projekt gelten, das .strings Dateien verwendet.Wie behalte ich Flags/Breite in einem printf-formatierten NSString, der als Schlüssel für NSLocalizedString verwendet wird?

Ich habe eine Format-Zeichenfolge, die ich gerne lokalisiert werden würde: @"%d:%02d %@". Es dient zur Anzeige von Zeitwerten. Wenn dies eine OSX/iOS-App wäre, würde ich die eingebaute Datetime-Formatierung verwenden, aber da es sich um Cappuccino handelt, muss ich meine eigene rollen. Wenn ich genstrings ausführen, erzeugt es diesen Wert für diesen Schlüssel: .

Dies ist, wie es in der Localizable.strings Datei erscheint:

 
/* ShortLocalTimeFormat */ 
"%d:%02d %@" = "%1$d:%2$d %[email protected]"; 

mit dem folgenden Befehl: genstrings -o Resources/en.lproj -s CPLocalizedString *.j */*.j

Wieder ignorieren, dass ich CPLocalizedString statt NSLocalizedStrings und *.j statt *.m bin mit, wie Diese Werte sind für Cappuccino geeignet. Beachten Sie, dass die 02 in %02d in der resultierenden Formatzeichenfolge verworfen wird. Wenn ich es erneut mit der Option -noPositionalParameters ausführen, bleibt nur die Zeichenfolge wie folgt: genstrings -o Resources/en.lproj -noPositionalParameters -s CPLocalizedString *.j */*.j.

 
/* ShortLocalTimeFormat */ 
"%d:%02d %@" = "%d:%02d %@"; 

Ist das ein Fehler in genstrings, oder ist es nicht möglich, Fahnen/Breite in Format-Strings zu verwenden, während Positionsparameter zu halten?

Antwort

0

Wenn dies ein Objective-C-Projekt wäre, würde ich die Formatzeichenfolgen auf "%[email protected] %[email protected]" verkürzen und eine NSDateFormatter verwenden, um die Zeitzeichenfolge zu generieren. Wenn die Klasse nicht verfügbar ist, würde ich die Zwischenzeit-Zeichenfolge selbst generieren und die Zeichenfolge als Parameter für die lokalisierte Formatzeichenfolge verwenden, anstatt Stunden/Minuten direkt an die lokalisierte Formatzeichenfolge zu übergeben.

+0

Ich nehme an, der 'HH: MM' Teil einer Zeit Zeichenfolge ändert sich nicht wirklich zwischen Gebietsschemata ... oder, wenn es so ist, bezweifle ich, dass ich eine dieser Gebietsschemas unterstützen werde. Keine Worte der Weisheit auf 'Genstrings'? –

0

Ich habe gerade diesen Fehler auch bemerkt; es ist nicht nur du. Es scheint jedoch nur für %d Spezifizierer auftreten - ich verwende %02d und es wird %1$d, aber %.02f wird zu %1$.02f.

Ich habe a bug abgelegt.