DroidFish: Allow setting user interface language.

Made it possible to change the user interface language to be different
from the Android system default language.
This commit is contained in:
Peter Osterlund 2018-02-25 08:47:34 +01:00
parent 0f76b350fe
commit c64896b61f
3 changed files with 62 additions and 0 deletions

View File

@ -6,6 +6,7 @@
<string name="time_control_default">120000</string>
<string name="time_increment_default">0</string>
<string name="squareSelectType_default">1</string>
<string name="language_default">default</string>
<string name="font_size_default">12</string>
<string name="thinking_arrows_default">4</string>
<string name="scroll_sensitivity_default">2</string>
@ -324,6 +325,8 @@ you are not actively using the program.\
<string name="prefs_leftHanded_summary">Controls on left side in landscape mode</string>
<string name="prefs_squareSelectType_title">Square selection</string>
<string name="prefs_squareSelectType_summary">Control how selecting squares on the chess board behaves</string>
<string name="prefs_language_title">Language</string>
<string name="prefs_language_summary">User interface language</string>
<string name="prefs_fontSize_title">Text Size</string>
<string name="prefs_fontSize_summary">Font size for move list and game information</string>
<string name="prefs_largeButtons_title">Large Buttons</string>
@ -593,6 +596,38 @@ you are not actively using the program.\
<item>0</item>
<item>1</item>
</string-array>
<string-array name="language_texts">
<item>System default</item>
<item>English</item>
<item>Belarusian</item>
<item>German</item>
<item>Spanish</item>
<item>French</item>
<item>Italian</item>
<item>Korean</item>
<item>Dutch</item>
<item>Polish</item>
<item>Portuguese</item>
<item>Russian</item>
<item>Turkish</item>
<item>Ukrainian</item>
</string-array>
<string-array name="language_values">
<item>default</item>
<item>en</item>
<item>be</item>
<item>de</item>
<item>es</item>
<item>fr</item>
<item>it</item>
<item>ko</item>
<item>nl</item>
<item>pl</item>
<item>pt</item>
<item>ru</item>
<item>tr</item>
<item>uk</item>
</string-array>
<string-array name="font_size_texts">
<item>Small</item>
<item>Medium</item>

View File

@ -129,6 +129,14 @@
android:summary="@string/prefs_fullScreenMode_summary"
android:defaultValue="false">
</CheckBoxPreference>
<ListPreference
android:key="language"
android:title="@string/prefs_language_title"
android:summary="@string/prefs_language_summary"
android:entryValues="@array/language_values"
android:entries="@array/language_texts"
android:defaultValue="@string/language_default">
</ListPreference>
<ListPreference
android:key="fontSize"
android:title="@string/prefs_fontSize_title"

View File

@ -1228,6 +1228,8 @@ public class DroidFish extends Activity
useWakeLock = settings.getBoolean("wakeLock", false);
setWakeLock(useWakeLock);
String lang = settings.getString("language", "default");
setLanguage(lang);
int fontSize = getIntSetting("fontSize", 12);
int statusFontSize = fontSize;
Configuration config = getResources().getConfiguration();
@ -1317,6 +1319,23 @@ public class DroidFish extends Activity
Util.overrideViewAttribs(findViewById(R.id.main));
}
private final void setLanguage(String lang) {
Locale newLocale;
if (lang.equals("default")) {
newLocale = Resources.getSystem().getConfiguration().locale;
} else {
newLocale = new Locale(lang);
}
if (!newLocale.getLanguage().equals(Locale.getDefault().getLanguage())) {
Resources res = getResources();
Configuration config = res.getConfiguration();
config.locale = newLocale;
res.updateConfiguration(config, res.getDisplayMetrics());
Locale.setDefault(newLocale);
recreate();
}
}
/**
* Change the Pieces into figurine or regular (i.e. letters) display
*/