Fix decimal point internationalization
Bug: 32874470
Test: manual - verfied in US English, Brazilian Portuguese, Mexican
Spanish, Canadian French, and Farsi.
Change-Id: Ie7a4e2970de3290423796a6690cc0c89f457dbc9
diff --git a/res/layout/pad_numeric.xml b/res/layout/pad_numeric.xml
index e9f7c9b..2f301e8 100644
--- a/res/layout/pad_numeric.xml
+++ b/res/layout/pad_numeric.xml
@@ -91,7 +91,6 @@
android:id="@+id/dec_point"
style="@style/PadButtonStyle.Numeric"
android:contentDescription="@string/desc_dec_point"
- android:text="@string/dec_point"
app:layout_row="3"
app:layout_column="0" />
diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java
index f13a9ed..0a5612b 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/src/com/android/calculator2/Calculator.java
@@ -79,6 +79,7 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
+import java.text.DecimalFormatSymbols;
import static com.android.calculator2.CalculatorFormula.OnFormulaContextMenuClickListener;
@@ -323,10 +324,13 @@
mPadViewPager = (ViewPager) findViewById(R.id.pad_pager);
mDeleteButton = findViewById(R.id.del);
mClearButton = findViewById(R.id.clr);
- mEqualButton = findViewById(R.id.pad_numeric).findViewById(R.id.eq);
+ final View numberPad = findViewById(R.id.pad_numeric);
+ mEqualButton = numberPad.findViewById(R.id.eq);
if (mEqualButton == null || mEqualButton.getVisibility() != View.VISIBLE) {
mEqualButton = findViewById(R.id.pad_operator).findViewById(R.id.eq);
}
+ final TextView decimalPointButton = (TextView) numberPad.findViewById(R.id.dec_point);
+ decimalPointButton.setText(getDecimalSeparator());
mInverseToggle = (TextView) findViewById(R.id.toggle_inv);
mModeToggle = (TextView) findViewById(R.id.toggle_mode);
@@ -1352,6 +1356,15 @@
}
/**
+ * Since we only support LTR format, using the RTL comma does not make sense.
+ */
+ private String getDecimalSeparator() {
+ final char defaultSeparator = DecimalFormatSymbols.getInstance().getDecimalSeparator();
+ final char rtlComma = '\u066b';
+ return defaultSeparator == rtlComma ? "," : String.valueOf(defaultSeparator);
+ }
+
+ /**
* Clean up animation for context menu.
*/
@Override