@@ -76,16 +76,8 @@ public static String concatenateStrings(final String delimiter, final List<Strin
7676
7777 public static org .schabi .newpipe .extractor .localization .Localization getPreferredLocalization (
7878 final Context context ) {
79- final String contentLanguage = PreferenceManager
80- .getDefaultSharedPreferences (context )
81- .getString (context .getString (R .string .content_language_key ),
82- context .getString (R .string .default_localization_key ));
83- if (contentLanguage .equals (context .getString (R .string .default_localization_key ))) {
84- return org .schabi .newpipe .extractor .localization .Localization
85- .fromLocale (Locale .getDefault ());
86- }
8779 return org .schabi .newpipe .extractor .localization .Localization
88- .fromLocalizationCode ( contentLanguage );
80+ .fromLocale ( getPreferredLocale ( context ) );
8981 }
9082
9183 public static ContentCountry getPreferredContentCountry (final Context context ) {
@@ -98,23 +90,24 @@ public static ContentCountry getPreferredContentCountry(final Context context) {
9890 return new ContentCountry (contentCountry );
9991 }
10092
101- public static Locale getPreferredLocale (final Context context ) {
93+ private static Locale getLocaleFromPrefs (final Context context , @ StringRes final int prefKey ) {
10294 final SharedPreferences sp = PreferenceManager .getDefaultSharedPreferences (context );
95+ final String defaultKey = context .getString (R .string .default_localization_key );
96+ final String languageCode = sp .getString (context .getString (prefKey ), defaultKey );
10397
104- final String languageCode = sp .getString (context .getString (R .string .content_language_key ),
105- context .getString (R .string .default_localization_key ));
106-
107- try {
108- if (languageCode .length () == 2 ) {
109- return new Locale (languageCode );
110- } else if (languageCode .contains ("_" )) {
111- final String country = languageCode .substring (languageCode .indexOf ("_" ));
112- return new Locale (languageCode .substring (0 , 2 ), country );
113- }
114- } catch (final Exception ignored ) {
98+ if (languageCode .equals (defaultKey )) {
99+ return Locale .getDefault ();
100+ } else {
101+ return Locale .forLanguageTag (languageCode );
115102 }
103+ }
104+
105+ public static Locale getPreferredLocale (final Context context ) {
106+ return getLocaleFromPrefs (context , R .string .content_language_key );
107+ }
116108
117- return Locale .getDefault ();
109+ public static Locale getAppLocale (final Context context ) {
110+ return getLocaleFromPrefs (context , R .string .app_language_key );
118111 }
119112
120113 public static String localizeNumber (final Context context , final long number ) {
@@ -314,34 +307,15 @@ public static String relativeTime(final OffsetDateTime offsetDateTime) {
314307 return prettyTime .formatUnrounded (offsetDateTime );
315308 }
316309
317- private static void changeAppLanguage (final Locale loc , final Resources res ) {
310+ private static void changeAppLanguage (final Resources res , final Locale loc ) {
318311 final DisplayMetrics dm = res .getDisplayMetrics ();
319312 final Configuration conf = res .getConfiguration ();
320313 conf .setLocale (loc );
321314 res .updateConfiguration (conf , dm );
322315 }
323316
324- public static Locale getAppLocale (final Context context ) {
325- final SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences (context );
326- String lang = prefs .getString (context .getString (R .string .app_language_key ), "en" );
327- final Locale loc ;
328- if (lang .equals (context .getString (R .string .default_localization_key ))) {
329- loc = Locale .getDefault ();
330- } else if (lang .matches (".*-.*" )) {
331- //to differentiate different versions of the language
332- //for example, pt (portuguese in Portugal) and pt-br (portuguese in Brazil)
333- final String [] localisation = lang .split ("-" );
334- lang = localisation [0 ];
335- final String country = localisation [1 ];
336- loc = new Locale (lang , country );
337- } else {
338- loc = new Locale (lang );
339- }
340- return loc ;
341- }
342-
343317 public static void assureCorrectAppLanguage (final Context c ) {
344- changeAppLanguage (getAppLocale ( c ), c . getResources ( ));
318+ changeAppLanguage (c . getResources ( ), getAppLocale ( c ));
345319 }
346320
347321 private static double round (final double value , final int places ) {
0 commit comments