diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 93b349d50e..2a34676662 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -145,6 +145,11 @@ android { buildConfig = true } + // https://developer.android.com/guide/topics/resources/app-languages?hl=en#auto-localeconfig + androidResources { + generateLocaleConfig = true + } + namespace = "com.lagradost.cloudstream3" } diff --git a/app/src/main/java/com/lagradost/cloudstream3/CommonActivity.kt b/app/src/main/java/com/lagradost/cloudstream3/CommonActivity.kt index 4a75ef147d..a52392a206 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/CommonActivity.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/CommonActivity.kt @@ -21,8 +21,10 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.MainThread import androidx.annotation.StringRes import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.widget.SearchView import androidx.core.content.ContextCompat +import androidx.core.os.LocaleListCompat import androidx.core.view.children import androidx.preference.PreferenceManager import com.google.android.gms.cast.framework.CastSession @@ -206,6 +208,12 @@ object CommonActivity { Locale.setDefault(locale) config.setLocale(locale) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + // initial step for android 13+ language per-app support + // https://developer.android.com/guide/topics/resources/app-languages + AppCompatDelegate.setApplicationLocales(LocaleListCompat.create(locale)) + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) context.createConfigurationContext(config) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt index 03a9432b17..93b26128b7 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt @@ -2,31 +2,34 @@ package com.lagradost.cloudstream3.ui.settings import android.content.Context import android.net.Uri +import android.os.Build.VERSION +import android.os.Build.VERSION_CODES import android.os.Bundle import android.view.View import android.widget.Toast import androidx.appcompat.app.AlertDialog +import androidx.appcompat.app.AppCompatDelegate import androidx.core.os.ConfigurationCompat import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceManager import com.fasterxml.jackson.annotation.JsonProperty -import com.lagradost.cloudstream3.APIHolder.allProviders import com.lagradost.cloudstream3.AcraApplication import com.lagradost.cloudstream3.AcraApplication.Companion.getKey import com.lagradost.cloudstream3.AcraApplication.Companion.setKey +import com.lagradost.cloudstream3.APIHolder.allProviders +import com.lagradost.cloudstream3.app import com.lagradost.cloudstream3.CommonActivity import com.lagradost.cloudstream3.CommonActivity.showToast -import com.lagradost.cloudstream3.MainActivity -import com.lagradost.cloudstream3.R -import com.lagradost.cloudstream3.app import com.lagradost.cloudstream3.databinding.AddRemoveSitesBinding import com.lagradost.cloudstream3.databinding.AddSiteInputBinding +import com.lagradost.cloudstream3.MainActivity import com.lagradost.cloudstream3.mvvm.logError import com.lagradost.cloudstream3.mvvm.safe import com.lagradost.cloudstream3.network.initClient +import com.lagradost.cloudstream3.R +import com.lagradost.cloudstream3.ui.settings.Globals.beneneCount import com.lagradost.cloudstream3.ui.settings.Globals.EMULATOR import com.lagradost.cloudstream3.ui.settings.Globals.TV -import com.lagradost.cloudstream3.ui.settings.Globals.beneneCount import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.hideOn import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPaddingBottom @@ -51,7 +54,12 @@ import java.util.Locale fun getCurrentLocale(context: Context): String { val conf = context.resources.configuration - return ConfigurationCompat.getLocales(conf)?.get(0)?.toLanguageTag() ?: "en" + return if (VERSION.SDK_INT >= VERSION_CODES.TIRAMISU) + // initial step for android 13+ language per-app support + // https://developer.android.com/guide/topics/resources/app-languages + AppCompatDelegate.getApplicationLocales().get(0)?.toLanguageTag() ?: "en" + else + ConfigurationCompat.getLocales(conf)?.get(0)?.toLanguageTag() ?: "en" } /** diff --git a/app/src/main/res/resources.properties b/app/src/main/res/resources.properties new file mode 100644 index 0000000000..63b46f93ed --- /dev/null +++ b/app/src/main/res/resources.properties @@ -0,0 +1 @@ +unqualifiedResLocale=en \ No newline at end of file