16 Stimmen

Währung für das iPhone lokalisieren

Ich möchte, dass meine iPhone-App die Eingabe, Anzeige und Speicherung von Währungsbeträgen unter Verwendung des entsprechenden Symbols ($, €, , ¥, etc.) für den Benutzer ermöglicht.

Würde NSNumberFormatter alles tun, was ich brauche? Was passiert, wenn ein Benutzer sein Gebietsschema wechselt und diese Beträge (Dollar, Yen usw.) als NSDecimalNumbers gespeichert werden? Ich nehme an, um sicher zu sein, ist es notwendig, irgendwie zu erfassen das Gebietsschema zum Zeitpunkt der Eingabe und dann das Währungssymbol und speichern Sie sie in meiner Instanz zusammen mit dem NSDecimalNumber ivar, so dass sie ausgepackt werden können und entsprechend auf der Straße angezeigt, sollte der Benutzer ihre Gebietsschema seit der Zeit geändert, wenn das Element erstellt wurde?

Sorry, ich habe wenig Erfahrung in der Lokalisierung, so dass ich auf ein paar kurze Hinweise hoffe, bevor ich einsteige. Schließlich, jede Einsicht auf, wie Sie diese Art der Eingabe angesichts der Einschränkungen der iPhone-Tastaturen behandeln?

32voto

klaaspieter Punkte 2666

NSNumberFormatter ist definitiv der richtige Weg! Sie können eine NSLocale auf den NSNumberFormatter setzen, dann verhält sich der Formatter automatisch entsprechend dieser Locale. Das Standardgebietsschema für einen Zahlenformatierer ist immer die Währung für das vom Benutzer ausgewählte Regionalformat.

NSDecimalNumber *someAmount = [NSDecimalNumber decimalNumberWithString:@"5.00"];

NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

NSLog(@"%@", [currencyFormatter stringFromNumber:someAmount]);

Dadurch wird der Betrag "5,00" entsprechend dem Standard-Regionalformat des Benutzers protokolliert. Wenn Sie die Währung ändern möchten, können Sie dies einstellen:

NSLocale *aLocale = [[NSLocale alloc] initWithLocaleIdentifier: "nl-NL"]
[currencyFormatter setLocale:aLocale];

Damit wird die Standardwährung für dieses Gebietsschema ausgewählt.

Oft wird jedoch nicht in der Landeswährung des Nutzers abgerechnet, sondern in Ihrer eigenen. Um zu erzwingen NSNumberFormatter verwenden, um in Ihrer Währung zu formatieren, während Sie die Zahlenformatierung in den Benutzereinstellungen beibehalten:

currencyFormatter.currencyCode = @"USD"
currencyFormatter.internationalCurrencySymbol = @"$"
currencyFormatter.currencySymbol = @"$"

In en-US wird dies wie folgt formatiert $5.00 in nl-NL ist es $ 5,00 .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X