From 893a227ab169782a539d86b2bb90602f2d2f281f Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sat, 19 Jul 2025 19:14:38 +0530 Subject: [PATCH 1/7] Enable per-app language preferences for Android < 13 --- app/src/main/AndroidManifest.xml | 9 ++ app/src/main/java/org/schabi/newpipe/App.java | 2 +- .../java/org/schabi/newpipe/MainActivity.java | 8 +- .../org/schabi/newpipe/RouterActivity.java | 2 - .../org/schabi/newpipe/about/AboutActivity.kt | 2 - .../schabi/newpipe/about/LicenseFragment.kt | 2 - .../newpipe/download/DownloadActivity.java | 3 - .../newpipe/download/DownloadDialog.java | 2 - .../schabi/newpipe/error/ErrorActivity.java | 5 +- .../fragments/detail/DescriptionFragment.java | 2 +- .../list/channel/ChannelAboutFragment.java | 4 +- .../ImportConfirmationDialog.java | 3 - .../newpipe/player/PlayQueueActivity.java | 2 - .../org/schabi/newpipe/player/Player.java | 6 +- .../schabi/newpipe/player/PlayerService.java | 3 - .../helper/PlaybackParameterDialog.java | 2 - .../MediaBrowserPlaybackPreparer.kt | 5 +- .../BackupRestoreSettingsFragment.java | 3 - .../settings/ContentSettingsFragment.java | 49 ++++------ .../settings/DownloadSettingsFragment.java | 4 - .../newpipe/settings/SettingsActivity.java | 4 - .../org/schabi/newpipe/util/ListHelper.java | 10 +- .../org/schabi/newpipe/util/Localization.java | 98 ++++++++----------- 23 files changed, 85 insertions(+), 145 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e52dded5e1a..e0abd977b24 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -57,6 +57,15 @@ + + + + = 33) { - requirePreference(R.string.app_language_key).setVisible(false); - final Preference newAppLanguagePref = + appLanguagePref.setVisible(false); + final var newAppLanguagePref = requirePreference(R.string.app_language_android_13_and_up_key); newAppLanguagePref.setSummaryProvider(preference -> { - final Locale customLocale = AppCompatDelegate.getApplicationLocales().get(0); - if (customLocale != null) { - return customLocale.getDisplayName(); - } - return getString(R.string.systems_language); + final Locale loc = AppCompatDelegate.getApplicationLocales().get(0); + return loc != null ? loc.getDisplayName() : getString(R.string.systems_language); }); newAppLanguagePref.setOnPreferenceClickListener(preference -> { final Intent intent = new Intent(Settings.ACTION_APP_LOCALE_SETTINGS) @@ -55,10 +50,16 @@ public void onCreatePreferences(final Bundle savedInstanceState, final String ro return true; }); newAppLanguagePref.setVisible(true); + } else { + appLanguagePref.setOnPreferenceChangeListener((preference, newValue) -> { + final String language = (String) newValue; + final Locale locale = Locale.forLanguageTag(language); + AppCompatDelegate.setApplicationLocales(LocaleListCompat.create(locale)); + return true; + }); } - final Preference imageQualityPreference = requirePreference(R.string.image_quality_key); - imageQualityPreference.setOnPreferenceChangeListener( + requirePreference(R.string.image_quality_key).setOnPreferenceChangeListener( (preference, newValue) -> { ImageStrategy.setPreferredImageQuality(PreferredImageQuality .fromPreferenceKey(requireContext(), (String) newValue)); @@ -92,22 +93,10 @@ public boolean onPreferenceTreeClick(final Preference preference) { public void onDestroy() { super.onDestroy(); - final String selectedLanguage = - defaultPreferences.getString(getString(R.string.app_language_key), "en"); - - if (!selectedLanguage.equals(initialLanguage)) { - if (Build.VERSION.SDK_INT < 33) { - Toast.makeText( - requireContext(), - R.string.localization_changes_requires_app_restart, - Toast.LENGTH_LONG - ).show(); - } - final Localization selectedLocalization = org.schabi.newpipe.util.Localization - .getPreferredLocalization(requireContext()); - final ContentCountry selectedContentCountry = org.schabi.newpipe.util.Localization - .getPreferredContentCountry(requireContext()); - NewPipe.setupLocalization(selectedLocalization, selectedContentCountry); - } + final Localization selectedLocalization = org.schabi.newpipe.util.Localization + .getPreferredLocalization(requireContext()); + final ContentCountry selectedContentCountry = org.schabi.newpipe.util.Localization + .getPreferredContentCountry(requireContext()); + NewPipe.setupLocalization(selectedLocalization, selectedContentCountry); } } diff --git a/app/src/main/java/org/schabi/newpipe/settings/DownloadSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/DownloadSettingsFragment.java index ff7811af3e6..356dcd9b223 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/DownloadSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/DownloadSettingsFragment.java @@ -1,7 +1,5 @@ package org.schabi.newpipe.settings; -import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage; - import android.app.Activity; import android.content.ContentResolver; import android.content.Context; @@ -209,8 +207,6 @@ private void requestDownloadAudioPathResult(final ActivityResult result) { } private void requestDownloadPathResult(final ActivityResult result, final String key) { - assureCorrectAppLanguage(getContext()); - if (result.getResultCode() != Activity.RESULT_OK) { return; } diff --git a/app/src/main/java/org/schabi/newpipe/settings/SettingsActivity.java b/app/src/main/java/org/schabi/newpipe/settings/SettingsActivity.java index 0d57ce1742d..d5089cb7d00 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/SettingsActivity.java +++ b/app/src/main/java/org/schabi/newpipe/settings/SettingsActivity.java @@ -1,7 +1,5 @@ package org.schabi.newpipe.settings; -import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage; - import android.content.Context; import android.os.Bundle; import android.text.TextUtils; @@ -89,7 +87,6 @@ public class SettingsActivity extends AppCompatActivity implements @Override protected void onCreate(final Bundle savedInstanceBundle) { setTheme(ThemeHelper.getSettingsThemeStyle(this)); - assureCorrectAppLanguage(this); super.onCreate(savedInstanceBundle); Bridge.restoreInstanceState(this, savedInstanceBundle); @@ -228,7 +225,6 @@ private void initSearch( // Build search items final Context searchContext = getApplicationContext(); - assureCorrectAppLanguage(searchContext); final PreferenceParser parser = new PreferenceParser(searchContext, config); final PreferenceSearcher searcher = new PreferenceSearcher(config); diff --git a/app/src/main/java/org/schabi/newpipe/util/ListHelper.java b/app/src/main/java/org/schabi/newpipe/util/ListHelper.java index 282a88b1eaf..ea41f3e81a2 100644 --- a/app/src/main/java/org/schabi/newpipe/util/ListHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/ListHelper.java @@ -322,7 +322,7 @@ public static List getFilteredAudioStreams( } // Sort collected streams by name - return collectedStreams.values().stream().sorted(getAudioTrackNameComparator(context)) + return collectedStreams.values().stream().sorted(getAudioTrackNameComparator()) .collect(Collectors.toList()); } @@ -359,7 +359,7 @@ public static List> getGroupedAudioStreams( } // Sort tracks alphabetically, sort track streams by quality - final Comparator nameCmp = getAudioTrackNameComparator(context); + final Comparator nameCmp = getAudioTrackNameComparator(); final Comparator formatCmp = getAudioFormatComparator(context); return collectedStreams.values().stream() @@ -867,12 +867,10 @@ static Comparator getAudioTrackComparator( * Get a {@link Comparator} to compare {@link AudioStream}s by their languages and track types * for alphabetical sorting. * - * @param context app context for localization * @return Comparator */ - private static Comparator getAudioTrackNameComparator( - @NonNull final Context context) { - final Locale appLoc = Localization.getAppLocale(context); + private static Comparator getAudioTrackNameComparator() { + final Locale appLoc = Localization.getAppLocale(); return Comparator.comparing(AudioStream::getAudioLocale, Comparator.nullsLast( Comparator.comparing(locale -> locale.getDisplayName(appLoc)))) diff --git a/app/src/main/java/org/schabi/newpipe/util/Localization.java b/app/src/main/java/org/schabi/newpipe/util/Localization.java index 65cfec930d5..40c7b2a033f 100644 --- a/app/src/main/java/org/schabi/newpipe/util/Localization.java +++ b/app/src/main/java/org/schabi/newpipe/util/Localization.java @@ -5,14 +5,12 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.SharedPreferences; -import android.content.res.Configuration; import android.content.res.Resources; import android.icu.text.CompactDecimalFormat; import android.os.Build; +import android.text.BidiFormatter; import android.text.TextUtils; import android.text.format.DateUtils; -import android.text.BidiFormatter; -import android.util.DisplayMetrics; import android.util.Log; import androidx.annotation.NonNull; @@ -43,7 +41,6 @@ import java.util.Arrays; import java.util.List; import java.util.Locale; -import java.util.Objects; import java.util.stream.Collectors; @@ -120,39 +117,35 @@ public static Locale getPreferredLocale(@NonNull final Context context) { return getLocaleFromPrefs(context, R.string.content_language_key); } - public static Locale getAppLocale(@NonNull final Context context) { - if (Build.VERSION.SDK_INT >= 33) { - final Locale customLocale = AppCompatDelegate.getApplicationLocales().get(0); - return Objects.requireNonNullElseGet(customLocale, Locale::getDefault); - } - return getLocaleFromPrefs(context, R.string.app_language_key); + public static Locale getAppLocale() { + final Locale customLocale = AppCompatDelegate.getApplicationLocales().get(0); + return customLocale != null ? customLocale : Locale.getDefault(); } - public static String localizeNumber(@NonNull final Context context, final long number) { - return localizeNumber(context, (double) number); + public static String localizeNumber(final long number) { + return localizeNumber((double) number); } - public static String localizeNumber(@NonNull final Context context, final double number) { - final NumberFormat nf = NumberFormat.getInstance(getAppLocale(context)); + public static String localizeNumber(final double number) { + final NumberFormat nf = NumberFormat.getInstance(getAppLocale()); return nf.format(number); } - public static String formatDate(@NonNull final Context context, - @NonNull final OffsetDateTime offsetDateTime) { + public static String formatDate(@NonNull final OffsetDateTime offsetDateTime) { return DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM) - .withLocale(getAppLocale(context)).format(offsetDateTime + .withLocale(getAppLocale()).format(offsetDateTime .atZoneSameInstant(ZoneId.systemDefault())); } @SuppressLint("StringFormatInvalid") public static String localizeUploadDate(@NonNull final Context context, @NonNull final OffsetDateTime offsetDateTime) { - return context.getString(R.string.upload_date_text, formatDate(context, offsetDateTime)); + return context.getString(R.string.upload_date_text, formatDate(offsetDateTime)); } public static String localizeViewCount(@NonNull final Context context, final long viewCount) { return getQuantity(context, R.plurals.views, R.string.no_views, viewCount, - localizeNumber(context, viewCount)); + localizeNumber(viewCount)); } public static String localizeStreamCount(@NonNull final Context context, @@ -166,7 +159,7 @@ public static String localizeStreamCount(@NonNull final Context context, return context.getResources().getString(R.string.more_than_100_videos); default: return getQuantity(context, R.plurals.videos, R.string.no_videos, streamCount, - localizeNumber(context, streamCount)); + localizeNumber(streamCount)); } } @@ -187,27 +180,27 @@ public static String localizeStreamCountMini(@NonNull final Context context, public static String localizeWatchingCount(@NonNull final Context context, final long watchingCount) { return getQuantity(context, R.plurals.watching, R.string.no_one_watching, watchingCount, - localizeNumber(context, watchingCount)); + localizeNumber(watchingCount)); } public static String shortCount(@NonNull final Context context, final long count) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - return CompactDecimalFormat.getInstance(getAppLocale(context), + return CompactDecimalFormat.getInstance(getAppLocale(), CompactDecimalFormat.CompactStyle.SHORT).format(count); } final double value = (double) count; if (count >= 1000000000) { - return localizeNumber(context, round(value / 1000000000)) + return localizeNumber(round(value / 1000000000)) + context.getString(R.string.short_billion); } else if (count >= 1000000) { - return localizeNumber(context, round(value / 1000000)) + return localizeNumber(round(value / 1000000)) + context.getString(R.string.short_million); } else if (count >= 1000) { - return localizeNumber(context, round(value / 1000)) + return localizeNumber(round(value / 1000)) + context.getString(R.string.short_thousand); } else { - return localizeNumber(context, value); + return localizeNumber(value); } } @@ -377,8 +370,8 @@ public static void initPrettyTime(@NonNull final PrettyTime time) { prettyTime.removeUnit(Decade.class); } - public static PrettyTime resolvePrettyTime(@NonNull final Context context) { - return new PrettyTime(getAppLocale(context)); + public static PrettyTime resolvePrettyTime() { + return new PrettyTime(getAppLocale()); } public static String relativeTime(@NonNull final OffsetDateTime offsetDateTime) { @@ -410,14 +403,6 @@ public static String relativeTimeOrTextual(@Nullable final Context context, } } - public static void assureCorrectAppLanguage(final Context c) { - final Resources res = c.getResources(); - final DisplayMetrics dm = res.getDisplayMetrics(); - final Configuration conf = res.getConfiguration(); - conf.setLocale(getAppLocale(c)); - res.updateConfiguration(conf, dm); - } - private static Locale getLocaleFromPrefs(@NonNull final Context context, @StringRes final int prefKey) { final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); @@ -453,28 +438,29 @@ private static String getQuantity(@NonNull final Context context, } public static void migrateAppLanguageSettingIfNecessary(@NonNull final Context context) { - // Starting with pull request #12093, NewPipe on Android 13+ exclusively uses Android's + // Starting with pull request #12093, NewPipe exclusively uses Android's // public per-app language APIs to read and set the UI language for NewPipe. - // If running on Android 13+, the following code will migrate any existing custom - // app language in SharedPreferences to use the public per-app language APIs instead. - if (Build.VERSION.SDK_INT >= 33) { - final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); - final String appLanguageKey = context.getString(R.string.app_language_key); - final String appLanguageValue = sp.getString(appLanguageKey, null); - if (appLanguageValue != null) { + // The following code will migrate any existing custom app language in SharedPreferences to + // use the public per-app language APIs instead. + final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); + final String appLanguageKey = context.getString(R.string.app_language_key); + final String appLanguageValue = sp.getString(appLanguageKey, null); + if (appLanguageValue != null) { + // The app language key is used on Android versions < Tiramisu; for more info, see + // ContentSettingsFragment. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { sp.edit().remove(appLanguageKey).apply(); - final String appLanguageDefaultValue = - context.getString(R.string.default_localization_key); - if (!appLanguageValue.equals(appLanguageDefaultValue)) { - try { - AppCompatDelegate.setApplicationLocales( - LocaleListCompat.forLanguageTags(appLanguageValue) - ); - } catch (final RuntimeException e) { - Log.e(TAG, "Failed to migrate previous custom app language " - + "setting to public per-app language APIs" - ); - } + } + final String appLanguageDefaultValue = + context.getString(R.string.default_localization_key); + if (!appLanguageValue.equals(appLanguageDefaultValue)) { + try { + final var locales = LocaleListCompat.forLanguageTags(appLanguageValue); + AppCompatDelegate.setApplicationLocales(locales); + } catch (final RuntimeException e) { + Log.e(TAG, "Failed to migrate previous custom app language " + + "setting to public per-app language APIs" + ); } } } From b8f9c125cd27e83f8c4c86140bb1bb959a63dd67 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sun, 20 Jul 2025 05:03:20 +0530 Subject: [PATCH 2/7] Add link for future reference --- .../java/org/schabi/newpipe/util/Localization.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/util/Localization.java b/app/src/main/java/org/schabi/newpipe/util/Localization.java index 40c7b2a033f..fccaef8c836 100644 --- a/app/src/main/java/org/schabi/newpipe/util/Localization.java +++ b/app/src/main/java/org/schabi/newpipe/util/Localization.java @@ -437,11 +437,13 @@ private static String getQuantity(@NonNull final Context context, return context.getResources().getQuantityString(pluralId, safeCount, formattedCount); } + // Starting with pull request #12093, NewPipe exclusively uses Android's + // public per-app language APIs to read and set the UI language for NewPipe. + // The following code will migrate any existing custom app language in SharedPreferences to + // use the public per-app language APIs instead. + // For reference, see + // https://android-developers.googleblog.com/2022/11/per-app-language-preferences-part-1.html public static void migrateAppLanguageSettingIfNecessary(@NonNull final Context context) { - // Starting with pull request #12093, NewPipe exclusively uses Android's - // public per-app language APIs to read and set the UI language for NewPipe. - // The following code will migrate any existing custom app language in SharedPreferences to - // use the public per-app language APIs instead. final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); final String appLanguageKey = context.getString(R.string.app_language_key); final String appLanguageValue = sp.getString(appLanguageKey, null); From abd9aade87fab9e28d2c0bdf1ecb418866d6a24c Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sun, 20 Jul 2025 05:24:56 +0530 Subject: [PATCH 3/7] Update AppCompat --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 094cc7b4721..a629f65eb75 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -225,7 +225,7 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:${kotlin_version}" /** AndroidX **/ - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.appcompat:appcompat:1.7.1' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.core:core-ktx:1.12.0' From 9e14f93186d40830dd8e0243f2288dffb28b3390 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sun, 20 Jul 2025 16:18:46 +0530 Subject: [PATCH 4/7] Properly handle when system language is selected --- .../org/schabi/newpipe/settings/ContentSettingsFragment.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java index b98b8cb6c5b..ec217db3dea 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java @@ -53,8 +53,9 @@ public void onCreatePreferences(final Bundle savedInstanceState, final String ro } else { appLanguagePref.setOnPreferenceChangeListener((preference, newValue) -> { final String language = (String) newValue; - final Locale locale = Locale.forLanguageTag(language); - AppCompatDelegate.setApplicationLocales(LocaleListCompat.create(locale)); + final String systemLang = getString(R.string.default_localization_key); + final String tag = systemLang.equals(language) ? null : language; + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags(tag)); return true; }); } From 99003bab07f6d47d91e467c7e40016577ea81fd5 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sun, 20 Jul 2025 16:43:37 +0530 Subject: [PATCH 5/7] Clean up imports --- .../newpipe/settings/ContentSettingsFragment.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java index ec217db3dea..404ef4bb64d 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java @@ -16,8 +16,7 @@ import org.schabi.newpipe.DownloaderImpl; import org.schabi.newpipe.R; import org.schabi.newpipe.extractor.NewPipe; -import org.schabi.newpipe.extractor.localization.ContentCountry; -import org.schabi.newpipe.extractor.localization.Localization; +import org.schabi.newpipe.util.Localization; import org.schabi.newpipe.util.image.ImageStrategy; import org.schabi.newpipe.util.image.PicassoHelper; import org.schabi.newpipe.util.image.PreferredImageQuality; @@ -94,10 +93,9 @@ public boolean onPreferenceTreeClick(final Preference preference) { public void onDestroy() { super.onDestroy(); - final Localization selectedLocalization = org.schabi.newpipe.util.Localization - .getPreferredLocalization(requireContext()); - final ContentCountry selectedContentCountry = org.schabi.newpipe.util.Localization - .getPreferredContentCountry(requireContext()); + final var context = requireContext(); + final var selectedLocalization = Localization.getPreferredLocalization(context); + final var selectedContentCountry = Localization.getPreferredContentCountry(context); NewPipe.setupLocalization(selectedLocalization, selectedContentCountry); } } From f48e73eb2a5f6c1e1708907e887e2467dc951978 Mon Sep 17 00:00:00 2001 From: litetex <40789489+litetex@users.noreply.github.com> Date: Sun, 20 Jul 2025 21:52:07 +0200 Subject: [PATCH 6/7] Cleaned up some code related to app language * Use build constants when possible * Inline variables * Don't use var for normal-sized types (that way it's easier to review) * Split code into methods --- .../settings/ContentSettingsFragment.java | 66 +++++++++++-------- .../org/schabi/newpipe/util/Localization.java | 8 +-- 2 files changed, 42 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java index 404ef4bb64d..ffc80e30efa 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java @@ -33,10 +33,17 @@ public void onCreatePreferences(final Bundle savedInstanceState, final String ro addPreferencesFromResourceRegistry(); - final var appLanguagePref = requirePreference(R.string.app_language_key); - if (Build.VERSION.SDK_INT >= 33) { + setupAppLanguagePreferences(); + setupImageQualityPref(); + } + + private void setupAppLanguagePreferences() { + final Preference appLanguagePref = requirePreference(R.string.app_language_key); + // Android 13+ allows to set app specific languages + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { appLanguagePref.setVisible(false); - final var newAppLanguagePref = + + final Preference newAppLanguagePref = requirePreference(R.string.app_language_android_13_and_up_key); newAppLanguagePref.setSummaryProvider(preference -> { final Locale loc = AppCompatDelegate.getApplicationLocales().get(0); @@ -49,30 +56,33 @@ public void onCreatePreferences(final Bundle savedInstanceState, final String ro return true; }); newAppLanguagePref.setVisible(true); - } else { - appLanguagePref.setOnPreferenceChangeListener((preference, newValue) -> { - final String language = (String) newValue; - final String systemLang = getString(R.string.default_localization_key); - final String tag = systemLang.equals(language) ? null : language; - AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags(tag)); - return true; - }); + return; } + appLanguagePref.setOnPreferenceChangeListener((preference, newValue) -> { + final String language = (String) newValue; + final String systemLang = getString(R.string.default_localization_key); + final String tag = systemLang.equals(language) ? null : language; + AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags(tag)); + return true; + }); + } + + private void setupImageQualityPref() { requirePreference(R.string.image_quality_key).setOnPreferenceChangeListener( - (preference, newValue) -> { - ImageStrategy.setPreferredImageQuality(PreferredImageQuality - .fromPreferenceKey(requireContext(), (String) newValue)); - try { - PicassoHelper.clearCache(preference.getContext()); - Toast.makeText(preference.getContext(), - R.string.thumbnail_cache_wipe_complete_notice, Toast.LENGTH_SHORT) - .show(); - } catch (final IOException e) { - Log.e(TAG, "Unable to clear Picasso cache", e); - } - return true; - }); + (preference, newValue) -> { + ImageStrategy.setPreferredImageQuality(PreferredImageQuality + .fromPreferenceKey(requireContext(), (String) newValue)); + try { + PicassoHelper.clearCache(preference.getContext()); + Toast.makeText(preference.getContext(), + R.string.thumbnail_cache_wipe_complete_notice, Toast.LENGTH_SHORT) + .show(); + } catch (final IOException e) { + Log.e(TAG, "Unable to clear Picasso cache", e); + } + return true; + }); } @Override @@ -93,9 +103,9 @@ public boolean onPreferenceTreeClick(final Preference preference) { public void onDestroy() { super.onDestroy(); - final var context = requireContext(); - final var selectedLocalization = Localization.getPreferredLocalization(context); - final var selectedContentCountry = Localization.getPreferredContentCountry(context); - NewPipe.setupLocalization(selectedLocalization, selectedContentCountry); + final Context context = requireContext(); + NewPipe.setupLocalization( + Localization.getPreferredLocalization(context), + Localization.getPreferredContentCountry(context)); } } diff --git a/app/src/main/java/org/schabi/newpipe/util/Localization.java b/app/src/main/java/org/schabi/newpipe/util/Localization.java index fccaef8c836..2bd4664ae56 100644 --- a/app/src/main/java/org/schabi/newpipe/util/Localization.java +++ b/app/src/main/java/org/schabi/newpipe/util/Localization.java @@ -448,8 +448,8 @@ public static void migrateAppLanguageSettingIfNecessary(@NonNull final Context c final String appLanguageKey = context.getString(R.string.app_language_key); final String appLanguageValue = sp.getString(appLanguageKey, null); if (appLanguageValue != null) { - // The app language key is used on Android versions < Tiramisu; for more info, see - // ContentSettingsFragment. + // The app language key is used on Android versions < 33 + // for more info, see ContentSettingsFragment if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { sp.edit().remove(appLanguageKey).apply(); } @@ -457,8 +457,8 @@ public static void migrateAppLanguageSettingIfNecessary(@NonNull final Context c context.getString(R.string.default_localization_key); if (!appLanguageValue.equals(appLanguageDefaultValue)) { try { - final var locales = LocaleListCompat.forLanguageTags(appLanguageValue); - AppCompatDelegate.setApplicationLocales(locales); + AppCompatDelegate.setApplicationLocales( + LocaleListCompat.forLanguageTags(appLanguageValue)); } catch (final RuntimeException e) { Log.e(TAG, "Failed to migrate previous custom app language " + "setting to public per-app language APIs" From 99ae3fdd4ea00d0dc8e492ac3fc2447cba51425e Mon Sep 17 00:00:00 2001 From: litetex <40789489+litetex@users.noreply.github.com> Date: Sun, 20 Jul 2025 22:05:05 +0200 Subject: [PATCH 7/7] Removed no longer needed translation key --- app/src/main/res/values-ar-rLY/strings.xml | 1 - app/src/main/res/values-ar/strings.xml | 1 - app/src/main/res/values-az/strings.xml | 1 - app/src/main/res/values-b+ast/strings.xml | 1 - app/src/main/res/values-b+uz+Latn/strings.xml | 1 - app/src/main/res/values-be/strings.xml | 1 - app/src/main/res/values-bg/strings.xml | 1 - app/src/main/res/values-bn/strings.xml | 1 - app/src/main/res/values-ca/strings.xml | 1 - app/src/main/res/values-ckb/strings.xml | 1 - app/src/main/res/values-cs/strings.xml | 1 - app/src/main/res/values-da/strings.xml | 1 - app/src/main/res/values-de/strings.xml | 1 - app/src/main/res/values-el/strings.xml | 1 - app/src/main/res/values-eo/strings.xml | 1 - app/src/main/res/values-es/strings.xml | 1 - app/src/main/res/values-et/strings.xml | 1 - app/src/main/res/values-eu/strings.xml | 1 - app/src/main/res/values-fa/strings.xml | 1 - app/src/main/res/values-fi/strings.xml | 1 - app/src/main/res/values-fr/strings.xml | 1 - app/src/main/res/values-gl/strings.xml | 1 - app/src/main/res/values-he/strings.xml | 1 - app/src/main/res/values-hi/strings.xml | 1 - app/src/main/res/values-hr/strings.xml | 1 - app/src/main/res/values-hu/strings.xml | 1 - app/src/main/res/values-in/strings.xml | 1 - app/src/main/res/values-is/strings.xml | 1 - app/src/main/res/values-it/strings.xml | 1 - app/src/main/res/values-ja/strings.xml | 1 - app/src/main/res/values-ka/strings.xml | 1 - app/src/main/res/values-kmr/strings.xml | 1 - app/src/main/res/values-ko/strings.xml | 1 - app/src/main/res/values-ku/strings.xml | 1 - app/src/main/res/values-lt/strings.xml | 1 - app/src/main/res/values-lv/strings.xml | 1 - app/src/main/res/values-mk/strings.xml | 1 - app/src/main/res/values-ml/strings.xml | 1 - app/src/main/res/values-nb-rNO/strings.xml | 1 - app/src/main/res/values-ne/strings.xml | 1 - app/src/main/res/values-nl-rBE/strings.xml | 1 - app/src/main/res/values-nl/strings.xml | 1 - app/src/main/res/values-nqo/strings.xml | 1 - app/src/main/res/values-or/strings.xml | 1 - app/src/main/res/values-pa/strings.xml | 1 - app/src/main/res/values-pl/strings.xml | 1 - app/src/main/res/values-pt-rBR/strings.xml | 1 - app/src/main/res/values-pt-rPT/strings.xml | 1 - app/src/main/res/values-pt/strings.xml | 1 - app/src/main/res/values-ro/strings.xml | 1 - app/src/main/res/values-ru/strings.xml | 1 - app/src/main/res/values-ryu/strings.xml | 1 - app/src/main/res/values-sat/strings.xml | 1 - app/src/main/res/values-sc/strings.xml | 1 - app/src/main/res/values-sk/strings.xml | 1 - app/src/main/res/values-sl/strings.xml | 1 - app/src/main/res/values-so/strings.xml | 1 - app/src/main/res/values-sq/strings.xml | 1 - app/src/main/res/values-sr/strings.xml | 1 - app/src/main/res/values-sv/strings.xml | 1 - app/src/main/res/values-ta/strings.xml | 1 - app/src/main/res/values-te/strings.xml | 1 - app/src/main/res/values-tr/strings.xml | 1 - app/src/main/res/values-uk/strings.xml | 1 - app/src/main/res/values-ur/strings.xml | 1 - app/src/main/res/values-vi/strings.xml | 1 - app/src/main/res/values-zh-rCN/strings.xml | 1 - app/src/main/res/values-zh-rHK/strings.xml | 1 - app/src/main/res/values-zh-rTW/strings.xml | 1 - app/src/main/res/values/strings.xml | 1 - 70 files changed, 70 deletions(-) diff --git a/app/src/main/res/values-ar-rLY/strings.xml b/app/src/main/res/values-ar-rLY/strings.xml index fa19afe7837..0ab5fe741da 100644 --- a/app/src/main/res/values-ar-rLY/strings.xml +++ b/app/src/main/res/values-ar-rLY/strings.xml @@ -227,7 +227,6 @@ المميزة عرض المحتوى الذي يُحتمل أن يكون غير مناسب للأطفال لأن له حدًا عمريًا (مثل 18+) بدأ التشغيل في الخلفية - ستتغير اللغة بمجرد إعادة تشغيل التطبيق القصيرة قوائم التشغيل تنظيف diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index c4eee083529..fff1dd3a99b 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -427,7 +427,6 @@ الكشك الافتراضي لا توجد مشاهدة لا أحد يستمع - ستتغير اللغة بمجرد إعادة تشغيل التطبيق %s مشاهدة %s مشاهدة diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index ee35996a6d2..682dda98ffc 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -342,7 +342,6 @@ Etibarlı ZIP faylı yoxdur Xəbərdarlıq: Bütün faylları idxal etmək mümkün olmadı. Tənzimləmələri də idxal etmək istəyirsiniz\? - Tətbiq yenidən başladıldıqdan sonra dil dəyişəcəkdir Ən yaxşı 50 Yeni və populyar Yerli diff --git a/app/src/main/res/values-b+ast/strings.xml b/app/src/main/res/values-b+ast/strings.xml index 454ddd15229..51b4fdec0c4 100644 --- a/app/src/main/res/values-b+ast/strings.xml +++ b/app/src/main/res/values-b+ast/strings.xml @@ -223,7 +223,6 @@ Política de privacidá de NewPipe El ficheru nun pue crease El sirvidor nun unvia datos - La llingua va camudar namás que se reanicie l\'aplicación. Buscar Compartir con Soscribiéstite diff --git a/app/src/main/res/values-b+uz+Latn/strings.xml b/app/src/main/res/values-b+uz+Latn/strings.xml index 780061c73a8..b556da756f2 100644 --- a/app/src/main/res/values-b+uz+Latn/strings.xml +++ b/app/src/main/res/values-b+uz+Latn/strings.xml @@ -551,7 +551,6 @@ Yangi va qaynoqlari Top 50 Ommabop - Ilova qayta ishga tushirilgandan so\'ng til o\'zgaradi. Fikrlarni yuklab bo‘lmadi Sozlamalarni ham import qilmoqchimisiz\? Bu sizning joriy sozlamangizni bekor qiladi. diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index f8d4a367067..22f963defbc 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -537,7 +537,6 @@ %d дзён Ачысціць гісторыю спампоўвання - Мова зменіцца пасля перазапуску праграмы Ніхто не слухае Уключыць Апавяшчэнні пра ход відэахэшавання diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index c38ea7952d6..c6d4d76ce76 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -432,7 +432,6 @@ Най-харесвани Готово Коментари - Езикът ще се смени след рестартиране на приложението Скрит Частен Предложения за отдалечено търсене diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index e83bbbdb959..715c9146e65 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -534,7 +534,6 @@ প্রত্যেক ডাউনলোড কোথায় রাখা হবে তা জিজ্ঞেস করা হবে। \nমেমোরি কার্ডে ডাউনলোড করতে সিস্টেম ফোল্ডার পিকার (SAF) এনেবল করুন এই নামের একটি ডাউনলোড চলমান - অ্যাপ আবার শুরু হলে ভাষা পাল্টাবে মিডিয়া সুরঙ্গকরণ অক্ষম দ্রুত ফিড অবস্থা এ বিষয়ে এর বেশি তথ্য দেয় না। কোনো ডাউনলোড ফোল্ডার নির্দিষ্ট করা হয়নি, এখনই একটা সহজাত ডাউনলোড ফোল্ডার নির্বাচন করো diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index a4ed028010d..123a5ef67b2 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -419,7 +419,6 @@ %s escoltants %s escoltants - Es canviarà l\'idioma en reiniciar l\'aplicació Tendències Ensenya el temps passat original sobre els \"items\" Auto-generat (no es troba cap uploader) diff --git a/app/src/main/res/values-ckb/strings.xml b/app/src/main/res/values-ckb/strings.xml index 413f71d855a..649e6e73c5e 100644 --- a/app/src/main/res/values-ckb/strings.xml +++ b/app/src/main/res/values-ckb/strings.xml @@ -107,7 +107,6 @@ ناتوانرێت به‌ژداریكردنه‌كه‌ نوێبكرێته‌وه‌ پشت شاشە بێ ئەنجامه‌ - زمان دەگۆڕدرێت لەدوای داگیرساندنەوەی به‌رنامه‌كه‌ لادانی سەیرکراو پیشاندانی نیشانەکەری شوێنی کارپێکەر لە خشتەکاندا شوێنەکان لە خشتەکاندا diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index a144e996a5f..ea531408f34 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -427,7 +427,6 @@ %s posluchači %s posluchačů - Ke změně jazyka dojde po restartu aplikace Výchozí kiosek Délka přetočení vpřed/zpět Instance PeerTube diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 86be3084a71..cecdcc4fe41 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -507,7 +507,6 @@ Stryg på elementer for at fjerne dem Vælg en playliste Ingen playliste-bogmærker endnu - Sproget ændres, når appen genstarter Afspillerkø Vis kanalens detaljer Sæt i kø diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 416f9d58426..309709f47df 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -432,7 +432,6 @@ %s Zuhörer %s Zuhörer - Die Sprache ändert sich, sobald die App neu gestartet wird PeerTube-Instanzen Finde auf %s die Instanzen, die dir gefallen Instanz hinzufügen diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index f871e914607..67a24bd4fac 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -422,7 +422,6 @@ %s ακροατής %s ακροατές - Η γλώσσα θα αλλάξει αφού επανεκκινηθεί η εφαρμογή Προεπιλεγμένο περίπτερο Μόνο HTTPS σύνδεσμοι υποστηρίζονται Τοπικά diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index 66e2c4d104f..1da4d536cf5 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -421,7 +421,6 @@ %s aŭskultanto %s aŭskultantoj - La lingvo ŝanĝos kiam la apo restartos Daŭro de rapidpluiga/revolva serĉo Instancoj de PeerTube Elekti viajn preferitajn instancojn de PeerTube diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 43df8dcfd36..610d900ec71 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -427,7 +427,6 @@ %s oyentes %s oyentes - El idioma cambiará después del reinicio de la aplicación Duración de búsqueda al avanzar y/o retroceder Instancias de PeerTube Selecciona tus instancias favoritas de PeerTube diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 5e62c98a23c..9f9c7207cd3 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -487,7 +487,6 @@ Lisa esitusjärjekorda Hiljuti lisatud Kohalikud - Keele muutus jõustub rakenduse uuesti käivitamisel Kommentaaride laadimine ei õnnestunud Esitusloendi järjehoidjaid veel pole Vali esitusloend diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index b1c393db7ff..16054d9ae30 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -422,7 +422,6 @@ Erreprodukziorako kokapen guztiak ezabatzen ditu Ezabatu erreprodukziorako kokapen guztiak\? Aktibatu zerbitzua, orain hautatua: - Hizkuntza aldatuko da aplikazioa berrabiarazterakoan Kiosko Lehenetsia Aurreratze/atzeratze bilaketaren iraupena PeerTube instantziak diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 6fef73fc766..3bba8efb8c6 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -469,7 +469,6 @@ مورد پسندترین‌ها اخیرا اضافه شده محلی - با آغاز دوبارهٔ کاره، زبان تغییر خواهد کرد کیوسک پیش‌فرض انجام شد وقتی انجام شد، «Done» یا «انجام شد» را بفشارید diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 0bc4f46926f..20734dd2605 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -337,7 +337,6 @@ Hiljattain lisätyt Paikalliset Pidetyimmät - Kieli vaihtuu, kun sovellus uudelleenkäynnistetään Kommentteja ei voitu ladata Mitkä välilehdet näytetään pääsivulla Valmis diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index cf6c50a76af..c3fe5cf58c9 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -428,7 +428,6 @@ %s auditeurs %s auditeurs - La langue changera une fois que l’application aura redémarré Durée de l’avance et retour rapide Instances PeerTube Veuillez choisir vos instances PeerTube préférées diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 84bbbb3387e..d345b938518 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -463,7 +463,6 @@ Conferencias O que ten mais gústames Engadiuse recentemente - O idioma cambiará unha vez que se reinicie o aplicativo Non se puideron cargar os comentarios Aínda non hai marcadores nesta lista de reprodución Seleccionar unha lista de reprodución diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 83c85cc9eb5..bd560f07bb3 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -432,7 +432,6 @@ %s מאזינים %s מאזינים - השפה תוחלף עם הפעלת היישומון מחדש קיוסק ברירת מחדל משך קפיצה מהירה קדימה/אחורה מופעים של PeerTube diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 086d200d564..37282a0da49 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -423,7 +423,6 @@ %s श्रोता %s श्रोता - ऐप के पुनः आरंभ होने के बाद भाषा बदल जाएगी तेज मोड सक्षम करें तेज मोड अक्षम करें क्या आपको लगता है कि फीड लोडिंग बहुत धीमी है\? यदि ऐसा है, तो तेज़ लोडिंग को सक्षम करने का प्रयास करें (आप इसे सेटिंग्स में या नीचे दिए गए बटन को दबाकर बदल सकते हैं)। diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 3c09a8aca44..c4cd60c0b43 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -406,7 +406,6 @@ Izbrisati sve pozicije reprodukcije\? Nitko ne gleda Nitko ne sluša - Jezik će se promijeniti nakon ponovnog pokretanja aplikcije Standardni kiosk Podržani su samo HTTP URL-ovi Lokalni diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index e55471d48e3..14c55b772ab 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -428,7 +428,6 @@ Senki sem nézi A feliratkozók száma nem érhető el Helyi - A nyelv az alkalmazás újraindításakor fog megváltozni A megjegyzések betöltése sikertelen Válasszon egy lejátszási listát Lejátszás automatikus indítása — %s diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 0bc414a9298..19f867d7c55 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -417,7 +417,6 @@ %s pendengar - Bahasa yang diubah akan diterapkan setelah aplikasi dimulai ulang Situs PeerTube Pilih situs PeerTube favorit Anda Temukan situs yang Anda suka di %s diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml index 986ae282c92..e7ce69e41ae 100644 --- a/app/src/main/res/values-is/strings.xml +++ b/app/src/main/res/values-is/strings.xml @@ -268,7 +268,6 @@ Nýlega spilað Mest spilað Aðalsíða - Tungumálið breytist þegar forritið er endurræst Flutt út Flutt inn Staðbundið diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 654a4c181f5..4c087f4dec0 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -427,7 +427,6 @@ %s ascoltatori %s ascoltatori - La lingua verrà cambiata al riavvio dell\'applicazione Contenuti in evidenza predefiniti Durata avanzamento e riavvolgimento rapidi Istanze PeerTube diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index fda1e2e21af..25c1d9fe944 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -418,7 +418,6 @@ %s 人が聴取中 - アプリを再起動すると、言語が変更されます 高速早送り/巻き戻し間隔 PeerTube インスタンス PeerTube インスタンスを選択する diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml index 80cbac475ce..4fc00c0b367 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -333,7 +333,6 @@ გაფრთხილება: ყველა ფაილის იმპორტი ვერ მოხერხდა. ეს უგულებელყოფს თქვენს მიმდინარე პარამეტრს. კომენტარების ჩატვირთვა ვერ მოხერხდა - ენა შეიცვლება აპის გადატვირთვის შემდეგ ტრენდული ტოპ 50 ახალი და ცხელი diff --git a/app/src/main/res/values-kmr/strings.xml b/app/src/main/res/values-kmr/strings.xml index 9f19ced10a7..b5e5235d595 100644 --- a/app/src/main/res/values-kmr/strings.xml +++ b/app/src/main/res/values-kmr/strings.xml @@ -139,7 +139,6 @@ Pel hate jêbirin Betal bike Çareseriya çêtirîn - Gava ku sepanê ji nû ve dest pê kir dê ziman biguhere. Ouldîrove nehat barkirin Ma hûn dixwazin mîhengan jî îthal bikin\? Ev ê sazkirina xweya heyî ji holê rabike. diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 283adc7f2db..cfc328a204b 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -418,7 +418,6 @@ %s명 청취중 - 앱이 다시 시작되면 언어가 변경됩니다 빠른-감기/되감기 찾는 시간 피어튜브 인스턴스 선호하는 PeerTube 인스턴스 선택 diff --git a/app/src/main/res/values-ku/strings.xml b/app/src/main/res/values-ku/strings.xml index 4b4c6f2c968..2f3934fff01 100644 --- a/app/src/main/res/values-ku/strings.xml +++ b/app/src/main/res/values-ku/strings.xml @@ -398,7 +398,6 @@ فایلێک بەهەمان ناو هەیە فایلێکی دابەزێنراو بەم ناوەوە هەیە ناتوانرێ لەسەر ئەو فایلە جێگیربکرێ - زمان دەگۆڕدرێ لەدوای داخستن و پاشان کردنەوەی ئەپ. پەڕەی بنەڕەتی ماوەی خێرا بردنە پێشەوە\\ گێڕانەوە بۆ دواوە دۆخی پێرتووبی diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 2ff3f1165df..feb11a01c24 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -494,7 +494,6 @@ Labiausiai patikę Nesenai pridėta Vietinė - Kalba pasikeis paleidus programą iš naujo Komentarų įkelti nepavyko Ar norite importuoti nustatymus\? Kol kas nėra grojaraščio žymų diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 9372d3c3f61..2d1c6025622 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -272,7 +272,6 @@ Atrodiet instances, kas jums patīk ar %s Izvēlaties jūsu mīļākās PeerTube instances PeerTube serveri (instances) - Valoda nomainīsies, kad aplikāciju restartēs Neviena lietotne jūsu ierīcē nevar šo atvērt Nodaļas Jaunākie diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index ba41b730bb7..1d3183b108e 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -685,7 +685,6 @@ %s нови стримови Ве молиме, проверете дали веќе има дискусија за проблем како овој. Создадените дупликати ни одземаат од времето, коешто можеме да го посветиме на поправање на проблемот. - Јазикот ќе се смени откако апликацијата ќе биде рестартирана Додај го во редослед следното Нема гледачи Готово diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index e3ba6f4880b..39ce5e57fea 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -81,7 +81,6 @@ പുതിയതും ചൂടേറിയതും മികച്ച 50 ട്രെൻഡിങ്ങ് - അപ്ലിക്കേഷൻ പുനരാരംഭിച്ചുകഴിഞ്ഞാൽ ഭാഷ മാറും കമെന്റുകൾ ലോഡുചെയ്യാനായില്ല ക്രമീകരണങ്ങളും ഇമ്പോർട്ടുചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ\? ഇത് നിങ്ങളുടെ നിലവിലെ സജ്ജീകരണത്തെ അസാധുവാക്കും. diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index a9ca6eaed47..c2311585ada 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -422,7 +422,6 @@ %s lytter %s lyttere - Språket vil endres etter at appen har startet på nytt Standard kiosk PeerTube-instanser Lokal diff --git a/app/src/main/res/values-ne/strings.xml b/app/src/main/res/values-ne/strings.xml index 679b10846e5..dd570b82e37 100644 --- a/app/src/main/res/values-ne/strings.xml +++ b/app/src/main/res/values-ne/strings.xml @@ -416,7 +416,6 @@ %s श्रोता %s श्रोताहरु - भाषा परिवर्तन एप पून:सुरु हुदा लागु हुनेछ। पूर्वनिर्धारित किओस्क (Kiosk) छिटो-अगाडि /-पछाडी खोज्न अवधि PeerTube उदाहरणहरू diff --git a/app/src/main/res/values-nl-rBE/strings.xml b/app/src/main/res/values-nl-rBE/strings.xml index 7336895245a..a78b965859a 100644 --- a/app/src/main/res/values-nl-rBE/strings.xml +++ b/app/src/main/res/values-nl-rBE/strings.xml @@ -486,7 +486,6 @@ Meest leuk gevonden Recent toegevoegd Lokaal - De taal zal veranderen zodra de app opnieuw is opgestart Geen afspeellijst bladwijzers Selecteer een afspeellijst Standaard kiosk diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index e3e49fc725a..0c16a5c9b11 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -420,7 +420,6 @@ %s luisteraar %s luisteraars - De taal zal veranderen zodra de app opnieuw is opgestart Standaard kiosk Duur voor-/achteruit spoelen PeerTube-instanties diff --git a/app/src/main/res/values-nqo/strings.xml b/app/src/main/res/values-nqo/strings.xml index d2ec63afae9..016ce1ba29c 100644 --- a/app/src/main/res/values-nqo/strings.xml +++ b/app/src/main/res/values-nqo/strings.xml @@ -408,7 +408,6 @@ ߖߊ߲߬ߕߏ߬ߒߘߐ: ߞߐߕߐ߮ ߟߎ߬ ߓߍ߯ ߕߍ߫ ߛߋ߫ ߟߊߛߣߍ߫ ߟߊ߫. ߕߏߟߏ߲߫ ߛߙߍߘߍ ߘߏ߫ ߛߎߥߊ߲ߘߌ߫ ߕߏߟߏ߲߫ ߛߙߍߘߍ߫ ߟߊߞߎ߲߬ߘߎ߬ߣߍ߲߬ ߕߍ߫ ߝߟߐ߫ - ߞߊ߲ ߘߌߣߊ߬ ߡߊߝߊ߬ߟߋ߲߬ ߣߌ߫ ߟߥߊߟߌߟߊ߲ ߣߊ߬ ߘߊ߫ ߘߐߟߥߌ߬ ߛߊ߲ߞߊߥߟߌ ߟߎ߬ ߞߊ߲߬ߞߎߡߊ ߟߎ߬ ߕߍ߫ ߛߋ߫ ߟߊ߫ ߖߛߐ߫ ߟߊ߫ ߘߌ߲߬ߞߌ߬ߙߊ߬ߡߊ diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml index cae53566e09..cf9ebdb9782 100644 --- a/app/src/main/res/values-or/strings.xml +++ b/app/src/main/res/values-or/strings.xml @@ -62,7 +62,6 @@ ଇତିହାସ ବିଲୋପ ଦେଖନ୍ତୁ ପ୍ଲେକ୍ ପୋଜିସନ୍ ଡିଲିଟ୍ ହୋଇଛି ସନ୍ଧାନ ଇତିହାସ ବିଲୋପ ହେଲା - ଆପ୍ ପୁନଃଆରମ୍ଭ ହେବା ପରେ ଭାଷା ପରିବର୍ତ୍ତନ ହେବ ପ୍ଲେଲିଷ୍ଟ ଥମ୍ବନେଲ ଭାବରେ ସେଟ୍ କରନ୍ତୁ ଫାଇଲ୍ କୁ ନବଲିଖନ କରିପାରିବ ନାହିଁ ଫାଇଲ୍ ସୃଷ୍ଟି ହୋଇପାରିବ ନାହିଁ diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 56cbd6ead60..ad14e7d0510 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -540,7 +540,6 @@ ਵਧੇਰੇ ਪਸੰਦ ਕੀਤੇ ਗਏ ਹਾਲ ਹੀ ਵਿੱਚ ਸ਼ਾਮਿਲ ਸਥਾਨਕ - ਭਾਸ਼ਾ ਐਪ ਨੂੰ ਦੋਬਾਰਾ ਚਲਾਉਣ \'ਤੇ ਬਦਲੇਗੀ ਪਲੇਲਿਸਟ ਚੁਣੋ ਹੋ ਗਿਆ ਹੱਲ ਕਰੋ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 1a426b8dd46..dc3f88cec85 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -432,7 +432,6 @@ %s słuchaczy %s słuchaczy - Język zmieni się po ponownym uruchomieniu aplikacji Wielkość skoku przy przewijaniu Serwery PeerTube Wybierz swoje ulubione serwery PeerTube diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 5988038e58e..d13cbcfe3da 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -428,7 +428,6 @@ %s ouvintes %s ouvintes - O idioma será alterado após reiniciar o aplicativo Duração de avanço/retrocesso rápido Instâncias PeerTube Selecione suas instâncias favoritas do PeerTube diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 36d3c5e4218..6ceec006e52 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -527,7 +527,6 @@ Modificar escala de legendas e estilo de fundo. Tem que reiniciar a aplicação para aplicar as alterações Ação recusada pelo sistema Músicas - O idioma será alterado assim que reiniciar a app Adicionar instância Faixas Reproduzir no Kodi diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index b1a27b7728f..13a536895ea 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -428,7 +428,6 @@ %s ouvintes %s ouvintes - O idioma será alterado assim que reiniciar a aplicação Duração de avanço/recuo rápido Instâncias PeerTube Defina as suas instâncias PeerTube preferidas diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 42f464d96a3..eb4e75c28f0 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -559,7 +559,6 @@ Cele mai apreciate Adăugate recent Local - Limba se va schimba odată ce aplicația este repornită Nu există încă marcaje în playlist Selectați un playlist Chioșc implicit diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index d7fbdeb0955..a512b6fa8c8 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -434,7 +434,6 @@ %s слушателя %s слушателей - Язык будет изменён после перезапуска Шаг перемотки Серверы PeerTube Выберите предпочтительные серверы diff --git a/app/src/main/res/values-ryu/strings.xml b/app/src/main/res/values-ryu/strings.xml index 0396245e102..1bc89420c2b 100644 --- a/app/src/main/res/values-ryu/strings.xml +++ b/app/src/main/res/values-ryu/strings.xml @@ -423,7 +423,6 @@ %sんかいんがちょうしゅちゅう %sんかいんがちょうしゅちゅう - アプリさいきちゃーしーねー、ぎんぐがへいるかんさりやびーん こうすくはやうくい/まきむどぅしかんかく PeerTubeインスタンス PeerTubeインスタンスさんたくすん diff --git a/app/src/main/res/values-sat/strings.xml b/app/src/main/res/values-sat/strings.xml index 8b44cd5e084..a3ed7c405b2 100644 --- a/app/src/main/res/values-sat/strings.xml +++ b/app/src/main/res/values-sat/strings.xml @@ -520,7 +520,6 @@ ᱢᱤᱫ ᱯᱷᱟᱤᱞᱤᱥᱴ ᱵᱟᱪᱷᱟᱣ ᱢᱮ ᱤᱢᱯᱳᱨᱴ ᱱᱤᱛ ᱦᱟᱹᱵᱤᱡ playlist bookmarks ᱵᱟᱹᱱᱩᱜᱼᱟ - ᱮᱯ ᱮᱦᱚᱵ ᱞᱮᱠᱷᱟᱱ ᱯᱟᱹᱨᱥᱤ ᱵᱚᱫᱚᱞᱚᱜ-ᱟ ᱮᱥᱯᱟᱨᱴ ᱟᱠᱟᱱᱟ ᱴᱨᱮᱱᱰᱤᱝ ᱚᱰᱤᱭᱳ ᱥᱮᱴᱤᱝ diff --git a/app/src/main/res/values-sc/strings.xml b/app/src/main/res/values-sc/strings.xml index 549e8f88b5c..0c42f1ef0fb 100644 --- a/app/src/main/res/values-sc/strings.xml +++ b/app/src/main/res/values-sc/strings.xml @@ -66,7 +66,6 @@ Noos e Populares Sos mègius 50 Tendèntzias - Sa limba at a mudare a pustis chi as a torrare a allùghere s\'aplicatzione Carrigamentu de sos cummentos fallidu Cheres fintzas importare sas impostatziones\? Custu at a subraiscrìere sas impostatziones tuas de como. diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 1e73373117f..ad2dacfd6b5 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -428,7 +428,6 @@ %s poslucháči %s poslucháčov - Zmena jazyka sa prejaví po reštarte aplikácie Dĺžka rýchleho pretáčania Inštancie PeerTube Vyberte si svoje obľúbené inštancie PeerTube diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index b0fcec406c9..cd41b43bad6 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -253,7 +253,6 @@ Najbolj všečkan Dodano nedolgo nazaj Lokalno - Jezik bo spremenjen ob ponovnem zagonu aplikacije Ni mogoče naložiti komentarjev Ni veljavne ZIP datoteke Uvoženo diff --git a/app/src/main/res/values-so/strings.xml b/app/src/main/res/values-so/strings.xml index 0b0b3d06e00..6b4de73536d 100644 --- a/app/src/main/res/values-so/strings.xml +++ b/app/src/main/res/values-so/strings.xml @@ -139,7 +139,6 @@ Shiddan Cusub oo Shiddan 50ka Sare - Luuqadu waxay isbaddali doontaa marka appka dib loo soo kiciyo Faallooyinka lama soo kicin karo Inaad sidoo kale fadhiga soo galiso ma rabtaa\? Tani waxay baddali fadhiga siduu kuu yahay hadda. diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index 873234e2396..162ba5ada05 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -207,7 +207,6 @@ Të rejat dhe të nxehtat Top 50 E trendit - Gjuha do të ndryshojë sapo aplikacioni të riniset Nuk mundën të ngarkohen komentet A dëshironi që të importoni dhe aranzhimet gjithashtu\? Kjo do të mbishkruajë strukturimin tuaj të tanishëm. diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 99542e72c9f..99b9e971fe4 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -368,7 +368,6 @@ Највише свиђања Недавно додато Локално - Језик ће бити промењен након рестартовања апликације Није могуће учитати коментаре Желите ли да увезете и подешавања\? Ово ће заменити ваше тренутно подешавање. diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 2eff9567c18..3beab4181a1 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -436,7 +436,6 @@ Lokala Klar Slå på YouTubes \"Begränsat läge\" - Språket ändras när appen startas om Det gick inte att läsa in kommentarerna Inaktivera snabbläge Aktivera snabbläge diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index 71771ddae5a..906249376d1 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -616,7 +616,6 @@ செல்லுபடியாகும் சிப் கோப்பு இல்லை இது உங்கள் தற்போதைய அமைப்பை மேலெழுதும். கருத்துகளை ஏற்ற முடியவில்லை - பயன்பாடு மறுதொடக்கம் செய்யப்பட்டவுடன் மொழி மாறும் அண்மைக் காலத்தில் சேர்க்கப்பட்டது மிகவும் பிடித்தது மாநாடுகள் diff --git a/app/src/main/res/values-te/strings.xml b/app/src/main/res/values-te/strings.xml index 57802f5a1c9..c537495bacc 100644 --- a/app/src/main/res/values-te/strings.xml +++ b/app/src/main/res/values-te/strings.xml @@ -363,7 +363,6 @@ reCAPTCHA సవాలు అభ్యర్థించబడింది ప్లేజాబితాను ఎంచుకోండి డాటాబేసుని ఎగుమతిచేయుము - యాప్ పునఃప్రారంభించబడిన తర్వాత భాష మారుతుంది ఛానెల్ వివరాలను చూపు కంటెంట్‌ని తెరిచేటప్పుడు డిఫాల్ట్ చర్య — %s ప్రాధాన్య \'తెరవండి\' చర్య diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 66a393f6dff..a26016f1a46 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -422,7 +422,6 @@ %s dinleyici %s dinleyici - Uygulama yeniden başlatıldıktan sonra dil değişecektir Hızlı ileri/geri atlama süresi PeerTube örnekleri Favori PeerTube örneklerinizi seçin diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 5c4034f4bfe..32e03bea0b7 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -428,7 +428,6 @@ %s слухача %s слухачів - Мова зміниться після перезапуску застосунку Швидке перемотування Екземпляри PeerTube Виберіть сервер PeerTube diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index 99839de6995..1a434ab630d 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -417,7 +417,6 @@ %s سننے والا %s سننے والے - جب ایپ دوبارہ شروع ہو گی تو زبان تبدیل ہو جائے گی طے شدہ کیوسک آگے بھگانے /- پیچھے کرنے کی مدت پیر ٹیوب واقعات diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 22bc03c2cb8..e1073e7af8f 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -441,7 +441,6 @@ Tắt tiếng Được yêu thích nhất Đã thêm gần đây - Ngôn ngữ sẽ thay đổi khi ứng dụng khởi động lại Bấm \"Xong\" khi hoàn thành Đã hoàn thành ∞ video diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 013669e800f..3c9c79457b6 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -418,7 +418,6 @@ %s 位听众 - 语言更改将在重启应用后生效 PeerTube 服务器 设置自定义 PeerTube 服务器 查找你需要的服务器 %s diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index c804c53c0f3..6b552999227 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -326,7 +326,6 @@ 頭版要擺放邊啲分頁 打橫掃走啲項目去剷走佢 空白頁 - 重新開過個 app 之後就會轉新語言 時興 頭 50 位 最新同大熱 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index b1443f17fa7..b9ca2d3ceeb 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -418,7 +418,6 @@ %s 位聽眾 - 語言將會在重新啟動應用程式後變更 快轉/快退搜尋持續時間 PeerTube 站臺 選取您最愛的 PeerTube 站臺 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5887c65e43c..6ab2fc7a541 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -413,7 +413,6 @@ This will override your current setup. Do you want to also import settings? Could not load comments - The language will change once the app is restarted Select a feed group No feed group created yet