Skip to content

Commit

Permalink
Use Locale.forLanguageTag().
Browse files Browse the repository at this point in the history
  • Loading branch information
Isira-Seneviratne committed Aug 22, 2022
1 parent 2089f3e commit 8690399
Showing 1 changed file with 17 additions and 43 deletions.
60 changes: 17 additions & 43 deletions app/src/main/java/org/schabi/newpipe/util/Localization.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,16 +76,8 @@ public static String concatenateStrings(final String delimiter, final List<Strin

public static org.schabi.newpipe.extractor.localization.Localization getPreferredLocalization(
final Context context) {
final String contentLanguage = PreferenceManager
.getDefaultSharedPreferences(context)
.getString(context.getString(R.string.content_language_key),
context.getString(R.string.default_localization_key));
if (contentLanguage.equals(context.getString(R.string.default_localization_key))) {
return org.schabi.newpipe.extractor.localization.Localization
.fromLocale(Locale.getDefault());
}
return org.schabi.newpipe.extractor.localization.Localization
.fromLocalizationCode(contentLanguage);
.fromLocale(getPreferredLocale(context));
}

public static ContentCountry getPreferredContentCountry(final Context context) {
Expand All @@ -98,23 +90,24 @@ public static ContentCountry getPreferredContentCountry(final Context context) {
return new ContentCountry(contentCountry);
}

public static Locale getPreferredLocale(final Context context) {
private static Locale getLocaleFromPrefs(final Context context, @StringRes final int prefKey) {
final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
final String defaultKey = context.getString(R.string.default_localization_key);
final String languageCode = sp.getString(context.getString(prefKey), defaultKey);

final String languageCode = sp.getString(context.getString(R.string.content_language_key),
context.getString(R.string.default_localization_key));

try {
if (languageCode.length() == 2) {
return new Locale(languageCode);
} else if (languageCode.contains("_")) {
final String country = languageCode.substring(languageCode.indexOf("_"));
return new Locale(languageCode.substring(0, 2), country);
}
} catch (final Exception ignored) {
if (languageCode.equals(defaultKey)) {
return Locale.getDefault();
} else {
return Locale.forLanguageTag(languageCode);
}
}

public static Locale getPreferredLocale(final Context context) {
return getLocaleFromPrefs(context, R.string.content_language_key);
}

return Locale.getDefault();
public static Locale getAppLocale(final Context context) {
return getLocaleFromPrefs(context, R.string.app_language_key);
}

public static String localizeNumber(final Context context, final long number) {
Expand Down Expand Up @@ -314,34 +307,15 @@ public static String relativeTime(final OffsetDateTime offsetDateTime) {
return prettyTime.formatUnrounded(offsetDateTime);
}

private static void changeAppLanguage(final Locale loc, final Resources res) {
private static void changeAppLanguage(final Resources res, final Locale loc) {
final DisplayMetrics dm = res.getDisplayMetrics();
final Configuration conf = res.getConfiguration();
conf.setLocale(loc);
res.updateConfiguration(conf, dm);
}

public static Locale getAppLocale(final Context context) {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String lang = prefs.getString(context.getString(R.string.app_language_key), "en");
final Locale loc;
if (lang.equals(context.getString(R.string.default_localization_key))) {
loc = Locale.getDefault();
} else if (lang.matches(".*-.*")) {
//to differentiate different versions of the language
//for example, pt (portuguese in Portugal) and pt-br (portuguese in Brazil)
final String[] localisation = lang.split("-");
lang = localisation[0];
final String country = localisation[1];
loc = new Locale(lang, country);
} else {
loc = new Locale(lang);
}
return loc;
}

public static void assureCorrectAppLanguage(final Context c) {
changeAppLanguage(getAppLocale(c), c.getResources());
changeAppLanguage(c.getResources(), getAppLocale(c));
}

private static double round(final double value, final int places) {
Expand Down

0 comments on commit 8690399

Please sign in to comment.