Bitte beachten Sie
Ich frage nicht nach NSLocalizedString()
das Makro. Ich frage nach der NSString
-Klassenfunktion + (instancetype)localizedStringWithFormat:(NSString *)format, ...
.
Dies sind zwei verschiedene Dinge.
Frage
Ich versuche, die NSString
-Klassenmethode localizedStringWithFormat
zu verwenden, aber ich kann einfach nicht herausfinden, wie ich sie benutzen soll.
Was auch immer ich versuche, die Wörter scheinen nicht in der Übersetzungsdatei mit Xcode 6 export for localization
zu erscheinen. Ich habe hier die beiden besten Varianten ausprobiert, aber nichts.
Das Beispiel in der Dokumentation zeigt ...
%Vor%Bedeutet das, dass ich die übersetzten Wörter von den Zahlen trennen muss? Könnte ich nicht einfach benutzen ...
%Vor%Wenn ich das benutzen könnte, was wäre dann die übersetzte Phrase und was wäre die Übersetzung?
Wenn nicht, warum überhaupt? Warum nicht einfach benutzen ...
%Vor%Was ist der Unterschied zu diesem letzten?
Wie auch immer, kann mir bitte jemand zeigen, wie man die eigentlichen Wörter hier übersetzt.
Aktualisieren
OK, im Moment benutze ich eine dumme Arbeit, die einfach alles zu missbrauchen scheint, lol.
Wenn ich das tue ...
%Vor%Dann übersetzte es das Wort "Kosten", aber verwendet nicht das korrekte Gebietsschema für die Zahlen.
Wenn ich ...
verwende %Vor%Dann ignoriert Xcode "Export for localization" es komplett und es wird nichts über "Cost" zur Übersetzungsdatei hinzugefügt, so dass nichts übersetzt wird.
Also, ich habe darauf zurückgegriffen, ...
zu verwenden %Vor%Dies fügt der Übersetzungsdatei "Kosten" hinzu und konvertiert die Zahl in das richtige Gebietsschema, aber es scheint, als würde ich hier eine Menge überflüssiger Dinge verwenden.
Wenn Sie an NSLocalizedStrings denken - denken Sie an Schlüssel / Wert. Sie können einige Tricks mit der Taste spielen, wie mit Ihrem zweiten Beispiel:
%Vor%Das ist ein Schlüssel - der Wert wäre wahrscheinlich etwas, das wie @ aussieht. "SomeOtherWord:% f", -% f wird danach immer noch als Teil einer Formatzeichenfolge verwendet.
Das letzte Beispiel, das Sie gegeben haben:
%Vor%Erlaubt Ihnen, die Übersetzung des Wortes "Kosten" mit dem Zurücksetzen der Zeichenfolge zu trennen, was in Ordnung sein könnte - aber nicht ausreichen könnte, um Ihre Bedeutung in allen Sprachen zu vermitteln. Vielleicht gibt es eine Sprache, die Sie nicht beschriften würden: Wert, nur die Übersetzung von "Kosten" bringt Sie nicht zu einer guten Lokalisierung.
NSLocalizedString kann bei den meisten dieser Situationen helfen, aber die Lokalisierung ist schwierig und mit speziellen Fällen gefüllt, so dass Ihr Code auch spezielle Fälle haben kann - versuchen Sie einfach, diese vom Rest der Logik isoliert zu halten.
BEARBEITEN: Adressieren der tatsächlichen Frage, wie sie sich entwickelt hat:
%Vor%Ändert, wie Formatbezeichner ersetzt werden.
Aus Apples NSString-Dokumenten:
Diskussion
Diese Methode entspricht der Verwendung von initWithFormat: locale: und übergibt das aktuelle Gebietsschema als Gebietsschema-Argument.
Tags und Links objective-c ios nsstring nslocalizedstring stringwithformat