[tor-commits] [orbot/master] updates for manually setting locales

n8fr8 at torproject.org n8fr8 at torproject.org
Mon Feb 27 04:24:19 UTC 2012


commit 3a9a26929613014399e1a484a140857f8266904c
Author: Nathan Freitas <nathan at freitas.net>
Date:   Fri Feb 24 00:13:27 2012 -0500

    updates for manually setting locales
---
 res/values/strings.xml                             |    4 +++
 res/xml/preferences.xml                            |   13 +++++++++-
 src/org/torproject/android/Orbot.java              |   24 ++++++++++++++++++++
 src/org/torproject/android/OrbotApp.java           |    8 +++++-
 .../android/settings/SettingsPreferences.java      |   23 +++++++++++++++++++
 5 files changed, 68 insertions(+), 4 deletions(-)

diff --git a/res/values/strings.xml b/res/values/strings.xml
index 46ba1dc..61ba4fa 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -260,4 +260,8 @@
 
 <string name="notification_using_bridges">Bridges enabled!</string>
 <string name="default_bridges"></string>
+
+<string name="set_locale_title">Set Locale</string>
+<string name="set_locale_summary">Choose the locale and language for Orbot</string>
+
 </resources>
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index b7b5a43..c6bfcab 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -23,6 +23,15 @@ android:summary="@string/pref_use_persistent_notifications"
 android:enabled="true" 
 android:title="@string/pref_use_persistent_notifications_title"/>
 
+
+ <ListPreference android:title="@string/set_locale_title"
+   android:key="pref_default_locale"
+   android:entryValues="@array/languages_values"
+   android:entries="@array/languages"
+   android:summary="@string/set_locale_summary"
+   android:defaultValue="en">
+ </ListPreference>
+
 <!-- 
 <CheckBoxPreference 
 android:defaultValue="false" 
@@ -92,12 +101,12 @@ android:summary="@string/use_only_these_specified_nodes"/>
 </PreferenceCategory> 
 <PreferenceCategory android:title="@string/bridges">
 
-<CheckBoxPreference android:defaultValue="true" 
+<CheckBoxPreference android:defaultValue="false" 
 android:title="@string/use_bridges" android:key="pref_bridges_enabled" 
 android:summary="@string/enable_alternate_entrance_nodes_into_the_tor_network"/>
 
 <CheckBoxPreference android:key="pref_bridges_obfuscated"
-     android:defaultValue="true" 
+     android:defaultValue="false" 
 android:title="@string/bridges_obfuscated"
 android:summary="@string/enable_if_configured_bridges_are_obfuscated_bridges"/>
 
diff --git a/src/org/torproject/android/Orbot.java b/src/org/torproject/android/Orbot.java
index 93013ba..d71567f 100644
--- a/src/org/torproject/android/Orbot.java
+++ b/src/org/torproject/android/Orbot.java
@@ -3,6 +3,8 @@
 
 package org.torproject.android;
 
+import java.util.Locale;
+
 import org.torproject.android.service.ITorService;
 import org.torproject.android.service.ITorServiceCallback;
 import org.torproject.android.service.TorServiceConstants;
@@ -22,6 +24,7 @@ import android.content.ServiceConnection;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
 import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.res.Configuration;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
@@ -74,6 +77,7 @@ public class Orbot extends Activity implements OnLongClickListener, TorConstants
       //might want to look at whether we need to call this every time
       //or whether binding to the service is enough
            	
+        	setLocale();
         
         	bindService();
            	startService(new Intent(INTENT_TOR_SERVICE));
@@ -342,6 +346,8 @@ public class Orbot extends Activity implements OnLongClickListener, TorConstants
 	protected void onResume() {
 		super.onResume();
 		
+		setLocale();
+		
 		if (getIntent() == null)
 			return;
 		
@@ -897,4 +903,22 @@ public class Orbot extends Activity implements OnLongClickListener, TorConstants
                 
     }
     
+    private void setLocale ()
+    {
+    	
+    	SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
+
+        Configuration config = getResources().getConfiguration();
+
+        String lang = settings.getString(PREF_DEFAULT_LOCALE, "");
+        
+        if (! "".equals(lang) && ! config.locale.getLanguage().equals(lang))
+        {
+        	Locale locale = new Locale(lang);
+            Locale.setDefault(locale);
+            config.locale = locale;
+            getResources().updateConfiguration(config, getResources().getDisplayMetrics());
+        }
+    }
+    
 }
