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" /> +