Merge branch 'fix155' into 'master'
Change client language from the app options (#155) Bug: ActionBar Language does not change. Edit: To make it more clear, you have to restart the app manually for the action bar language to be changed. See merge request !65
This commit is contained in:
commit
04a05e3c52
@ -30,4 +30,45 @@
|
||||
<item>lightWithDarkActionBar</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="languageValues">
|
||||
<item></item>
|
||||
<item>ar</item>
|
||||
<item>bg</item>
|
||||
<item>ca</item>
|
||||
<item>cs</item>
|
||||
<item>de</item>
|
||||
<item>el</item>
|
||||
<item>en-rGB</item>
|
||||
<item>eo</item>
|
||||
<item>es</item>
|
||||
<item>eu</item>
|
||||
<item>fa</item>
|
||||
<item>fi</item>
|
||||
<item>fr</item>
|
||||
<item>gl</item>
|
||||
<item>gu</item>
|
||||
<item>he</item>
|
||||
<item>hu</item>
|
||||
<item>it</item>
|
||||
<item>ja</item>
|
||||
<item>ko</item>
|
||||
<item>lt</item>
|
||||
<item>nb</item>
|
||||
<item>nl</item>
|
||||
<item>pl</item>
|
||||
<item>pt-rBR</item>
|
||||
<item>ro</item>
|
||||
<item>ru</item>
|
||||
<item>sk</item>
|
||||
<item>sl</item>
|
||||
<item>sr</item>
|
||||
<item>sv</item>
|
||||
<item>tr</item>
|
||||
<item>ug</item>
|
||||
<item>uk</item>
|
||||
<item>zh</item>
|
||||
<item>zh-rCN</item>
|
||||
<item>zh-rHK</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
||||
|
@ -259,6 +259,8 @@
|
||||
<string name="minsdk_up_to_maxsdk">%1$s up to %2$s</string>
|
||||
<string name="not_on_same_wifi">Your device is not on the same WiFi as the local repo you just added! Try joining this network: %s</string>
|
||||
<string name="requires_features">Requires: %1$s</string>
|
||||
<string name="pref_language">Language</string>
|
||||
<string name="pref_language_default">System Default</string>
|
||||
|
||||
<string name="app_icon">App icon</string>
|
||||
<string name="repo_icon">Repo icon</string>
|
||||
|
@ -20,6 +20,10 @@
|
||||
android:title="@string/update_history" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="@string/display">
|
||||
<ListPreference android:title="@string/pref_language"
|
||||
android:key="language"
|
||||
android:defaultValue=""
|
||||
android:entryValues="@array/languageValues" />
|
||||
<CheckBoxPreference android:title="@string/showPermissions"
|
||||
android:defaultValue="false"
|
||||
android:key="showPermissions"/>
|
||||
|
@ -31,6 +31,7 @@ import android.content.SharedPreferences;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.res.Configuration;
|
||||
import android.net.Uri;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.Build;
|
||||
@ -39,6 +40,7 @@ import android.os.Message;
|
||||
import android.os.Messenger;
|
||||
import android.os.RemoteException;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.text.TextUtils;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.nostra13.universalimageloader.cache.disc.impl.LimitedAgeDiscCache;
|
||||
@ -58,6 +60,7 @@ import org.fdroid.fdroid.net.WifiStateChangeService;
|
||||
|
||||
import java.io.File;
|
||||
import java.security.Security;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
|
||||
public class FDroidApp extends Application {
|
||||
@ -130,8 +133,25 @@ public class FDroidApp extends Application {
|
||||
}
|
||||
}
|
||||
|
||||
public static void updateLanguage(Context c) {
|
||||
SharedPreferences prefs = PreferenceManager
|
||||
.getDefaultSharedPreferences(c);
|
||||
String lang = prefs.getString("language", "");
|
||||
updateLanguage(c, lang);
|
||||
}
|
||||
|
||||
public static void updateLanguage(Context c, String lang) {
|
||||
Configuration cfg = new Configuration();
|
||||
if (!TextUtils.isEmpty(lang))
|
||||
cfg.locale = new Locale(lang);
|
||||
else
|
||||
cfg.locale = Locale.getDefault();
|
||||
c.getResources().updateConfiguration(cfg, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
updateLanguage(this);
|
||||
super.onCreate();
|
||||
|
||||
// Needs to be setup before anything else tries to access it.
|
||||
|
@ -55,6 +55,7 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
|
||||
public static final String PREF_LOCAL_REPO_BONJOUR = "localRepoBonjour";
|
||||
public static final String PREF_LOCAL_REPO_NAME = "localRepoName";
|
||||
public static final String PREF_LOCAL_REPO_HTTPS = "localRepoHttps";
|
||||
public static final String PREF_LANGUAGE = "language";
|
||||
public static final String PREF_ENABLE_PROXY = "enableProxy";
|
||||
public static final String PREF_PROXY_HOST = "proxyHost";
|
||||
public static final String PREF_PROXY_PORT = "proxyPort";
|
||||
|
@ -10,12 +10,16 @@ import android.preference.Preference;
|
||||
import android.support.v4.preference.PreferenceFragment;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import org.fdroid.fdroid.FDroid;
|
||||
import org.fdroid.fdroid.FDroidApp;
|
||||
import org.fdroid.fdroid.Preferences;
|
||||
import org.fdroid.fdroid.PreferencesActivity;
|
||||
import org.fdroid.fdroid.R;
|
||||
import org.fdroid.fdroid.installer.CheckRootAsyncTask;
|
||||
import org.fdroid.fdroid.installer.Installer;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class PreferencesFragment extends PreferenceFragment
|
||||
implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
@ -33,6 +37,7 @@ public class PreferencesFragment extends PreferenceFragment
|
||||
Preferences.PREF_LOCAL_REPO_BONJOUR,
|
||||
Preferences.PREF_LOCAL_REPO_NAME,
|
||||
Preferences.PREF_LOCAL_REPO_HTTPS,
|
||||
Preferences.PREF_LANGUAGE,
|
||||
Preferences.PREF_CACHE_APK,
|
||||
Preferences.PREF_EXPERT,
|
||||
Preferences.PREF_ROOT_INSTALLER,
|
||||
@ -134,6 +139,16 @@ public class PreferencesFragment extends PreferenceFragment
|
||||
checkSummary(key, R.string.local_repo_https_on);
|
||||
break;
|
||||
|
||||
case Preferences.PREF_LANGUAGE:
|
||||
langSpinner(key);
|
||||
entrySummary(key);
|
||||
if (changing) {
|
||||
result |= PreferencesActivity.RESULT_RESTART;
|
||||
getActivity().setResult(result);
|
||||
FDroidApp.updateLanguage(this.getActivity());
|
||||
}
|
||||
break;
|
||||
|
||||
case Preferences.PREF_CACHE_APK:
|
||||
checkSummary(key, R.string.cache_downloaded_on);
|
||||
break;
|
||||
@ -278,6 +293,18 @@ public class PreferencesFragment extends PreferenceFragment
|
||||
});
|
||||
}
|
||||
|
||||
private void langSpinner(String key) {
|
||||
ListPreference pref = (ListPreference)findPreference(key);
|
||||
final String[] langValues = getResources().getStringArray(R.array.languageValues);
|
||||
String[] langNames = new String[langValues.length];
|
||||
langNames[0] = getString(R.string.pref_language_default);
|
||||
for (int i = 1; i < langValues.length; i++) {
|
||||
Locale appLoc = new Locale(langValues[i]);
|
||||
langNames[i] = appLoc.getDisplayLanguage(appLoc);
|
||||
}
|
||||
pref.setEntries(langNames);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
|
Loading…
x
Reference in New Issue
Block a user