diff --git a/src/org/torproject/android/OrbotApp.java b/src/org/torproject/android/OrbotApp.java
index 8d78a06..c5528c9 100644
--- a/src/org/torproject/android/OrbotApp.java
+++ b/src/org/torproject/android/OrbotApp.java
@@ -12,12 +12,13 @@ public class OrbotApp extends Application implements TorConstants
 
 	private Locale locale;
 	private final static String DEFAULT_LOCALE = "en";
+	private SharedPreferences settings;
 	
 	@Override
     public void onCreate() {
         super.onCreate();
         
-        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
+        settings = PreferenceManager.getDefaultSharedPreferences(this);
 
         Configuration config = getResources().getConfiguration();
 
@@ -38,8 +39,11 @@ public class OrbotApp extends Application implements TorConstants
     {
         super.onConfigurationChanged(newConfig);
 
-        if (locale != null)
+        String lang = settings.getString(PREF_DEFAULT_LOCALE, DEFAULT_LOCALE);
+
+        if (! "".equals(lang) && ! newConfig.locale.getLanguage().equals(lang))
         {
+            locale = new Locale(lang);
             newConfig.locale = locale;
             Locale.setDefault(locale);
             getResources().updateConfiguration(newConfig, getResources().getDisplayMetrics());
diff --git a/src/org/torproject/android/settings/SettingsPreferences.java b/src/org/torproject/android/settings/SettingsPreferences.java
index 35c4314..aa93e5a 100644
--- a/src/org/torproject/android/settings/SettingsPreferences.java
+++ b/src/org/torproject/android/settings/SettingsPreferences.java
@@ -3,6 +3,8 @@
 
 package org.torproject.android.settings;
 
+import java.util.Locale;
+
 import org.torproject.android.R;
 import org.torproject.android.R.xml;
 import org.torproject.android.TorConstants;
@@ -12,6 +14,7 @@ import org.torproject.android.service.TorTransProxy;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
+import android.content.res.Configuration;
 import android.os.Bundle;
 import android.preference.CheckBoxPreference;
 import android.preference.Preference;
@@ -31,6 +34,7 @@ public class SettingsPreferences
 	private Preference prefTransProxyApps = null;
 	private CheckBoxPreference prefHiddenServices = null;
 	private CheckBoxPreference prefRequestRoot = null;
+	private Preference prefLocale = null;
 	
 	private boolean hasRoot = false;
 	
@@ -61,11 +65,16 @@ public class SettingsPreferences
 		super.onResume();
 	
 		int REQUEST_ROOT_IDX = 1;
+		int SET_LOCALE_IDX = 3;
+
 		int GENERAL_GROUP_IDX = 0;
 		
 		prefRequestRoot = ((CheckBoxPreference)((PreferenceCategory)getPreferenceScreen().getPreference(GENERAL_GROUP_IDX)).getPreference(REQUEST_ROOT_IDX));
 		prefRequestRoot.setOnPreferenceClickListener(this);
 
+		prefLocale = (((PreferenceCategory)getPreferenceScreen().getPreference(GENERAL_GROUP_IDX)).getPreference(SET_LOCALE_IDX));
+		prefLocale.setOnPreferenceClickListener(this);
+				
 		prefCBTransProxy = ((CheckBoxPreference)((PreferenceCategory)this.getPreferenceScreen().getPreference(TRANSPROXY_GROUP_IDX)).getPreference(0));
 		prefcBTransProxyAll = (CheckBoxPreference)((PreferenceCategory)this.getPreferenceScreen().getPreference(TRANSPROXY_GROUP_IDX)).getPreference(1);
 		prefTransProxyApps = ((PreferenceCategory)this.getPreferenceScreen().getPreference(TRANSPROXY_GROUP_IDX)).getPreference(2);
@@ -155,6 +164,20 @@ public class SettingsPreferences
 			((PreferenceCategory)this.getPreferenceScreen().getPreference(HIDDEN_SERVICE_PREF_IDX)).getPreference(2).setEnabled(prefHiddenServices.isChecked());
 			
 		}
+		else if (preference == prefLocale)
+		{
+			 SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
+
+		        Configuration config = getResources().getConfiguration();
+
+		        String lang = settings.getString("pref_default_locale", "");
+		     
+	        	Locale locale = new Locale(lang);
+	            Locale.setDefault(locale);
+	            config.locale = locale;
+	            getResources().updateConfiguration(config, getResources().getDisplayMetrics());
+	            
+		}
 		else
 		{
 			prefcBTransProxyAll.setEnabled(prefCBTransProxy.isChecked());





More information about the tor-commits mailing list