Gibt es eine einfache Möglichkeit, zurückzulesen, ob die eingestellte Sprache ein Dezimalkomma oder einen Dezimalpunkt verwendet?
Antworten
Zu viele Anzeigen?EDIT: Aktualisierung aufgrund des Vorschlags von @Algar; Sie können direkt verwenden:
char separatorChar = DecimalFormatSymbols.getInstance().getDecimalSeparator();
Da es immer eine Instanz von DecimalFormatSymbols
.
NumberFormat nf = NumberFormat.getInstance();
if (nf instanceof DecimalFormat) {
DecimalFormatSymbols sym = ((DecimalFormat) nf).getDecimalFormatSymbols();
char decSeparator = sym.getDecimalSeparator();
}
Dokumente:
NumberFormat
, DecimalFormat
, DecimalFormatSymbols
Nach der DecimalFormat-Dokumente, anscheinend Aufruf NumberFormat.getInstance() ist sicher, aber kann eine andere Unterklasse als DecimalFormat zurückgeben (die andere Option, die ich sehe ist ChoiceFormat). Ich glaube, für die Mehrheit der Instanzen sollte es ein DecimalFormat sein, und dann können Sie vergleichen decSeparator
gegen eine ,
y .
um zu sehen, welches Format er verwendet.
Ich habe das ausprobiert und es hat gut funktioniert...
String osVersion = System.getProperty("os.version");
String PhoneModel = android.os.Build.MODEL;
String locale = this.getResources().getConfiguration().locale.getDisplayCountry();
char decSeparator = '*';
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
decSeparator = dfs.getDecimalSeparator();
String androidVersion = android.os.Build.VERSION.RELEASE;
String prologue = String.format("OS verson = %s PhoneModel = %s locale = %s DecimalFormatSymbol = [%c] androidVersion = %s ",
osVersion ,PhoneModel, locale, decSeparator,androidVersion);
Können Sie verwenden:
Currency currency = Currency.getInstance(device_locale);
als verwenden currency.getSymbol()
für das Symbol. Als Standard-Locale für das Gerät können Sie verwenden:
@TargetApi(Build.VERSION_CODES.N)
public static Locale getCurrentLocale(Context c) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return c.getResources().getConfiguration().getLocales().get(0);
} else {
//noinspection deprecation
return c.getResources().getConfiguration().locale;
}
}