diff --git a/app/src/main/java/com/limelight/AppView.java b/app/src/main/java/com/limelight/AppView.java
index f73436e0..d13571a6 100644
--- a/app/src/main/java/com/limelight/AppView.java
+++ b/app/src/main/java/com/limelight/AppView.java
@@ -13,6 +13,7 @@ import com.limelight.grid.AppGridAdapter;
import com.limelight.nvstream.http.GfeHttpResponseException;
import com.limelight.nvstream.http.NvApp;
import com.limelight.nvstream.http.NvHTTP;
+import com.limelight.preferences.PreferenceConfiguration;
import com.limelight.utils.Dialog;
import com.limelight.utils.SpinnerDialog;
import com.limelight.utils.UiHelper;
@@ -51,6 +52,16 @@ public class AppView extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ String locale = prefs.getString(PreferenceConfiguration.LANGUAGE_PREF_STRING,
+ PreferenceConfiguration.DEFAULT_LANGUAGE);
+ if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) {
+ Configuration config = new Configuration(getResources().getConfiguration());
+ config.locale = new Locale(locale);
+ getResources().updateConfiguration(config, getResources().getDisplayMetrics());
+ }
+
setContentView(R.layout.activity_app_view);
UiHelper.notifyNewRootView(this);
diff --git a/app/src/main/java/com/limelight/Game.java b/app/src/main/java/com/limelight/Game.java
index 9e1ecbd4..3d9c3f5e 100644
--- a/app/src/main/java/com/limelight/Game.java
+++ b/app/src/main/java/com/limelight/Game.java
@@ -87,6 +87,15 @@ public class Game extends Activity implements SurfaceHolder.Callback,
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ String locale = prefs.getString(PreferenceConfiguration.LANGUAGE_PREF_STRING,
+ PreferenceConfiguration.DEFAULT_LANGUAGE);
+ if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) {
+ Configuration config = new Configuration(getResources().getConfiguration());
+ config.locale = new Locale(locale);
+ getResources().updateConfiguration(config, getResources().getDisplayMetrics());
+ }
+
// We don't want a title bar
requestWindowFeature(Window.FEATURE_NO_TITLE);
diff --git a/app/src/main/java/com/limelight/PcView.java b/app/src/main/java/com/limelight/PcView.java
index b3b01a02..8ee8d29d 100644
--- a/app/src/main/java/com/limelight/PcView.java
+++ b/app/src/main/java/com/limelight/PcView.java
@@ -16,6 +16,7 @@ import com.limelight.nvstream.http.PairingManager;
import com.limelight.nvstream.http.PairingManager.PairState;
import com.limelight.nvstream.wol.WakeOnLanSender;
import com.limelight.preferences.AddComputerManually;
+import com.limelight.preferences.PreferenceConfiguration;
import com.limelight.preferences.StreamSettings;
import com.limelight.utils.Dialog;
import com.limelight.utils.UiHelper;
@@ -151,6 +152,15 @@ public class PcView extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ String locale = prefs.getString(PreferenceConfiguration.LANGUAGE_PREF_STRING,
+ PreferenceConfiguration.DEFAULT_LANGUAGE);
+ if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) {
+ Configuration config = new Configuration(getResources().getConfiguration());
+ config.locale = new Locale(locale);
+ getResources().updateConfiguration(config, getResources().getDisplayMetrics());
+ }
+
// Bind to the computer manager service
bindService(new Intent(PcView.this, ComputerManagerService.class), serviceConnection,
Service.BIND_AUTO_CREATE);
diff --git a/app/src/main/java/com/limelight/preferences/AddComputerManually.java b/app/src/main/java/com/limelight/preferences/AddComputerManually.java
index 9e8b1584..825378ea 100644
--- a/app/src/main/java/com/limelight/preferences/AddComputerManually.java
+++ b/app/src/main/java/com/limelight/preferences/AddComputerManually.java
@@ -132,6 +132,15 @@ public class AddComputerManually extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ String locale = prefs.getString(PreferenceConfiguration.LANGUAGE_PREF_STRING,
+ PreferenceConfiguration.DEFAULT_LANGUAGE);
+ if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) {
+ Configuration config = new Configuration(getResources().getConfiguration());
+ config.locale = new Locale(locale);
+ getResources().updateConfiguration(config, getResources().getDisplayMetrics());
+ }
+
setContentView(R.layout.activity_add_computer_manually);
UiHelper.notifyNewRootView(this);
diff --git a/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java b/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java
index 772c7032..9c36b628 100644
--- a/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java
+++ b/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java
@@ -13,6 +13,7 @@ public class PreferenceConfiguration {
private static final String DISABLE_TOASTS_PREF_STRING = "checkbox_disable_warnings";
private static final String HOST_AUDIO_PREF_STRING = "checkbox_host_audio";
private static final String DEADZONE_PREF_STRING = "seekbar_deadzone";
+ public static final String LANGUAGE_PREF_STRING = "list_languages";
private static final int BITRATE_DEFAULT_720_30 = 5;
private static final int BITRATE_DEFAULT_720_60 = 10;
@@ -27,6 +28,7 @@ public class PreferenceConfiguration {
private static final boolean DEFAULT_DISABLE_TOASTS = false;
private static final boolean DEFAULT_HOST_AUDIO = false;
private static final int DEFAULT_DEADZONE = 15;
+ public static final String DEFAULT_LANGUAGE = "default";
public static final int FORCE_HARDWARE_DECODER = -1;
public static final int AUTOSELECT_DECODER = 0;
@@ -37,6 +39,7 @@ public class PreferenceConfiguration {
public int decoder;
public int deadzonePercentage;
public boolean stretchVideo, enableSops, playHostAudio, disableWarnings;
+ public String language;
public static int getDefaultBitrate(String resFpsString) {
if (resFpsString.equals("720p30")) {
@@ -135,6 +138,8 @@ public class PreferenceConfiguration {
config.deadzonePercentage = prefs.getInt(DEADZONE_PREF_STRING, DEFAULT_DEADZONE);
+ config.language = prefs.getString(LANGUAGE_PREF_STRING, DEFAULT_LANGUAGE);
+
// Checkbox preferences
config.disableWarnings = prefs.getBoolean(DISABLE_TOASTS_PREF_STRING, DEFAULT_DISABLE_TOASTS);
config.enableSops = prefs.getBoolean(SOPS_PREF_STRING, DEFAULT_SOPS);
diff --git a/app/src/main/java/com/limelight/preferences/StreamSettings.java b/app/src/main/java/com/limelight/preferences/StreamSettings.java
index bf7243f2..0199a536 100644
--- a/app/src/main/java/com/limelight/preferences/StreamSettings.java
+++ b/app/src/main/java/com/limelight/preferences/StreamSettings.java
@@ -14,6 +14,15 @@ public class StreamSettings extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ String locale = prefs.getString(PreferenceConfigration.LANGUAGE_PREF_STRING,
+ PreferenceConfiguration.DEFAULT_LANGUAGE);
+ if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) {
+ Configuration config = new Configuration(getResources().getConfiguration());
+ config.locale = new Locale(locale);
+ getResources().updateConfiguration(config, getResources().getDisplayMetrics());
+ }
setContentView(R.layout.activity_stream_settings);
getFragmentManager().beginTransaction().replace(
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 77cb9740..7c39b917 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -89,6 +89,8 @@
Forza video in full-screen
Disabilita messaggi di warning
Disabilita i messaggi di warning sullo schermo durante lo streaming
+ Lingua
+ Lingua da usare in Limelight
Impostazioni Gamepad
Aggiusta deadzone degli stick analogici
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 73df0415..44a32405 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -13,6 +13,17 @@
- 1080p60
+
+ - Default
+ - English
+ - Italiano
+
+
+ - default
+ - en
+ - it
+
+
- Auto-select Decoder
- Force Software Decoding
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ccd9898e..9ad82bd1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -89,6 +89,8 @@
Stretch video to full-screen
Disable warning messages
Disable on-screen connection warning messages while streaming
+ Language
+ Language to use for Limelight
Gamepad Settings
Adjust analog stick deadzone
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index ce2c037a..80d348aa 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -25,6 +25,13 @@
android:title="@string/title_checkbox_disable_warnings"
android:summary="@string/summary_checkbox_disable_warnings"
android:defaultValue="false" />
+