diff --git a/app/build.gradle b/app/build.gradle index 7728b6a1..72c985a9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,8 +19,8 @@ android { applicationId "com.vanced.manager" minSdkVersion 21 targetSdkVersion 30 - versionCode 200 - versionName "2.0.0 (.nomagiskui)" + versionCode 201 + versionName "2.0.1 (Android5and6suck)" vectorDrawables.useSupportLibrary true @@ -35,10 +35,6 @@ android { disable 'MissingTranslation', 'ExtraTranslation' } - aaptOptions { - noCompress 'apk', '.apk' - } - applicationVariants.all { variant -> resValue "string", "versionName", versionName } @@ -52,6 +48,7 @@ android { buildFeatures { dataBinding true + viewBinding true } // To inline the bytecode built with JVM target 1.8 into @@ -70,19 +67,24 @@ android { def getLanguages() { List langs = new ArrayList() langs.add("en") + //Add languages with dialects + langs.add("bn_BD") + langs.add("bn_IN") + langs.add("pt_BR") + langs.add("pt_PT") + langs.add("zh_CN") + langs.add("zh_TW") + List exceptions = [ "bn", "pt", "zh"] Pattern pattern = Pattern.compile("-(\\w+)-") new File("${projectDir}/src/main/res").eachDir { dir -> if (dir.name.startsWith("values-") && !dir.name.contains("v23")) { Matcher matcher = pattern.matcher(dir.name) - if (matcher.find()) { - if (langs.contains(matcher.group(1))) - langs.add(matcher.group(1) + "_${dir.name.substring(dir.name.length() - 2)}") - else - langs.add(matcher.group(1)) + if (matcher.find() && !exceptions.any { matcher.group(1) == it } ) { + langs.add(matcher.group(1)) } } } - return langs.toArray() + return langs.toArray().toSorted() } static def surroundWithQuotes(Object[] arr) { @@ -114,7 +116,6 @@ dependencies { implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'com.google.android.material:material:1.3.0-alpha03' -// Other // JSON parser implementation 'com.beust:klaxon:5.4' diff --git a/app/src/main/java/com/vanced/manager/adapter/AppListAdapter.kt b/app/src/main/java/com/vanced/manager/adapter/AppListAdapter.kt index 0015f4d0..0213c768 100644 --- a/app/src/main/java/com/vanced/manager/adapter/AppListAdapter.kt +++ b/app/src/main/java/com/vanced/manager/adapter/AppListAdapter.kt @@ -46,10 +46,10 @@ class AppListAdapter( holder.appCard.setOnClickListener { tooltip.close() - AppInfoDialog( - apps[position], - dataModels[position]?.appIcon, - dataModels[position]?.changelog?.get() + AppInfoDialog.newInstance( + appName = apps[position], + appIcon = dataModels[position]?.appIcon, + changelog = dataModels[position]?.changelog?.get() ).show(context.supportFragmentManager, "info") } } diff --git a/app/src/main/java/com/vanced/manager/adapter/LinkAdapter.kt b/app/src/main/java/com/vanced/manager/adapter/LinkAdapter.kt index 92107ec9..c3108c05 100644 --- a/app/src/main/java/com/vanced/manager/adapter/LinkAdapter.kt +++ b/app/src/main/java/com/vanced/manager/adapter/LinkAdapter.kt @@ -3,7 +3,7 @@ package com.vanced.manager.adapter import android.content.Context import android.view.LayoutInflater import android.view.ViewGroup -import androidx.core.content.ContextCompat +import androidx.appcompat.content.res.AppCompatResources import androidx.recyclerview.widget.RecyclerView import com.vanced.manager.R import com.vanced.manager.databinding.ViewSocialLinkBinding @@ -13,49 +13,49 @@ import com.vanced.manager.ui.viewmodels.HomeViewModel class LinkAdapter(context: Context, private val viewModel: HomeViewModel) : RecyclerView.Adapter() { private val instagram = LinkModel( - ContextCompat.getDrawable(context, R.drawable.ic_instagram), + AppCompatResources.getDrawable(context, R.drawable.ic_instagram), "https://instagram.com/vanced.youtube" ) private val youtube = LinkModel( - ContextCompat.getDrawable(context, R.drawable.ic_youtube), + AppCompatResources.getDrawable(context, R.drawable.ic_youtube), "https://youtube.com/c/YouTubeVanced" ) private val github = LinkModel( - ContextCompat.getDrawable(context, R.drawable.ic_github), + AppCompatResources.getDrawable(context, R.drawable.ic_github), "https://github.com/YTVanced/VancedManager" ) private val website = LinkModel( - ContextCompat.getDrawable(context, R.drawable.ic_website), + AppCompatResources.getDrawable(context, R.drawable.ic_website), "https://vancedapp.com" ) private val telegram = LinkModel( - ContextCompat.getDrawable(context, R.drawable.ic_telegram), + AppCompatResources.getDrawable(context, R.drawable.ic_telegram), "https://t.me/joinchat/AAAAAEHf-pi4jH1SDlAL4w" ) private val twitter = LinkModel( - ContextCompat.getDrawable(context, R.drawable.ic_twitter), + AppCompatResources.getDrawable(context, R.drawable.ic_twitter), "https://twitter.com/YTVanced" ) private val discord = LinkModel( - ContextCompat.getDrawable(context, R.drawable.ic_discord), + AppCompatResources.getDrawable(context, R.drawable.ic_discord), "https://discord.gg/WCGNdRruzb" ) private val reddit = LinkModel( - ContextCompat.getDrawable(context, R.drawable.ic_reddit), + AppCompatResources.getDrawable(context, R.drawable.ic_reddit), "https://www.reddit.com/r/Vanced/" ) val links = arrayOf(instagram, youtube, github, website, telegram, twitter, discord, reddit) inner class LinkViewHolder(private val binding: ViewSocialLinkBinding) : RecyclerView.ViewHolder(binding.root) { - + val logo = binding.linkImage fun bind(position: Int) { binding.viewModel = viewModel binding.linkModel = links[position] @@ -70,6 +70,7 @@ class LinkAdapter(context: Context, private val viewModel: HomeViewModel) : Recy override fun onBindViewHolder(holder: LinkViewHolder, position: Int) { holder.bind(position) + holder.logo.setImageDrawable(links[position].linkIcon) } override fun getItemCount(): Int = links.size diff --git a/app/src/main/java/com/vanced/manager/adapter/SelectAppsAdapter.kt b/app/src/main/java/com/vanced/manager/adapter/SelectAppsAdapter.kt index 3c6ce9f9..92a39eba 100644 --- a/app/src/main/java/com/vanced/manager/adapter/SelectAppsAdapter.kt +++ b/app/src/main/java/com/vanced/manager/adapter/SelectAppsAdapter.kt @@ -24,7 +24,7 @@ class SelectAppsAdapter(context: Context) : RecyclerView.Adapter() { private val brave = SponsorModel( - ContextCompat.getDrawable(context, R.drawable.ic_brave), + AppCompatResources.getDrawable(context, R.drawable.ic_brave), "Brave", "https://vancedapp.com/brave" ) private val adguard = SponsorModel( - ContextCompat.getDrawable(context, R.drawable.ic_adguard), + AppCompatResources.getDrawable(context, R.drawable.ic_adguard), "AdGuard", "https://adguard.com/?aid=31141&source=manager" ) @@ -33,6 +33,7 @@ class SponsorAdapter( inner class LinkViewHolder(private val binding: ViewSponsorBinding) : RecyclerView.ViewHolder( binding.root ) { + val logo = binding.sponsorLogo fun bind(position: Int) { binding.viewModel = viewModel binding.sponsor = sponsors[position] @@ -47,6 +48,7 @@ class SponsorAdapter( override fun onBindViewHolder(holder: LinkViewHolder, position: Int) { holder.bind(position) + holder.logo.setImageDrawable(sponsors[position].logo) } override fun getItemCount(): Int = 2 diff --git a/app/src/main/java/com/vanced/manager/core/App.kt b/app/src/main/java/com/vanced/manager/core/App.kt index 92466b33..9457a8a1 100644 --- a/app/src/main/java/com/vanced/manager/core/App.kt +++ b/app/src/main/java/com/vanced/manager/core/App.kt @@ -11,13 +11,18 @@ import com.crowdin.platform.data.remote.NetworkType import com.downloader.PRDownloader import com.vanced.manager.BuildConfig.* import com.vanced.manager.utils.InternetTools.loadJson +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.launch open class App: Application() { private val prefs by lazy { getDefaultSharedPreferences(this) } + private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO) override fun onCreate() { - loadJson(this) + scope.launch { loadJson(this@App) } super.onCreate() PRDownloader.initialize(this) @@ -46,6 +51,4 @@ open class App: Application() { super.onConfigurationChanged(newConfig) Crowdin.onConfigurationChanged() } - - } diff --git a/app/src/main/java/com/vanced/manager/core/base/BaseFragment.kt b/app/src/main/java/com/vanced/manager/core/base/BaseFragment.kt deleted file mode 100644 index 2f759f37..00000000 --- a/app/src/main/java/com/vanced/manager/core/base/BaseFragment.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.vanced.manager.core.base - -import androidx.fragment.app.Fragment - -open class BaseFragment : Fragment() \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloader.kt b/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloader.kt index 55d9ffe4..06a17434 100644 --- a/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloader.kt +++ b/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloader.kt @@ -13,39 +13,36 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -object MicrogDownloader { +object MicrogDownloader : CoroutineScope by CoroutineScope(Dispatchers.IO) { fun downloadMicrog( context: Context, - ) { - CoroutineScope(Dispatchers.IO).launch { - val url = microg.get()?.string("url") + ) = launch { + val url = microg.get()?.string("url") - downloadProgress.get()?.currentDownload = PRDownloader.download(url, context.getExternalFilesDir("microg")?.path, "microg.apk") - .build() - .setOnStartOrResumeListener { - downloadProgress.get()?.downloadingFile?.set(context.getString(R.string.downloading_file, url?.let { getFileNameFromUrl(it) })) + downloadProgress.value?.currentDownload = PRDownloader.download(url, context.getExternalFilesDir("microg")?.path, "microg.apk") + .build() + .setOnStartOrResumeListener { + downloadProgress.value?.downloadingFile?.value = context.getString(R.string.downloading_file, url?.let { getFileNameFromUrl(it) }) + } + .setOnProgressListener { progress -> + downloadProgress.value?.downloadProgress?.value = (progress.currentBytes * 100 / progress.totalBytes).toInt() + } + .start(object : OnDownloadListener { + override fun onDownloadComplete() { + startMicrogInstall(context) } - .setOnProgressListener { progress -> - downloadProgress.get()?.downloadProgress?.set((progress.currentBytes * 100 / progress.totalBytes).toInt()) - } - .start(object : OnDownloadListener { - override fun onDownloadComplete() { - startMicrogInstall(context) - } - override fun onError(error: Error?) { - downloadProgress.get()?.downloadingFile?.set(context.getString(R.string.error_downloading, "microG")) - } - }) + override fun onError(error: Error?) { + downloadProgress.value?.downloadingFile?.value = context.getString(R.string.error_downloading, "microG") + } + }) } - } fun startMicrogInstall(context: Context) { - downloadProgress.get()?.installing?.set(true) - downloadProgress.get()?.reset() + downloadProgress.value?.installing?.value = true + downloadProgress.value?.reset() install("${context.getExternalFilesDir("microg")}/microg.apk", context) } - } diff --git a/app/src/main/java/com/vanced/manager/core/downloader/MusicDownloader.kt b/app/src/main/java/com/vanced/manager/core/downloader/MusicDownloader.kt index 44570a05..833983c0 100644 --- a/app/src/main/java/com/vanced/manager/core/downloader/MusicDownloader.kt +++ b/app/src/main/java/com/vanced/manager/core/downloader/MusicDownloader.kt @@ -22,8 +22,9 @@ import com.vanced.manager.utils.PackageHelper.installMusicRoot import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import kotlin.coroutines.suspendCoroutine -object MusicDownloader { +object MusicDownloader: CoroutineScope by CoroutineScope(Dispatchers.IO) { private var variant: String? = null private var version: String? = null @@ -45,69 +46,64 @@ object MusicDownloader { } private fun downloadApk(context: Context, apk: String = "music") { - CoroutineScope(Dispatchers.IO).launch { - val url = - if (apk == "stock") - "$baseurl/stock/${getArch()}.apk" - else - "$baseurl/$variant.apk" - - downloadProgress.get()?.currentDownload = PRDownloader.download(url, downloadPath, getFileNameFromUrl(url)) - .build() - .setOnStartOrResumeListener { - downloadProgress.get()?.downloadingFile?.set(context.getString(R.string.downloading_file, getFileNameFromUrl(url))) - } - .setOnProgressListener { progress -> - downloadProgress.get()?.downloadProgress?.set((progress.currentBytes * 100 / progress.totalBytes).toInt()) - } - .start(object : OnDownloadListener { - override fun onDownloadComplete() { - if (variant == "root" && apk != "stock") { - downloadApk(context, "stock") - return - } - - when (apk) { - "music" -> { - if (variant == "root") { - if (validateTheme(downloadPath!!, "root", hashUrl!!, context)) { - if (downloadStockCheck(musicRootPkg, versionCode!!, context)) - downloadApk(context, "stock") - else - startMusicInstall(context) - } else { - downloadApk(context, apk) - } - } else - startMusicInstall(context) + launch { + val url = if (apk == "stock") "$baseurl/stock/${getArch()}.apk" else "$baseurl/$variant.apk" + suspendCoroutine { + downloadProgress.value?.currentDownload = PRDownloader.download(url, downloadPath, getFileNameFromUrl(url)) + .build() + .setOnStartOrResumeListener { + downloadProgress.value?.downloadingFile?.value =context.getString(R.string.downloading_file, getFileNameFromUrl(url)) + } + .setOnProgressListener { progress -> + downloadProgress.value?.downloadProgress?.value = (progress.currentBytes * 100 / progress.totalBytes).toInt() + } + .start(object : OnDownloadListener { + override fun onDownloadComplete() { + if (variant == "root" && apk != "stock") { + downloadApk(context, "stock") // recursive in coroutine its so bad... + return } + + when (apk) { + "music" -> { + if (variant == "root") { + if (validateTheme(downloadPath!!, "root", hashUrl!!, context)) { + if (downloadStockCheck(musicRootPkg, versionCode!!, context)) + downloadApk(context, "stock") + else + startMusicInstall(context) + } else { + downloadApk(context, apk) + } + } else + startMusicInstall(context) + } + } + + startMusicInstall(context) } - startMusicInstall(context) - } + override fun onError(error: Error?) { + if (baseurl != backupUrl) { + baseurl = "$backupUrl/music/v$version" + downloadApk(context, apk) + return + } - override fun onError(error: Error?) { - if (baseurl != backupUrl) { - baseurl = "$backupUrl/music/v$version" - downloadApk(context, apk) - return + downloadProgress.value?.downloadingFile?.value = context.getString(R.string.error_downloading, "Music") } - - downloadProgress.get()?.downloadingFile?.set(context.getString(R.string.error_downloading, "Music")) - } - }) + }) + } } - } fun startMusicInstall(context: Context) { - downloadProgress.get()?.installing?.set(true) - downloadProgress.get()?.reset() + downloadProgress.value?.installing?.value = true + downloadProgress.value?.reset() if (variant == "root") installMusicRoot(context) else install("${context.getExternalFilesDir("music/nonroot")}/nonroot.apk", context) } - } diff --git a/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloader.kt b/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloader.kt index d906685d..affbe1ec 100644 --- a/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloader.kt +++ b/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloader.kt @@ -28,7 +28,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import java.io.File -object VancedDownloader { +object VancedDownloader: CoroutineScope by CoroutineScope(Dispatchers.IO) { private lateinit var prefs: SharedPreferences private lateinit var defPrefs: SharedPreferences @@ -36,7 +36,7 @@ object VancedDownloader { private var installUrl: String? = null private var variant: String? = null private var theme: String? = null - private var lang: MutableList? = null + private var lang = mutableListOf() private lateinit var themePath: String @@ -56,7 +56,9 @@ object VancedDownloader { downloadPath = context.getExternalFilesDir("vanced/$variant")?.path File(downloadPath.toString()).deleteRecursively() installUrl = defPrefs.getInstallUrl() - lang = prefs.getString("lang", getDefaultVancedLanguages())?.split(", ")?.toMutableList() + prefs.getString("lang", getDefaultVancedLanguages())?.let { + lang = it.split(", ").toMutableList() + } theme = prefs.getString("theme", "dark") vancedVersion = defPrefs.getString("vanced_version", "latest")?.getLatestAppVersion(vancedVersions.get()?.value ?: listOf("")) themePath = "$installUrl/apks/v$vancedVersion/$variant/Theme" @@ -73,24 +75,24 @@ object VancedDownloader { context: Context, type: String = "theme" ) { - CoroutineScope(Dispatchers.IO).launch { + launch { val url = when (type) { "theme" -> "$themePath/$theme.apk" "arch" -> "$installUrl/apks/v$vancedVersion/$variant/Arch/split_config.$arch.apk" "stock" -> "$themePath/stock.apk" "dpi" -> "$themePath/dpi.apk" - "lang" -> "$installUrl/apks/v$vancedVersion/$variant/Language/split_config.${lang?.get(count)}.apk" + "lang" -> "$installUrl/apks/v$vancedVersion/$variant/Language/split_config.${lang[count]}.apk" else -> throw NotImplementedError("This type of APK is NOT valid. What the hell did you even do?") } - downloadProgress.get()?.currentDownload = PRDownloader.download(url, downloadPath, getFileNameFromUrl(url)) + downloadProgress.value?.currentDownload = PRDownloader.download(url, downloadPath, getFileNameFromUrl(url)) .build() .setOnStartOrResumeListener { - downloadProgress.get()?.downloadingFile?.set(context.getString(R.string.downloading_file, getFileNameFromUrl(url))) + downloadProgress.value?.downloadingFile?.value = context.getString(R.string.downloading_file, getFileNameFromUrl(url)) } .setOnProgressListener { progress -> - downloadProgress.get()?.downloadProgress?.set((progress.currentBytes * 100 / progress.totalBytes).toInt()) + downloadProgress.value?.downloadProgress?.value = (progress.currentBytes * 100 / progress.totalBytes).toInt() } .start(object : OnDownloadListener { override fun onDownloadComplete() { @@ -112,7 +114,7 @@ object VancedDownloader { "lang" -> { count++ succesfulLangCount++ - if (count < lang?.size!!) + if (count < lang.size) downloadSplits(context, "lang") else startVancedInstall(context) @@ -132,16 +134,16 @@ object VancedDownloader { if (type == "lang") { count++ when { - count < lang?.size!! -> downloadSplits(context, "lang") + count < lang.size -> downloadSplits(context, "lang") succesfulLangCount == 0 -> { - lang?.add("en") + lang.add("en") downloadSplits(context, "lang") } else -> startVancedInstall(context) } } else { - downloadProgress.get()?.downloadingFile?.set(context.getString(R.string.error_downloading, getFileNameFromUrl(url))) + downloadProgress.value?.downloadingFile?.value = context.getString(R.string.error_downloading, getFileNameFromUrl(url)) } } }) @@ -149,8 +151,8 @@ object VancedDownloader { } fun startVancedInstall(context: Context, variant: String? = this.variant) { - downloadProgress.get()?.installing?.set(true) - downloadProgress.get()?.reset() + downloadProgress.value?.installing?.value = true + downloadProgress.value?.reset() FirebaseAnalytics.getInstance(context).logEvent(FirebaseAnalytics.Event.SELECT_ITEM) { variant?.let { param("vanced_variant", it) } theme?.let { param("vanced_theme", it) } @@ -160,8 +162,4 @@ object VancedDownloader { else installVanced(context) } - - - - -} +} \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/core/ext/FragmentExt.kt b/app/src/main/java/com/vanced/manager/core/ext/FragmentExt.kt new file mode 100644 index 00000000..d10352ca --- /dev/null +++ b/app/src/main/java/com/vanced/manager/core/ext/FragmentExt.kt @@ -0,0 +1,15 @@ +package com.vanced.manager.core.ext + +import androidx.fragment.app.DialogFragment +import androidx.fragment.app.Fragment +import kotlin.reflect.full.createInstance + +fun Fragment.requireSupportFM() = requireActivity().supportFragmentManager + +inline fun Fragment.showDialogRefl() { + D::class.createInstance().show(requireSupportFM(), D::class.simpleName) +} + +fun Fragment.showDialog(dialog: D) { + dialog.show(requireSupportFM(), dialog::class.simpleName) +} \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/model/ProgressModel.kt b/app/src/main/java/com/vanced/manager/model/ProgressModel.kt index 23840c68..47c852a1 100644 --- a/app/src/main/java/com/vanced/manager/model/ProgressModel.kt +++ b/app/src/main/java/com/vanced/manager/model/ProgressModel.kt @@ -1,24 +1,22 @@ package com.vanced.manager.model -import androidx.databinding.ObservableBoolean -import androidx.databinding.ObservableField -import androidx.databinding.ObservableInt +import androidx.lifecycle.MutableLiveData open class ProgressModel { - - val downloadProgress = ObservableInt() - val downloadingFile = ObservableField() - val installing = ObservableBoolean() + + val downloadProgress = MutableLiveData() + val downloadingFile = MutableLiveData() + val installing = MutableLiveData() var currentDownload: Int = 0 fun reset() { - downloadProgress.set(0) - downloadingFile.set("") + downloadProgress.value = 0 + downloadingFile.value = "" } init { - installing.set(false) + installing.value = false reset() } diff --git a/app/src/main/java/com/vanced/manager/ui/MainActivity.kt b/app/src/main/java/com/vanced/manager/ui/MainActivity.kt index 3d9123af..b0dd13c0 100644 --- a/app/src/main/java/com/vanced/manager/ui/MainActivity.kt +++ b/app/src/main/java/com/vanced/manager/ui/MainActivity.kt @@ -13,11 +13,11 @@ import androidx.navigation.NavDestination import androidx.navigation.findNavController import androidx.navigation.ui.AppBarConfiguration import androidx.navigation.ui.setupWithNavController -import androidx.preference.PreferenceManager.getDefaultSharedPreferences +import androidx.preference.PreferenceManager.* import com.crowdin.platform.Crowdin import com.crowdin.platform.LoadingStateListener import com.google.firebase.messaging.FirebaseMessaging -import com.vanced.manager.BuildConfig.ENABLE_CROWDIN_AUTH +import com.vanced.manager.BuildConfig.* import com.vanced.manager.R import com.vanced.manager.databinding.ActivityMainBinding import com.vanced.manager.ui.dialogs.DialogContainer @@ -104,8 +104,9 @@ class MainActivity : AppCompatActivity() { navHost.navigate(HomeFragmentDirections.toSettingsFragment()) return true } + R.id.toolbar_update_manager -> { - ManagerUpdateDialog(false).show(supportFragmentManager, "manager_update") + ManagerUpdateDialog.newInstance(false).show(supportFragmentManager, "manager_update") } R.id.dev_settings -> { navHost.navigate(SettingsFragmentDirections.toDevSettingsFragment()) @@ -178,7 +179,7 @@ class MainActivity : AppCompatActivity() { private fun checkUpdates() { if (InternetTools.isUpdateAvailable()) { - ManagerUpdateDialog(false).show(supportFragmentManager, "UpdateCheck") + ManagerUpdateDialog.newInstance(false).show(supportFragmentManager, "UpdateCheck") } } diff --git a/app/src/main/java/com/vanced/manager/ui/core/BindingBottomSheetDialogFragment.kt b/app/src/main/java/com/vanced/manager/ui/core/BindingBottomSheetDialogFragment.kt new file mode 100644 index 00000000..1b8408e1 --- /dev/null +++ b/app/src/main/java/com/vanced/manager/ui/core/BindingBottomSheetDialogFragment.kt @@ -0,0 +1,37 @@ +package com.vanced.manager.ui.core + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.viewbinding.ViewBinding +import com.google.android.material.bottomsheet.BottomSheetDialogFragment + +abstract class BindingBottomSheetDialogFragment : BottomSheetDialogFragment() { + + private var _binding: VB? = null + protected val binding: VB get() = requireNotNull(_binding) + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = binding(inflater, container, savedInstanceState) + otherSetups() + return binding.root + } + + protected abstract fun binding( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): VB + + protected open fun otherSetups() = Unit + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/core/BindingDialogFragment.kt b/app/src/main/java/com/vanced/manager/ui/core/BindingDialogFragment.kt new file mode 100644 index 00000000..b2a224aa --- /dev/null +++ b/app/src/main/java/com/vanced/manager/ui/core/BindingDialogFragment.kt @@ -0,0 +1,37 @@ +package com.vanced.manager.ui.core + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.app.AppCompatDialogFragment +import androidx.viewbinding.ViewBinding + +abstract class BindingDialogFragment : AppCompatDialogFragment() { + + private var _binding: VB? = null + protected val binding: VB get() = requireNotNull(_binding) + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = binding(inflater, container, savedInstanceState) + otherSetups() + return binding.root + } + + protected abstract fun binding( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): VB + + protected open fun otherSetups() = Unit + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/core/BindingFragment.kt b/app/src/main/java/com/vanced/manager/ui/core/BindingFragment.kt new file mode 100644 index 00000000..62a0d0ed --- /dev/null +++ b/app/src/main/java/com/vanced/manager/ui/core/BindingFragment.kt @@ -0,0 +1,37 @@ +package com.vanced.manager.ui.core + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.viewbinding.ViewBinding + +abstract class BindingFragment : Fragment() { + + private var _binding: VB? = null + protected val binding: VB get() = requireNotNull(_binding) + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = binding(inflater, container, savedInstanceState) + otherSetups() + return binding.root + } + + protected abstract fun binding( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): VB + + protected open fun otherSetups() = Unit + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/AppDownloadDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/AppDownloadDialog.kt index 9815d7bb..b4183639 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/AppDownloadDialog.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/AppDownloadDialog.kt @@ -8,10 +8,8 @@ import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup -import androidx.databinding.DataBindingUtil -import androidx.fragment.app.DialogFragment +import androidx.core.view.isVisible import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.downloader.PRDownloader import com.vanced.manager.R @@ -19,53 +17,87 @@ import com.vanced.manager.core.downloader.MicrogDownloader.downloadMicrog import com.vanced.manager.core.downloader.MusicDownloader.downloadMusic import com.vanced.manager.core.downloader.VancedDownloader.downloadVanced import com.vanced.manager.databinding.DialogAppDownloadBinding +import com.vanced.manager.ui.core.BindingDialogFragment import com.vanced.manager.utils.DownloadHelper.downloadProgress -class AppDownloadDialog( - private val app: String, - private val installing: Boolean = false -) : DialogFragment() { +class AppDownloadDialog : BindingDialogFragment() { - private lateinit var binding: DialogAppDownloadBinding + companion object { + + const val CLOSE_DIALOG = "close_dialog" + private const val TAG_APP = "TAG_APP" + private const val TAG_INSTALLING = "TAG_INSTALLING" + + fun newInstance( + app: String, + installing: Boolean = false + ): AppDownloadDialog = AppDownloadDialog().apply { + arguments = Bundle().apply { + putString(TAG_APP, app) + putBoolean(TAG_INSTALLING, installing) + } + } + } private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(requireActivity()) } private val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { - when (intent.action) { - CLOSE_DIALOG -> dismiss() + if (intent.action == CLOSE_DIALOG) { + dismiss() } } } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - if (dialog != null && dialog?.window != null) { - dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) - } - binding = DataBindingUtil.inflate(inflater, R.layout.dialog_app_download, container, false) - binding.progress = downloadProgress.get() - return binding.root + ) = DialogAppDownloadBinding.inflate(inflater, container, false) + + override fun otherSetups() { + dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + bindData() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - isCancelable = false - binding.appDownloadHeader.text = requireActivity().getString(R.string.installing_app, app) - binding.appDownloadCancel.setOnClickListener { - if (downloadProgress.get()?.installing?.get() == true) - return@setOnClickListener - - PRDownloader.cancel(downloadProgress.get()!!.currentDownload) - dismiss() + private fun bindData() { + with(binding) { + isCancelable = false + bindDownloadProgress() + val app = arguments?.getString(TAG_APP) + appDownloadHeader.text = app + if (arguments?.getBoolean(TAG_INSTALLING) == false) { + when (app) { + getString(R.string.vanced) -> downloadVanced(requireContext()) + getString(R.string.music) -> downloadMusic(requireContext()) + getString(R.string.microg) -> downloadMicrog(requireContext()) + } + } } - if (!installing) { - when (app) { - requireActivity().getString(R.string.vanced) -> downloadVanced(requireActivity()) - requireActivity().getString(R.string.music) -> downloadMusic(requireActivity()) - requireActivity().getString(R.string.microg) -> downloadMicrog(requireActivity()) + } + + private fun DialogAppDownloadBinding.bindDownloadProgress() { + with(downloadProgress) { + observe(viewLifecycleOwner) { progressModel -> + progressModel.downloadProgress.observe(viewLifecycleOwner) { + appDownloadProgressbar.progress = it + } + progressModel.installing.observe(viewLifecycleOwner) { installing -> + appDownloadProgressbar.isVisible = !installing + appInstallProgressbar.isVisible = installing + appDownloadFile.isVisible = !installing + appDownloadCancel.isEnabled = !installing + appDownloadCancel.setOnClickListener { + if (installing) { + return@setOnClickListener + } + PRDownloader.cancel(progressModel.currentDownload) + dismiss() + } + } + progressModel.downloadingFile.observe(viewLifecycleOwner) { + appDownloadFile.text = it + } } } } @@ -80,9 +112,4 @@ class AppDownloadDialog( intentFilter.addAction(CLOSE_DIALOG) localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter) } - - companion object { - const val CLOSE_DIALOG = "close_dialog" - } - } \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/AppInfoDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/AppInfoDialog.kt index 126d90ae..517e881e 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/AppInfoDialog.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/AppInfoDialog.kt @@ -5,34 +5,49 @@ import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable import android.os.Bundle import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup -import androidx.databinding.DataBindingUtil -import androidx.fragment.app.DialogFragment +import androidx.core.graphics.drawable.toBitmap import com.vanced.manager.R import com.vanced.manager.databinding.DialogAppInfoBinding +import com.vanced.manager.ui.core.BindingDialogFragment -class AppInfoDialog( - private val appName: String?, - private val appIcon: Drawable?, - private val changelog: String? -) : DialogFragment() { +class AppInfoDialog : BindingDialogFragment() { - private lateinit var binding: DialogAppInfoBinding + companion object { - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - if (dialog != null && dialog?.window != null) { - dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + private const val TAG_APP_NAME = "TAG_APP_NAME" + private const val TAG_APP_ICON = "TAG_APP_ICON" + private const val TAG_CHANGELOG = "TAG_CHANGELOG" + + fun newInstance( + appName: String?, + appIcon: Drawable?, + changelog: String? + ): AppInfoDialog = AppInfoDialog().apply { + arguments = Bundle().apply { + putString(TAG_APP_NAME, appName) + putString(TAG_CHANGELOG, changelog) + putParcelable(TAG_APP_ICON, appIcon?.toBitmap()) + } } - binding = DataBindingUtil.inflate(inflater, R.layout.dialog_app_info, container, false) - return binding.root } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - binding.aboutAppName.text = requireActivity().getString(R.string.about_app, appName) - binding.aboutAppImage.setImageDrawable(appIcon) - binding.aboutAppChangelog.text = changelog + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ) = DialogAppInfoBinding.inflate(inflater, container, false) + + override fun otherSetups() { + dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + bindData() } + private fun bindData() { + with(binding) { + aboutAppName.text = getString(R.string.about_app, arguments?.getString(TAG_APP_NAME)) + aboutAppChangelog.text = arguments?.getString(TAG_CHANGELOG) + aboutAppImage.setImageBitmap(arguments?.getParcelable(TAG_APP_ICON)) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/AppVersionSelectorDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/AppVersionSelectorDialog.kt index 7bdf55f2..940d23b7 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/AppVersionSelectorDialog.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/AppVersionSelectorDialog.kt @@ -2,68 +2,91 @@ package com.vanced.manager.ui.dialogs import android.content.DialogInterface import android.os.Bundle +import android.util.Log import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup import androidx.core.content.edit -import androidx.databinding.DataBindingUtil -import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.radiobutton.MaterialRadioButton import com.vanced.manager.R import com.vanced.manager.databinding.DialogBottomRadioButtonBinding +import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment import com.vanced.manager.utils.Extensions.getCheckedButtonTag import com.vanced.manager.utils.Extensions.getDefaultPrefs import com.vanced.manager.utils.Extensions.show -class AppVersionSelectorDialog( - private val versions: List, - private val app: String -) : BottomSheetDialogFragment() { +class AppVersionSelectorDialog : BindingBottomSheetDialogFragment() { - private lateinit var binding: DialogBottomRadioButtonBinding private val prefs by lazy { requireActivity().getDefaultPrefs() } - override fun onCreateView( + companion object { + + private const val TAG_VERSIONS = "TAG_VERSIONS" + private const val TAG_APP = "TAG_APP" + + fun newInstance( + versions: List?, + app: String + ): AppVersionSelectorDialog = AppVersionSelectorDialog().apply { + arguments = Bundle().apply { + val arrayList = arrayListOf() + versions?.let { arrayList.addAll(it) } + putStringArrayList(TAG_VERSIONS, arrayList) + putString(TAG_APP, app) + } + } + } + + override fun binding( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - binding = DataBindingUtil.inflate(inflater, R.layout.dialog_bottom_radio_button, container, false) - return binding.root + ) = DialogBottomRadioButtonBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - loadBoxes() - view.findViewWithTag(prefs.getString("${app}_version", "latest")).isChecked = true - binding.dialogTitle.text = requireActivity().getString(R.string.version) - binding.dialogSave.setOnClickListener { - prefs.edit { - putString("${app}_version", binding.dialogRadiogroup.getCheckedButtonTag()) + private fun bindData() { + with(binding) { + loadBoxes()?.forEach { mrb -> + dialogRadiogroup.addView( + mrb, + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT + ) } - dismiss() - } - } - - private fun loadBoxes() { - requireActivity().runOnUiThread { - for (i in versions.indices) { - val rb = MaterialRadioButton(requireActivity()).apply { - text = versions[i] - tag = versions[i] - textSize = 18f + val tag = root.findViewWithTag( + prefs.getString("${arguments?.getString(TAG_APP)}_version", "latest") + ) + if (tag != null) { + tag.isChecked = true + } + dialogTitle.text = getString(R.string.version) + dialogSave.setOnClickListener { + val checkedTag = dialogRadiogroup.getCheckedButtonTag() + if (checkedTag != null) { + prefs.edit { putString("${arguments?.getString(TAG_APP)}_version", checkedTag) } } - binding.dialogRadiogroup.addView(rb, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + dismiss() } } } + private fun loadBoxes() = + arguments?.getStringArrayList(TAG_VERSIONS)?.map { version -> + MaterialRadioButton(requireActivity()).apply { + text = version + tag = version + textSize = 18f + } + } + override fun onDismiss(dialog: DialogInterface) { super.onDismiss(dialog) - if (app == "vanced") + if (arguments?.getString(TAG_APP) == "vanced") { VancedPreferencesDialog().show(requireActivity()) - else + } else { MusicPreferencesDialog().show(requireActivity()) + } } - } \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/InstallationFilesDetectedDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/InstallationFilesDetectedDialog.kt index a949ec4e..1d8f04d1 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/InstallationFilesDetectedDialog.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/InstallationFilesDetectedDialog.kt @@ -2,54 +2,67 @@ package com.vanced.manager.ui.dialogs import android.os.Bundle import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup -import androidx.databinding.DataBindingUtil -import androidx.preference.PreferenceManager.getDefaultSharedPreferences -import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import androidx.preference.PreferenceManager.* import com.vanced.manager.R import com.vanced.manager.core.downloader.MicrogDownloader.startMicrogInstall import com.vanced.manager.core.downloader.MusicDownloader.startMusicInstall import com.vanced.manager.core.downloader.VancedDownloader.startVancedInstall import com.vanced.manager.databinding.DialogInstallationFilesDetectedBinding +import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment import com.vanced.manager.utils.Extensions.show -class InstallationFilesDetectedDialog(private val app: String) : BottomSheetDialogFragment() { +class InstallationFilesDetectedDialog : BindingBottomSheetDialogFragment() { - private lateinit var binding: DialogInstallationFilesDetectedBinding + companion object { - override fun onCreateView( + private const val TAG_APP = "TAG_APP" + + fun newInstance( + app: String + ): InstallationFilesDetectedDialog = InstallationFilesDetectedDialog().apply { + arguments = Bundle().apply { + putString(TAG_APP, app) + } + } + } + + override fun binding( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - binding = DataBindingUtil.inflate(inflater, R.layout.dialog_installation_files_detected, container, false) - return binding.root + ) = DialogInstallationFilesDetectedBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - binding.installationDetectedTitle.text = requireActivity().getString(R.string.app_install_files_detected, app) - binding.installationDetectedSummary.text = requireActivity().getString(R.string.app_install_files_detected_summary, app) - - binding.installationDetectedRedownload.setOnClickListener { - dismiss() - if (app == requireActivity().getString(R.string.vanced)) - VancedPreferencesDialog().show(requireActivity()) - else - AppDownloadDialog(app).show(requireActivity()) - } - - binding.installationDetectedInstall.setOnClickListener { - dismiss() - when (app) { - requireActivity().getString(R.string.vanced) -> startVancedInstall(requireActivity(), getDefaultSharedPreferences(requireActivity()).getString("vanced_variant", "nonroot")) - requireActivity().getString(R.string.music) -> startMusicInstall(requireActivity()) - requireActivity().getString(R.string.microg) -> startMicrogInstall(requireActivity()) + private fun bindData() { + with(binding) { + val app = arguments?.getString(TAG_APP) ?: throw IllegalArgumentException("app name is null") + installationDetectedTitle.text = getString(R.string.app_install_files_detected, app) + installationDetectedSummary.text = getString(R.string.app_install_files_detected_summary, app) + installationDetectedRedownload.setOnClickListener { + dismiss() + if (app == getString(R.string.vanced)) + VancedPreferencesDialog().show(requireActivity()) + else { + AppDownloadDialog.newInstance(app).show(requireActivity()) + } + } + installationDetectedInstall.setOnClickListener { + dismiss() + when (app) { + getString(R.string.vanced) -> startVancedInstall(requireContext(), + getDefaultSharedPreferences(requireContext()).getString("vanced_variant", "nonroot")) + getString(R.string.music) -> startMusicInstall(requireContext()) + getString(R.string.microg) -> startMicrogInstall(requireContext()) + } + AppDownloadDialog.newInstance( + app = app, + installing = true + ).show(requireActivity()) } - AppDownloadDialog(app, true).show(requireActivity()) } } - } \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerAccentColorDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerAccentColorDialog.kt index 7ef7e684..5d8c2436 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerAccentColorDialog.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerAccentColorDialog.kt @@ -10,37 +10,45 @@ import androidx.preference.PreferenceManager.getDefaultSharedPreferences import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.radiobutton.MaterialRadioButton import com.vanced.manager.R +import com.vanced.manager.databinding.DialogInstallationFilesDetectedBinding import com.vanced.manager.databinding.DialogManagerAccentColorBinding +import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment import com.vanced.manager.utils.Extensions.getCheckedButtonTag -class ManagerAccentColorDialog : BottomSheetDialogFragment() { +class ManagerAccentColorDialog : BindingBottomSheetDialogFragment() { - private lateinit var binding: DialogManagerAccentColorBinding - private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) } - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - binding = DataBindingUtil.inflate(inflater, R.layout.dialog_manager_accent_color, container, false) - return binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - val accent = prefs.getString("manager_accent", "Blue") - view.findViewWithTag(accent).isChecked = true - binding.accentSave.setOnClickListener { - val newPref = binding.accentRadiogroup.getCheckedButtonTag() - if (accent != newPref) { - prefs.edit { putString("manager_accent", newPref) } - dismiss() - requireActivity().recreate() - } else { - dismiss() - } + companion object { + fun newInstance(): ManagerAccentColorDialog = ManagerAccentColorDialog().apply { + arguments = Bundle() } } + private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) } + + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ) = DialogManagerAccentColorBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() + } + + private fun bindData() { + with(binding) { + val accent = prefs.getString("manager_accent", "Blue") + root.findViewWithTag(accent).isChecked = true + accentSave.setOnClickListener { + val newPref = binding.accentRadiogroup.getCheckedButtonTag() + if (accent != newPref) { + prefs.edit { putString("manager_accent", newPref) } + dismiss() + requireActivity().recreate() + } else { + dismiss() + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerLanguageDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerLanguageDialog.kt index 8592dd62..0df816f8 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerLanguageDialog.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerLanguageDialog.kt @@ -2,63 +2,64 @@ package com.vanced.manager.ui.dialogs import android.os.Bundle import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup -import android.view.ViewGroup.LayoutParams.MATCH_PARENT -import android.view.ViewGroup.LayoutParams.WRAP_CONTENT +import android.view.ViewGroup.LayoutParams.* import androidx.core.content.edit -import androidx.databinding.DataBindingUtil -import androidx.preference.PreferenceManager.getDefaultSharedPreferences -import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import androidx.preference.PreferenceManager.* import com.google.android.material.radiobutton.MaterialRadioButton -import com.vanced.manager.BuildConfig.MANAGER_LANGUAGES -import com.vanced.manager.R +import com.vanced.manager.BuildConfig.* import com.vanced.manager.databinding.DialogManagerLanguageBinding +import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment import com.vanced.manager.utils.Extensions.getCheckedButtonTag import com.vanced.manager.utils.LanguageHelper.getLanguageFormat -class ManagerLanguageDialog : BottomSheetDialogFragment() { +class ManagerLanguageDialog : BindingBottomSheetDialogFragment() { + + companion object { + + fun newInstance(): ManagerLanguageDialog = ManagerLanguageDialog().apply { + arguments = Bundle() + } + } - private lateinit var binding: DialogManagerLanguageBinding private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) } - override fun onCreateView( + override fun binding( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - binding = DataBindingUtil.inflate(inflater, R.layout.dialog_manager_language, container, false) - return binding.root + ) = DialogManagerLanguageBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - addRadioButtons() - val language = prefs.getString("manager_lang", "System Default") - view.findViewWithTag(language).isChecked = true - binding.languageSave.setOnClickListener { - val newPref = binding.languageRadiogroup.getCheckedButtonTag() - if (language != newPref) { - prefs.edit { putString("manager_lang", newPref) } - dismiss() - requireActivity().recreate() - } else { - dismiss() + private fun bindData() { + with(binding) { + addRadioButtons().forEach { mrb -> + languageRadiogroup.addView(mrb, MATCH_PARENT, WRAP_CONTENT) } - } - } - - private fun addRadioButtons() { - requireActivity().runOnUiThread { - (arrayOf("System Default") + MANAGER_LANGUAGES).forEach { lang -> - val button = MaterialRadioButton(requireActivity()).apply { - text = getLanguageFormat(requireActivity(), lang) - textSize = 18f - tag = lang + val language = prefs.getString("manager_lang", "System Default") + root.findViewWithTag(language).isChecked = true + languageSave.setOnClickListener { + val newPref = binding.languageRadiogroup.getCheckedButtonTag() + if (language != newPref) { + prefs.edit { putString("manager_lang", newPref) } + dismiss() + requireActivity().recreate() + } else { + dismiss() } - binding.languageRadiogroup.addView(button, MATCH_PARENT, WRAP_CONTENT) } } } + private fun addRadioButtons() = + (arrayOf("System Default") + MANAGER_LANGUAGES).map { lang -> + MaterialRadioButton(requireActivity()).apply { + text = getLanguageFormat(requireActivity(), lang) + textSize = 18f + tag = lang + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerThemeDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerThemeDialog.kt index 0cdfb32a..af3a970b 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerThemeDialog.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerThemeDialog.kt @@ -2,43 +2,48 @@ package com.vanced.manager.ui.dialogs import android.os.Bundle import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup import androidx.core.content.edit -import androidx.databinding.DataBindingUtil -import androidx.preference.PreferenceManager.getDefaultSharedPreferences -import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import androidx.preference.PreferenceManager.* import com.google.android.material.radiobutton.MaterialRadioButton -import com.vanced.manager.R import com.vanced.manager.databinding.DialogManagerThemeBinding +import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment import com.vanced.manager.utils.Extensions.getCheckedButtonTag -class ManagerThemeDialog : BottomSheetDialogFragment() { +class ManagerThemeDialog : BindingBottomSheetDialogFragment() { + + companion object { + + fun newInstance(): ManagerThemeDialog = ManagerThemeDialog().apply { + arguments = Bundle() + } + } - private lateinit var binding: DialogManagerThemeBinding private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) } - override fun onCreateView( + override fun binding( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - binding = DataBindingUtil.inflate(inflater, R.layout.dialog_manager_theme, container, false) - return binding.root + ) = DialogManagerThemeBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - val theme = prefs.getString("manager_theme", "System Default") - view.findViewWithTag(theme).isChecked = true - binding.themeSave.setOnClickListener { - val newPref = binding.themeRadiogroup.getCheckedButtonTag() - if (theme != newPref) { - prefs.edit { putString("manager_theme", newPref) } - dismiss() - requireActivity().recreate() - } else { - dismiss() + private fun bindData() { + with(binding) { + val theme = prefs.getString("manager_theme", "System Default") + root.findViewWithTag(theme).isChecked = true + themeSave.setOnClickListener { + val newPref = themeRadiogroup.getCheckedButtonTag() + if (theme != newPref) { + prefs.edit { putString("manager_theme", newPref) } + dismiss() + requireActivity().recreate() + } else { + dismiss() + } } } } diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerUpdateDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerUpdateDialog.kt index 5e36ce19..1939b065 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerUpdateDialog.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerUpdateDialog.kt @@ -8,23 +8,34 @@ import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup -import androidx.databinding.DataBindingUtil -import androidx.fragment.app.DialogFragment +import androidx.core.view.isVisible +import androidx.lifecycle.lifecycleScope import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.downloader.PRDownloader import com.vanced.manager.R import com.vanced.manager.databinding.DialogManagerUpdateBinding +import com.vanced.manager.ui.core.BindingDialogFragment import com.vanced.manager.utils.DownloadHelper.downloadManager import com.vanced.manager.utils.DownloadHelper.downloadProgress import com.vanced.manager.utils.InternetTools.isUpdateAvailable +import kotlinx.coroutines.launch -class ManagerUpdateDialog( - private val forceUpdate: Boolean -) : DialogFragment() { +class ManagerUpdateDialog : BindingDialogFragment() { - private lateinit var binding: DialogManagerUpdateBinding + companion object { + + const val CLOSE_DIALOG = "close_dialog" + private const val TAG_FORCE_UPDATE = "TAG_FORCE_UPDATE" + + fun newInstance( + forceUpdate: Boolean + ): ManagerUpdateDialog = ManagerUpdateDialog().apply { + arguments = Bundle().apply { + putBoolean(TAG_FORCE_UPDATE, forceUpdate) + } + } + } private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(requireActivity()) } @@ -36,30 +47,45 @@ class ManagerUpdateDialog( } } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - if (dialog != null && dialog?.window != null) { - dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + ) = DialogManagerUpdateBinding.inflate(inflater, container, false) + + override fun otherSetups() { + dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + bindData() + lifecycleScope.launch { + if (arguments?.getBoolean(TAG_FORCE_UPDATE) == true) { + binding.managerUpdatePatient.text = requireActivity().getString(R.string.please_be_patient) + downloadManager(requireActivity()) + } else { + checkUpdates() + } + + binding.managerUpdateCancel.setOnClickListener { + PRDownloader.cancel(downloadProgress.value?.currentDownload) + dismiss() + } } - isCancelable = false - binding = DataBindingUtil.inflate(inflater, R.layout.dialog_manager_update, container, false) - binding.progress = downloadProgress.get() - return binding.root } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - if (forceUpdate) { - binding.managerUpdatePatient.text = requireActivity().getString(R.string.please_be_patient) - downloadManager(requireActivity()) - } else - checkUpdates() + private fun bindData() { + with(binding) { + isCancelable = false + bindDownloadProgress() + } + } - binding.managerUpdateCancel.setOnClickListener { - PRDownloader.cancel(downloadProgress.get()!!.currentDownload) - dismiss() + private fun DialogManagerUpdateBinding.bindDownloadProgress() { + with(downloadProgress) { + observe(viewLifecycleOwner) { progressModel -> + progressModel.downloadProgress.observe(viewLifecycleOwner) { + managerUpdateProgressbar.progress = it + managerUpdateProgressbar.isVisible = it != 0 + } + } } } @@ -68,12 +94,13 @@ class ManagerUpdateDialog( registerReceiver() } - private fun checkUpdates() { + private suspend fun checkUpdates() { if (isUpdateAvailable()) { binding.managerUpdatePatient.text = requireActivity().getString(R.string.please_be_patient) downloadManager(requireActivity()) - } else + } else { binding.managerUpdatePatient.text = requireActivity().getString(R.string.update_not_found) + } } private fun registerReceiver() { @@ -81,9 +108,4 @@ class ManagerUpdateDialog( intentFilter.addAction(CLOSE_DIALOG) localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter) } - - companion object { - const val CLOSE_DIALOG = "close_dialog" - } - } diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerVariantDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerVariantDialog.kt index e64ca95d..38341fd9 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerVariantDialog.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerVariantDialog.kt @@ -2,48 +2,55 @@ package com.vanced.manager.ui.dialogs import android.os.Bundle import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup import androidx.core.content.edit -import androidx.databinding.DataBindingUtil -import androidx.preference.PreferenceManager.getDefaultSharedPreferences -import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import androidx.preference.PreferenceManager.* import com.google.android.material.radiobutton.MaterialRadioButton import com.topjohnwu.superuser.Shell -import com.vanced.manager.R import com.vanced.manager.databinding.DialogManagerVariantBinding +import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment import com.vanced.manager.utils.Extensions.getCheckedButtonTag -class ManagerVariantDialog : BottomSheetDialogFragment() { +class ManagerVariantDialog : BindingBottomSheetDialogFragment() { + + companion object { + + fun newInstance(): ManagerVariantDialog = ManagerVariantDialog().apply { + arguments = Bundle() + } + } - private lateinit var binding: DialogManagerVariantBinding private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) } - override fun onCreateView( + override fun binding( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - binding = DataBindingUtil.inflate(inflater, R.layout.dialog_manager_variant, container, false) - return binding.root + ) = DialogManagerVariantBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - val variant = prefs.getString("vanced_variant", "nonroot") - view.findViewWithTag(variant).isChecked = true - binding.variantSave.setOnClickListener { - val newPref = binding.variantRadiogroup.getCheckedButtonTag() - if (variant != newPref) { - if (newPref == "root" && Shell.rootAccess()) - prefs.edit { putString("vanced_variant", "root") } - else - prefs.edit { putString("vanced_variant", "nonroot") } - - dismiss() - requireActivity().recreate() - } else { - dismiss() + private fun bindData() { + with(binding) { + val variant = prefs.getString("vanced_variant", "nonroot") + root.findViewWithTag(variant).isChecked = true + variantSave.setOnClickListener { + val newPref = variantRadiogroup.getCheckedButtonTag() + if (variant != newPref) { + prefs.edit { + if (newPref == "root" && Shell.rootAccess()) { + putString("vanced_variant", "root") + } else { + putString("vanced_variant", "nonroot") + } + } + dismiss() + requireActivity().recreate() + } else { + dismiss() + } } } } diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/MusicPreferencesDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/MusicPreferencesDialog.kt index e595b210..3a40696d 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/MusicPreferencesDialog.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/MusicPreferencesDialog.kt @@ -2,49 +2,54 @@ package com.vanced.manager.ui.dialogs import android.os.Bundle import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup -import androidx.databinding.DataBindingUtil -import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.vanced.manager.R import com.vanced.manager.databinding.DialogMusicPreferencesBinding +import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment import com.vanced.manager.utils.Extensions.convertToAppVersions import com.vanced.manager.utils.Extensions.getDefaultPrefs import com.vanced.manager.utils.Extensions.show import com.vanced.manager.utils.InternetTools.musicVersions -class MusicPreferencesDialog : BottomSheetDialogFragment() { +class MusicPreferencesDialog : BindingBottomSheetDialogFragment() { + + companion object { + + fun newInstance(): MusicPreferencesDialog = MusicPreferencesDialog().apply { + arguments = Bundle() + } + } - private lateinit var binding: DialogMusicPreferencesBinding private val prefs by lazy { requireActivity().getDefaultPrefs() } - override fun onCreateView( + override fun binding( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - binding = DataBindingUtil.inflate(inflater, R.layout.dialog_music_preferences, container, false) - return binding.root + ) = DialogMusicPreferencesBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - val musicVersionsConv = musicVersions.get()?.value?.reversed()?.convertToAppVersions() - - binding.musicInstallTitle.text = requireActivity().getString(R.string.app_installation_preferences, requireActivity().getString(R.string.music)) - binding.musicVersion.text = requireActivity().getString(R.string.chosen_version, prefs.getString("music_version", "latest")) - - binding.openVersionSelector.setOnClickListener { - dismiss() - if (musicVersionsConv != null) { - AppVersionSelectorDialog(musicVersionsConv, "music").show(requireActivity()) + private fun bindData() { + with(binding) { + val musicVersionsConv = musicVersions.get()?.value?.reversed()?.convertToAppVersions() + musicInstallTitle.text = getString(R.string.app_installation_preferences, getString(R.string.music)) + musicVersion.text = getString(R.string.chosen_version, prefs.getString("music_version", "latest")) + openVersionSelector.setOnClickListener { + dismiss() + AppVersionSelectorDialog.newInstance( + versions = musicVersionsConv, + app = "music" + ).show(requireActivity()) + } + musicInstall.setOnClickListener { + dismiss() + AppDownloadDialog.newInstance( + app = getString(R.string.music) + ).show(requireActivity()) } } - binding.musicInstall.setOnClickListener { - dismiss() - AppDownloadDialog(requireActivity().getString(R.string.music)).show(requireActivity()) - } } - } \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/SelectAppsDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/SelectAppsDialog.kt index 1b5d9335..6936f172 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/SelectAppsDialog.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/SelectAppsDialog.kt @@ -2,50 +2,57 @@ package com.vanced.manager.ui.dialogs import android.os.Bundle import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.core.content.edit -import androidx.databinding.DataBindingUtil -import androidx.preference.PreferenceManager.getDefaultSharedPreferences +import androidx.preference.PreferenceManager.* import androidx.recyclerview.widget.LinearLayoutManager -import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.vanced.manager.R import com.vanced.manager.adapter.SelectAppsAdapter import com.vanced.manager.databinding.DialogSelectAppsBinding +import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment -class SelectAppsDialog : BottomSheetDialogFragment() { +class SelectAppsDialog : BindingBottomSheetDialogFragment() { + + companion object { + + fun newInstance(): SelectAppsDialog = SelectAppsDialog().apply { + arguments = Bundle() + } + } - private lateinit var binding: DialogSelectAppsBinding private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) } - override fun onCreateView( + override fun binding( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - binding = DataBindingUtil.inflate(inflater, R.layout.dialog_select_apps, container, false) - return binding.root + ) = DialogSelectAppsBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - val ad = SelectAppsAdapter(requireActivity()) - binding.selectAppsRecycler.apply { - layoutManager = LinearLayoutManager(requireActivity()) - adapter = ad - setHasFixedSize(true) - } - binding.selectAppsSave.setOnClickListener { - if (ad.apps.all { app -> !app.isChecked }) { - Toast.makeText(requireActivity(), R.string.select_at_least_one_app, Toast.LENGTH_SHORT).show() - return@setOnClickListener + private fun bindData() { + with(binding) { + val ad = SelectAppsAdapter(requireActivity()) + selectAppsRecycler.apply { + layoutManager = LinearLayoutManager(requireActivity()) + adapter = ad + setHasFixedSize(true) } - ad.apps.forEach { app -> - prefs.edit { putBoolean("enable_${app.tag}", app.isChecked) } + selectAppsSave.setOnClickListener { + if (ad.apps.all { app -> !app.isChecked }) { + Toast.makeText(requireActivity(), R.string.select_at_least_one_app, Toast.LENGTH_SHORT).show() + return@setOnClickListener + } + prefs.edit { + ad.apps.forEach { app -> + putBoolean("enable_${app.tag}", app.isChecked) + } + } + dismiss() } - dismiss() } } - } \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/URLChangeDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/URLChangeDialog.kt index 2e2a67d3..b0e6b694 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/URLChangeDialog.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/URLChangeDialog.kt @@ -4,51 +4,65 @@ import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup -import android.widget.EditText import android.widget.TextView import androidx.core.content.edit -import androidx.fragment.app.DialogFragment +import androidx.lifecycle.lifecycleScope import androidx.preference.PreferenceManager.getDefaultSharedPreferences -import com.google.android.material.button.MaterialButton -import com.vanced.manager.R +import com.vanced.manager.databinding.DialogCustomUrlBinding +import com.vanced.manager.ui.core.BindingDialogFragment import com.vanced.manager.utils.Extensions.fetchData import com.vanced.manager.utils.InternetTools.baseUrl +import kotlinx.coroutines.launch -class URLChangeDialog : DialogFragment() { +class URLChangeDialog : BindingDialogFragment() { - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - if (dialog != null && dialog?.window != null) { - dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + companion object { + + fun newInstance(): URLChangeDialog = URLChangeDialog().apply { + arguments = Bundle() } - return inflater.inflate(R.layout.dialog_custom_url, container, false) } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - val urlField = view.findViewById(R.id.url_input) - val fieldTxt = if (arguments != null) arguments?.getString("url") else getDefaultSharedPreferences(requireActivity()).getString("install_url", baseUrl) - urlField.setText(fieldTxt, TextView.BufferType.EDITABLE) - view.findViewById(R.id.url_save).setOnClickListener { - val finalUrl = - if (urlField.text.startsWith("https://") || urlField.text.startsWith("http://")) - urlField.text.removeSuffix("/").toString() - else - "https://${urlField.text}".removeSuffix("/") + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ) = DialogCustomUrlBinding.inflate(inflater, container, false) - saveUrl(finalUrl) + override fun otherSetups() { + dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + bindData() + } + + private fun bindData() { + with(binding) { + + urlInput.setText( + if (arguments != null) { + arguments?.getString("url") + } else { + getDefaultSharedPreferences(requireActivity()).getString("install_url", baseUrl) + }, + TextView.BufferType.EDITABLE + ) + urlSave.setOnClickListener { + val finalUrl = if (urlInput.text?.startsWith("https://") == true || urlInput.text?.startsWith("http://") == true) { + urlInput.text?.removeSuffix("/").toString() + } else { + "https://${urlInput.text}".removeSuffix("/") + } + saveUrl(finalUrl) + } + urlReset.setOnClickListener { saveUrl(baseUrl) } } - view.findViewById(R.id.url_reset).setOnClickListener { saveUrl(baseUrl) } } private fun saveUrl(url: String) { - getDefaultSharedPreferences(requireActivity()).edit { putString("install_url", url) } - requireActivity().fetchData() - dismiss() + lifecycleScope.launch { + getDefaultSharedPreferences(requireActivity()).edit { putString("install_url", url) } + requireActivity().fetchData() + dismiss() + } } - } diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/VancedLanguageSelectionDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/VancedLanguageSelectionDialog.kt index ddfa8bf0..da1503f6 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/VancedLanguageSelectionDialog.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/VancedLanguageSelectionDialog.kt @@ -4,82 +4,75 @@ import android.content.Context import android.content.DialogInterface import android.os.Bundle import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup -import android.view.ViewGroup.LayoutParams.MATCH_PARENT -import android.view.ViewGroup.LayoutParams.WRAP_CONTENT +import android.view.ViewGroup.LayoutParams.* import android.widget.LinearLayout import android.widget.Toast import androidx.core.content.edit import androidx.core.content.res.ResourcesCompat -import com.google.android.material.bottomsheet.BottomSheetDialogFragment -import com.google.android.material.button.MaterialButton import com.google.android.material.checkbox.MaterialCheckBox import com.vanced.manager.R +import com.vanced.manager.databinding.DialogVancedLanguageSelectionBinding +import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment import com.vanced.manager.utils.Extensions.show import com.vanced.manager.utils.InternetTools.vanced import com.vanced.manager.utils.LanguageHelper.getDefaultVancedLanguages -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch import java.util.* -class VancedLanguageSelectionDialog : BottomSheetDialogFragment() { +class VancedLanguageSelectionDialog : BindingBottomSheetDialogFragment() { - private lateinit var langs: MutableList - private val prefs by lazy { requireActivity().getSharedPreferences("installPrefs", Context.MODE_PRIVATE) } + companion object { - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.dialog_vanced_language_selection, container, false) - } - - @ExperimentalStdlibApi - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - langs = vanced.get()?.array("langs")?.value ?: mutableListOf("null") - loadBoxes(view.findViewById(R.id.lang_button_ll)) - view.findViewById(R.id.vanced_install_finish).setOnClickListener { - val chosenLangs = mutableListOf() - if (!langs.contains("null")) - langs.forEach { lang -> - if (view.findViewWithTag(lang).isChecked) { - chosenLangs.add(lang) - } - } - - if (chosenLangs.isEmpty()) { - Toast.makeText(requireActivity(), R.string.select_at_least_one_lang, Toast.LENGTH_SHORT).show() - return@setOnClickListener - } - - prefs?.edit { putString("lang", chosenLangs.joinToString()) } - dismiss() + fun newInstance(): VancedLanguageSelectionDialog = VancedLanguageSelectionDialog().apply { + arguments = Bundle() } } - @ExperimentalStdlibApi - private fun loadBoxes(ll: LinearLayout) { - CoroutineScope(Dispatchers.Main).launch { - val langPrefs = prefs.getString("lang", getDefaultVancedLanguages()) - if (this@VancedLanguageSelectionDialog::langs.isInitialized) { - if (!langs.contains("null")) { - langs.forEach { lang -> - val loc = Locale(lang) - val box: MaterialCheckBox = MaterialCheckBox(requireActivity()).apply { - tag = lang - isChecked = langPrefs!!.contains(lang) - text = loc.getDisplayLanguage(loc).capitalize(Locale.ROOT) - textSize = 18F - typeface = ResourcesCompat.getFont(requireActivity(), R.font.exo_bold) - } - ll.addView(box, MATCH_PARENT, WRAP_CONTENT) + private val langs = vanced.get()?.array("langs")?.value + private val prefs by lazy { requireActivity().getSharedPreferences("installPrefs", Context.MODE_PRIVATE) } + + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ) = DialogVancedLanguageSelectionBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() + } + + private fun bindData() { + with(binding) { + langButtonLl.loadBoxes() + vancedInstallFinish.setOnClickListener { + val chosenLangs = mutableListOf() + langs?.forEach { lang -> + if (root.findViewWithTag(lang).isChecked) { + chosenLangs.add(lang) } } - } else - loadBoxes(ll) + if (chosenLangs.isEmpty()) { + Toast.makeText(requireActivity(), R.string.select_at_least_one_lang, Toast.LENGTH_SHORT).show() + return@setOnClickListener + } + prefs?.edit { putString("lang", chosenLangs.joinToString()) } + dismiss() + } + } + } + + private fun LinearLayout.loadBoxes() { + val langPrefs = prefs.getString("lang", getDefaultVancedLanguages()) + langs?.forEach { lang -> + val loc = Locale(lang) + val box: MaterialCheckBox = MaterialCheckBox(requireActivity()).apply { + tag = lang + isChecked = langPrefs?.contains(lang) ?: false + text = loc.getDisplayLanguage(loc).capitalize(Locale.ROOT) + textSize = 18F + typeface = ResourcesCompat.getFont(requireActivity(), R.font.exo_bold) + } + addView(box, MATCH_PARENT, WRAP_CONTENT) } } @@ -87,5 +80,4 @@ class VancedLanguageSelectionDialog : BottomSheetDialogFragment() { super.onDismiss(dialog) VancedPreferencesDialog().show(requireActivity()) } - } diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/VancedPreferencesDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/VancedPreferencesDialog.kt index 3602ef12..8b7ba823 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/VancedPreferencesDialog.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/VancedPreferencesDialog.kt @@ -3,12 +3,10 @@ package com.vanced.manager.ui.dialogs import android.content.Context import android.os.Bundle import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup -import androidx.databinding.DataBindingUtil -import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.vanced.manager.R import com.vanced.manager.databinding.DialogVancedPreferencesBinding +import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment import com.vanced.manager.utils.Extensions.convertToAppTheme import com.vanced.manager.utils.Extensions.convertToAppVersions import com.vanced.manager.utils.Extensions.getDefaultPrefs @@ -17,58 +15,61 @@ import com.vanced.manager.utils.InternetTools.vancedVersions import com.vanced.manager.utils.LanguageHelper.getDefaultVancedLanguages import java.util.* -class VancedPreferencesDialog : BottomSheetDialogFragment() { +class VancedPreferencesDialog : BindingBottomSheetDialogFragment() { + + companion object { + + fun newInstance(): VancedPreferencesDialog = VancedPreferencesDialog().apply { + arguments = Bundle() + } + } - private lateinit var binding: DialogVancedPreferencesBinding private val defPrefs by lazy { requireActivity().getDefaultPrefs() } private val installPrefs by lazy { requireActivity().getSharedPreferences("installPrefs", Context.MODE_PRIVATE) } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - binding = DataBindingUtil.inflate(inflater, R.layout.dialog_vanced_preferences, container, false) - return binding.root + ) = DialogVancedPreferencesBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() } - @ExperimentalStdlibApi - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - val showLang = mutableListOf() - installPrefs.getString("lang", getDefaultVancedLanguages())?.split(", ")?.toTypedArray()?.forEach { lang -> - val loc = Locale(lang) - showLang.add(loc.getDisplayLanguage(loc).capitalize(Locale.ROOT)) - } - - val vancedVersionsConv = vancedVersions.get()?.value?.reversed()?.convertToAppVersions() - - binding.vancedInstallTitle.text = requireActivity().getString(R.string.app_installation_preferences, requireActivity().getString(R.string.vanced)) - - binding.vancedTheme.text = requireActivity().getString(R.string.chosen_theme, installPrefs.getString("theme", "dark")?.convertToAppTheme(requireActivity())) - binding.vancedVersion.text = requireActivity().getString(R.string.chosen_version, defPrefs.getString("vanced_version", "latest")) - binding.vancedLang.text = requireActivity().getString(R.string.chosen_lang, showLang) - - binding.openThemeSelector.setOnClickListener { - dismiss() - VancedThemeSelectorDialog().show(requireActivity()) - } - - binding.openVersionSelector.setOnClickListener { - dismiss() - if (vancedVersionsConv != null) { - AppVersionSelectorDialog(vancedVersionsConv, "vanced").show(requireActivity()) + private fun bindData() { + with(binding) { + val showLang = mutableListOf() + installPrefs.getString("lang", getDefaultVancedLanguages())?.split(", ")?.toTypedArray()?.forEach { lang -> + val loc = Locale(lang) + showLang.add(loc.getDisplayLanguage(loc).capitalize(Locale.ROOT)) + } + val vancedVersionsConv = vancedVersions.get()?.value?.reversed()?.convertToAppVersions() + vancedInstallTitle.text = getString(R.string.app_installation_preferences, getString(R.string.vanced)) + vancedTheme.text = getString(R.string.chosen_theme, installPrefs.getString("theme", "dark")?.convertToAppTheme(requireActivity())) + vancedVersion.text = getString(R.string.chosen_version, defPrefs.getString("vanced_version", "latest")) + vancedLang.text = getString(R.string.chosen_lang, showLang) + openThemeSelector.setOnClickListener { + dismiss() + VancedThemeSelectorDialog().show(requireActivity()) + } + openVersionSelector.setOnClickListener { + dismiss() + AppVersionSelectorDialog.newInstance( + versions = vancedVersionsConv, + app = "vanced" + ).show(requireActivity()) + } + openLanguageSelector.setOnClickListener { + dismiss() + VancedLanguageSelectionDialog().show(requireActivity()) + } + vancedInstall.setOnClickListener { + dismiss() + AppDownloadDialog.newInstance( + app = getString(R.string.vanced) + ).show(requireActivity()) } - } - - binding.openLanguageSelector.setOnClickListener { - dismiss() - VancedLanguageSelectionDialog().show(requireActivity()) - } - - binding.vancedInstall.setOnClickListener { - dismiss() - AppDownloadDialog(requireActivity().getString(R.string.vanced)).show(requireActivity()) } } } diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/VancedThemeSelectorDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/VancedThemeSelectorDialog.kt index 19f3ee3b..36997791 100644 --- a/app/src/main/java/com/vanced/manager/ui/dialogs/VancedThemeSelectorDialog.kt +++ b/app/src/main/java/com/vanced/manager/ui/dialogs/VancedThemeSelectorDialog.kt @@ -12,45 +12,62 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.radiobutton.MaterialRadioButton import com.vanced.manager.R import com.vanced.manager.databinding.DialogBottomRadioButtonBinding +import com.vanced.manager.ui.core.BindingBottomSheetDialogFragment import com.vanced.manager.utils.Extensions.convertToAppTheme import com.vanced.manager.utils.Extensions.getCheckedButtonTag import com.vanced.manager.utils.Extensions.show import com.vanced.manager.utils.InternetTools.vanced -class VancedThemeSelectorDialog : BottomSheetDialogFragment() { +class VancedThemeSelectorDialog : BindingBottomSheetDialogFragment() { - private lateinit var binding: DialogBottomRadioButtonBinding - private val prefs by lazy { requireActivity().getSharedPreferences("installPrefs", Context.MODE_PRIVATE) } + companion object { - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - binding = DataBindingUtil.inflate(inflater, R.layout.dialog_bottom_radio_button, container, false) - return binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - loadButtons() - binding.dialogTitle.text = requireActivity().getString(R.string.theme) - view.findViewWithTag(prefs.getString("theme", "dark")).isChecked = true - binding.dialogSave.setOnClickListener { - prefs.edit { putString("theme", binding.dialogRadiogroup.getCheckedButtonTag()) } - dismiss() + fun newInstance(): VancedThemeSelectorDialog = VancedThemeSelectorDialog().apply { + arguments = Bundle() } } - private fun loadButtons() { - requireActivity().runOnUiThread { - vanced.get()?.array("themes")?.value?.forEach { theme -> - val rb = MaterialRadioButton(requireActivity()).apply { - text = theme.convertToAppTheme(requireActivity()) - tag = theme - textSize = 18f - } - binding.dialogRadiogroup.addView(rb, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + private val prefs by lazy { requireActivity().getSharedPreferences("installPrefs", Context.MODE_PRIVATE) } + + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ) = DialogBottomRadioButtonBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() + } + + private fun bindData() { + with(binding) { + loadButtons()?.forEach { mrb -> + dialogRadiogroup.addView( + mrb, + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT + ) } + dialogTitle.text = requireActivity().getString(R.string.theme) + val tag = root.findViewWithTag(prefs.getString("theme", "dark")) + if (tag != null) { + tag.isChecked = true + } + dialogSave.setOnClickListener { + val checkedTag = binding.dialogRadiogroup.getCheckedButtonTag() + if (checkedTag != null) { + prefs.edit { putString("theme", checkedTag) } + } + dismiss() + } + } + } + + private fun loadButtons() = vanced.get()?.array("themes")?.value?.map {theme -> + MaterialRadioButton(requireActivity()).apply { + text = theme.convertToAppTheme(requireActivity()) + tag = theme + textSize = 18f } } @@ -58,5 +75,4 @@ class VancedThemeSelectorDialog : BottomSheetDialogFragment() { super.onDismiss(dialog) VancedPreferencesDialog().show(requireActivity()) } - } \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/AboutFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/AboutFragment.kt index bbdfcca3..515eef4a 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/AboutFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/AboutFragment.kt @@ -4,42 +4,49 @@ import android.annotation.SuppressLint import android.os.Bundle import android.view.LayoutInflater import android.view.MotionEvent -import android.view.View import android.view.ViewGroup import android.widget.Toast +import androidx.appcompat.content.res.AppCompatResources import androidx.core.content.edit -import androidx.databinding.DataBindingUtil -import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.preference.PreferenceManager import com.vanced.manager.R +import com.vanced.manager.core.ext.showDialog import com.vanced.manager.databinding.FragmentAboutBinding +import com.vanced.manager.ui.core.BindingFragment +import com.vanced.manager.ui.dialogs.AppInfoDialog import com.vanced.manager.ui.viewmodels.AboutViewModel +import com.vanced.manager.utils.InternetTools.manager -class AboutFragment : Fragment() { +class AboutFragment : BindingFragment() { - private lateinit var binding: FragmentAboutBinding private val viewModel: AboutViewModel by viewModels() private var count = 0 private var startMillSec: Long = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - requireActivity().title = getString(R.string.title_about) - binding = DataBindingUtil.inflate(inflater, R.layout.fragment_about, container, false) - binding.viewModel = viewModel - return binding.root + ) = FragmentAboutBinding.inflate(inflater, container, false) + + override fun otherSetups() { + dataBind() } - @SuppressLint("ClickableViewAccessibility") - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - view.setOnTouchListener { _, event: MotionEvent -> - + private fun dataBind() { + requireActivity().title = getString(R.string.title_about) + binding.aboutHeader.root.setOnClickListener { + showDialog( + AppInfoDialog.newInstance( + appName = getString(R.string.app_name), + appIcon = AppCompatResources.getDrawable(requireActivity(), R.mipmap.ic_launcher), + changelog = manager.get()?.string("changelog") + ) + ) + } + binding.root.setOnTouchListener { _, event: MotionEvent -> val eventAction = event.action if (eventAction == MotionEvent.ACTION_UP) { val time = System.currentTimeMillis() @@ -64,5 +71,7 @@ class AboutFragment : Fragment() { } false } + binding.aboutSources.aboutGithubButton.setOnClickListener { viewModel.openUrl("https://github.com/YTVanced/VancedInstaller") } + binding.aboutSources.aboutLicenseButton.setOnClickListener { viewModel.openUrl("https://raw.githubusercontent.com/YTVanced/VancedInstaller/dev/LICENSE") } } } diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt index b8a1b294..dc386d63 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt @@ -10,7 +10,7 @@ import androidx.core.content.edit import androidx.core.net.toUri import androidx.preference.* import com.crowdin.platform.Crowdin -import com.vanced.manager.BuildConfig.ENABLE_CROWDIN_AUTH +import com.vanced.manager.BuildConfig.* import com.vanced.manager.R import com.vanced.manager.ui.WelcomeActivity import com.vanced.manager.ui.dialogs.ManagerUpdateDialog @@ -89,7 +89,7 @@ class DevSettingsFragment: PreferenceFragmentCompat() { val forceUpdate: Preference? = findPreference("force_update") forceUpdate?.setOnPreferenceClickListener { - ManagerUpdateDialog(true).show( + ManagerUpdateDialog.newInstance(true).show( requireActivity().supportFragmentManager, "update_manager" ) diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/GrantRootFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/GrantRootFragment.kt index 08591fc2..ca7cc514 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/GrantRootFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/GrantRootFragment.kt @@ -3,52 +3,48 @@ package com.vanced.manager.ui.fragments import android.content.Intent import android.os.Bundle import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.core.content.edit -import androidx.databinding.DataBindingUtil -import androidx.fragment.app.Fragment import androidx.preference.PreferenceManager.getDefaultSharedPreferences import com.topjohnwu.superuser.Shell import com.vanced.manager.R import com.vanced.manager.databinding.FragmentGrantRootBinding import com.vanced.manager.ui.MainActivity +import com.vanced.manager.ui.core.BindingFragment -class GrantRootFragment : Fragment(), View.OnClickListener { +class GrantRootFragment : BindingFragment() { - private lateinit var binding: FragmentGrantRootBinding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - binding = DataBindingUtil.inflate(inflater, R.layout.fragment_grant_root, container, false) - return binding.root + ) = FragmentGrantRootBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - binding.grantRootFinishFab.setOnClickListener(this) - binding.grantRootFab.setOnClickListener(this) - } - - override fun onClick(v: View?) { - when (v?.id) { - R.id.grant_root_fab -> { - if (Shell.rootAccess()) { - getDefaultSharedPreferences(requireActivity()).edit { putString("vanced_variant", "root") } - } else { - Toast.makeText(requireActivity(), R.string.root_not_granted, Toast.LENGTH_SHORT).show() - } - } - R.id.grant_root_finish_fab -> { - val intent = Intent(requireActivity(), MainActivity::class.java) - intent.putExtra("firstLaunch", true) - startActivity(intent) - requireActivity().finish() - } + private fun bindData() { + with(binding) { + grantRootFinishFab.setOnClickListener { navigateToFirstLaunch() } + grantRootFab.setOnClickListener { grantRoot() } } } + private fun navigateToFirstLaunch() { + val intent = Intent(requireActivity(), MainActivity::class.java) + intent.putExtra("firstLaunch", true) + startActivity(intent) + requireActivity().finish() + } + + private fun grantRoot() { + if (Shell.rootAccess()) { + getDefaultSharedPreferences(requireActivity()).edit { putString("vanced_variant", "root") } + navigateToFirstLaunch() + } else { + Toast.makeText(requireActivity(), R.string.root_not_granted, Toast.LENGTH_SHORT).show() + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/HomeFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/HomeFragment.kt index 3e7ae946..778724a9 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/HomeFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/HomeFragment.kt @@ -5,11 +5,12 @@ import android.content.Context import android.content.Intent import android.content.IntentFilter import android.os.Bundle -import android.view.* +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.ViewGroup import androidx.core.content.edit import androidx.core.content.res.ResourcesCompat -import androidx.databinding.DataBindingUtil -import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.preference.PreferenceManager @@ -23,36 +24,41 @@ import com.vanced.manager.adapter.AppListAdapter import com.vanced.manager.adapter.LinkAdapter import com.vanced.manager.adapter.SponsorAdapter import com.vanced.manager.databinding.FragmentHomeBinding +import com.vanced.manager.ui.core.BindingFragment import com.vanced.manager.ui.dialogs.DialogContainer.installAlertBuilder import com.vanced.manager.ui.viewmodels.HomeViewModel import com.vanced.manager.ui.viewmodels.HomeViewModelFactory -open class HomeFragment : Fragment() { +open class HomeFragment : BindingFragment() { + + companion object { + const val INSTALL_FAILED = "install_failed" + const val REFRESH_HOME = "refresh_home" + } - private lateinit var binding: FragmentHomeBinding private val viewModel: HomeViewModel by viewModels { HomeViewModelFactory(requireActivity()) } + private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(requireActivity()) } private val prefs by lazy { PreferenceManager.getDefaultSharedPreferences(requireActivity()) } private lateinit var tooltip: ViewTooltip - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - requireActivity().title = getString(R.string.title_home) - setHasOptionsMenu(true) - binding = DataBindingUtil.inflate(inflater, R.layout.fragment_home, container, false) - return binding.root + ) = FragmentHomeBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - + private fun bindData() { + requireActivity().title = getString(R.string.title_home) + setHasOptionsMenu(true) with(binding) { - viewModel = this@HomeFragment.viewModel - + homeRefresh.setOnRefreshListener { viewModel.fetchData() } tooltip = ViewTooltip .on(recyclerAppList) .position(ViewTooltip.Position.TOP) @@ -91,9 +97,13 @@ open class HomeFragment : Fragment() { adapter = LinkAdapter(requireActivity(), this@HomeFragment.viewModel) } } - } - + + override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { + inflater.inflateWithCrowdin(R.menu.toolbar_menu, menu, resources) + super.onCreateOptionsMenu(menu, inflater) + } + override fun onPause() { super.onPause() localBroadcastManager.unregisterReceiver(broadcastReceiver) @@ -122,15 +132,5 @@ open class HomeFragment : Fragment() { intentFilter.addAction(REFRESH_HOME) localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter) } - - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - inflater.inflateWithCrowdin(R.menu.toolbar_menu, menu, resources) - super.onCreateOptionsMenu(menu, inflater) - } - - companion object { - const val INSTALL_FAILED = "install_failed" - const val REFRESH_HOME = "refresh_home" - } } diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/SelectAppsFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/SelectAppsFragment.kt index 40f74739..df94499a 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/SelectAppsFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/SelectAppsFragment.kt @@ -2,53 +2,56 @@ package com.vanced.manager.ui.fragments import android.os.Bundle import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.core.content.edit -import androidx.databinding.DataBindingUtil -import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController import androidx.preference.PreferenceManager.getDefaultSharedPreferences import androidx.recyclerview.widget.LinearLayoutManager import com.vanced.manager.R import com.vanced.manager.adapter.SelectAppsAdapter import com.vanced.manager.databinding.FragmentSelectAppsBinding +import com.vanced.manager.ui.core.BindingFragment -class SelectAppsFragment : Fragment() { +class SelectAppsFragment : BindingFragment() { - private lateinit var binding: FragmentSelectAppsBinding + private lateinit var selectAdapter: SelectAppsAdapter - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - binding = DataBindingUtil.inflate(inflater, R.layout.fragment_select_apps, container, false) - return binding.root + ) = FragmentSelectAppsBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - val selectAdapter = SelectAppsAdapter(requireActivity()) - val prefs = getDefaultSharedPreferences(requireActivity()) - binding.selectAppsRecycler.apply { + private fun bindData() { + with(binding) { + initRecycler() + selectAppsFab.setOnClickListener { actionOnClickAppsFab() } + } + } + + private fun FragmentSelectAppsBinding.initRecycler() { + selectAdapter = SelectAppsAdapter(requireActivity()) + selectAppsRecycler.apply { layoutManager = LinearLayoutManager(requireActivity()) setHasFixedSize(true) adapter = selectAdapter } - - binding.selectAppsFab.setOnClickListener { - if (selectAdapter.apps.all { app -> !app.isChecked }) { - Toast.makeText(requireActivity(), R.string.select_at_least_one_app, Toast.LENGTH_SHORT).show() - return@setOnClickListener - } - - selectAdapter.apps.forEach { app -> - prefs.edit { putBoolean("enable_${app.tag}", app.isChecked) } - } - - findNavController().navigate(SelectAppsFragmentDirections.selectAppsToGrantRoot()) - } } + private fun actionOnClickAppsFab() { + if (selectAdapter.apps.all { app -> !app.isChecked }) { + Toast.makeText(requireActivity(), R.string.select_at_least_one_app, Toast.LENGTH_SHORT).show() + return + } + val prefs = getDefaultSharedPreferences(requireActivity()) + selectAdapter.apps.forEach { app -> + prefs.edit { putBoolean("enable_${app.tag}", app.isChecked) } + } + findNavController().navigate(SelectAppsFragmentDirections.selectAppsToGrantRoot()) + } } \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragment.kt index 10ae8897..4cd42c6d 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragment.kt @@ -1,10 +1,11 @@ package com.vanced.manager.ui.fragments import android.os.Bundle -import android.view.* +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.ViewGroup import android.widget.Toast -import androidx.databinding.DataBindingUtil -import androidx.fragment.app.Fragment import androidx.preference.PreferenceManager.getDefaultSharedPreferences import androidx.recyclerview.widget.LinearLayoutManager import com.google.firebase.analytics.FirebaseAnalytics @@ -12,48 +13,74 @@ import com.google.firebase.crashlytics.FirebaseCrashlytics import com.google.firebase.perf.FirebasePerformance import com.vanced.manager.R import com.vanced.manager.adapter.GetNotifAdapter +import com.vanced.manager.core.ext.showDialogRefl import com.vanced.manager.databinding.FragmentSettingsBinding +import com.vanced.manager.ui.core.BindingFragment import com.vanced.manager.ui.dialogs.* import com.vanced.manager.utils.LanguageHelper.getLanguageFormat import java.io.File -class SettingsFragment : Fragment() { +class SettingsFragment : BindingFragment() { + + private companion object { + + const val LIGHT = "Light" + const val DARK = "Dark" + const val BLUE = "Blue" + const val RED = "Red" + const val GREEN = "Green" + const val YELLOW = "Yellow" + } - private lateinit var binding: FragmentSettingsBinding private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) } - override fun onCreateView( + override fun binding( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { + ) = FragmentSettingsBinding.inflate(inflater, container, false) + + override fun otherSetups() { setHasOptionsMenu(true) - binding = DataBindingUtil.inflate(inflater, R.layout.fragment_settings, container, false) - return binding.root + bindData() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) + private fun bindData() { + with(binding) { + bindRecycler() + bindFirebase() + bindManagerVariant() + bindClearFiles() + bindManagerTheme() + bindManagerAccentColor() + bindManagerLanguage() + selectApps.setOnClickListener { showDialogRefl() } + } + } - binding.notificationsRecycler.apply { + private fun FragmentSettingsBinding.bindRecycler() { + notificationsRecycler.apply { layoutManager = LinearLayoutManager(requireActivity()) adapter = GetNotifAdapter(requireActivity()) } + } - binding.firebase.setOnCheckedListener { _, isChecked -> + private fun FragmentSettingsBinding.bindFirebase() { + firebase.setOnCheckedListener { _, isChecked -> FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(isChecked) FirebasePerformance.getInstance().isPerformanceCollectionEnabled = isChecked FirebaseAnalytics.getInstance(requireActivity()).setAnalyticsCollectionEnabled(isChecked) } + } - binding.managerVariant.apply { + private fun FragmentSettingsBinding.bindManagerVariant() { + managerVariant.apply { prefs.getString("vanced_variant", "nonroot")?.let { setSummary(it) } - setOnClickListener { - ManagerVariantDialog().show(requireActivity().supportFragmentManager, "") - } + setOnClickListener { showDialogRefl() } } - - binding.clearFiles.setOnClickListener { + } + private fun FragmentSettingsBinding.bindClearFiles() { + clearFiles.setOnClickListener { with(requireActivity()) { listOf("vanced/nonroot", "vanced/root", "music/nonroot", "music/root", "microg").forEach { dir -> File(getExternalFilesDir(dir)?.path.toString()).deleteRecursively() @@ -61,47 +88,43 @@ class SettingsFragment : Fragment() { Toast.makeText(this, getString(R.string.cleared_files), Toast.LENGTH_SHORT).show() } } + } + private fun FragmentSettingsBinding.bindManagerTheme() { val themePref = prefs.getString("manager_theme", "System Default") - binding.managerTheme.apply { + managerTheme.apply { setSummary( - when (themePref) { - "Light" -> getString(R.string.theme_light) - "Dark" -> getString(R.string.theme_dark) - else -> getString(R.string.system_default) - } + when (themePref) { + LIGHT -> getString(R.string.theme_light) + DARK -> getString(R.string.theme_dark) + else -> getString(R.string.system_default) + } ) - setOnClickListener { - ManagerThemeDialog().show(requireActivity().supportFragmentManager, "") - } + setOnClickListener { showDialogRefl() } } + } + private fun FragmentSettingsBinding.bindManagerAccentColor() { val accentPref = prefs.getString("manager_accent", "Blue") - binding.managerAccentColor.apply { + managerAccentColor.apply { setSummary( - when (accentPref) { - "Blue" -> getString(R.string.accent_blue) - "Red" -> getString(R.string.accent_red) - "Green" -> getString(R.string.accent_green) - "Yellow" -> getString(R.string.accent_yellow) - else -> getString(R.string.accent_purple) - } + when (accentPref) { + BLUE -> getString(R.string.accent_blue) + RED -> getString(R.string.accent_red) + GREEN -> getString(R.string.accent_green) + YELLOW -> getString(R.string.accent_yellow) + else -> getString(R.string.accent_purple) + } ) - setOnClickListener { - ManagerAccentColorDialog().show(requireActivity().supportFragmentManager, "") - } + setOnClickListener { showDialogRefl() } } + } + private fun FragmentSettingsBinding.bindManagerLanguage() { val langPref = prefs.getString("manager_lang", "System Default") - binding.managerLanguage.apply { - setSummary(getLanguageFormat(requireActivity(), langPref!!)) - setOnClickListener { - ManagerLanguageDialog().show(requireActivity().supportFragmentManager, "") - } - } - - binding.selectApps.setOnClickListener { - SelectAppsDialog().show(requireActivity().supportFragmentManager, "") + managerLanguage.apply { + setSummary(getLanguageFormat(requireActivity(), requireNotNull(langPref))) + setOnClickListener { showDialogRefl() } } } @@ -113,5 +136,4 @@ class SettingsFragment : Fragment() { } super.onCreateOptionsMenu(menu, inflater) } - } \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/WelcomeFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/WelcomeFragment.kt index 9dfed653..1c7a53c1 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/WelcomeFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/WelcomeFragment.kt @@ -2,31 +2,28 @@ package com.vanced.manager.ui.fragments import android.os.Bundle import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup -import androidx.databinding.DataBindingUtil -import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController -import com.vanced.manager.R import com.vanced.manager.databinding.FragmentWelcomeBinding +import com.vanced.manager.ui.core.BindingFragment -class WelcomeFragment : Fragment() { +class WelcomeFragment : BindingFragment() { - private lateinit var binding: FragmentWelcomeBinding - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - binding = DataBindingUtil.inflate(inflater, R.layout.fragment_welcome, container, false) - return binding.root + ) = FragmentWelcomeBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - binding.welcomeGetStarted.setOnClickListener { - findNavController().navigate(WelcomeFragmentDirections.welcomeToSelectApps()) - } + private fun bindData() { + binding.welcomeGetStarted.setOnClickListener { navigateToWelcome() } } + private fun navigateToWelcome() { + findNavController().navigate(WelcomeFragmentDirections.welcomeToSelectApps()) + } } \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/viewmodels/HomeViewModel.kt b/app/src/main/java/com/vanced/manager/ui/viewmodels/HomeViewModel.kt index ac602fcc..f7a1aa11 100644 --- a/app/src/main/java/com/vanced/manager/ui/viewmodels/HomeViewModel.kt +++ b/app/src/main/java/com/vanced/manager/ui/viewmodels/HomeViewModel.kt @@ -5,11 +5,12 @@ import android.content.ComponentName import android.content.Intent import android.view.View import android.widget.Toast -import androidx.core.content.ContextCompat +import androidx.appcompat.content.res.AppCompatResources import androidx.core.content.ContextCompat.startActivity import androidx.databinding.ObservableField import androidx.fragment.app.FragmentActivity import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope import androidx.preference.PreferenceManager.getDefaultSharedPreferences import com.crowdin.platform.Crowdin import com.google.android.material.button.MaterialButton @@ -35,6 +36,7 @@ import com.vanced.manager.utils.PackageHelper.musicApkExists import com.vanced.manager.utils.PackageHelper.uninstallApk import com.vanced.manager.utils.PackageHelper.uninstallRootApk import com.vanced.manager.utils.PackageHelper.vancedInstallFilesExist +import kotlinx.coroutines.launch open class HomeViewModel(private val activity: FragmentActivity): ViewModel() { @@ -48,10 +50,12 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() { val manager = ObservableField() fun fetchData() { - activity.setRefreshing(true) - loadJson(activity) - Crowdin.forceUpdate(activity) - activity.setRefreshing(false) + viewModelScope.launch { + activity.setRefreshing(true) + loadJson(activity) + Crowdin.forceUpdate(activity) + activity.setRefreshing(false) + } } private val microgToast = Toast.makeText(activity, R.string.no_microg, Toast.LENGTH_LONG) @@ -96,7 +100,7 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() { when (app) { activity.getString(R.string.vanced) -> VancedPreferencesDialog().show(activity) activity.getString(R.string.music) -> MusicPreferencesDialog().show(activity) - else -> AppDownloadDialog(app).show(activity) + else -> AppDownloadDialog.newInstance(app).show(activity) } return @@ -105,34 +109,59 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() { when (app) { activity.getString(R.string.vanced) -> { when (variant) { - "nonroot" -> if (vancedInstallFilesExist(activity)) InstallationFilesDetectedDialog(app).show(activity) else VancedPreferencesDialog().show(activity) - "root" -> VancedPreferencesDialog().show(activity) + "nonroot" -> { + if (vancedInstallFilesExist(activity)) { + InstallationFilesDetectedDialog.newInstance(app).show(activity) + } else { + VancedPreferencesDialog().show(activity) + } + } + "root" -> { + VancedPreferencesDialog().show(activity) + } } } activity.getString(R.string.music) -> { when (variant) { - "nonroot" -> if (musicApkExists(activity)) InstallationFilesDetectedDialog(app).show(activity) else MusicPreferencesDialog().show(activity) - "root" -> MusicPreferencesDialog().show(activity) + "nonroot" -> { + if (musicApkExists(activity)) { + InstallationFilesDetectedDialog.newInstance(app).show(activity) + } else { + MusicPreferencesDialog().show(activity) + } + } + "root" -> { + MusicPreferencesDialog().show(activity) + } } } activity.getString(R.string.microg) -> { - if (apkExist(activity, "microg.apk")) InstallationFilesDetectedDialog(app).show(activity) else AppDownloadDialog(app).show(activity) + if (apkExist(activity, "microg.apk")) { + InstallationFilesDetectedDialog.newInstance(app).show(activity) + } else { + AppDownloadDialog.newInstance(app).show(activity) + } } } } - fun uninstallPackage(pkg: String) = if (prefs.getString("vanced_variant", "nonroot") == "root" && uninstallRootApk(pkg)) activity.fetchData() else uninstallApk(pkg, activity) + fun uninstallPackage(pkg: String) { + if (prefs.getString("vanced_variant", "nonroot") == "root" && uninstallRootApk(pkg)) { + viewModelScope.launch { activity.fetchData() } + } else { + uninstallApk(pkg, activity) + } + } init { activity.setRefreshing(true) - vanced.set(DataModel(InternetTools.vanced, activity, vancedPkg, activity.getString(R.string.vanced), ContextCompat.getDrawable(activity, R.drawable.ic_vanced))) - vancedRoot.set(DataModel(InternetTools.vanced, activity, vancedRootPkg, activity.getString(R.string.vanced), ContextCompat.getDrawable(activity, R.drawable.ic_vanced))) - music.set(DataModel(InternetTools.music, activity, musicPkg, activity.getString(R.string.music), ContextCompat.getDrawable(activity, R.drawable.ic_music))) - musicRoot.set(DataModel(InternetTools.music, activity, musicRootPkg, activity.getString(R.string.music), ContextCompat.getDrawable(activity, R.drawable.ic_music))) - microg.set(DataModel(InternetTools.microg, activity, microgPkg, activity.getString(R.string.microg), ContextCompat.getDrawable(activity, R.drawable.ic_microg))) - manager.set(DataModel(InternetTools.manager, activity, managerPkg, activity.getString(R.string.app_name), ContextCompat.getDrawable(activity, R.mipmap.ic_launcher))) + vanced.set(DataModel(InternetTools.vanced, activity, vancedPkg, activity.getString(R.string.vanced), AppCompatResources.getDrawable(activity, R.drawable.ic_vanced))) + vancedRoot.set(DataModel(InternetTools.vanced, activity, vancedRootPkg, activity.getString(R.string.vanced), AppCompatResources.getDrawable(activity, R.drawable.ic_vanced))) + music.set(DataModel(InternetTools.music, activity, musicPkg, activity.getString(R.string.music), AppCompatResources.getDrawable(activity, R.drawable.ic_music))) + musicRoot.set(DataModel(InternetTools.music, activity, musicRootPkg, activity.getString(R.string.music), AppCompatResources.getDrawable(activity, R.drawable.ic_music))) + microg.set(DataModel(InternetTools.microg, activity, microgPkg, activity.getString(R.string.microg), AppCompatResources.getDrawable(activity, R.drawable.ic_microg))) + manager.set(DataModel(InternetTools.manager, activity, managerPkg, activity.getString(R.string.app_name), AppCompatResources.getDrawable(activity, R.mipmap.ic_launcher))) activity.setRefreshing(false) } - } diff --git a/app/src/main/java/com/vanced/manager/utils/AppUtils.kt b/app/src/main/java/com/vanced/manager/utils/AppUtils.kt index 2641598b..73c24ef3 100644 --- a/app/src/main/java/com/vanced/manager/utils/AppUtils.kt +++ b/app/src/main/java/com/vanced/manager/utils/AppUtils.kt @@ -15,7 +15,7 @@ import java.io.File import java.io.IOException import java.security.MessageDigest -object AppUtils { +object AppUtils: CoroutineScope by CoroutineScope(Dispatchers.IO) { const val vancedPkg = "com.vanced.android.youtube" const val vancedRootPkg = "com.google.android.youtube" @@ -24,25 +24,24 @@ object AppUtils { const val microgPkg = "com.mgoogle.android.gms" const val managerPkg = APPLICATION_ID - fun sendRefresh(context: Context) { - CoroutineScope(Dispatchers.IO).launch { + fun sendRefresh(context: Context): Job { + return launch { delay(700) LocalBroadcastManager.getInstance(context).sendBroadcast(Intent(HomeFragment.REFRESH_HOME)) } } - fun sendCloseDialog(context: Context) { - downloadProgress.get()?.installing?.set(false) - CoroutineScope(Dispatchers.IO).launch { + fun sendCloseDialog(context: Context): Job { + return launch { delay(700) + downloadProgress.value?.installing?.postValue(false) LocalBroadcastManager.getInstance(context).sendBroadcast(Intent(AppDownloadDialog.CLOSE_DIALOG)) } } - fun sendFailure(status: Int, context: Context) { - downloadProgress.get()?.installing?.set(false) + fun sendFailure(status: Int, context: Context): Job { //Delay error broadcast until activity (and fragment) get back to the screen - CoroutineScope(Dispatchers.IO).launch { + return launch { delay(700) val intent = Intent(HomeFragment.INSTALL_FAILED) intent.putExtra("errorMsg", getErrorMessage(status, context)) @@ -50,9 +49,8 @@ object AppUtils { } } - fun sendFailure(error: MutableList, context: Context) { - downloadProgress.get()?.installing?.set(false) - CoroutineScope(Dispatchers.IO).launch { + fun sendFailure(error: MutableList, context: Context): Job { + return launch { delay(700) val intent = Intent(HomeFragment.INSTALL_FAILED) intent.putExtra("errorMsg", getErrorMessage(error.joinToString(), context)) @@ -134,6 +132,4 @@ object AppUtils { context.getString(R.string.installation_failed) } } - - -} +} \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/utils/DownloadHelper.kt b/app/src/main/java/com/vanced/manager/utils/DownloadHelper.kt index 6d9b61d7..a4c9c6f0 100644 --- a/app/src/main/java/com/vanced/manager/utils/DownloadHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/DownloadHelper.kt @@ -10,15 +10,14 @@ import android.widget.Toast import androidx.core.content.FileProvider import androidx.core.content.getSystemService import androidx.core.net.toUri -import androidx.databinding.ObservableField +import androidx.lifecycle.MutableLiveData import com.downloader.OnDownloadListener import com.downloader.PRDownloader import com.vanced.manager.R import com.vanced.manager.model.ProgressModel import com.vanced.manager.utils.AppUtils.sendCloseDialog -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import java.io.File object DownloadHelper { @@ -35,26 +34,27 @@ object DownloadHelper { return downloadManager.enqueue(request) } - val downloadProgress = ObservableField() + val downloadProgress = MutableLiveData() init { - downloadProgress.set(ProgressModel()) + downloadProgress.value = ProgressModel() } - fun downloadManager(context: Context) { - CoroutineScope(Dispatchers.IO).launch { + suspend fun downloadManager(context: Context) = + withContext(Dispatchers.IO) { val url = "https://github.com/YTVanced/VancedManager/releases/latest/download/manager.apk" - downloadProgress.get()?.currentDownload = PRDownloader.download(url, context.getExternalFilesDir("manager")?.path, "manager.apk") + downloadProgress.value?.currentDownload = PRDownloader.download(url, context.getExternalFilesDir("manager")?.path, "manager.apk") .build() .setOnProgressListener { progress -> val mProgress = progress.currentBytes * 100 / progress.totalBytes - downloadProgress.get()?.downloadProgress?.set(mProgress.toInt()) + downloadProgress.value?.downloadProgress?.value = mProgress.toInt() } .setOnCancelListener { - downloadProgress.get()?.downloadProgress?.set(0) + downloadProgress.value?.downloadProgress?.value = 0 } .start(object : OnDownloadListener { override fun onDownloadComplete() { + downloadProgress.value?.downloadProgress?.value = 0 val apk = File("${context.getExternalFilesDir("manager")?.path}/manager.apk") val uri = @@ -82,6 +82,4 @@ object DownloadHelper { }) } - } - } diff --git a/app/src/main/java/com/vanced/manager/utils/Extensions.kt b/app/src/main/java/com/vanced/manager/utils/Extensions.kt index 6c3fdd45..7ce0a679 100644 --- a/app/src/main/java/com/vanced/manager/utils/Extensions.kt +++ b/app/src/main/java/com/vanced/manager/utils/Extensions.kt @@ -16,8 +16,8 @@ import java.util.* object Extensions { - fun RadioGroup.getCheckedButtonTag(): String { - return findViewById(checkedRadioButtonId).tag.toString() + fun RadioGroup.getCheckedButtonTag(): String? { + return findViewById(checkedRadioButtonId)?.tag?.toString() } fun RadioGroup.getCheckedButtonText(): String { @@ -28,7 +28,7 @@ object Extensions { show(activity.supportFragmentManager, "") } - fun Activity.fetchData() { + suspend fun Activity.fetchData() { val refreshLayout = findViewById(R.id.home_refresh) setRefreshing(true, refreshLayout) loadJson(this) diff --git a/app/src/main/java/com/vanced/manager/utils/InternetTools.kt b/app/src/main/java/com/vanced/manager/utils/InternetTools.kt index d189c051..673f420d 100644 --- a/app/src/main/java/com/vanced/manager/utils/InternetTools.kt +++ b/app/src/main/java/com/vanced/manager/utils/InternetTools.kt @@ -14,9 +14,8 @@ import com.vanced.manager.BuildConfig import com.vanced.manager.R import com.vanced.manager.utils.AppUtils.generateChecksum import com.vanced.manager.utils.Extensions.getDefaultPrefs -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import java.io.File import java.text.SimpleDateFormat import java.util.* @@ -49,9 +48,9 @@ object InternetTools { context.startActivity(Intent(Intent.ACTION_VIEW, url.toUri()).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)) } - fun getFileNameFromUrl(url: String) = url.substring(url.lastIndexOf('/')+1, url.length) + fun getFileNameFromUrl(url: String) = url.substring(url.lastIndexOf('/') + 1, url.length) - fun loadJson(context: Context) = CoroutineScope(Dispatchers.IO).launch { + suspend fun loadJson(context: Context) = withContext(Dispatchers.IO) { val installUrl = context.getDefaultPrefs().getString("install_url", baseUrl) val latest = JsonHelper.getJson("$installUrl/latest.json?fetchTime=${SimpleDateFormat("HHmmss", Locale.ROOT)}") val versions = JsonHelper.getJson("$installUrl/versions.json?fetchTime=${SimpleDateFormat("HHmmss", Locale.ROOT)}") @@ -78,6 +77,7 @@ object InternetTools { set(latest?.obj("manager")) notifyChange() } + } suspend fun getJsonString(file: String, obj: String, context: Context): String { @@ -100,9 +100,9 @@ object InternetTools { return getJsonString(hashUrl, obj, context) } - fun checkSHA256(sha256: String, updateFile: File?): Boolean { + fun checkSHA256(sha256: String, updateFile: File): Boolean { return try { - val dataBuffer = updateFile!!.readBytes() + val dataBuffer = updateFile.readBytes() // Generate the checksum val sum = generateChecksum(dataBuffer) diff --git a/app/src/main/java/com/vanced/manager/utils/JsonHelper.kt b/app/src/main/java/com/vanced/manager/utils/JsonHelper.kt index f2d23911..40db24d9 100644 --- a/app/src/main/java/com/vanced/manager/utils/JsonHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/JsonHelper.kt @@ -13,13 +13,14 @@ object JsonHelper { suspend fun getJson(url: String): JsonObject? { return try { - if(dataMap.containsKey(url)) { - dataMap[url]!! + if (dataMap.containsKey(url)) { + dataMap[url] } else { dataMap[url] = getSuspendJson(url) - dataMap[url]!! + dataMap[url] } } catch (e: Exception) { + //This null is NEEDED, do NOT try to "fix" NPE here!!! null } } diff --git a/app/src/main/java/com/vanced/manager/utils/MiuiHelper.kt b/app/src/main/java/com/vanced/manager/utils/MiuiHelper.kt index 96434f46..07fe9624 100644 --- a/app/src/main/java/com/vanced/manager/utils/MiuiHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/MiuiHelper.kt @@ -6,28 +6,20 @@ import java.io.InputStreamReader object MiuiHelper { - fun isMiui(): Boolean = getSystemProps("ro.miui.ui.version.name")!!.isNotEmpty() + private const val MIUI_PROP_NAME = "ro.miui.ui.version.name" + + fun isMiui(): Boolean = !getSystemProps(MIUI_PROP_NAME).isNullOrEmpty() private fun getSystemProps(propname: String): String? { - val line: String var input: BufferedReader? = null - try { - val p = Runtime.getRuntime().exec("getprop $propname") - input = BufferedReader(InputStreamReader(p.inputStream), 1024) - line = input.readLine() - input.close() + return try { + val process = Runtime.getRuntime().exec("getprop $propname") + input = BufferedReader(InputStreamReader(process.inputStream), 1024) + input.readLine() } catch (e: IOException) { - return null + null } finally { - if (input != null) { - try { - input.close() - } catch (e: IOException) { - e.printStackTrace() - } - } + input?.close() } - return line } - } \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt b/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt index 3b72d00b..aa6c1cd7 100644 --- a/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt @@ -164,40 +164,38 @@ object PackageHelper { return false } - fun installMusicRoot(context: Context) { - CoroutineScope(Dispatchers.IO).launch { - Shell.enableVerboseLogging = BuildConfig.DEBUG - Shell.setDefaultBuilder( - Shell.Builder.create() - .setFlags(Shell.FLAG_REDIRECT_STDERR) - .setTimeout(10) - ) + fun installMusicRoot(context: Context) = CoroutineScope(Dispatchers.IO).launch { + Shell.enableVerboseLogging = BuildConfig.DEBUG + Shell.setDefaultBuilder( + Shell.Builder.create() + .setFlags(Shell.FLAG_REDIRECT_STDERR) + .setTimeout(10) + ) - Shell.getShell { - val musicVersionCode = music.get()?.int("versionCode") - val apkFilesPath = context.getExternalFilesDir("music/root")?.path - val fileInfoList = apkFilesPath?.let { it1 -> getFileInfoList(it1) } - if (fileInfoList != null) { - val modApk: FileInfo? = fileInfoList.lastOrNull { it.name == "root.apk" } - if (modApk != null) { - if (overwriteBase(modApk, fileInfoList, musicVersionCode!!, musicRootPkg, "music", context)) { - sendRefresh(context) - sendCloseDialog(context) - } - } - else { - sendFailure(listOf("ModApk_Missing").toMutableList(), context) + Shell.getShell { + val musicVersionCode = music.get()?.int("versionCode") + val apkFilesPath = context.getExternalFilesDir("music/root")?.path + val fileInfoList = apkFilesPath?.let { it1 -> getFileInfoList(it1) } + if (fileInfoList != null) { + val modApk: FileInfo? = fileInfoList.lastOrNull { it.name == "root.apk" } + if (modApk != null) { + if (overwriteBase(modApk, fileInfoList, musicVersionCode!!, musicRootPkg, "music", context)) { + sendRefresh(context) sendCloseDialog(context) } } else { - sendFailure(listOf("Files_Missing_VA").toMutableList(), context) + sendFailure(listOf("ModApk_Missing").toMutableList(), context) sendCloseDialog(context) } - + } + else { + sendFailure(listOf("Files_Missing_VA").toMutableList(), context) + sendCloseDialog(context) } } + } fun installVanced(context: Context): Int { @@ -298,49 +296,47 @@ object PackageHelper { } } finally { - session!!.close() + session?.close() } } - fun installVancedRoot(context: Context) { - CoroutineScope(Dispatchers.IO).launch { - Shell.enableVerboseLogging = BuildConfig.DEBUG - Shell.setDefaultBuilder( - Shell.Builder.create() - .setFlags(Shell.FLAG_REDIRECT_STDERR) - .setTimeout(10) - ) + fun installVancedRoot(context: Context) = CoroutineScope(Dispatchers.IO).launch { + Shell.enableVerboseLogging = BuildConfig.DEBUG + Shell.setDefaultBuilder( + Shell.Builder.create() + .setFlags(Shell.FLAG_REDIRECT_STDERR) + .setTimeout(10) + ) - Shell.getShell { - val vancedVersionCode = vanced.get()?.int("versionCode") - val apkFilesPath = context.getExternalFilesDir("vanced/root")?.path - val fileInfoList = apkFilesPath?.let { it1 -> getFileInfoList(it1) } - if (fileInfoList != null) { - val modApk: FileInfo? = fileInfoList.lastOrNull { file -> - vancedThemes.any { file.name == "$it.apk" } - } - if (modApk != null) { - if (overwriteBase(modApk, fileInfoList, vancedVersionCode!!, vancedRootPkg, "vanced", context)) { - sendRefresh(context) - sendCloseDialog(context) - } - } - else { - sendFailure(listOf("ModApk_Missing").toMutableList(), context) + Shell.getShell { + val vancedVersionCode = vanced.get()?.int("versionCode") + val apkFilesPath = context.getExternalFilesDir("vanced/root")?.path + val fileInfoList = apkFilesPath?.let { it1 -> getFileInfoList(it1) } + if (fileInfoList != null) { + val modApk: FileInfo? = fileInfoList.lastOrNull { file -> + vancedThemes.any { file.name == "$it.apk" } + } + if (modApk != null) { + if (overwriteBase(modApk, fileInfoList, vancedVersionCode!!, vancedRootPkg, "vanced", context)) { + sendRefresh(context) sendCloseDialog(context) } } else { - sendFailure(listOf("Files_Missing_VA").toMutableList(), context) + sendFailure(listOf("ModApk_Missing").toMutableList(), context) sendCloseDialog(context) } - + } + else { + sendFailure(listOf("Files_Missing_VA").toMutableList(), context) + sendCloseDialog(context) } } } + private fun installSplitApkFiles(apkFiles: ArrayList, context: Context) : Boolean { var sessionId: Int? val filenames = arrayOf("black.apk", "dark.apk", "blue.apk", "pink.apk", "hash.json") @@ -378,7 +374,6 @@ object PackageHelper { } sendFailure(installResult.out, context) sendCloseDialog(context) - return false } @@ -471,7 +466,7 @@ object PackageHelper { private fun linkApp(apkFPath: String, pkg:String, path: String): Boolean { Shell.su("am force-stop $pkg").exec() - val umountv = Shell.su("""for i in ${'$'}(ls /data/app/ | grep $pkg | tr " "); do umount -l "/data/app/${"$"}i/base.apk"; done """).exec() + Shell.su("""for i in ${'$'}(ls /data/app/ | grep $pkg | tr " "); do umount -l "/data/app/${"$"}i/base.apk"; done """).exec() val response = Shell.su("""su -mm -c "mount -o bind $apkFPath $path"""").exec() Thread.sleep(500) Shell.su("am force-stop $pkg").exec() @@ -579,8 +574,8 @@ object PackageHelper { @Throws(IOException::class) - fun copy(src: File?, dst: File?) { - val cmd = Shell.su("mv ${src!!.absolutePath} ${dst!!.absolutePath}").exec().isSuccess + fun copy(src: File, dst: File) { + val cmd = Shell.su("mv ${src.absolutePath} ${dst.absolutePath}").exec().isSuccess Log.d("ZLog", cmd.toString()) } diff --git a/app/src/main/res/drawable/ic_discord.xml b/app/src/main/res/drawable/ic_discord.xml index 7960bd72..38cec852 100644 --- a/app/src/main/res/drawable/ic_discord.xml +++ b/app/src/main/res/drawable/ic_discord.xml @@ -1,7 +1,18 @@ - - - + + + + + diff --git a/app/src/main/res/drawable/ic_reddit.xml b/app/src/main/res/drawable/ic_reddit.xml index 9c485f5a..aeab636d 100755 --- a/app/src/main/res/drawable/ic_reddit.xml +++ b/app/src/main/res/drawable/ic_reddit.xml @@ -1,14 +1,21 @@ + android:width="38dp" + android:height="38dp" + android:viewportWidth="35" + android:viewportHeight="35"> + android:fillColor="#FF000000" + android:pathData="M17.5,0.4c-9.4,0 -17,7.6 -17,17c0,9.4 7.6,17 17,17c9.4,0 17,-7.6 17,-17C34.5,8 26.9,0.4 17.5,0.4zM17.5,33.4c-8.8,0 -16,-7.2 -16,-16c0,-8.9 7.2,-16 16,-16c8.9,0 16,7.2 16,16C33.5,26.2 26.3,33.4 17.5,33.4z"/> + android:fillColor="#FF000000" + android:pathData="M27.8,17.2c0,-1.7 -1.4,-3.1 -3.1,-3.1c-0.5,0 -1,0.1 -1.5,0.4c-1.2,-0.6 -2.6,-1.1 -4.1,-1.3l0.5,-1.6l1.6,0.4c0.3,1.1 1.4,1.9 2.6,1.9c1.5,0 2.7,-1.2 2.7,-2.7c0,-1.5 -1.2,-2.7 -2.7,-2.7c-0.8,0 -1.5,0.4 -2,0.9l-2.7,-0.6l-0.2,0h-0.1c-0.6,0 -1.1,0.4 -1.2,0.9l-1.1,3.4c-1.8,0.1 -3.5,0.6 -4.9,1.4c-0.4,-0.2 -0.9,-0.4 -1.4,-0.4c-1.7,0 -3.1,1.4 -3.1,3.1c0,0.8 0.4,1.6 1,2.2v0.2c0,3.6 4.2,6.5 9.4,6.5c5.1,0 9.3,-2.9 9.3,-6.5c0,-0.1 0,-0.1 0,-0.2C27.5,18.9 27.8,18.1 27.8,17.2zM25.8,19.6c0,3 -3.8,5.5 -8.3,5.5c-4.6,0 -8.4,-2.5 -8.4,-5.5c0,-0.2 0,-0.4 0.1,-0.7c-0.6,-0.4 -1,-1 -1,-1.8c0,-1.1 0.9,-2.1 2.1,-2.1c0.5,0 1,0.2 1.4,0.6c1.5,-1 3.5,-1.6 5.7,-1.6l1.3,-4c0,-0.2 0.2,-0.2 0.3,-0.2l3.4,0.8c0.2,-0.6 0.9,-1.1 1.6,-1.1c0.9,0 1.7,0.8 1.7,1.7S24.8,13 23.9,13c-0.9,0 -1.7,-0.8 -1.7,-1.7v0l-3.1,-0.7l-1.1,3.6c2.1,0.1 4,0.7 5.4,1.6c0.4,-0.4 0.9,-0.6 1.4,-0.6c1.1,0 2.1,0.9 2.1,2.1c0,0.8 -0.4,1.5 -1.1,1.8C25.8,19.2 25.8,19.4 25.8,19.6z"/> + + + diff --git a/app/src/main/res/layout/dialog_app_download.xml b/app/src/main/res/layout/dialog_app_download.xml index 83195223..8fba62e4 100644 --- a/app/src/main/res/layout/dialog_app_download.xml +++ b/app/src/main/res/layout/dialog_app_download.xml @@ -1,94 +1,72 @@ - + xmlns:tools="http://schemas.android.com/tools" + tools:context=".ui.dialogs.AppDownloadDialog" + style="@style/DialogCard"> - + - + - + - + - + + android:layout_height="wrap_content" + android:layout_below="@id/app_install_progressbar" + android:layout_marginTop="8dp"> - - - - - - + + - - - - - - - - - + android:text="@string/cancel" + app:layout_constraintEnd_toEndOf="parent" + style="@style/OutlinedButtonStyle"/> - - - - + + diff --git a/app/src/main/res/layout/dialog_app_info.xml b/app/src/main/res/layout/dialog_app_info.xml index aef8cb2a..2469d1e1 100644 --- a/app/src/main/res/layout/dialog_app_info.xml +++ b/app/src/main/res/layout/dialog_app_info.xml @@ -1,60 +1,55 @@ - + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?colorLinkBG" + app:cardCornerRadius="8dp" + app:cardElevation="0dp" + app:contentPaddingBottom="8dp" + app:contentPaddingLeft="16dp" + app:contentPaddingRight="16dp"> - + android:layout_height="match_parent"> - + + + + + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:text="@string/changelog" + app:layout_constraintTop_toBottomOf="@id/about_app_image" + style="@style/CardTextHeader"/> - - - - - - - - - - - - - + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_bottom_radio_button.xml b/app/src/main/res/layout/dialog_bottom_radio_button.xml index 24932f34..e600a84b 100644 --- a/app/src/main/res/layout/dialog_bottom_radio_button.xml +++ b/app/src/main/res/layout/dialog_bottom_radio_button.xml @@ -1,38 +1,32 @@ - + - + - + + + android:layout_height="wrap_content"> - - - - + + - - - - - - - - - - - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_custom_url.xml b/app/src/main/res/layout/dialog_custom_url.xml index 1099adea..15d0340b 100644 --- a/app/src/main/res/layout/dialog_custom_url.xml +++ b/app/src/main/res/layout/dialog_custom_url.xml @@ -1,5 +1,6 @@ - @@ -48,9 +49,6 @@ style="@style/ButtonStyle" android:layout_alignParentEnd="true" android:text="@string/save" /> - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_installation_files_detected.xml b/app/src/main/res/layout/dialog_installation_files_detected.xml index 8fa1d580..4d293b55 100644 --- a/app/src/main/res/layout/dialog_installation_files_detected.xml +++ b/app/src/main/res/layout/dialog_installation_files_detected.xml @@ -1,38 +1,33 @@ - + - + - + - + - + - - - - - - - - - + + + diff --git a/app/src/main/res/layout/dialog_manager_accent_color.xml b/app/src/main/res/layout/dialog_manager_accent_color.xml index 088dbb04..adfe2176 100644 --- a/app/src/main/res/layout/dialog_manager_accent_color.xml +++ b/app/src/main/res/layout/dialog_manager_accent_color.xml @@ -1,73 +1,66 @@ - + - + - + + + android:layout_height="wrap_content"> - - - - + android:layout_height="wrap_content" + android:tag="Blue" + android:text="@string/accent_blue" + android:textSize="18sp"/> - + - + - + - + + + - - - - - - - - - - - - - + + + diff --git a/app/src/main/res/layout/dialog_manager_language.xml b/app/src/main/res/layout/dialog_manager_language.xml index dee0e780..09e14045 100644 --- a/app/src/main/res/layout/dialog_manager_language.xml +++ b/app/src/main/res/layout/dialog_manager_language.xml @@ -1,38 +1,30 @@ - + - + - + + + android:layout_height="450dp"> - - - + android:layout_height="wrap_content"/> + - - - - - - - - - - - - - + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_manager_theme.xml b/app/src/main/res/layout/dialog_manager_theme.xml index cc7fdf81..bdbacb3c 100644 --- a/app/src/main/res/layout/dialog_manager_theme.xml +++ b/app/src/main/res/layout/dialog_manager_theme.xml @@ -1,59 +1,52 @@ - + - + - + + + android:layout_height="wrap_content"> - - - - + android:layout_height="wrap_content" + android:tag="System Default" + android:text="@string/system_default" + android:textSize="18sp"/> - + - + + + - - - - - - - - - - - - - + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_manager_update.xml b/app/src/main/res/layout/dialog_manager_update.xml index 6bfb0b2b..6159d9cc 100644 --- a/app/src/main/res/layout/dialog_manager_update.xml +++ b/app/src/main/res/layout/dialog_manager_update.xml @@ -1,73 +1,56 @@ - + - - - - - - - - - + android:layout_height="match_parent"> - + + + android:layout_height="wrap_content" + android:layout_alignParentEnd="true" + android:layout_alignParentStart="true" + android:layout_below="@id/manager_update_header" + android:layout_marginTop="8dp" + android:gravity="center" + android:text="@string/checking_updates" + android:textSize="16sp"/> - + - - - - - - - - - - - + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_manager_variant.xml b/app/src/main/res/layout/dialog_manager_variant.xml index 68273770..e2c7891a 100644 --- a/app/src/main/res/layout/dialog_manager_variant.xml +++ b/app/src/main/res/layout/dialog_manager_variant.xml @@ -1,53 +1,47 @@ - + - + - + + + android:layout_height="wrap_content"> - - - + android:layout_height="wrap_content" + tools:ignore="HardcodedText"> - + android:tag="nonroot" + android:text="nonroot" + android:textSize="18sp"/> - + + + - - - - - - - - - - - - - + + + diff --git a/app/src/main/res/layout/dialog_music_preferences.xml b/app/src/main/res/layout/dialog_music_preferences.xml index c92ba97a..bafa32a9 100644 --- a/app/src/main/res/layout/dialog_music_preferences.xml +++ b/app/src/main/res/layout/dialog_music_preferences.xml @@ -1,50 +1,43 @@ - + - + - + + + android:layout_marginTop="12dp"> + android:id="@+id/music_version" + android:layout_alignParentStart="true" + android:layout_centerVertical="true" + android:layout_toStartOf="@id/open_version_selector" + style="@style/BottomDialogCardTextItem"/> - + android:layout_alignParentEnd="true" + android:background="@android:color/transparent" + android:maxWidth="24dp" + android:maxHeight="24dp" + android:src="@drawable/ic_baseline_navigate_next_36"/> + - - - - - - - - - - - - - + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_select_apps.xml b/app/src/main/res/layout/dialog_select_apps.xml index 5893210d..2606c3b9 100644 --- a/app/src/main/res/layout/dialog_select_apps.xml +++ b/app/src/main/res/layout/dialog_select_apps.xml @@ -1,17 +1,16 @@ - + - + - - - + tools:listitem="@layout/view_app_checkbox"/> - + - - - - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_vanced_language_selection.xml b/app/src/main/res/layout/dialog_vanced_language_selection.xml index 7ea2b90a..43387c0c 100644 --- a/app/src/main/res/layout/dialog_vanced_language_selection.xml +++ b/app/src/main/res/layout/dialog_vanced_language_selection.xml @@ -1,6 +1,8 @@ - @@ -14,7 +16,7 @@ style="@style/BottomDialogCardTitle" android:text="@string/choose_preferred_language" /> - - - - + android:orientation="vertical"/> - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_vanced_preferences.xml b/app/src/main/res/layout/dialog_vanced_preferences.xml index 13d508f7..672cab8c 100644 --- a/app/src/main/res/layout/dialog_vanced_preferences.xml +++ b/app/src/main/res/layout/dialog_vanced_preferences.xml @@ -1,44 +1,41 @@ - + app:contentPaddingBottom="4dp" + style="@style/BottomDialogCard"> - + - + + + android:layout_height="wrap_content" + android:layout_marginTop="12dp"> + android:id="@+id/vanced_theme" + android:layout_alignParentStart="true" + android:layout_centerVertical="true" + android:layout_toStartOf="@id/open_theme_selector" + style="@style/BottomDialogCardTextItem"/> - - - - - - - + android:layout_alignParentEnd="true" + android:background="@android:color/transparent" + android:maxWidth="24dp" + android:maxHeight="24dp" + android:src="@drawable/ic_baseline_navigate_next_36"/> + - - + android:src="@drawable/ic_baseline_navigate_next_36"/> - - - - - - - + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml index 0722a8ad..caed8cc7 100644 --- a/app/src/main/res/layout/fragment_about.xml +++ b/app/src/main/res/layout/fragment_about.xml @@ -1,58 +1,46 @@ - + - - - - - - - + android:layout_marginEnd="16dp" + android:layout_marginStart="16dp" + android:layout_marginTop="@dimen/twelvedp" + android:clipToPadding="false" + android:orientation="vertical"> - + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/twelvedp" /> - + - + - - - - - - - - - + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_grant_root.xml b/app/src/main/res/layout/fragment_grant_root.xml index c7abb3f8..9138b575 100644 --- a/app/src/main/res/layout/fragment_grant_root.xml +++ b/app/src/main/res/layout/fragment_grant_root.xml @@ -1,62 +1,68 @@ - + - + - + - + - + - + - - - - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 98df331e..91844333 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -1,75 +1,57 @@ - + - - - - - - - - - + android:fillViewport="true" + android:scrollbars="none"> - + android:orientation="vertical"> - + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + android:layout_marginStart="8dp" + android:nestedScrollingEnabled="false" + tools:itemCount="3" + tools:listitem="@layout/view_app"/> - + - + - - - - - - - - - - - + + + + diff --git a/app/src/main/res/layout/fragment_select_apps.xml b/app/src/main/res/layout/fragment_select_apps.xml index 9ccb9473..863b38fa 100644 --- a/app/src/main/res/layout/fragment_select_apps.xml +++ b/app/src/main/res/layout/fragment_select_apps.xml @@ -1,43 +1,41 @@ - + - + + + android:layout_height="wrap_content" + android:layout_marginHorizontal="24dp" + android:nestedScrollingEnabled="false" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:itemCount="2" + tools:listitem="@layout/view_app_checkbox"/> - + - - - - - - - + diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index c7712e1b..61dbd66e 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -1,64 +1,63 @@ - + - + android:layout_height="match_parent" + android:orientation="vertical" + android:paddingHorizontal="8dp" + android:paddingTop="16dp"> - + android:layout_height="wrap_content" + android:background="@drawable/category_background" + app:category_title="@string/category_behaviour"> - + app:switch_def_value="true" + app:switch_key="@{@string/use_custom_tabs}" + app:switch_summary="@string/link_custom_tabs" + app:switch_title="@string/link_title"/> - + - + - + - + - - - + + app:preference_title="@string/language_title"/> - + app:preference_title="@string/select_apps"/> - - - - - - - + + diff --git a/app/src/main/res/layout/fragment_welcome.xml b/app/src/main/res/layout/fragment_welcome.xml index 8331a70e..033c4ca3 100644 --- a/app/src/main/res/layout/fragment_welcome.xml +++ b/app/src/main/res/layout/fragment_welcome.xml @@ -1,37 +1,32 @@ - + - + android:layout_height="wrap_content" + android:layout_alignParentTop="true" + android:layout_marginTop="@dimen/top_header_margin" + app:srcCompat="@drawable/ic_launch_text" + android:textAlignment="center" + app:layout_constraintTop_toTopOf="parent"/> - - - - - - - + + diff --git a/app/src/main/res/layout/include_about_sources.xml b/app/src/main/res/layout/include_about_sources.xml index 0c7b013a..d898fe1a 100644 --- a/app/src/main/res/layout/include_about_sources.xml +++ b/app/src/main/res/layout/include_about_sources.xml @@ -1,73 +1,55 @@ - - + - - - - - - - + android:layout_height="match_parent" + android:orientation="vertical"> - + + + android:layout_height="wrap_content" + app:alignItems="center" + app:flexDirection="row" + app:justifyContent="space_evenly"> - - - - - - - - - - - - - - - + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/view_social_link.xml b/app/src/main/res/layout/view_social_link.xml index 6496be2c..2147053a 100644 --- a/app/src/main/res/layout/view_social_link.xml +++ b/app/src/main/res/layout/view_social_link.xml @@ -36,7 +36,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - android:src="@{linkModel.linkIcon}" app:tint="?colorLinkImage" tools:src="@drawable/ic_instagram" /> diff --git a/app/src/main/res/layout/view_sponsor.xml b/app/src/main/res/layout/view_sponsor.xml index 21f64af3..fe97b1d3 100644 --- a/app/src/main/res/layout/view_sponsor.xml +++ b/app/src/main/res/layout/view_sponsor.xml @@ -34,7 +34,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" - android:src="@{sponsor.logo}" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:tint="?colorLinkImage" diff --git a/app/src/main/res/values-af-rZA/strings.xml b/app/src/main/res/values-af-rZA/strings.xml index 608fd2b0..2b34d841 100644 --- a/app/src/main/res/values-af-rZA/strings.xml +++ b/app/src/main/res/values-af-rZA/strings.xml @@ -15,13 +15,13 @@ Is Your Device Rooted? Grant Root Permission Select at least one app! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. YouTube Vanced is the stock Android YouTube App, but better! Let\'s get started - Willing to use root version? Just hit the button below, else tap to continue + Willing to use the root version? Just hit the button below, else tap to continue About %1$s - Tap on the card to see changelog. + Tap on the card to see the changelog. Changelog Downloading %1$s Install @@ -33,7 +33,7 @@ Unavailable Update Useful Links - Support US! + Support us! Accent Color Blue @@ -42,7 +42,7 @@ Red Yellow Appearance - Behaviour + Behavior Clear downloaded files Successfully cleared files Firebase Analytics @@ -63,7 +63,7 @@ Advanced %1$s installation files detected! - Manager detected that all necessary files for %1$s installation were found. Do you want to install? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? Checking for updates… Language(s): %1$s Theme: %1$s @@ -71,12 +71,12 @@ Guide Stop! Installing %1$s - You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the magisk module/using TWRP Vanced uninstaller. + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. MIUI detected! - In order to install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) Error Redownload - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub Success! %1$s Installation Preferences Vanced has successfully been installed! Open now? @@ -94,15 +94,15 @@ Sources Vanced Team - Failed to `chown` apk to system owner, please try again. + Failed to `chown` APK to system owner, please try again. Error Downloading %1$s Failed to uninstall package %1$s Failed to locate the required files for installation. Re-download the installation files, then try again. Failed to locate apk file for black/dark theme from storage, please try again. - Installation failed because user aborted the installation. - Installation failed because user blocked the installation. - Installation failed because user tried to downgrade the package. Uninstall updates from stock YouTube app, then try again. - Installation failed because the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. Installation failed for unknown reasons, join our Telegram or Discord for further support. Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again. Installation failed because the apk files are corrupted, please try again. diff --git a/app/src/main/res/values-ar-rSA/strings.xml b/app/src/main/res/values-ar-rSA/strings.xml index 5ff5241f..f2b78eb4 100644 --- a/app/src/main/res/values-ar-rSA/strings.xml +++ b/app/src/main/res/values-ar-rSA/strings.xml @@ -21,7 +21,7 @@ هل ترغب باستعمال نسخة الروت؟ فقط عليك الضغط على الزر في الأسفل، إذا لا اضغط على زر المتابعة حوالي %1$s - اضغط على قائمة التغييرات لرؤية سجل التغيير. + أضغط على إحدى البطاقات لعرض سجل التغييرات. سجل التغييرات جارٍ تنزيل %1$s تثبيت @@ -33,7 +33,7 @@ غير متاح تحديث روابط مفيدة - ادعمنا! + ادعمنا بتريق تنزيل بريف الألوان أزرق diff --git a/app/src/main/res/values-az-rAZ/strings.xml b/app/src/main/res/values-az-rAZ/strings.xml index e9f0789d..a2eb181f 100644 --- a/app/src/main/res/values-az-rAZ/strings.xml +++ b/app/src/main/res/values-az-rAZ/strings.xml @@ -12,17 +12,17 @@ Tənzimləmələr Yeniləmə Meneceri - Is Your Device Rooted? + Cihazınızda root varmı? Root İcazəsi Ver Ən azı bir tətbiq seçin! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. - YouTube Vanced is the stock Android YouTube App, but better! - Let\'s get started - Root versiyasını istifadə etmək istəyirsiniz? Sadəcə aşağıdakı düyməyə basın, əks halda davam etmək üçün toxunun + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + YouTube Vanced adi Android YouTube tətbiqi olsa da daha yaxşıdır! + Gəlin başlayaq + Willing to use the root version? Just hit the button below, else tap to continue %1$s Haqqında - Dəyişiklik jurnalına baxmaq üçün karta toxunun. - Dəyişiklik jurnalı + Tap on the card to see the changelog. + Dəyişikliklər %1$s endirilir Quraşdır Yenidən quraşdır @@ -33,7 +33,7 @@ Əlçatmazdır Yenilə Faydalı Bağlantılar - Bizi Dəstəkləyin! + Bizi dəstəklə! Tema rəngi Mavi @@ -42,7 +42,7 @@ Qırmızı Sarı Görünüş - Davranış + Behavior Endirilmiş faylları təmizlə Fayllar uğurla təmizləndi Firebase Analitikləri @@ -52,8 +52,8 @@ Bağlantılar Chrome Özəl Vərəqlərində açılacaq İlkin Sistem Tema - Tünd Tema - Açıq Tema + Tünd mövzu + Açıq mövzu Yeniləmə Kanal URL-si %1$s Ani Bildirişlər %1$s üçün yeni buraxılış olanda ani bildirişlər alın @@ -61,48 +61,48 @@ Yeniləmə yoxdur Variant - Advanced + Qabaqcıl %1$s quraşdırma faylı aşkarlandı! - Menecer %1$s quraşdırması üçün lazımi bütün faylların tapıldığını aşkarladı. Quraşdırmaq istəyirsiniz? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? Yeniləmələr yoxlanılır… Dil(lər): %1$s - Theme: %1$s - Version: %1$s + Mövzu: %1$s + Versiya: %1$s Bələdçi Dayandır! %1$s quraşdırılır - Buraxılışı dayandırılan və bu tətbiq istifadə edərək yenilənə bilməyən Vanced-in Magisk/TWRP versiyasını istifadə edirsiniz. Zəhmət olmasa magisk modulunu/TWRP Vanced silici istifadə edərək silin. + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. MIUI aşkarlandı! - Vanced-i quraşdırmaq üçün tərtibatçı tənzimləmələrindən MIUI Optimallaşdırmasını sıradan çıxartmaq LAZIMDIR. (20.2.20 və ya yuxarı xiaomi.eu əsaslı ROM istifadə edirsinizsə bu xəbərdarlığı nəzərə almaya bilərsiniz) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) Xəta Yenidən endir - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub Uğurlu! - %1$s Installation Preferences + %1$s Qurma Seçimləri Vanced uğurla quraşdırıldı! İndi açılsın? - Version + Versiya Vanced Music uğurla quraşdırıldı! İndi açılsın? Zəhmət olmasa səbrli olun… Xoş gəldiniz Vanced üçün tərcih etdiyiniz dili seçin - Light + %1$s + İşıqlı + %1$s Ən azı bir dil seçin! Menecer Tərtibatçıları Mənbələr Vanced Birliyi - Apk, sistem sahibinə dəyişdirilmədi, yenidən sınayın. + Failed to `chown` APK to system owner, please try again. %1$s endirilmə xətası %1$s paketini silinmədi Quraşdırmaq üçün lazımi fayllar tapılmadı. Quraşdırma fayllarını yenidən endirib təkrar sınayın. - Anbarda qara/tünd tema üçün apk faylı tapılmadı, yenidən sınayın. - İstifadəçi quraşdırmanı ləğv etdiyi üçün quraşdırılma uğursuz oldu. - İstifadəçi quraşdırmanı əngəllədiyi üçün quraşdırılma uğursuz oldu. - İstifadəçi paketi alt versiyaya keçirməyə çalışdığı üçün quraşdırılma uğursuz oldu. Stok YouTube tətbiqindən yeniləmələri silib yenidən sınayın. - Tətbiq əvvəlcədən quraşdırılmış bir tətbiqlə toqquşduğu üçün quraşdırılma uğursuz oldu. Vanced-in cari versiyasını silib yenidən sınayın. + Anbarda qara/tünd mövzu üçün apk faylı tapılmadı, yenidən sınayın. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. Bilinməyən səbəblərə görə quraşdırılma uğursuz oldu. Dəstək üçün Telegram və ya Discord-a qoşulun. Quraşdırma faylı cihazınıza uyğun gəlmədiyi üçün quraşdırılma uğursuz oldu. Tənzimləmələrdən endirilmiş faylları təmizləyib yenidən sınayın. Apk faylları zədəli olduğu üçün quraşdırılma uğursuz oldu, yenidən sınayın. diff --git a/app/src/main/res/values-bn-rBD/strings.xml b/app/src/main/res/values-bn-rBD/strings.xml index e4969752..cf3f7fc3 100644 --- a/app/src/main/res/values-bn-rBD/strings.xml +++ b/app/src/main/res/values-bn-rBD/strings.xml @@ -1,11 +1,11 @@ - Cancel + বাতিল করুন বন্ধ করুন - আবার শুরু করো + পুনরায় স্থির করুন সংরক্ষণ করুন - আপনার আ্যপ্স নির্বাচন করুন + আপনার পছন্দসই অ্যাপগুলি নির্বাচন করুন সম্বন্ধে ম্যানেজার @@ -14,69 +14,69 @@ আপনার ডিভাইস কি রুটেড? রুটের অনুমতি দিন - সর্বনিম্ন একটি আ্যপ নির্বাচন করুন! - ভ্যান্সড, কিন্তু তুলনা মূলক কম গুণাগুণ সম্পন্ন তবুও আপনার চাহিদাকে পূরণ করবে। - YouTube Vanced is the stock Android YouTube App, but better! + অন্তত একটি অ্যাপ নির্বাচন করুন! + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + ইউটিউব ভ্যান্সড হল স্টক অ্যান্ড্রয়েড ইউটিউব অ্যাপ, তবে আরো ভাল! চলুন শুরু করি - Willing to use root version? Just hit the button below, else tap to continue + Willing to use the root version? Just hit the button below, else tap to continue About %1$s - Tap on the card to see changelog. + Tap on the card to see the changelog. Changelog %1$s ডাউনলোড করা হচ্ছে ইনস্টল করুন পুনরায় ইনস্টল করুন - ইনস্টল হয়েছে: + ইনস্টল করা আছে: সর্বশেষ: মাইক্রোজি ইনস্টল করা নেই রুট অনুমতি দেয়া হয়নি অনুপলব্ধ - হালনাগাদ - উপকারী লিংক - Support US! + আপডেট + উপকারী লিংকগুলি + আমাদের সমর্থন করো! - রঙের ধরন + অ্যাকসেন্ট রঙ নীল সবুজ - গাঢ় বেগুনী + বেগুনী লাল হলুদ Appearance - Behaviour - ডাউনলোড করা ফাইল সাফ করুন + Behavior + ডাউনলোড করা ফাইলগুলি সাফ করুন সাফল্যের সাথে ফাইলগুলি সাফ করা হয়েছে ফায়ারবেস বিশ্লেষণ - এটি আমাদের সফটওয়্যার এর চলার ধরন ও অনাকাঙ্ক্ষিত আচরন সম্পকে আমাদের তথ্য দিবে। + এটি অ্যাপ্লিকেশন কর্মক্ষমতা এবং ক্র্যাশ লগ সম্পর্কিত তথ্য আমাদের দিবে। ভাষা - Chrome কাস্টম ট্যাব ব্যবহার করুন - লিঙ্কগুলি Chrome কাস্টম ট্যাবগুলিতে খোলা হবে + ক্রোম কাস্টম ট্যাবস ব্যবহার করুন + লিঙ্কগুলি ক্রোম কাস্টম ট্যাবসে খোলা হবে সিস্টেম দ্বারা নির্ধারিত থিম - অন্ধকার থিম + গাঢ় থিম হালকা থিম - চ্যানেল ইউআরএল আপডেট করুন + চ্যানেল URL আপডেট করুন %1$s পুশ বিজ্ঞপ্তি - %1$s এর জন্য আপডেট প্রকাশিত হলে পুশ বিজ্ঞপ্তিগুলি পান - পরিচালক আপডেট কেন্দ্র Center - No new updates + %1$s এর আপডেট প্রকাশিত হলে পুশ বিজ্ঞপ্তি পান + ম্যানেজার আপডেট কেন্দ্র + কোনো নতুন আপডেট নেই Variant Advanced %1$s installation files detected! - Manager detected that all necessary files for %1$s installation were found. Do you want to install? - Checking for updates… + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + আপডেট আছে কিনা দেখা হচ্ছে… ভাষা (গুলি):%1$s - Theme: %1$s + থিম: %1$s Version: %1$s সহায়িকা থামো! - Installing %1$s - আপনি ভ্যানসিডের ম্যাজিক / টিডব্লিউআরপি সংস্করণ ব্যবহার করছেন যা বন্ধ হয়ে গেছে এবং এই অ্যাপ্লিকেশনটি ব্যবহার করে আপডেট করা যাবে না। দয়া করে Magisk মডিউলটি সরিয়ে / TWRP ভ্যান্সড আনইনস্টলার ব্যবহার করে এটি সরিয়ে দিন।. + %1$s ইনস্টল করা হচ্ছে + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. মিইউআই শনাক্তকৃত! - ভ্যানসড ইনস্টল করার জন্য, আপনাকে বিকাশকারী সেটিংসে এমআইইউআই অপটিমাইজেশন অক্ষম করতে হবে। (আপনি যদি 20.2.20 বা তার পরে xiaomi.eu ভিত্তিক রম ব্যবহার করেন তবে আপনি এই সতর্কতাটিকে এড়িয়ে যেতে পারেন) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) ত্রুটি Redownload - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub সফলতা! %1$s Installation Preferences ভ্যান্সড সফলভাবে ইনস্টল করা হয়েছে! এখন খোল? @@ -94,15 +94,15 @@ সূত্রসমূহ ভান্সড দল - সিস্টেমের মালিককে এপিকে `chown` করতে ব্যর্থ হয়েছে, দয়া করে আবার চেষ্টা করুন. + Failed to `chown` APK to system owner, please try again. %1$s ডাউনলোড করার সময় ত্রুটি প্যাকেজ %1$s আনইনস্টল করতে ব্যর্থ সফটওয়্যার টি ইনস্টল এর জন্য প্রয়োজনী ফাইল সংগ্রহতে ব্যর্থ হয়েছে। পুনরায় ডাওনলোড এবং ইনস্টল করে চেষ্টা করুন. স্টোরেজ থেকে কালো / অন্ধকান থিমের জন্য apk ফাইল সনাক্ত করতে ব্যর্থ হয়েছে, দয়া করে আবার চেষ্টা করুন।. - ইনস্টলেশন ব্যর্থ হয়েছে কারণ ব্যবহারকারীরা ইনস্টলেশনটি বাতিল করে দিয়েছেন।. - ইনস্টলেশন ব্যর্থ হয়েছে কারণ ব্যবহারকারীরা ইনস্টলেশনটি অবরুদ্ধ করেছেন।. - ইনস্টলেশন ব্যর্থ হয়েছে কারণ ব্যবহারকারী প্যাকেজটি ডাউনগ্রেড করার চেষ্টা করেছিল। স্টক ইউটিউব অ্যাপ্লিকেশন থেকে আপডেটগুলি আনইনস্টল করুন, তারপরে আবার চেষ্টা করুন।. - ইনস্টলেশন ব্যর্থ হয়েছে কারণ অ্যাপ্লিকেশনটি ইতিমধ্যে ইনস্টল হওয়া অ্যাপ্লিকেশানের সাথে দ্বন্দ্ব রয়েছে ts ভান্সডের বর্তমান সংস্করণটি আনইনস্টল করুন, তারপরে আবার চেষ্টা করুন।. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. অজানা কারণে ইনস্টলেশন ব্যর্থ হয়েছে, আরও সহায়তার জন্য আমাদের টেলিগ্রাম বা ডিসকর্ডে যোগ দিন।. ইনস্টলেশন ব্যর্থ হয়েছে কারণ ইনস্টলেশন ফাইলটি আপনার ডিভাইসের সাথে বেমানান। সেটিংসে ডাউনলোড করা ফাইল সাফ করুন, তারপরে আবার চেষ্টা করুন।. অ্যাপ্লিকেশন ব্যর্থ হয়েছে কারণ এপিপি ফাইলগুলি দূষিত হয়েছে, দয়া করে আবার চেষ্টা করুন।. diff --git a/app/src/main/res/values-bn-rIN/strings.xml b/app/src/main/res/values-bn-rIN/strings.xml index 04de25eb..9890bef0 100644 --- a/app/src/main/res/values-bn-rIN/strings.xml +++ b/app/src/main/res/values-bn-rIN/strings.xml @@ -3,22 +3,22 @@ বাতিল করুন বন্ধ করুন - রিসেট করুন + পুনরায় স্থির করুন সংরক্ষণ করুন আপনার পছন্দসই অ্যাপগুলি নির্বাচন করুন সম্বন্ধে ম্যানেজার সেটিংস - ম্যানেজার হালনাগাদ করুন + ম্যানেজার আপডেট করুন আপনার ডিভাইসটিতে আপনার রুট অ্যাক্সেস আছে? রুট অনুমতি মঞ্জুর করুন অন্তত একটি অ্যাপ নির্বাচন করুন! - ভ্যান্সড, তবে ইউটিউব মিউজিকের জন্য!\nতুলনামূলকভাবে কম বৈশিষ্ট্যযুক্ত, তবে আপনার চাহিদা পূরণ করে। + ভ্যান্সড, তবে ইউটিউব মিউজিকের জন্য!\nতুলনামূলকভাবে কম বৈশিষ্ট্যযুক্ত, তবে আপনার চাহিদা পূরণ করবে। ইউটিউব ভ্যান্সড হল স্টক অ্যান্ড্রয়েড ইউটিউব অ্যাপ, তবে আরো ভাল! শুরু করা যাক - রুট সংস্করণ ব্যবহার করতে ইচ্ছুক? নীচের বোতামটি চাপুন, অন্যথায় চালিয়ে যেতে আলতো চাপুন + রুট সংস্করণ ব্যবহার করতে ইচ্ছুক? নীচের বোতামটি চাপুন, অন্যথায় চালিয়ে যেতে > এর উপরে আলতো চাপুন %1$s এর সম্বন্ধে পরিবর্তন নথি দেখতে কার্ডে আলতো চাপুন। @@ -29,16 +29,16 @@ ইনস্টল করা আছে: সর্বশেষ: মাইক্রোজি ইনস্টল করা নেই - রুট অ্যাক্সেস দেওয়া হয়নি + রুট অনুমতি দেয়া হয়নি অনুপলব্ধ - হালনাগাদ + আপডেট উপকারী লিংকগুলি আমাদের সমর্থন করুন! অ্যাকসেন্ট রঙ নীল সবুজ - বেগুনি + বেগুনী লাল হলুদ রূপ @@ -54,26 +54,26 @@ থিম গাঢ় থিম হালকা থিম - চ্যানেল ইউআরএল হালনাগাদ করুন - %1$s পুশ নোটিফিকেশনগুলি - %1$s এর আপডেট প্রকাশিত হলে পুশ বিজ্ঞপ্তিগুলি পান - পরিচালক আপডেট কেন্দ্র - কোনো নতুন হালনাগাদ নেই + চ্যানেল URL আপডেট করুন + %1$s পুশ বিজ্ঞপ্তিগুলি + %1$s এর আপডেট প্রকাশিত হলে পুশ বিজ্ঞপ্তি পান + ম্যানেজার আপডেট কেন্দ্র + কোনো নতুন আপডেট নেই বিকল্প উন্নত ইনস্টল করার জন্য %1$s ফাইল খুঁজে পাওয়া গেছে! %1$s ইনস্টল করার জন্য প্রয়োজনীয় সমস্ত ফাইলগুলি ম্যানেজার খুঁজে পেয়েছে। আপনি কি ইনস্টল করতে চান? - হালনাগাদের জন্য চেক করা হচ্ছে… + আপডেটের জন্য চেক করা হচ্ছে… ভাষা(গুলি): %1$s থিম: %1$s সংস্করণ: %1$s সহায়িকা থামুন! %1$s ইনস্টল করা হচ্ছে - আপনি ভ্যান্সড ম্যাজিস্ক/টিডব্লিউআরপি সংস্করণ ব্যবহার করছেন যা বন্ধ হয়ে গেছে এবং এই অ্যাপ্লিকেশনটি ব্যবহার করে হালনাগাদ করতে পারবেন না। দয়া করে ম্যাজিস্ক মডিউলটি সরিয়ে/ টিডব্লিউআরপি ভ্যান্সড আনইনস্টলার ব্যবহার করে এটি মুছে ফেলুন। + আপনি ভ্যান্সড ম্যাজিস্ক/TWRP সংস্করণ ব্যবহার করছেন যা বন্ধ হয়ে গেছে এবং আপনি এটিকে আপডেট করতে পারবেন না। দয়া করে ম্যাজিস্ক মডিউলটি সরিয়ে/TWRP ভ্যান্সড আনইনস্টলার ব্যবহার করে এটি মুছে ফেলুন। মিআইইউআই শনাক্তকৃত! - ভ্যান্সড ইনস্টল করার জন্য, আপনাকে বিকাশকারী সেটিংসে এমআইইউআই অপটিমাইজেশন অক্ষম করতে হবে। (আপনি যদি ২০.২.২০ বা তার পরে xiaomi.eu ভিত্তিক রম ব্যবহার করেন তবে আপনি এই সতর্কতাটিকে এড়িয়ে যেতে পারেন) + ভ্যান্সড ইনস্টল করার জন্য, আপনাকে সেটিংসে ডেভেলপারের বিকল্পে গিয়ে MIUI অপটিমাইজেশন নিস্ক্রিয় করতে হবে। (আপনি যদি ২০.২.২০ বা তার পরে xiaomi.eu ভিত্তিক রম ব্যবহার করেন তবে আপনি এই সতর্কতাটিকে এড়িয়ে যেতে পারেন) ত্রুটি পুনরায় ডাউনলোড করুন নিশ্চিত করুন যে আপনি অ্যাপটি vancedapp.com, ভ্যান্সড ডিসকার্ড সার্ভার বা ভ্যান্সড গিটহাব থেকে ডাউনলোড করেছেন @@ -94,15 +94,15 @@ উৎসগুলি ভ্যান্সড টীম - সিস্টেমের মালিককে এপিকে `chown` করতে ব্যর্থ, দয়া করে আবার চেষ্টা করুন। + System owner কে APK `chown` করতে ব্যর্থ, দয়া করে আবার চেষ্টা করুন। %1$s ডাউনলোড করার সময় ত্রুটি %1$s পেকেজ আন‌ইনস্টল করা যাইনি ইনস্টলেশনের জন্য প্রয়োজনীয় ফাইলগুলি খুঁজে পাওয়া যায় নি। ইনস্টল করার জন্য ফাইলগুলি পুনরায় ডাউনলোড করুন, তারপরে আবার চেষ্টা করুন। স্টোরেজ থেকে কালো/গাঢ় থিমের জন্য এপিকে ফাইল সনাক্ত করতে ব্যর্থ, দয়া করে আবার চেষ্টা করুন। - ইনস্টলেশন ব্যর্থ হয়েছে কারণ ব্যবহারকারী ইনস্টলেশনটি বাতিল করে দিয়েছেন। - ইনস্টলেশন ব্যর্থ হয়েছে কারণ ব্যবহারকারী ইনস্টলেশন অবরুদ্ধ করেছেন। - ইনস্টলেশন ব্যর্থ হয়েছে কারণ ব্যবহারকারী প্যাকেজটি ডাউনগ্রেড করার চেষ্টা করছিলেন। স্টক ইউটিউব অ্যাপ্লিকেশন থেকে আপডেটগুলি আনইনস্টল করুন, তারপরে আবার চেষ্টা করুন। - ইনস্টলেশন ব্যর্থ হয়েছে কারণ অ্যাপ্লিকেশনটি ইতিমধ্যে ইনস্টল হওয়া আরেকটি অ্যাপ্লিকেশানের সাথে দ্বন্দ্ব করছে। ভ্যান্সডের বর্তমান সংস্করণটি আনইনস্টল করুন, তারপরে আবার চেষ্টা করুন। + ইনস্টল করা যায়নি কারণ ব্যবহারকারী ইনস্টল করা বাতিল করে দিয়েছেন। + ইনস্টল করা যায়নি কারণ ব্যবহারকারী ইনস্টল করা অবরুদ্ধ করেছেন। + ইনস্টল করা যায়নি কারণ ব্যবহারকারী প্যাকেজটি ডাউনগ্রেড করার চেষ্টা করছিলেন। স্টক ইউটিউব অ্যাপ্লিকেশন থেকে আপডেটগুলি আনইনস্টল করুন, তারপরে আবার চেষ্টা করুন। + ইনস্টল করা যায়নি কারণ অ্যাপ্লিকেশনটি ইতিমধ্যে ইনস্টল হওয়া আরেকটি অ্যাপ্লিকেশানের সাথে দ্বন্দ্ব করছে। ভ্যান্সডের বর্তমান সংস্করণটি আনইনস্টল করুন, তারপরে আবার চেষ্টা করুন। অজানা কারণে ইনস্টলেশন ব্যর্থ হয়েছে, আরও সহায়তার জন্য আমাদের টেলিগ্রাম বা ডিসকর্ডে যোগ দিন। ইনস্টলেশন ব্যর্থ হয়েছে কারণ ইনস্টলেশন ফাইলটি আপনার ডিভাইসের উপযুক্ত নয়। সেটিংসে ডাউনলোড করা ফাইল মুছে ফেলুন, তারপরে আবার চেষ্টা করুন। ইনস্টলেশন ব্যর্থ হয়েছে কারণ এপিকে ফাইলগুলি দূষিত, দয়া করে আবার চেষ্টা করুন। diff --git a/app/src/main/res/values-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml index c29ce93b..142373e5 100644 --- a/app/src/main/res/values-ca-rES/strings.xml +++ b/app/src/main/res/values-ca-rES/strings.xml @@ -8,20 +8,20 @@ Select Your Apps Quant a - Manager + Gestor Configuració Update Manager Is Your Device Rooted? Grant Root Permission Select at least one app! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. YouTube Vanced is the stock Android YouTube App, but better! Let\'s get started - Willing to use root version? Just hit the button below, else tap to continue + Willing to use the root version? Just hit the button below, else tap to continue About %1$s - Tap on the card to see changelog. + Tap on the card to see the changelog. Changelog Descarregant %1$s Instal·lar @@ -33,7 +33,7 @@ No disponible Actualitza Enllaços d\'interès - Support US! + Doneu-nos suport! Color d\'èmfasi Blau @@ -42,7 +42,7 @@ Vermell Groc Appearance - Behaviour + Behavior Esborrar fitxers descarregats Fitxers netejats correctament Firebase Analytics @@ -58,25 +58,25 @@ %1$s notificacions automàtiques Rebeu notificacions automàtiques quan es publiqui una actualització de%1$s Gestor d\'actualitzacions - No new updates + Cap actualització Variant Advanced %1$s installation files detected! - Manager detected that all necessary files for %1$s installation were found. Do you want to install? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? Checking for updates… Idioma: %1$s - Theme: %1$s + Tema: %1$s Version: %1$s Guia Atura! - Installing %1$s - Esteu utilitzant la versió Magisk / TWRP de Vanced, que està descatalogada i no es pot actualitzar mitjançant aquesta aplicació. Elimineu-lo traient el mòdul magisk / utilitzant el programa de desinstal·lació de TWRP Vanced. + Instal·lant %1$s + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. MIUI detectat! - Per instal·lar Vanced, heu de desactivar les optimitzacions MIUI a la configuració del desenvolupador. (Podeu ignorar aquest advertiment si feu servir la ROM basada en xiaomi.eu 20.2.20 o posterior) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) Error Redownload - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub Èxit! %1$s Installation Preferences Vanced s\'ha instal·lat correctament. Obert ara? @@ -94,15 +94,15 @@ Fonts Equip avançat - Failed to `chown` apk to system owner, please try again. + Failed to `chown` APK to system owner, please try again. Error en descarregar %1$s Error en instal·lar el paquet %1$s Failed to locate the required files for installation. Re-download the installation files, then try again. Failed to locate apk file for black/dark theme from storage, please try again. - La instal·lació ha fallat perquè l\'usuari ha interromput la instal·lació. - La instal·lació ha fallat perquè l\'usuari ha bloquejat la instal·lació. - La instal·lació ha fallat perquè l\'usuari ha intentat actualitzar el paquet. Desinstal·leu les actualitzacions de l\'aplicació YouTube existent i torneu-ho a provar. - La instal·lació ha fallat perquè l\'aplicació entra en conflicte amb una aplicació ja instal·lada. Desinstal·leu la versió actual de Vanced i torneu-ho a provar. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. La instal·lació ha fallat per motius desconeguts. Uniu-vos al nostre Telegram o Discord per obtenir més assistència. La instal·lació ha fallat perquè el fitxer d\'instal·lació és incompatible amb el dispositiu. Esborreu els fitxers descarregats a Configuració i torneu-ho a provar. La instal·lació ha fallat perquè els fitxers apk estan danyats. Torneu-ho a provar. diff --git a/app/src/main/res/values-ckb-rIR/strings.xml b/app/src/main/res/values-ckb-rIR/strings.xml index bdc95ee5..4ef1fcc4 100644 --- a/app/src/main/res/values-ckb-rIR/strings.xml +++ b/app/src/main/res/values-ckb-rIR/strings.xml @@ -15,13 +15,13 @@ مۆبایلەکەت ڕۆت کراوە؟ ڕێگەپێدانی ڕۆت Root لانیکەم دانەیەک دیاریبکە! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. - YouTube Vanced is the stock Android YouTube App, but better! - Let\'s get started - ئەگەر ئەتەوێ بە ڕێگەپێدانی ڕۆت فایلەکان دابەزێنیت، تەنها لە خوارەوە پەنجە بنێ بە بەردەوامبون بۆ ئەنجامدانی کارەکە + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + YouTube Vanced هەمان بەرنامەی یوتوبە بەڵام بەشێوەکی باشتر! + دەست پێکردن + Willing to use the root version? Just hit the button below, else tap to continue دەربارەی %1$s - Ji bo guherînan bibînî kartê bitepîne. + Tap on the card to see the changelog. گۆڕانکارییەکان داگرتنی %1$s دامەزراندن @@ -33,7 +33,7 @@ بەردەست نیە نوێکردنەوە کراوە بە کوردی لەلایەن: گۆران غەریب(کوردرۆید) - پاڵپشتی تیمەکەمان! + پشتگیریکردن! ڕەنگی سەرەکی شین @@ -42,7 +42,7 @@ سوور زەرد ڕووکار - ڕووکەش + Behavior سڕینەوەی فایلە داگیراوەکان فایلەکان بەسەرکەتوویی سڕانەوە Firebase شیکردنەوەی @@ -61,9 +61,9 @@ هیچ نوێکردنەوەیەک نیە جۆر - Advanced + پێشکەوتوو %1$s فایل دۆزرایەوە بۆ دابەزاندن! - بەرنامەکە هەموو ئەو فایلانەی دۆزیەوە %1$s کە پێویستن بۆ دابەزاندن، ئەتەوێ دایان مەزرێنیت؟ + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? پشکنین بۆ نوێکردنەوە… زمان: %1$s ڕووکار: %1$s @@ -71,12 +71,12 @@ زانیاری وەستاندن! دامەزراندنی %1$s - تۆ وەشانی Magisk/TWRP ـی Vanced بەکاردێنیت، کە ناتوانرێت بە بەکارهێنانی ئەم بەرنامەیە نوێبکرێتەوە، تکایە لایبدە بە سڕینەوەی مۆدیولی ماگیسک/لەڕێی TWRP Vanced. + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. تۆ ڕووکاری MIUI بەکاردێنیت! - بۆ ئەوەی Vanced دابمەزرێنیت، پێویستە چاکسازییەکانی ڕووکاری MIUI لە ڕێکبەندەکانی پەرەپێدەر لە کار بخەیت، (دەتوانیت ئەم ئاگاداریە پشتگوێ بخەیت ئەگەر ڕومی تایبەتی وەشانی 20.2.20 یان دواتر xiaomi.eu بەکاردەهێنیت. بەکاردەهێنیت) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) هەڵەیەک ڕوویدا داگرتنەوە - دڵنیابە کە بەرنامەکەت لە سایتی vancedapp.com، سێرڤەری دیسکۆرد یان Vanced GitHub داگرتووە + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub سەرکەوتو بوو! %1$s ڕێکخستنەکانی دامەزراندن بەرنامەکە بەسەرکەوتوویی دابەزێنرا! کردنەوە ئێستا؟ @@ -94,15 +94,15 @@ سەرچاوەکان Vanced تیمی - سەرکەوتو نەبوو `chown` بۆ دانان وەک بەرنامەی سیستەم, تکایە دووبارە هەوڵبدەرەوە. + Failed to `chown` APK to system owner, please try again. کێشە ڕوویدا لە داگرتنی %1$s سڕینەوەی %1$s سەرکەوتو نەبوو سەرکەوتو نەبوو لە دۆزینەوەی فایلە پێویستەکان بۆ دامەزراندن، فایلە پێویستیەکان دووبارە دابگرەوە بۆ جێگیرکردن، پاشان دووبارە هەوڵبدەرەوە. سەرکەوتوو نەبوو لەدۆزینەوەی شوێنی فایلی Apk بۆ ڕووکاری ڕەش/تاریک لە بیرگەدا، تکایە دووبارە هەوڵبدەرەوە. - دامەزراندن سەرکەوتو نەبوو، لەبەر ئەوەی بەکارهێنەر کۆتاییهێنا بە دابەزاندنەکە. - دامەزراندن سەرکەوتو نەبوو، لەبەر ئەوەی بەکارهێنەر ڕێگریکرد لە دابەزاندنەکە. - دامەزراندن سەرکەوتو نەبوو، لەبەر ئەوەی بەکارهێنەر هەوڵیدا بۆ نزمکردنەوەی وەشان، نوێکارییەکانی بەرنامەی بنەڕەتی YouTube بسڕەوە و دووبارە هەوڵبدەرەوە. - دامەزراندن سەرکەوتو نەبوو لەبەرئەوەی وەشانێکی تری بەرنامەکە پێشتر دامەزرێنراوە، وەشانی ئێستای Vanced بسڕەوە و پاشان دووبارە هەوڵبدەرەوە. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. دامەزراندن سەرکەوتو نەبوو لەبەر هۆکاری نادیار، پەیوەندی بکە بە تێلێگرامەکەمان یان Discord بۆ پشتگیری زیاتر. دامەزراندن سەرکەوتو نەبوو لەبەرئەوەی فایلی دابەزاندن گونجاو نییە لەگەڵ ئامێرەکەت، فایلە داگیراوەکان بسڕەوە و پاشان دووبارە هەوڵبدەرەوە. دامەزراندن سەرکەوتوو نەبوو لەبەرئەوەی فایلی apk تێکچووە، تکایە دووبارە هەوڵبدرەوە. diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index 117854e2..d71f03a6 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -94,7 +94,7 @@ Zdrojové kódy Tým Vanced - Nelze změnit soubor apk na vlastníka systému, zkuste to prosím znovu. + Nelze změnit soubor APK na vlastníka systému, zkuste to prosím znovu. Chyba při stahování %1$s Nepodařilo se odinstalovat balíček %1$s Nepodařilo se najít požadované soubory pro instalaci. Stáhněte znovu instalační soubory a pokus opakujte. diff --git a/app/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml index 637f9ce3..ddef4b9c 100644 --- a/app/src/main/res/values-da-rDK/strings.xml +++ b/app/src/main/res/values-da-rDK/strings.xml @@ -42,7 +42,7 @@ Rød Gul Udseende - Opførsel + Adfærd Ryd hentede filer Filer ryddet succesfuldt Firebase analyse @@ -63,7 +63,7 @@ Avanceret %1$s installationsfiler fundet! - Manageren opdagede, at alle nødvendige filer til %1$s installationen blev fundet. Vil du installere? + Manageren opdagede, at alle nødvendige filer til %1$s installationen blev fundet. Vil du installere den? Søger efter opdateringer… Sprog:%1$s Tema: %1$s @@ -73,7 +73,7 @@ Installerer %1$s Det ser ud som om du bruger Magisk/TWRP versionen af Vanced. Den er ikke længere understøttet og kan derfor ikke opdateres igennem denne app. Vær venlig at fjerne magisk modulet/brug TWRP Vanced uninstaller. MIUI fundet! - For at kunne installere Vanced er du NØDT til at slå MIUI optimering fra i udvikler indstillingerne. (Du kan ignorere denne advarsel hvis du bruger en 20.2.20 eller nyere xiaomi.eu baseret ROM) + For at installere Vanced er du NØDT til at slå MIUI optimering fra i udvikler indstillingerne. (Du kan ignorere denne advarsel hvis du bruger en 20.2.20 eller nyere xiaomi.eu baseret ROM) Fejl Hent igen Venligst sørg for kun at have downloaded appen fra vancedapp.com, Vanced Discord serveren eller Vanced GitHub siden diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 26b07b49..8ba7098f 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -15,13 +15,13 @@ Ist mein Gerät gerootet? Root-Berechtigung erteilen Wählen Sie mindestens eine App! - Vanced, aber für YouTube Music!\nrelativ wenige features aber erfüllt die Bedürfnissse. + Vanced, aber für YouTube Music!\nrelativ weniger funktionsreich, aber erfüllt Ihre Bedürfnisse. YouTube Vanced ist die standard Android YouTube App, aber besser! Los geht\'s - Möchten Sie die Root-Version verwenden? Tippen Sie einfach auf die Schaltfläche unten, andernfalls tippen Sie um fortzufahren + Möchten Sie die Root-Version verwenden? Tippen Sie einfach auf die Schaltfläche unten, sonst tippen Sie um fortzufahren Über %1$s - Tippe auf die Karte, um Changelog zu sehen. + Tippe auf die Karte, um den Changelog zu sehen. Changelog %1$s wird heruntergeladen Installieren @@ -33,7 +33,7 @@ Nicht verfügbar Aktualisieren Nützliche Links - Ünterstütze uns! + Unterstütze uns! Akzentfarbe Blau @@ -63,7 +63,7 @@ Erweitert %1$s Installationsdateien erkannt! - Manager hat festgestellt, dass alle notwendigen Dateien für die Installation von %1$s gefunden wurden. Möchten Sie installieren? + Manager hat festgestellt, dass alle notwendigen Dateien für die Installation von %1$s gefunden wurden. Möchten Sie sie installieren? Suche nach Updates… Sprache(n): %1$s Theme: %1$s @@ -73,10 +73,10 @@ %1$s wird installiert Sie nutzen die Magisk/TWRP-Version von Vanced, die nicht mehr unterstützt wird und mit dieser App nicht aktualisiert werden kann. Bitte entfernen sie diese indem Sie das Magisk-Modul mit dem TWRP Vanced Uninstaller entfernen. MIUI erkannt! - Um Vanced zu installieren, MÜSSEN Sie MIUI-Optimierungen in den Entwickler-Einstellungen deaktivieren. (Sie können diese Warnung ignorieren, wenn Sie einen auf xiaomi.eu basierenden ROM 20.2.20 oder höher verwenden) + Um Vanced zu installieren, müssen Sie MIUI Optimierungen in den Entwicklereinstellungen deaktivieren. (Sie können diese Warnung ignorieren, wenn Sie 20.2.20 oder höher auf xiaomi.eu basierenden ROM verwenden) Fehler Erneut herunterladen - Bitte stellen Sie sicher, dass Sie die App von vancedapp.com, dem Vanced Discord Server oder dem Vanced GitHub heruntergeladen haben + Stelle sicher, dass du die App von vancedapp.com, dem Vanced Discord Server oder dem Vanced GitHub heruntergeladen hast Erfolg! %1$s Installationsoptionen Vanced wurde erfolgreich installiert. Jetzt öffnen? @@ -94,15 +94,15 @@ Quellen Vanced Team - Fehler bei `chown` der apk an den Systembesitzer, bitte versuchen Sie es erneut. + Fehler bei der `chown` APK zum Systembesitzer, bitte versuchen Sie es erneut. Download von %1$s fehlgeschlagen Entfernen von %1$s fehlgeschlagen Die benötigten Dateien für die Installation konnten nicht gefunden werden. Laden Sie die Installationsdateien erneut herunter und versuchen Sie es erneut. Apk-Datei für schwarz/dunkles Theme konnte nicht gefunden werden, bitte versuchen Sie es erneut. - Installation fehlgeschlagen, da der Nutzer diese abgebrochen hat. - Installation fehlgeschlagen, da der Benutzer diese blockiert hat. - Installation fehlgeschlagen, da der Benutzer versucht hat, eine ältere Version des Paketes zu installieren. Deinstallieren Sie Updates von der YouTube App und versuchen Sie es erneut. - Installation aufgrund von Konflikten mit einer bereits installierten App fehlgeschlagen. Deinstallieren Sie die Aktuelle Version von Vanced und versuchen Sie es erneut. + Installation fehlgeschlagen, da der Benutzer die Installation abgebrochen hat. + Installation fehlgeschlagen, da der Benutzer die Installation blockiert hat. + Installation fehlgeschlagen, da der Benutzer versucht hat, das Paket herunterzustufen. Aktualisierungen von YouTube deinstallieren und dann erneut versuchen. + Installation fehlgeschlagen, da die App mit einer bereits installierten App kollidiert. Deinstallieren Sie die aktuelle Version von Vanced, dann versuchen Sie es erneut. Installation aus unbekannten Grund fehlgeschlagen. Treten Sie bitte unserem Telegram-Chat oder Discord-Server bei, um Support zu erhalten. Installation fehlgeschlagen, da die Installationsdatei nicht mit Ihrem Gerät kompatibel ist. Löschen Sie heruntergeladene Dateien in den Einstellungen, dann versuchen Sie es erneut. Installation fehlgeschlagen, da die apk-Dateien beschädigt sind, bitte versuchen Sie es erneut. diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml index 22105eb4..337ae4bb 100644 --- a/app/src/main/res/values-el-rGR/strings.xml +++ b/app/src/main/res/values-el-rGR/strings.xml @@ -12,16 +12,16 @@ Ρυθμίσεις Ενημέρωση Διαχειριστή Vanced - Έχετε πρόσβαση Root στην συσκευή σας; + Έχετε πρόσβαση Root στη συσκευή σας; Χορήγηση Άδειας Root Επιλέξτε τουλάχιστον μια εφαρμογή! - Vanced, αλλά για το YouTube Music!\nμε σχετικά λιγότερες δυνατότητες αλλά καλύπτει όλες τις ανάγκες σας. + Vanced, αλλά για το YouTube Music!\nΣχετικά λιγότερες δυνατότητες, αλλά καλύπτει τις ανάγκες σας. Το YouTube Vanced είναι το όπως την αρχική εφαρμογή YouTube, αλλά καλύτερο! Ας ξεκινήσουμε - Επιθυμείτε την έκδοση root; Απλώς πατήστε το παρακάτω κουμπί, αλλιώς πατήστε το βελάκι για συνέχεια + Θέλετε να χρησιμοποιήσετε την έκδοση root; Πατήστε απλά το παρακάτω κουμπί, αλλιώς πατήστε το βέλος για συνέχεια Σχετικά με το %1$s - Πατήστε στην καρτέλα για να δείτε τις αλλαγές. + Πατήστε στην καρτέλα για να δείτε το αρχείο αλλαγών. Αρχείο καταγραφής αλλαγών Λήψη %1$s Εγκατάσταση @@ -73,10 +73,10 @@ Εγκατάσταση του %1$s Χρησιμοποιείτε την έκδοση Magisk/TWRP του Vanced, η οποία δεν υποστηρίζεται πλέον και δεν μπορεί να ενημερωθεί μέσω αυτής της εφαρμογής. Παρακαλούμε αφαιρέστε αυτή την έκδοση αφαιρώντας το Magisk Module/χρησιμοποιόντας το πρόγραμμα κατάργησης TWRP Vanced. Ανιχνεύτηκε MIUI! - Για να εγκαταστήσετε το Vanced, ΠΡΕΠΕΙ να απενεργοποιήσετε (στις ρυθμίσεις) τη βελτιστοποίηση MIUI στις επιλογές προγραμματιστών. (Μπορείτε να αγνοήσετε αυτήν την προειδοποίηση εάν χρησιμοποιείτε την έκδοση ROM 20.2.20 ή μεταγενέστερη βασισμένη στο xiaomi.eu) + Για να εγκαταστήσετε το Vanced, ΠΡΕΠΕΙ να απενεργοποιήσετε τις Βελτιστοποιήσεις MIUI στις ρυθμίσεις για προγραμματιστές. (Μπορείτε να αγνοήσετε αυτή την προειδοποίηση αν χρησιμοποιείτε την έκδοση ROM 20.2.20 ή μεταγενέστερη, βάσει του xiaomi.eu) Σφάλμα Επανάληψη λήψης - Σιγουρευτείτε πως κατεβάσατε την εφαρμογή από το vancedapp.com, τον διακομιστή Discord του Vanced ή το GitHub του Vanced + Βεβαιωθείτε ότι κάνατε λήψη της εφαρμογής από το vancedapp.com, τον διακομιστή Discord του Vanced ή το GitHub του Vanced Επιτυχία! Προτιμήσεις Εγκατάστασης του %1$s Το Vanced έχει εγκατασταθεί επιτυχώς! Εκκίνηση τώρα; @@ -94,12 +94,12 @@ Πηγές Η ομάδα του Vanced - Αποτυχία αλλαγής του κατόχου του Apk σε system owner, παρακαλώ προσπαθήστε ξανά. + Αποτυχία παραχώρησης ιδιοκτησίας του APK στον κάτοχο συστήματος, παρακαλούμε προσπαθείστε ξανά. Σφάλμα λήψης του %1$s Αποτυχία απεγκατάστασης πακέτου %1$s Αδυναμία εντοπισμού των απαιτούμενων αρχείων για την εγκατάσταση. Κατεβάστε τα αρχεία εγκατάστασης, και προσπαθήστε ξανά. Αδυναμία εντοπισμού του αρχείου apk σκουρόχρωμου/απολύτου μαύρου θέματος στον αποθηκευτικό χώρο, παρακαλώ προσπαθήστε ξανά. - Η εγκατάσταση απέτυχε διότι ο χρήστης απέτρεψε την εγκατάσταση. + Η εγκατάσταση απέτυχε διότι ο χρήστης ακύρωσε την εγκατάσταση. Η εγκατάσταση απέτυχε διότι ο χρήστης απέκλεισε την εγκατάσταση. Η εγκατάσταση απέτυχε διότι ο χρήστης προσπάθησε να υποβαθμίσει το πακέτο. Απεγκαταστήστε τις ενημερώσεις της αρχικής εφαρμογής YouTube, στη συνέχεια προσπαθήστε ξανά. Η εγκατάσταση απέτυχε διότι η εφαρμογή αντικρούεται με μια ήδη εγκατεστημένη εφαρμογή. Απεγκαταστήστε την τρέχουσα έκδοση του Vanced, στην συνέχεια προσπαθήστε ξανά. diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index a1f86615..22d21c86 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -10,18 +10,18 @@ Información Manager Ajustes - Gestor de actualizaciones + Actualizar Manager ¿Su dispositivo está rooteado? - Conceder permiso root + Otorgar permiso root ¡Seleccione al menos una aplicación! Vanced, pero para YouTube Music!\nrelativamente menos características, pero satisface tus necesidades. - YouTube Vanced es la aplicación stock de YouTube, pero mejorada! + YouTube Vanced es la aplicación original de YouTube para Android, pero mejorada! Comencemos - ¿Deseas usar la versión root? Sólo tienes que tocar el botón de abajo, si no, toca para continuar + ¿Deseas usar la versión root? Sólo haz clic en el botón de abajo, si no, toca para continuar Acerca de %1$s - Toque en la tarjeta para ver el registro de cambios. + Haz clic en la tarjeta para ver el registro de cambios. Registro de cambios Descargando %1$s Instalar @@ -33,7 +33,7 @@ No Disponible Actualizar Links Utiles - ¡Apóyenos! + ¡Apóyanos! Color de Acento Azul @@ -63,7 +63,7 @@ Configuración avanzada ¡%1$s archivos de instalación detectados! - El Manager detectó que todos los archivos necesarios para la instalación de %1$s, se encontraron. ¿Desea instalar? + Manager encontró todos los archivos necesarios para la instalación de %1$s. ¿Deseas instalarlo? Comprobando actualizaciones… Idioma(s): %1$s Tema: %1$s @@ -73,10 +73,10 @@ Instalando %1$s Estás utilizando la versión Magisk/TWRP de Vanced, la cual está descontinuada y no puede ser actualizada mediante esta app. Por favor elimínala quitando el módulo de Magisk o utilizando el desinstalador TWRP. MIUI detectado! - Para instalar Vanced, DEBES desactivar las Optimizaciones MIUI en los ajustes de desarrollador. (Puedes ignorar esta advertencia si estas utilizando el ROM 20.2.20 o posterior de xiaomi.eu) + Para instalar Vanced, DEBES desactivar la Optimización de MIUI en las opciones para desarrolladores. (Puedes omitir este paso si estás utilizando Xiaomi.eu 20.2.20 o más reciente) Error Volver a descargar - Asegúrate de haber descargado la aplicación desde vancedapp.com, el servidor Discord de Vanced o el GitHub de Vanced + Asegúrate de haber descargado la app desde vancedapp.com, el servidor de Discord de Vanced, o el GitHub de Vanced Éxito! %1$s preferencias de instalación ¡Vanced se ha instalado correctamente! ¿Abrir ahora? @@ -94,15 +94,15 @@ Fuentes Equipo Vanced - No se pudo conectar a Chown Apk con el propietario del sistema, inténtalo de nuevo. + No se pudo cambiar el propietario del APK al propietario del sistema, inténtalo de nuevo. Error al descargar %1$s Falla al desinstalar paquete %1$s Error al localizar los archivos necesarios para la instalación. Vuelva a descargar los archivos de instalación y vuelva a intentarlo. No se pudo encontrar el archivo apk para el tema negro/oscuro del almacenamiento, por favor inténtelo de nuevo. - La instalación falló porque el usuario abortó la instalación. - Instalación fallida porque el usuario bloqueó la instalación. - La instalación falló porque el usuario intentó degradar el paquete. Desinstale las actualizaciones de stock YouTube, y vuelva a intentarlo. - La instalación falló porque la aplicación entra en conflicto con una aplicación ya instalada. Desinstale la versión actual de Vanced, y vuelva a intentarlo. + La instalación falló debido a que el usuario canceló la instalación. + La instalación falló debido a que el usuario bloqueó la instalación. + La instalación falló debido a que el usuario intentó instalar una versión anterior. Desinstala las actualizaciones de la aplicación stock de YouTube, e inténtalo de nuevo. + La instalación falló debido a que la aplicación entra en conflicto con una aplicación ya instalada. Desinstala la versión actual de Vanced, e inténtalo de nuevo. La instalación ha fallado por razones desconocidas, únete a nuestro grupo de Telegram o Discord para brindarte soporte. La instalación ha fallado porque el archivo de instalación es incompatible con tu dispositivo. Limpia los archivos descargados en la ajustes y vuelve a intentarlo. La instalación falló porque los archivos apk están corruptos, por favor inténtalo de nuevo. diff --git a/app/src/main/res/values-et-rEE/strings.xml b/app/src/main/res/values-et-rEE/strings.xml new file mode 100644 index 00000000..3da03e0b --- /dev/null +++ b/app/src/main/res/values-et-rEE/strings.xml @@ -0,0 +1,114 @@ + + + + Cancel + Close + Reset + Save + Select Your Apps + + About + Manager + Settings + Update Manager + + Is Your Device Rooted? + Grant Root Permission + Select at least one app! + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + YouTube Vanced is the stock Android YouTube App, but better! + Let\'s get started + Willing to use the root version? Just hit the button below, else tap to continue + + About %1$s + Tap on the card to see the changelog. + Changelog + Downloading %1$s + Install + Reinstall + Installed: + Latest: + microG isn\'t installed + Root access not granted + Unavailable + Update + Useful Links + Support us! + + Accent Color + Blue + Green + Purple + Red + Yellow + Appearance + Behavior + Clear downloaded files + Successfully cleared files + Firebase Analytics + This lets us collect information about app performance and crash logs + Language + Use Chrome Custom Tabs + Links will open in Chrome Custom Tabs + System Default + Theme + Dark Theme + Light Theme + Update Channel URL + %1$s Push Notifications + Receive push notifications when an update for %1$s is released + Manager Update Center + No new updates + Variant + + Advanced + %1$s installation files detected! + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + Checking for updates… + Language(s): %1$s + Theme: %1$s + Version: %1$s + Guide + Stop! + Installing %1$s + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. + MIUI detected! + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) + Error + Redownload + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + Success! + %1$s Installation Preferences + Vanced has successfully been installed! Open now? + Version + Vanced Music has successfully been installed! Open now? + Please be patient… + Open + Welcome + + Choose your preferred language(s) for Vanced + Light + %1$s + Select at least one language! + + Manager Devs + Sources + Vanced Team + + Failed to `chown` APK to system owner, please try again. + Error Downloading %1$s + Failed to uninstall package %1$s + Failed to locate the required files for installation. Re-download the installation files, then try again. + Failed to locate apk file for black/dark theme from storage, please try again. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. + Installation failed for unknown reasons, join our Telegram or Discord for further support. + Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again. + Installation failed because the apk files are corrupted, please try again. + Installation failed because apk signature verification is enabled. Disable apk signature verification, then try again. + Installation failed because MIUI Optimization is enabled. Disable MIUI Optimization, then try again. + Installation failed due to a storage error. + Failed to find apk file for black/dark theme from the installer. Clear app data of Manager, then try again. + Failed to locate the stock YouTube installation path after split installation. + diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml index 42e31a31..16750c73 100644 --- a/app/src/main/res/values-fi-rFI/strings.xml +++ b/app/src/main/res/values-fi-rFI/strings.xml @@ -12,16 +12,16 @@ Asetukset Päivitä hallintasovellus - Is Your Device Rooted? - Grant Root Permission + Onko laitteesi rootattu? + Anna root-oikeudet Valitse ainakin yksi sovellus! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. - YouTube Vanced is the stock Android YouTube App, but better! - Let\'s get started - Willing to use root version? Just hit the button below, else tap to continue + Vanhentunut, mutta YouTube Music!\nsuhteellisen vähemmän ominaisuus-rikas, mutta täyttää tarpeesi. + YouTube Vanced on Androidin Youtube-vakiosovellus, mutta parempi! + Aloitetaan + Haluaisitko käyttää juuriversiota? Paina vain alla olevaa painiketta, muuta napauta jatkaaksesi - About %1$s - Napauta korttia nähdäksesi muutoshistoria. + %1$s-tietoja + Napauta korttia nähdäksesi muutoslokin. Muutoshistoria Ladataan %1$s Asenna @@ -42,7 +42,7 @@ Punainen Keltainen Ulkoasu - Behaviour + Käyttäytyminen Tyhjennä ladatut tiedostot Tiedostot tyhjennettiin onnistuneesti Firebase-analytiikka @@ -59,11 +59,11 @@ Vastaanota push-ilmoituksia, kun %1$s:lle on julkaistu päivitys Managerin päivityskeskus Ei uusia päivityksiä - Variant + Variaatio - Advanced - %1$s installation files detected! - Manager detected that all necessary files for %1$s installation were found. Do you want to install? + Kehittyneet + %1$s asennustiedostoa havaittu! + Hallitsija havaitsi, että kaikki tarvittavat tiedostot %1$s asennusta varten. Haluatko asentaa sen? Tarkistetaan päivityksiä… Kieli: %1$s Teema: %1$s @@ -71,14 +71,14 @@ Opas Pysähdy! Asennetaan %1$s - Käytät Vancedin Magisk / TWRP-versiota, joka on lopetettu eikä sitä voi päivittää tällä sovelluksella. Poista se poistamalla magisk-moduuli / käyttämällä TWRP Vanced -asennusohjelmaa. + Käytät Magisk / TWRP versio Vanced, joka on lopetettu ja ei voi päivittää käyttämällä tätä sovellusta. Poista se poistamalla Magisk moduuli / käyttämällä TWRP Vanced asennuksen. MIUI tunnistettu! - Vancedin asentamiseksi TÄYTYY poistaa MIUI-optimoinnit käytöstä kehittäjäasetuksissa. (Voit ohittaa tämän varoituksen, jos käytät 20.2.20 tai uudempaa xiaomi.eu-pohjaista ROM-levyä) + Jos haluat asentaa Vanced, sinun täytyy poistaa MIUI-optimoinnit käytöstä kehittäjän asetuksista. (Voit ohittaa tämän varoituksen, jos käytät 20.2.20 tai myöhemmin xiaomi.eu-pohjaista ROM:ia) Virhe Uudelleenlataa - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub + Varmista, että latasit sovelluksen osoitteesta vancedapp.com, Vanced Discord-palvelin tai Vanced GitHub Onnistui! - %1$s Installation Preferences + %1$s asennusasetukset Vanced on asennettu onnistuneesti! Avaa nyt? Versio Vanced Music on asennettu onnistuneesti! Avoinna nyt? @@ -94,15 +94,15 @@ Lähdekoodi Vanced kehitystiimi - APK:n omistajuuden siirto järjestelmän omistajalle epäonnistui, yritä uudelleen. + Ei voitu `chown` APK järjestelmän omistajalle, yritä uudelleen. %1$s lataus epäonnistui Paketin %1$s asennus epäonnistui Asennukseen vaadittavien tiedostojen paikannus epäonnistui. Yritä ladata asennustiedostot uudelleen. APK-tiedostoa mustalle/tummalle teemalle ei voitu paikantaa tallennustilasta, yritä uudelleen. Asennus epäonnistui, koska käyttäjä keskeytti asennuksen. - Asennus epäonnistui, koska käyttäjä esti asennuksen. - Asennus epäonnistui, koska käyttäjä yritti asentaa paketin vanhempaa versiota. Poista YouTube-sovelluksen päivitykset ja yritä sitten uudelleen. - Asennus epäonnistui, koska sovellus on ristiriidassa jo asennetun sovelluksen kanssa. Poista Vancedin nykyinen versio ja yritä uudelleen. + Asennus epäonnistui, koska käyttäjä on estänyt asennuksen. + Asennus epäonnistui, koska käyttäjä yritti heikentää pakettia. Poista päivitykset YouTube-sovelluksesta ja yritä sitten uudelleen. + Asennus epäonnistui, koska sovellus on ristiriidassa jo asennetun sovelluksen kanssa. Poista Vanedin nykyisen version asennus ja yritä uudelleen. Asennus epäonnistui tuntemattomista syistä, liity Telegramiin tai Discordiin saadaksesi lisätukea. Asennus epäonnistui, koska asennustiedosto ei ole yhteensopiva laitteesi kanssa. Tyhjennä ladatut tiedostot asetuksista ja yritä uudelleen. Asennus epäonnistui, koska APK-tiedostot ovat vioittuneet, yritä uudelleen. diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml index 1c1e6f01..ec377267 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -5,12 +5,12 @@ Fermer Réinitialiser Sauvegarder - Sélectionnez votre application + Sélectionnez vos applications À propos Gestionnaire Paramètres - Gestionnaire de Mise à Jour + Gestionnaire de mise à jour Votre appareil est-il rooté ? Accorder l’autorisation root @@ -33,7 +33,7 @@ Indisponible Mettre à jour Liens utiles - Nous soutenir ! + Soutenez-nous ! Couleur d\'accentuation Bleu @@ -66,19 +66,19 @@ Le gestionnaire a détecté que tous les fichiers nécessaires à l\'installation de %1$s ont été trouvés. Voulez-vous installer ? Vérification des mises à jour… Langue(s) : %1$s - Thème: %1$s + Thème : %1$s Version : %1$s Guide Stop! Installation de %1$s Vous utilisez la version Magisk/TWRP de Vanced, qui n\'est plus entretenu et ne peut pas être mise à jour à l\'aide de cette application. Veuillez la retirer en supprimant le module Magisk/en utilisant le désinstallateur TWRP pour Vanced. MIUI détecté! - Afin d\'installer Vanced, vous DEVEZ désactiver les optimisations MIUI dans les paramètres du développeur. (Vous pouvez ignorer cet avertissement si vous utilisez une ROM basée sur 20.2.20 ou ultérieure sur xiaomi.eu) + Afin d\'installer Vanced, vous DEVEZ désactiver les optimisations MIUI dans les paramètres développeur. (Vous pouvez ignorer cet avertissement si vous utilisez une ROM basée sur 20.2.20 ou ultérieure de xiaomi.eu) Erreur - Re-téléchargé - Assurez-vous d\'avoir téléchargé l\'application sur vancedapp.com, le serveur Discord Vanced ou sur le Github Vanced + Re-télécharger + Assurez-vous d\'avoir téléchargé l\'application depuis vancedapp.com, le serveur Discord Vanced ou sur le Github Vanced Succès! - %1$s Préférences D\'installation + %1$s Préférences d\'installation Vanced a été installé avec succès ! Ouvrir maintenant ? Version Vanced Music a été installé avec succès ! Voulez-vous l\'ouvrir maintenant ? @@ -94,13 +94,13 @@ Sources Équipe Vanced - Impossible de modifier les permissions de l\'Apk système, réessayez. + Échec de la commande `chown` APK vers le propriétaire du système, veuillez réessayer. Erreur en téléchargeant %1$s N\'a pas pu désinstaller le paquet %1$s Impossible de localiser les fichiers nécessaires à l\'installation. Retéléchargez les fichiers d\'installation, puis réessayez. Impossible de localiser le fichier apk pour le thème noir/foncé du stockage, veuillez réessayer. - L\'opération a échouée, l\'utilisateur a abandonné l\'installation. - L\'opération a échouée, l\'utilisateur a bloqué l\'installation. + L\'installation a échoué car l\'utilisateur a abandonné l\'installation. + L\'installation a échoué, car l\'utilisateur a bloqué l\'installation. L\'installation a échoué parce que l\'utilisateur a essayé de downgrader le package. Désinstallez les mises à jour depuis l\'application YouTube d\'origine, puis réessayez. L\'installation a échoué parce que l\'application est en conflit avec une application déjà installée. Désinstallez la version actuelle de Vanced, puis réessayez. L\'installation a échouée pour une raison inconnue, rejoignez notre Telegram ou Discord pour obtenir de l\'aide. @@ -109,6 +109,6 @@ L\'installation a échoué car la vérification de la signature apk est activée. Désactivez la vérification de la signature apk, puis réessayez. L\'installation a échouée car l\'optimisation MIUI est activée. Désactivez l\'optimisation MIUI, puis réessayez. L\'opération à échouée, une erreur de stockage s\'est produite. - Impossible de trouver le fichier apk pour le thème noir/foncé de l\'installateur. Effacer les données de l\'application de Manager, puis réessayer. - Impossible de localiser le chemin d\'installation de YouTube d\'origine après l\'installation de la division. + Impossible de trouver le fichier apk pour le thème noir/foncé de l\'installateur. Effacez les données de l\'application de Manager, puis réessayez. + Impossible de localiser le chemin d\'installation du YouTube original après l\'installation fractionnée. diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index e1496799..46d8b057 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -1,27 +1,27 @@ - Cancel + रद्द करना बंद करे रिसेट सुरक्षित करें - Select Your Apps + अपने ऐप्स चुनें बारे में - Manager + मैनेजर सेटिंग्स - Update Manager + उन्न्त प्रबंधक - Is Your Device Rooted? - Grant Root Permission - Select at least one app! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. - YouTube Vanced is the stock Android YouTube App, but better! - Let\'s get started - Willing to use root version? Just hit the button below, else tap to continue + क्या आपका डिवाइस निहित है? + ग्रांट रूट अनुमति + कम से कम एक ऐप चुनें! + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + YouTube Vanced स्टॉक Android YouTube App है, लेकिन बेहतर है! + आएँ शुरू करें + Willing to use the root version? Just hit the button below, else tap to continue %1$s के बारे में - Tap on the card to see changelog. + Tap on the card to see the changelog. परिवर्तन लॉग डाउनलोड कर रहा है %1$s इंस्टॉल @@ -33,7 +33,7 @@ अनुपलब्ध अद्यतन करें उपयोगी लिंक्स - हमें सपोर्ट कीजिए! + हमें सपॉर्ट कीजिये! एक्सेंट रंग नीला @@ -42,7 +42,7 @@ लाल पीला रूप - Behaviour + Behavior डाउनलोड की गई फ़ाइलें साफ़ करें फ़ाइलें सफलतापूर्वक साफ़ की गई फायरबेस वैश्लेषिकी @@ -58,51 +58,51 @@ %1$s पुश सूचनाएँ जब %1$s का अपडेट जारी किया जाता है, तो पुश सूचनाएँ प्राप्त करें अपडेट केंद्र - No new updates - Variant + कोई नया अपडेट नहीं + संस्करण - Advanced - %1$s installation files detected! - Manager detected that all necessary files for %1$s installation were found. Do you want to install? - Checking for updates… + एडवांस्ड + %1$s इंस्टालेशन फ़ाइलों का पता चला! + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + अपडेट्स के लिए जांच हो रही है… भाषा (एं): %1$s - Theme: %1$s - Version: %1$s + थीम:%1$s + संस्करण:%1$s गाइड रुकें! - Installing %1$s - आप Vanced के Magisk / TWRP संस्करण का उपयोग कर रहे हैं, जिसे बंद कर दिया गया है और इस ऐप का उपयोग करके अपडेट नहीं किया जा सकता है। कृपया इस Magisk मॉड्यूल को हटाकर / TWRP Vanced uninstaller का उपयोग करके हटा दें। + %1$s स्थापित कर रहा है + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. पता लगाया MiUI उपयोगकर्ता! - Vanced इनस्टॉल करने के लिए, आप डेवलपर सेटिंग में MIUI ऑप्टिमाइज़ेशन को निष्क्रिय करें। (यदि आप 20.2.20 या बाद में xiaomi.eu आधारित ROM का उपयोग कर रहे हैं तो आप इस चेतावनी को अनदेखा कर सकते हैं) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) त्रुटि - Redownload - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub + फिर से डाउनलोड करें + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub सफलता! - %1$s Installation Preferences + %1$s इंस्टालेशन प्राथमिकताएँ सफलतापूर्वक स्थापित किया गया है! अब खोलो? संस्करण वेंसड संगीत सफलतापूर्वक स्थापित किया गया है! अब खोले? - Please be patient… + कृपया धैर्य रखें… खोले स्वागत है! Vanced के लिए अपनी पसंदीदा भाषा (ए) चुनें - Light + %1$s - Select at least one language! + लाइट +%1$s + कम से कम एक भाषा का चयन करें! प्रबंधक डेवलपर्स स्रोत वांसड टीम - सिस्टम स्वामी को `chown` apk में विफल, कृपया पुनः प्रयास करें। + Failed to `chown` APK to system owner, please try again. डाउनलोड करने में त्रुटि %1$s पैकेज की स्थापना रद्द करने में विफल %1$s स्थापना के लिए आवश्यक फ़ाइलों का पता लगाने में विफल। स्थापना फ़ाइलों को फिर से डाउनलोड करें, फिर पुनः प्रयास करें। भंडारण से काले / अंधेरे विषय के लिए apk फ़ाइल खोजने में विफल, कृपया पुनः प्रयास करें। - स्थापना विफल रही क्योंकि उपयोगकर्ता ने स्थापना रद्द कर दी थी - स्थापना विफल रही क्योंकि उपयोगकर्ता ने स्थापना को अवरुद्ध कर दिया। - स्थापना विफल रही क्योंकि उपयोगकर्ता ने पैकेज को डाउनग्रेड करने का प्रयास किया। स्टॉक YouTube ऐप से अपडेट अनइंस्टॉल करें, फिर प्रयास करें। - इंस्टॉलेशन विफल रहा क्योंकि ऐप पहले से इंस्टॉल किए गए ऐप के साथ टकराव करता है। Vanced के वर्तमान संस्करण को अनइंस्टॉल करें, फिर पुनः प्रयास करें। + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. अज्ञात कारणों से स्थापना विफल हो गई, आगे के समर्थन के लिए हमारे टेलीग्राम या डिसॉर्ड में शामिल हों। इंस्टॉलेशन विफल हो गया क्योंकि इंस्टॉलेशन फ़ाइल आपके डिवाइस के साथ असंगत है। सेटिंग्स में डाउनलोड की गई फ़ाइलों को साफ़ करें, फिर प्रयास करें। स्थापना विफल रही क्योंकि एपीके फ़ाइलें दूषित हैं, कृपया पुनः प्रयास करें। diff --git a/app/src/main/res/values-hr-rHR/strings.xml b/app/src/main/res/values-hr-rHR/strings.xml new file mode 100644 index 00000000..a8b3a396 --- /dev/null +++ b/app/src/main/res/values-hr-rHR/strings.xml @@ -0,0 +1,114 @@ + + + + Cancel + Close + Reset + Save + Select Your Apps + + O autorima + Manager + Settings + Update Manager + + Is Your Device Rooted? + Grant Root Permission + Select at least one app! + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + YouTube Vanced is the stock Android YouTube App, but better! + Let\'s get started + Willing to use the root version? Just hit the button below, else tap to continue + + About %1$s + Tap on the card to see the changelog. + Changelog + Downloading %1$s + Install + Reinstall + Installed: + Latest: + microG isn\'t installed + Root access not granted + Unavailable + Update + Useful Links + Support us! + + Accent Color + Blue + Green + Purple + Red + Yellow + Appearance + Behavior + Clear downloaded files + Successfully cleared files + Firebase Analytics + This lets us collect information about app performance and crash logs + Language + Use Chrome Custom Tabs + Links will open in Chrome Custom Tabs + System Default + Theme + Dark Theme + Light Theme + Update Channel URL + %1$s Push Notifications + Receive push notifications when an update for %1$s is released + Manager Update Center + No new updates + Variant + + Advanced + %1$s installation files detected! + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + Checking for updates… + Language(s): %1$s + Theme: %1$s + Version: %1$s + Guide + Stop! + Installing %1$s + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. + MIUI detected! + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) + Error + Redownload + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + Success! + %1$s Installation Preferences + Vanced has successfully been installed! Open now? + Version + Vanced Music has successfully been installed! Open now? + Please be patient… + Open + Welcome + + Choose your preferred language(s) for Vanced + Light + %1$s + Select at least one language! + + Manager Devs + Sources + Vanced Team + + Failed to `chown` APK to system owner, please try again. + Error Downloading %1$s + Failed to uninstall package %1$s + Failed to locate the required files for installation. Re-download the installation files, then try again. + Failed to locate apk file for black/dark theme from storage, please try again. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. + Installation failed for unknown reasons, join our Telegram or Discord for further support. + Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again. + Installation failed because the apk files are corrupted, please try again. + Installation failed because apk signature verification is enabled. Disable apk signature verification, then try again. + Installation failed because MIUI Optimization is enabled. Disable MIUI Optimization, then try again. + Installation failed due to a storage error. + Failed to find apk file for black/dark theme from the installer. Clear app data of Manager, then try again. + Failed to locate the stock YouTube installation path after split installation. + diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml index 109b67b6..178dd5cc 100644 --- a/app/src/main/res/values-hu-rHU/strings.xml +++ b/app/src/main/res/values-hu-rHU/strings.xml @@ -15,13 +15,13 @@ Rootolt az eszközöd? Root hozzáférés engedélyezése Legalább egy appot válassz! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. YouTube Vanced is the stock Android YouTube App, but better! Let\'s get started - Rootolt verziót használsz? Nyomd meg lent a gombot vagy nyomj a továbbra! + Willing to use the root version? Just hit the button below, else tap to continue %1$s- ról - Kattintson a kártyára hogy megnézze a változásjegyzéket. + Tap on the card to see the changelog. Változáslista %1$s letöltése Telepítés @@ -33,7 +33,7 @@ Nem elérhető Frissítés Hasznos hivatkozások - Támogasson minket! + Támogasson bennünket! Kiemelés színe Kék @@ -42,7 +42,7 @@ Vörös Sárga Megjelenítés - Viselkedés + Behavior Letöltött fájlok törlése Sikeresen törölte a fájlokat Firebase Analytics @@ -63,7 +63,7 @@ Advanced %1$s telepítőfájlok észlelve! - A Manager észlelte ez összes szükséges file-t a(z) %1$s telepítéséhez. Kívánja folytatni a telepítést? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? Frissítések ellenőrzése... Nyelv: %1$s Kinézet: %1$s @@ -71,12 +71,12 @@ Útmutató Állj! %1$s telepítése - A Vanced Magisk/TWRP verzióját használod, ami már nem támogatott és nem frissíthető ezzel az alkalmazással. Távolítsd el a Magisk modul eltávolításával vagy TWRP Vanced eltávolítóval. + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. MIUI észlelve! - Hogy a Vanced-et telepítsd, ki KELL kapcsolnod a MIUI Optimalizációt a fejlesztői beállításokban. (Ezt figyelmen kívül hagyhatod ha 20.2.20 vagy későbbi xiaomi.eu alapú ROM-ot használsz) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) Hiba Újra letölt - Bizonyosodjon meg arró, l hogy az alkalmaz@st a vancedapp.com-ról, a Vanced Discord szerverről vagy a Vanced Github-röl töltötte le + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub Kész! %1$s Telepítés személyreszabása Vanced sikeresen telepítve! Elindítod most? @@ -94,16 +94,15 @@ Források Vanced csapat - Meghiúsult az alkalmazás \'chown\' beállítása a rendszer fiókra, kéjük próbálja újra. + Failed to `chown` APK to system owner, please try again. %1$s letöltése nem sikerült A %1$s-t nem sikerült eltávolítani A telepítéshez szükséges file-ok megtalálása meghiúsult. Töltse le újra a telepítőfile-okat és próbálja újra. Nem sikerült az apk file-t megtalálni a fekete/sötét kinézethez, kérjük próbálja újra. - A telepítés nem sikerült, mert a felhasználó elutasította azt. - A telepítés nem sikerült, mert a felhasználó megszakította azt. - A telepítés nem sikerült, mert a felhasználó régebbi verziót próbált telepíteni. -Távolítsd el a gyári YouTube app frissítéseit, majd próld újra. - A telepítés nem sikerült, mert az alkalmazás egy már telepített alkalmazással ütközik. Távolítsd el a jelenlegi Vanced-et és próbáld újra. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. A telepítés ismeretlen okok miatt nem sikerült, támogatásért csatlakozz a Telegram vagy a Discord csoportunkhoz. A telepítés nem sikerült, mert a telepítő fájl nem kompatibilis az eszközöddel. Töröld ki a letöltött fájlokat a beállításokban és próbáld újra. A telepítés nem sikerült, mert az apk fájlok korruptak, próbáld újra. diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml index c618d97a..ed8044a2 100644 --- a/app/src/main/res/values-in-rID/strings.xml +++ b/app/src/main/res/values-in-rID/strings.xml @@ -15,9 +15,9 @@ Apakah Perangkat Anda Mempunyai Root? Berikan Izin Root Pilih setidaknya satu aplikasi! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. - YouTube Vanced is the stock Android YouTube App, but better! - Let\'s get started + Vanced, tetapi untuk YouTube Music! \nfitur yang relatif kurang kaya tetapi memenuhi kebutuhan anda. + YouTube Vanced adalah Aplikasi YouTube bawaan Android, tetapi lebih baik! + Mari memulai Bersedia menggunakan versi root? Cukup tekan tombol di bawah, atau ketuk untuk melanjutkan Tentang %1$s @@ -33,7 +33,7 @@ Tidak tersedia Perbarui Tautan Berguna - Dukung Kami! + Dukung kami! Aksen Warna Biru @@ -61,9 +61,9 @@ Tidak ada pembaruan Varian - Advanced + Tingkat Lanjut %1$s file instalasi terdeteksi! - Manager mendeteksi bahwa semua file yang diperlukan untuk instalasi %1$s ditemukan. Apakah anda ingin memasang? + Manager mendeteksi bahwa semua file yang diperlukan untuk instalasi %1$s ditemukan. Apakah anda ingin memasangnya? Memeriksa pembaruan… Bahasa: %1$s Tema: %1$s @@ -71,12 +71,12 @@ Petunjuk Berhenti! Memasang %1$s - Anda memakai Vanced versi Magisk/TWRP, yang pengembangannya dihentikan dan tidak bisa diperbarui menggunakan aplikasi ini. Mohon untuk menghapus itu dengan menghapus modul magisk/gunakan pencopot Vanced TWRP. + Anda memakai Vanced versi Magisk/TWRP, yang pengembangannya dihentikan dan tidak bisa diperbarui menggunakan aplikasi ini. Mohon untuk menghapus itu dengan menghapus modul Magisk/gunakan pencopot Vanced TWRP. MIUI terdeteksi! - Agar bisa memasang Vanced, anda HARUS menonaktifkan Optimisasi MIUI di pengaturan pengembang. (Anda bisa mengabaikan peringatan ini jika anda menggunakan ROM versi 20.2.20 atau lebih yang didasarkan xiaomi.eu) + Untuk memasang Vanced, anda HARUS menonaktifkan Optimisasi MIUI di pengaturan pengembang. (Anda bisa mengabaikan peringatan ini jika anda menggunakan ROM versi 20.2.20 atau lebih yang didasarkan xiaomi.eu) Terjadi kesalahan Unduh ulang - Pastikan anda mengunduh aplikasi ini dari vancedapp.com, Vanced Discord atau Vanced Github + Pastikan anda mengunduh aplikasi ini dari vancedapp.com, server Discord Vanced, atau Vanced Github Berhasil! Preferensi Instalasi %1$s Vanced berhasil dipasang! Buka sekarang? @@ -94,7 +94,7 @@ Sumber Tim Vanced - Gagal untuk `chown` apk ke pemilik sistem, mohon coba lagi. + Gagal untuk `chown` APK ke pemilik sistem, mohon coba lagi. Gagal Mengunduh %1$s Gagal mencopot pemasangan paket %1$s Gagal untuk menemukan file yang diperlukan untuk instalasi. Unduh ulang file instalasi, lalu coba lagi. @@ -102,7 +102,7 @@ Pemasangan gagal karena pengguna membatalkan pemasangan. Pemasangan gagal karena pengguna memblokir pemasangan. Pemasangan gagal karena pengguna mencoba untuk menurunkan versi paket. Hapus pembaruan dari aplikasi YouTube bawaan, lalu coba lagi. - Pemasangan gagal karena aplikasi konflik dengan aplikasi yang sudah terpasang. Hapus versi Vanced yang sekarang, lalu coba lagi. + Pemasangan gagal dikarenakan aplikasi konflik dengan aplikasi yang sudah terpasang. Hapus versi Vanced yang sekarang, lalu coba lagi. Pemasangan gagal untuk alasan yang tidak diketahui, gabung Telegram atau Discord kami untuk bantuan lebih lanjut. Pemasangan gagal karena file pemasangan tidak kompatibel dengan perangkat anda. Hapus file yang diunduh di pengaturan, lalu coba lagi. Pemasangan gagal karena file apk rusak, mohon coba lagi. diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index 14b8ad24..ae3ef70a 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -3,7 +3,7 @@ Annulla Chiudi - Ripristina + Reimposta Salva Seleziona le Tue App @@ -12,16 +12,16 @@ Impostazioni Aggiorna Manager - Il tuo dispositivo ha i permessi di root? + Il Tuo Dispositivo Ha i Permessi di Root? Concedi i Permessi di Root Seleziona almeno un\'app! Vanced, ma per YouTube Music!\nrelativamente meno ricco di caratteristiche ma ugualmente adattabile alle tue esigenze. YouTube Vanced è l\'App di YouTube preinstallata di Android, ma migliorata! Iniziamo - Sei disposto ad utilizzare la versione root? È sufficiente premere il pulsante in basso, altrimenti tocca per continuare + Vuoi utilizzare la versione root? Basta premere il pulsante in basso, altrimenti tocca per continuare Informazioni su %1$s - Tocca la scheda per vedere le novità. + Tocca la scheda per leggere le novità. Novità Download in corso di %1$s Installa @@ -30,7 +30,7 @@ Disponibile: microG non è installato Accesso root non consentito - Non disponibile + Irraggiungibile Aggiorna Link Utili Sostienici! @@ -44,7 +44,7 @@ Aspetto Comportamento Cancella i file scaricati - File cancellati con successo + Cancellazione file riuscita Analisi Firebase Questo ci consente di raccogliere informazioni sulle prestazioni dell\'app ed i registri sui crash Lingua @@ -54,7 +54,7 @@ Tema Tema Scuro Tema Chiaro - Aggiorna l\'URL del canale + Aggiorna l\'URL del Canale Notifiche Push di %1$s Ricevi notifiche push quando un aggiornamento per %1$s è disponibile Centro Aggiornamenti @@ -62,8 +62,8 @@ Variante Avanzate - %1$s file d\'installazione rilevati! - Manager ha rilevato tutti i file necessari per l\'installazione di %1$s. Vuoi installarli? + %1$s file di installazione rilevati! + Manager ha trovato tutti i file necessari per l\'installazione di %1$s. Vuoi installarli? Verifica aggiornamenti… Lingue: %1$s Tema: %1$s @@ -71,17 +71,17 @@ Guida Aspetta! Installazione %1$s - Stai utilizzando la versione di Vanced ottenuta con Magisk/TWRP, ormai è obsoleta e non può essere aggiornata con questa app. Per favore, rimuovila eliminando il modulo di Magisk oppure utilizzando TWRP Vanced uninstaller. + Stai utilizzando la versione Magisk/TWRP di Vanced, ormai obsoleta e non più aggiornabile tramite questa app. Per favore, rimuovila eliminando il modulo Magisk oppure utilizzando TWRP Vanced uninstaller. Rilevata l\'interfaccia MIUI! - Per poter installare Vanced, DEVI PER FORZA disattivare le ottimizzazioni di MIUI nelle impostazioni da sviluppatore (puoi ignorare questo avviso se stai utilizzando la versione 20.2.20 o successive di una ROM basata su xiaomi.eu). + Per poter installare Vanced, DEVI disattivare le ottimizzazioni MIUI nelle Opzioni Sviluppatore (puoi ignorare questo avviso se stai utilizzando la versione 20.2.20 o successive di una ROM basata su xiaomi.eu) Errore Scarica nuovamente - Assicurati di aver scaricato l\'app da vancedapp.com, dal server di Discord di Vanced o dalla pagina GitHub di Vanced + Assicurati di aver scaricato l\'app da vancedapp.com, dal server Discord di Vanced o dalla pagina GitHub di Vanced Riuscito! - Preferenze di installazione %1$s - Vanced è stato installato con successo. Vuoi avviarlo ora? + Preferenze Installazione di %1$s + Vanced è stato correttamente installato. Desideri avviarlo ora? Versione - Vanced Music è stato installato con successo! Vuoi eseguirlo ora? + Vanced Music è stato correttamente installato! Vuoi eseguirlo ora? Si prega di attendere… Avvia Benvenuto @@ -91,7 +91,7 @@ Seleziona almeno una lingua! Sviluppatori di Manager - Codice sorgente + Codice Sorgente Il Team di Vanced Impossibile modificare il proprietario dell\'apk nel proprietario di sistema, per favore riprova. @@ -99,10 +99,10 @@ Impossibile disinstallare il pacchetto %1$s Impossibile individuare i file richiesti per l\'installazione. Scaricali nuovamente e riprova. Impossibile individuare il file apk per il tema nero/scuro dalla memoria, per favore riprova. - Installazione non riuscita, l\'utente ha annullato l\'installazione. - Installazione non riuscita, l\'utente ha bloccato l\'installazione. - Installazione non riuscita, l\'utente ha provato a eseguire il downgrade del pacchetto. Disinstalla gli aggiornamenti dell\'app predefinita di YouTube, poi riprova. - Installazione non riuscita, l\'app va in conflitto con un\'app già installata. Disinstalla la versione attuale di Vanced, poi riprova. + Installazione non riuscita. L\'utente ha annullato l\'installazione. + Installazione non riuscita. L\'utente ha bloccato l\'installazione. + Installazione non riuscita. L\'utente ha provato ad eseguire il downgrade del pacchetto. Disinstalla gli aggiornamenti dell\'app predefinita di YouTube, poi riprova. + Installazione non riuscita. L\'app è andata in conflitto con un\'app già installata. Disinstalla la versione attuale di Vanced, poi riprova. Installazione non riuscita a causa di un errore sconosciuto, unisciti al nostro gruppo Telegram o al server di Discord per ricevere ulteriore assistenza. Installazione non riuscita, il file di installazione non è compatibile con il tuo dispositivo. Elimina i file scaricati nelle impostazioni, poi riprova. Installazione non riuscita a causa di file apk corrotti, si prega di riprovare. diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml index 4445c12b..840c8a81 100644 --- a/app/src/main/res/values-iw-rIL/strings.xml +++ b/app/src/main/res/values-iw-rIL/strings.xml @@ -15,13 +15,13 @@ האם המכשיר שלך Root? הענק הרשאות Root בחר לפחות יישום אחד! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. YouTube Vanced is the stock Android YouTube App, but better! Let\'s get started - מוכן להשתמש בRoot? רק הקש על הכפתור מטה, או לחץ המשך + Willing to use the root version? Just hit the button below, else tap to continue אודות %1$s - לחץ על הכרטיס כדי לצפות בשינויים. + Tap on the card to see the changelog. היסטורית שינויים מוריד את %1$s התקן @@ -33,7 +33,7 @@ אינו זמין עדכן קישורים שימושיים - תמוך בנו! + תמכו בנו! צבע הדגשה כחול @@ -42,7 +42,7 @@ אדום צהוב מראה - התנהגות + Behavior מחק קבצים שהורדו מחיקת הקבצים הסתיימה בהצלחה ניתוח מידע משתמש @@ -63,7 +63,7 @@ Advanced %1$s קבצי התקנה נמצאו! - מנהל איתר את כל הקבצים הנדרשים עבור התקנת %1$s. האם להתקין? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? בודק אחר עדכונים… שפה: %1$s ערכת נושא: %1$s @@ -71,12 +71,12 @@ מדריך עצור! מתקין %1$s - נדמה שאתה משתמש בגרסת הMagisk/TWRP של Vanced, שתמיכה בה הופסקה והגרסה אינה יכולה להתעדכן בעזרת האפליקציה הזו. אנא מחק אותה קודם על ידי מחיקת מודול בMagisk. + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. MIUI זוהה! - על מנת להתקין את Vanced, עליך להשבית אופטימיזציות של MIUI בהגדרות המפתח. (אתה יכול להתעלם מאזהרה זו אם אתה משתמש בגרסה 20.2.2. של שיאומי או יותר) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) בעיה הורד מחדש - וודא שאתה מוריד את היישום דרך vancedapp.com, דרך שרת Vanced Discord או דרך Vanced GitHub + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub הצלחה! %1$s העדפות התקנה Vanced הותקן בהצלחה! לפתוח עכשיו? @@ -94,15 +94,15 @@ מקורות צוות Vanced - נכשל ב \'chown\' לקובץ Apk למנהל המערכת. בבקשה נסה שוב. + Failed to `chown` APK to system owner, please try again. בעיה בהורדה של %1$s יש בעיה במחיקת החבילה %1$s Failed to locate the required files for installation. Re-download the installation files, then try again. Failed to locate apk file for black/dark theme from storage, please try again. - הפעולה נכשלה מכיוון שהמשתמש ביטל את ההתקנה. - ההתקנה נכשלה מכיוון שהמשתמש חסם את ההתקנה. - ההתקנה נכשלה מכיוון שהמשתמש ניסה לשנמך את הגירסה. מחק עדכונים מהיוטיוב הרגיל, ואז נסה שוב. - ההתקנה נכשלה מכיוון שהישום מתנגש עם גרסה מותקנת, מחק את הגרסה הנוכחית של Vanced, ונסה שוב. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. הפעולה נכשלה בגלל סיבה אינה ידועה, בבקשה הצטרפו לטלגרם או דיסקורד שלנו בשביל עזרה. ההתקנה נכשלה מכיוון שההתקנה או הקובץ לא תואמים עם מכשירך. נקה הורדות שהושלמו מתוך ההגדרות, ואז נסה שוב. ההתקנה נכשלה מכיוון שקבצי הישום הרוסים, בבקשה נסה שוב. diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index acc5f1da..3475a2b2 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -15,13 +15,13 @@ 端末をルート化していますか? root 権限を付与 アプリを少なくとも一つ選択してください! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. YouTube Vanced is the stock Android YouTube App, but better! さあ、始めましょう - root 版を使用したいですか?下のボタンを押してください。そうでないなら続けるボタンを押してください + Willing to use the root version? Just hit the button below, else tap to continue %1$s について - カードをタップして更新履歴を見る。 + Tap on the card to see the changelog. 更新履歴 %1$s をダウンロードしています インストール @@ -33,7 +33,7 @@ 利用不可 更新 リンク集 - サポートする + Brave をダウンロードして支援する アクセントカラー @@ -42,7 +42,7 @@ 表示設定 - 動作設定 + 動作 ダウンロード済みファイルを消去 ファイルを消去しました Firebase アナリティクス @@ -62,8 +62,8 @@ 種類 上級者向け - %1$sのインストールに必要なファイルが見つかりました - %1$sのインストールに必要な全てのファイル準備が整いました。インストールしますか? + %1$s のインストールに必要なファイルが見つかりました + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? アップデートを確認中... 言語: %1$s テーマ: %1$s @@ -71,14 +71,14 @@ ガイド ストップ! %1$s をインストールしています - Vanced の Magisk/TWRP バージョンを使用しているようです。このバージョンは廃止されており、このアプリでは更新できません。 まず Magisk モジュールを削除するか、TWRP で Vanced uninstaller を使用してください。 + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. MIUI ユーザーを検知しました! - Vanced をインストールするには、開発者設定で MIUI の最適化を無効化しなければなりません。 (20.2.20 以降の xiaomi.eu ベースの ROM の場合はこの警告は無視してください) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) エラー 再ダウンロード - このアプリは必ずvancedapp.com、VancedのDiscordサーバー、VancedのGitHubのいづれかからダウンロードして下さい。 + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub 成功! - %1$sのインストール設定 + %1$s のインストール設定 Vanced のインストールに成功しました。今すぐ開きますか? バージョン Vanced Music のインストールに成功しました。今すぐ開きますか? @@ -94,15 +94,15 @@ ソースコード Vanced チーム - システム所有者への APK の Chown ができませんでした、もう一度やり直してください. + Failed to `chown` APK to system owner, please try again. %1$s のダウンロード中にエラー パッケージ %1$s のアンインストールに失敗しました インストールに必要なファイルが見つかりませんでした。再ダウンロードし、もう一度お試しください。 ストレージからブラック/ダークテーマの APK ファイルが見つかりませんでした。もう一度お試しください。 - ユーザーがインストールを中断したためインストールに失敗しました。 - ユーザーがインストールをブロックしたためインストールに失敗しました。 - ユーザーがパッケージをダウングレードしようとしたためインストールに失敗しました。ストックの YouTube アプリのアップデートをアンインストールしてから、もう一度やり直してください。 - 既にインストールされたアプリと競合したためインストールに失敗しました。Vanced の現在のバージョンをアンインストールしてから、もう一度やり直してください。 + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. 何らかの理由によりインストールに失敗しました、サポートのために Telegram または Discord に参加してください。 インストールするファイルがお使いのデバイスと互換性がないためインストールに失敗しました。設定でダウンロードしたファイルを削除してから、もう一度やり直してください。 APK ファイルが破損しているためインストールに失敗しました、もう一度やり直してください。 diff --git a/app/src/main/res/values-ka-rGE/strings.xml b/app/src/main/res/values-ka-rGE/strings.xml index fcfafbb6..5d24fee5 100644 --- a/app/src/main/res/values-ka-rGE/strings.xml +++ b/app/src/main/res/values-ka-rGE/strings.xml @@ -8,20 +8,20 @@ Select Your Apps შესახებ - Manager + მენეჯერი პარამეტრები Update Manager Is Your Device Rooted? Grant Root Permission Select at least one app! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. YouTube Vanced is the stock Android YouTube App, but better! Let\'s get started - Willing to use root version? Just hit the button below, else tap to continue + Willing to use the root version? Just hit the button below, else tap to continue About %1$s - Tap on the card to see changelog. + Tap on the card to see the changelog. Changelog მიმდინარეობს %1$s-ის გადმოწერა ინსტალაცია @@ -33,7 +33,7 @@ ხელმიუწვდომელია განახლება საჭირო ლინკები - Support US! + დაგვიჭირეთ მხარი Brave-ის გადმოწერით აქცენტის ფერი ლურჯი @@ -42,7 +42,7 @@ წითელი ყვითელი Appearance - Behaviour + Behavior Clear downloaded files Successfully cleared files Firebase Analytics @@ -58,25 +58,25 @@ %1$s Push Notifications Receive push notifications when an update for %1$s is released განახლების ცენტრი - No new updates + განახლება არ არის აღმოჩენილი Variant Advanced %1$s installation files detected! - Manager detected that all necessary files for %1$s installation were found. Do you want to install? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? Checking for updates… Language(s): %1$s - Theme: %1$s + თემა: %1$s Version: %1$s ინსტრუქცია Stop! - Installing %1$s - You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the magisk module/using TWRP Vanced uninstaller. + მიმდინარეობს %1$s-ის ინსტალაცია + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. აღმოჩენილია MIUI-ის მომხმარებელი! - In order to install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) შეცდომა Redownload - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub წარმატება! %1$s Installation Preferences Vanced has successfully been installed! Open now? @@ -94,15 +94,15 @@ წყაროები Vanced-ის გუნდი - Failed to `chown` apk to system owner, please try again. + Failed to `chown` APK to system owner, please try again. შეცდომა %1$s-ის გადმოწერის დროს პაკეტი %1$s ვერ დეინსტალირდა Failed to locate the required files for installation. Re-download the installation files, then try again. Failed to locate apk file for black/dark theme from storage, please try again. - Installation failed because user aborted the installation. - Installation failed because user blocked the installation. - Installation failed because user tried to downgrade the package. Uninstall updates from stock YouTube app, then try again. - Installation failed because the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. Installation failed for unknown reasons, join our Telegram or Discord for further support. Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again. Installation failed because the apk files are corrupted, please try again. diff --git a/app/src/main/res/values-kmr-rTR/strings.xml b/app/src/main/res/values-kmr-rTR/strings.xml new file mode 100644 index 00000000..3da03e0b --- /dev/null +++ b/app/src/main/res/values-kmr-rTR/strings.xml @@ -0,0 +1,114 @@ + + + + Cancel + Close + Reset + Save + Select Your Apps + + About + Manager + Settings + Update Manager + + Is Your Device Rooted? + Grant Root Permission + Select at least one app! + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + YouTube Vanced is the stock Android YouTube App, but better! + Let\'s get started + Willing to use the root version? Just hit the button below, else tap to continue + + About %1$s + Tap on the card to see the changelog. + Changelog + Downloading %1$s + Install + Reinstall + Installed: + Latest: + microG isn\'t installed + Root access not granted + Unavailable + Update + Useful Links + Support us! + + Accent Color + Blue + Green + Purple + Red + Yellow + Appearance + Behavior + Clear downloaded files + Successfully cleared files + Firebase Analytics + This lets us collect information about app performance and crash logs + Language + Use Chrome Custom Tabs + Links will open in Chrome Custom Tabs + System Default + Theme + Dark Theme + Light Theme + Update Channel URL + %1$s Push Notifications + Receive push notifications when an update for %1$s is released + Manager Update Center + No new updates + Variant + + Advanced + %1$s installation files detected! + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + Checking for updates… + Language(s): %1$s + Theme: %1$s + Version: %1$s + Guide + Stop! + Installing %1$s + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. + MIUI detected! + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) + Error + Redownload + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + Success! + %1$s Installation Preferences + Vanced has successfully been installed! Open now? + Version + Vanced Music has successfully been installed! Open now? + Please be patient… + Open + Welcome + + Choose your preferred language(s) for Vanced + Light + %1$s + Select at least one language! + + Manager Devs + Sources + Vanced Team + + Failed to `chown` APK to system owner, please try again. + Error Downloading %1$s + Failed to uninstall package %1$s + Failed to locate the required files for installation. Re-download the installation files, then try again. + Failed to locate apk file for black/dark theme from storage, please try again. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. + Installation failed for unknown reasons, join our Telegram or Discord for further support. + Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again. + Installation failed because the apk files are corrupted, please try again. + Installation failed because apk signature verification is enabled. Disable apk signature verification, then try again. + Installation failed because MIUI Optimization is enabled. Disable MIUI Optimization, then try again. + Installation failed due to a storage error. + Failed to find apk file for black/dark theme from the installer. Clear app data of Manager, then try again. + Failed to locate the stock YouTube installation path after split installation. + diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 4c3fda5d..0131b06a 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -8,20 +8,20 @@ 앱을 선택하세요 정보 - 관리자 + 매니저 설정 - 업데이트 관리자 + 업데이트 매니저 기기가 루팅되어 있습니까? 루트 권한 부여 적어도 하나의 앱을 선택해주세요 - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. YouTube Vanced is the stock Android YouTube App, but better! Let\'s get started - Willing to use root version? Just hit the button below, else tap to continue + Willing to use the root version? Just hit the button below, else tap to continue About %1$s - Tap on the card to see changelog. + Tap on the card to see the changelog. Changelog %1$s 다운로드 중 설치 @@ -33,7 +33,7 @@ 사용 불가 업데이트 참고할 만한 링크 - Support US! + 우리를 지원해주세요! 강조 색상 파란색 @@ -42,7 +42,7 @@ 빨간색 노란색 Appearance - Behaviour + Behavior 다운로드된 파일 모두 지우기 다운로드된 파일을 모두 삭제했습니다 Firebase 분석 @@ -58,25 +58,25 @@ %1$s 푸시 알림 새로운 %1$s 업데이트가 출시되면 알림 받기 업데이트 센터 - No new updates + 새로운 업데이트 없음 Variant Advanced %1$s installation files detected! - Manager detected that all necessary files for %1$s installation were found. Do you want to install? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? Checking for updates… 언어: %1$s - Theme: %1$s + 테마: %1$s Version: %1$s 가이드 잠깐만요! - Installing %1$s - 현재 설치되어 있는 Vanced의 Magisk/TWRP 버전은 더 이상 지원되지 않으며 이 앱으로 업데이트할 수 없습니다. 먼저 삭제 프로그램을 이용하여 Vanced의 TWRP/Magisk 모듈을 제거하여 주시기 바랍니다. + %1$s 설치 중 + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. MIUI 사용자로 보입니다! - Vanced를 올바르게 설치하려면, 개발자 설정으로 들어가서 MIUI 최적화 기능을 반드시 끄셔야 합니다. (단, 버전이 20.2.20 이상인 xiaomi.eu 기반 ROM을 사용하는 경우 이 경고를 무시하셔도 좋습니다) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) 오류 Redownload - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub 성공! %1$s Installation Preferences Vanced가 성공적으로 설치되었습니다. 지금 실행하시겠어요? @@ -94,15 +94,15 @@ 소스 Vanced 팀 - 시스템 소유자에게 apk의 소유권 변경을 실패했습니다. 다시 시도하십시오. + Failed to `chown` APK to system owner, please try again. %1$s 다운로드 중 오류 발생 %1$s 패키지 제거에 실패하였습니다 설치에 필요한 파일을 찾지 못했습니다. 설치 파일을 다시 다운로드한 다음 재시도하십시오. 저장소에서 블랙/다크 테마에 대한 apk 파일을 찾지 못했습니다. 다시 시도하십시오. - 사용자가 설치를 중단했기 때문에 앱을 설치하지 못했습니다. - 사용자가 설치를 차단했기 때문에 앱을 설치하지 못했습니다. - 사용자가 패키지를 이전 버전으로 변경하려고 하여 앱을 설치하지 못했습니다. 기본 YouTube 앱을 초기 버전으로 변경한 다음, 설치를 다시 진행해주세요. - 설치하려는 앱이 이미 설치된 앱과 충돌하여 앱을 설치하지 못했습니다. 현재 설치된 Vanced 앱을 삭제한 다음, 설치를 다시 진행해주세요. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. 알 수 없는 이유가 발생하여 앱을 설치하지 못했습니다. 저희 텔레그램 또는 디스코드에 문제를 제보해주시면 도와드리겠습니다. 설치 파일이 기기와 호환되지 않아 앱을 설치하지 못했습니다. Manager 설정에서 다운로드된 파일을 모두 삭제한 다음, 설치를 다시 진행해주세요. APK 파일이 손상되어 앱을 설치하지 못했습니다. 설치를 다시 진행해주세요. diff --git a/app/src/main/res/values-ku-rTR/strings.xml b/app/src/main/res/values-ku-rTR/strings.xml index e23fe7be..ecbaf341 100644 --- a/app/src/main/res/values-ku-rTR/strings.xml +++ b/app/src/main/res/values-ku-rTR/strings.xml @@ -15,13 +15,13 @@ Gelo cîhaza te Root e? Destûra Root\'ê bide Herî kêm sepanekê hilbijêre! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. YouTube Vanced is the stock Android YouTube App, but better! - Let\'s get started - Gelo dixwazî guhertoya root bi kar bînî? Tenê bişkoka jêrîn bidewsîne, an ji bo domandinê bitepînin + Dest pê kirin + Willing to use the root version? Just hit the button below, else tap to continue Derbar %1$s - Ji bo guherînan bibînî kartê bitepîne. + Tap on the card to see the changelog. Guherîn Tê daxistin %1$s Saz bike @@ -42,7 +42,7 @@ Sor Zer Xuyang - Reftar + Behavior Dosiyayên daxistî paqij bike Dosiya, biserketî paqij bûn Analîza Firebase\'ê @@ -61,9 +61,9 @@ Hildema nû nîne Guharto - Advanced + Pêşketî %1$s dosiyên sazkirinê peyda bûn! - Rêveberê peydabûna hemû ew dosiyên pêwîst ên ji bo sazkirina %1$s tesbît kir. Gelo tu dixwazî saz bikî? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? Hildem tên kontrolkirin... Ziman(ên):%1$s Rûkar: %1$s @@ -71,12 +71,12 @@ Rêzan Rawestîne! %1$s tê sazkirin - Hûn niha guhertoya Magisk/TWRP ji Vanced\'ê bi kar tînin, ku qut bûye û bi saya vê sepanê naye hildemandin. Jkx magsik module/bi alîkariya TWRP Vanced uninstaller\'ê rakin. + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. MIUI destnîşan bû! - Ji bo ku Vanced were sazkirin, DIVÊ hûn Optimîzasyonên MIUI-yê di sazkariyên pêşvebirinê de neçalak bikin. (Hûn dikarin vê hişyariyê paşguh bikin heke hûn ROM\'a li ser esasa xiaomi.eu 20.2.20 an jortir bi kar tînin) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) Çewtî Ji nû ve daxîne - Piştrast bin ku we sepan ji vancedapp.com\'ê, ji servera Vanced Discord\'ê an Vanced GitHub\'ê daxistiye + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub Bi Ser Ket! %1$s sazkariyên bijarde yên sazkirinê Vanced biserketî saz bû! Gelo niha vebe? @@ -94,15 +94,15 @@ Çavkanî Koma Vanced\'ê - \'Chown\' apk ji xwediyê sîstemê re bi ser neket, jkx dîsa biceribîne. + Failed to `chown` APK to system owner, please try again. Çewtiya daxistinê %1$s Rakirina pakêta %1$s bi ser neket Dozîna dosiyên pêwîst ji bo sazkirinê bi ser neket. Dosiyên sazkirinê dîsa daxîne, paşê dubare biceribîne. Dozîna dosiya apk ji bo rûkara reş/tarî ji bîrgehê bi ser neket, jkx dîsa biceribîne. - Sazkirin bi ser neket ji ber ku bikarîner dawî li pêvajoya sazkirinê anî. - Sazkirin bi ser neket ji ber ku bikarînerê sazkirin asteng kir. - Sazkirin bi ser neket ji ber ku bikarîner hewl dida derecebendiya pakêtê kêm bike. Hildeman ji bernameya YouTube\'ê ya heyî rakin, paşê dîsa biceribînin. - Sazkirin bi ser neket ji ber ku ev bernameya ligel bernameyeke din ya sazkirî li hev nake. Guhertoya heyî ya Vanced\'ê rakin, paşê dîsa biceribînin. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. Sazkirin ji ber sedemên nenas bi ser neket, ji bo piştgiriya zêdetir tevlî Telegram an Discord\'ê bibin. Sazkirin bi ser neket ji ber ku dosiya sazkirinê ligel cîhaza te hevaheng nîne. Dosiyên daxistî ji sazkariyan paqij bike, paşê dîsa biceribîne. Sazkirin bi ser neket ji ber ku dosiyên apk\'ayê xirab in, jkx dîsa biceribîne. diff --git a/app/src/main/res/values-mr-rIN/strings.xml b/app/src/main/res/values-mr-rIN/strings.xml new file mode 100644 index 00000000..3da03e0b --- /dev/null +++ b/app/src/main/res/values-mr-rIN/strings.xml @@ -0,0 +1,114 @@ + + + + Cancel + Close + Reset + Save + Select Your Apps + + About + Manager + Settings + Update Manager + + Is Your Device Rooted? + Grant Root Permission + Select at least one app! + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + YouTube Vanced is the stock Android YouTube App, but better! + Let\'s get started + Willing to use the root version? Just hit the button below, else tap to continue + + About %1$s + Tap on the card to see the changelog. + Changelog + Downloading %1$s + Install + Reinstall + Installed: + Latest: + microG isn\'t installed + Root access not granted + Unavailable + Update + Useful Links + Support us! + + Accent Color + Blue + Green + Purple + Red + Yellow + Appearance + Behavior + Clear downloaded files + Successfully cleared files + Firebase Analytics + This lets us collect information about app performance and crash logs + Language + Use Chrome Custom Tabs + Links will open in Chrome Custom Tabs + System Default + Theme + Dark Theme + Light Theme + Update Channel URL + %1$s Push Notifications + Receive push notifications when an update for %1$s is released + Manager Update Center + No new updates + Variant + + Advanced + %1$s installation files detected! + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + Checking for updates… + Language(s): %1$s + Theme: %1$s + Version: %1$s + Guide + Stop! + Installing %1$s + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. + MIUI detected! + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) + Error + Redownload + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + Success! + %1$s Installation Preferences + Vanced has successfully been installed! Open now? + Version + Vanced Music has successfully been installed! Open now? + Please be patient… + Open + Welcome + + Choose your preferred language(s) for Vanced + Light + %1$s + Select at least one language! + + Manager Devs + Sources + Vanced Team + + Failed to `chown` APK to system owner, please try again. + Error Downloading %1$s + Failed to uninstall package %1$s + Failed to locate the required files for installation. Re-download the installation files, then try again. + Failed to locate apk file for black/dark theme from storage, please try again. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. + Installation failed for unknown reasons, join our Telegram or Discord for further support. + Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again. + Installation failed because the apk files are corrupted, please try again. + Installation failed because apk signature verification is enabled. Disable apk signature verification, then try again. + Installation failed because MIUI Optimization is enabled. Disable MIUI Optimization, then try again. + Installation failed due to a storage error. + Failed to find apk file for black/dark theme from the installer. Clear app data of Manager, then try again. + Failed to locate the stock YouTube installation path after split installation. + diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml index 124521cc..10b4d796 100644 --- a/app/src/main/res/values-nl-rNL/strings.xml +++ b/app/src/main/res/values-nl-rNL/strings.xml @@ -10,7 +10,7 @@ Over Manager Instellingen - Manager update + Manager bijwerken Is je apparaat geroot? Root machtiging toestaan @@ -18,7 +18,7 @@ Vanced voor YouTube Music !\nMinder functies maar voldoet zeker aan je wensen. YouTube Vanced is de standaard Android YouTube app, maar nog beter ! Aan de slag ! - Wil je de root versie gebruiken? Tik dan op de knop hieronder of tik om verder te gaan + Wil je de root-versie gebruiken? Tik dan op de knop hieronder of tik om verder te gaan Over %1$s Tik op de kaart om de wijzigingen te zien. @@ -42,7 +42,7 @@ Rood Geel Weergave - Werking + Gedrag Gedownloade bestanden verwijderen Bestanden succesvol verwijderd Firebase analyse @@ -63,7 +63,7 @@ Geavanceerd %1$s installatiebestanden gedetecteerd! - Manager heeft alle nodige bestanden gedetecteerd voor het installeren van %1$s. Wil je installeren? + Manager heeft alle nodige bestanden gedetecteerd voor het installeren van %1$s. Wil je ze installeren? Controleren op updates… Talen: %1$s Thema: %1$s @@ -71,12 +71,12 @@ Handleiding Stoppen! %1$s installeren - Je gebruikt de Magisk/TWRP-versie van Vanced, die stopgezet is en niet kan bijgewerkt worden met deze app. Verwijder deze eerst door het verwijderen van de Magisk module / door de TWRP Vanced uninstaller te gebruiken. + Je gebruikt de Magisk/TWRP-versie van Vanced, die stopgezet is en niet kan bijgewerkt worden met deze app. Verwijder deze eerst door het verwijderen van de Magisk-module / door de TWRP Vanced uninstaller te gebruiken. MIUI gedetecteerd! - Om Vanced te installeren MOET je MIUI-optimalisaties uitschakelen in de ontwikkelaarsinstellingen (je kunt deze waarschuwing negeren als je 20.2.20 of later xiaomi.eu gebaseerde ROM gebruikt) + Om Vanced te installeren MOET je MIUI-optimalisaties uitschakelen in de ontwikkelaarsinstellingen (je kunt deze waarschuwing negeren als je de op xiaomi.eu gebaseerde ROM 20.2.20 of later gebruikt) Fout Opnieuw downloaden - Zorg ervoor dat je de app hebt gedownload van vancedapp.com, de Vanced Discord server of Vanced GitHub + Zorg ervoor dat je de app hebt gedownload van vancedapp.com, de Vanced Discord-server of Vanced GitHub Gelukt! installatievoorkeuren voor %1$s Vanced is succesvol geïnstalleerd! Nu starten? @@ -94,14 +94,14 @@ Bronnen Vanced Team - Wijzigen van apk-eigenaar naar systeemeigenaar mislukt. Probeer het opnieuw. + Wijzigen van APK-eigenaar naar systeemeigenaar mislukt. Probeer het opnieuw. Fout bij downloaden van %1$s Deïnstalleren van pakket %1$s mislukt Kan de vereiste bestanden voor de installatie niet vinden. Download de installatiebestanden opnieuw en probeer het opnieuw. Kan het apk-bestand voor zwart/donker thema niet vinden in opslag. Probeer het opnieuw. Installatie mislukt omdat de gebruiker de installatie heeft afgebroken. Installatie mislukt omdat de gebruiker de installatie heeft geblokkeerd. - Installatie mislukt omdat de gebruiker het pakket probeerde te downgraden. Verwijder updates van de standaard YouTube app en probeer het daarna opnieuw. + Installatie mislukt omdat de gebruiker het pakket probeerde te downgraden. Verwijder updates van de standaard YouTube-app en probeer het daarna opnieuw. Installatie mislukt omdat de app conflicten heeft met een reeds geïnstalleerde app. Verwijder de huidige versie van Vanced en probeer het opnieuw. Installatie mislukt om onbekende redenen, word lid van onze Telegram of Discord voor verdere ondersteuning. Installatie mislukt omdat het installatiebestand niet compatibel is met jouw apparaat. Wis de gedownloade bestanden in de instellingen en probeer het opnieuw. diff --git a/app/src/main/res/values-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml index 1601ed57..b57ae733 100644 --- a/app/src/main/res/values-no-rNO/strings.xml +++ b/app/src/main/res/values-no-rNO/strings.xml @@ -1,28 +1,28 @@ - Cancel + Avbryt Lukk Tilbakestill Lagre - Select Your Apps + Velg dine apper Om - Manager + Leder Innstillinger - Update Manager + Oppdater administrator - Is Your Device Rooted? - Grant Root Permission - Select at least one app! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. - YouTube Vanced is the stock Android YouTube App, but better! - Let\'s get started - Willing to use root version? Just hit the button below, else tap to continue + Er enheten tilkoblet? + Gi root-tillatelse + Velg minst en app! + Benyttet for YouTube-Musikk!\nrelativt mindre funksjonsrik men dekker dine behov. + YouTube Vanced er standard Android YouTube App, men bedre! + La oss komme i gang + Gå til å bruke rotversjonen? Bare trykk på knappen nedenfor, ellers trykk for å fortsette - About %1$s - Tap on the card to see changelog. - Changelog + Om %1$s + Trykk på kortet for å se endringsloggen. + Endringslogg Laster ned %1$s Installer Reinstaller @@ -33,7 +33,7 @@ Utilgjengelig Oppdater Nyttige lenker - Support US! + Støtt oss! Aksentfarge Blå @@ -41,10 +41,10 @@ Lilla Rød Gul - Appearance - Behaviour + Utseende + Oppførsel Fjern nedlastede filer - Successfully cleared files + Valgte filer er fjernet Firebase analyser Dette lar oss samle informasjon om app-ytelse og krasj-logger Språk @@ -58,51 +58,51 @@ %1$s Push varsler Motta push varsler når en oppdatering for %1$s er utgitt Oppdateringssenter - No new updates + Ingen nye oppdateringer Variant - Advanced - %1$s installation files detected! - Manager detected that all necessary files for %1$s installation were found. Do you want to install? - Checking for updates… + Avansert + %1$s installasjonsfiler oppdaget! + Manager oppdaget at alle nødvendige filer for %1$s installasjonen ble funnet. Vil du installere den? + Sjekker etter oppdateringer… Språk: %1$s - Theme: %1$s - Version: %1$s + Tema: %1$s + Versjon: %1$s Guide Stopp! - Installing %1$s - Du bruker Magisk/TWRP versjonen av Vanced, som ikke funker lengre og ikke kan oppdateres ved hjelp av denne appen. Vennligst fjern den ved å fjerne Magisk modul/bruke TWRP Vanced uninstaller. + Installerer %1$s + Du bruker Magisk/TWRP-versjonen av Vansert, som seponeres og som ikke kan oppdateres ved hjelp av denne appen. Vennligst fjern den ved å fjerne Magisk modul/bruke TWRP Vanced uninstaller. MIUI oppdaget! - For å installere Vanced, MÅ du deaktivere MIUI Optimaliseringer i utviklerinnstillingene. (Du kan ignorere denne advarselen hvis du bruker 20.2.20 eller senere xiaomi.eu basert ROM) + For å installere Vananced, MÅ du deaktivere MIUI Optimaliseringer i utviklerinnstillingene. (Du kan ignorere denne advarselen hvis du bruker 20.2.20 eller senere xiaomi.eu basert ROM) Feil - Redownload - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub + Last ned på nytt + Sørg for at du lastet ned appen fra vancedapp.com, Vanced Discord server, eller Vanced GitHub Suksess! - %1$s Installation Preferences + %1$s Installasjonsinnstillinger Vanced har blitt installert! Åpne nå? - Version + Versjon Vanced Music har blitt installert! Åpne nå? - Please be patient… + Vær tålmodig… Åpne Velkommen Velg dine foretrukne språk for Vanced - Light + %1$s - Select at least one language! + Lys + %1$s + Velg minst ett språk! Manager Devs Kilder Vanced Team - Kunne ikke `chown` apk til systemeieren, vennligst prøv igjen. + Kan ikke `chown` APK til systemeieren, vennligst prøv igjen. Feil ved nedlasting %1$s Kunne ikke avinstallere pakken %1$s Kunne ikke finne de nødvendige filene for installasjon. Last ned installasjonsfilene på nytt, og prøv på nytt. Klarte ikke å finne apk-filen for svart/mørkt tema på enheten, vennligst prøv igjen. - Installasjonen mislyktes fordi brukeren har avbrutt installasjonen. - Installasjonen mislyktes fordi brukeren har blokkert installasjonen. - Installasjonen mislyktes fordi brukeren prøvde å nedgradere pakken. Avinstaller oppdateringer fra YouTube appen, og prøv på nytt. - Installasjonen mislyktes på grunn av at appen er i konflikt med en allerede installert app. Avinstaller den installerte versjon av Vanced, og prøv på nytt. + Installasjonen mislyktes fordi brukeren avbrutt installasjonen. + Installasjonen mislyktes på grunn av at brukeren blokkerte installasjonen. + Installasjonen mislyktes fordi brukeren prøvde å nedgradere pakken. Avinstaller oppdateringer fra standard YouTube app, og prøv på nytt. + Installasjonen mislyktes på grunn av at appen er i konflikt med en allerede installert app. Avinstaller gjeldende versjon, og prøv på nytt. Installasjonen mislyktes av ukjente årsaker, bli med i vår Telegram eller Discord gruppe for videre støtte. Installasjonen mislyktes på grunn av at installasjonsfilen er inkompatibel med enheten. Fjern nedlastede filer i innstillinger og prøv på nytt. Installasjonen mislyktes fordi apk-filene er ødelagt, vennligst prøv på nytt. diff --git a/app/src/main/res/values-pa-rIN/strings.xml b/app/src/main/res/values-pa-rIN/strings.xml index a0b94b0d..7bfe131a 100644 --- a/app/src/main/res/values-pa-rIN/strings.xml +++ b/app/src/main/res/values-pa-rIN/strings.xml @@ -15,13 +15,13 @@ ਕੀ ਤੁਹਾਡੀ ਡਵਿਾਈਸ ਰੂਟ ਕੀਤਾ ਹੈ? ਰੂਟ ਹਿਦਾਇਤਾਂ ਜਾਰੀ ਘੱਟੋ ਘੱਟ ਇੱਕ ਐਪ ਦੀ ਚੋਣ ਕਰੋ! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. YouTube Vanced is the stock Android YouTube App, but better! Let\'s get started - ਰੂਟ ਕੀਤੇ ਵਰਜਨ ਨੂੰ ਵਰਤਨਾ? ਬੱਸ ਹੇਠਾਂ ਦਿੱਤੇ ਬਟਨ ਨੂੰ ਦਬਾਓ, ਨਹੀਂ ਤਾਂ ਜਾਰੀ ਰੱਖਣ ਲਈ ਟੈਪ ਕਰੋ + Willing to use the root version? Just hit the button below, else tap to continue ਬਾਰੇ ਵਿੱਚ %1$s - ਚੇਂਜਲਾਗ ਦੇਖਣ ਲਈ ਕਾਰਡ \'ਤੇ ਟੈਪ ਕਰੋ. + Tap on the card to see the changelog. ਤਬਦੀਲੀਆਂ ਡਾਉਨਲੋਡ ਕਰ ਰਿਹਾ ਹੈ %1$s ਸਥਾਪਨਾ @@ -42,7 +42,7 @@ ਲਾਲ ਪੀਲਾ ਦਿੱਖ - ਰਵੱਈਆ + Behavior ਡਾਉਨਲੋਡ ਕੀਤੀਆਂ ਫਾਇਲਾਂ ਸਾਫ਼ ਕਰੋ ਫਾਇਲਾਂ ਸਫਲਤਾਪੂਰਵਕ ਸਾਫ਼ ਕੀਤੀ ਗਈ ਫਾਇਰਬੇਸ ਵਿਸ਼ਲੇਸ਼ਣ @@ -63,7 +63,7 @@ Advanced %1$s ਇੰਸਟਾਲੇਸ਼ਨ ਫਾਈਲਾਂ ਲੱਭੀਆਂ! - ਮੈਨੇਜਰ ਨੇ ਖੋਜਿਆ ਕਿ ਇੰਸਟਾਲੇਸ਼ਨ ਲਈ ਲੋੜੀਂਦੀਆਂ ਫਾਇਲਾਂ %1$s ਮਿਲੀਆਂ ਹਨ. ਕੀ ਤੁਸੀਂ ਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? ਅੱਪਡੇਟ ਲਈ ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ… ਭਾਸ਼ਾ (ਇ): %1$s ਥੀਮ: %1$s @@ -71,12 +71,12 @@ ਗਾਇਡ ਉਡੀਕੋ! %1$s ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ - ਤੁਸੀਂ Vanced ਦੇ Magisk / TWRP ਸੰਸਕਰਣ ਦਾ ਉਪਯੋਗ ਕਰ ਰਹੇ ਹੋ, ਜਿਸਨੂੰ ਬੰਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ ਅੱਤੇ ਇਸ ਐਪ ਦਾ ਉਪਯੋਗ ਕਰਕੇ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ| ਕਿਰਪਾ ਇਸ Magisk ਮੋਡੂਅਲ ਨੂੰ / TWRP Vanced uninstaller ਦਾ ਉਪਯੋਗ ਕਰਕੇ ਹੱਟਾ ਦੇਵੋਂ| + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. ਪਤਾ ਲਗਾਇਆ MiUI ਉਪਯੋਗਕਰਤਾ! - Vanced ਇੰਸਟਾਲ ਕਰਨ ਲਈ, ਤੁਸੀੰ ਡਵੇਲਪਰ ਸੇਟਿੰਗ ਵਿੱਚ MIUI Optimization ਨੂੰ ਬੰਦ ਕਰੋ| (ਜੇਕਰ ਤੁਸੀਂ 20.2.20 ਜਾਂ ਬਾਅਦ ਵਿੱਚ xiaomi.eu ਆਧਾਰਿਤ ROM ਦਾ ਉਪਯੋਗ ਕਰ ਰਹੇ ਹੋ ਤਾਂ ਤੁਸੀਂ ਇਸ ਚੇਤਾਵਨੀ ਨੂੰ ਅਣਦੇਖਾ ਕਰ ਸਕਦੇ ਹੋ) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) ਗਲਤੀ ਮੁੜ ਡਾਉਨਲੋਡ - ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ vancedapp.com, Vanced Discord ਸਰਵਰ ਜਾਂ Vanced GitHub ਤੋਂ ਐਪ ਡਾਉਨਲੋਡ ਕੀਤਾ ਹੈ + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub ਸਫਲਤਾ! %1$s ਪ੍ਰਾਥਮਿਕਤਾਵਾਂ ਚੁਣੋ ਸਫਲਤਾਪੂਰਵਕ ਸਥਾਪਤ ਕੀਤਾ ਗਿਆ ਹੈ! ਹੁਣ ਖੋਲੋ? @@ -94,15 +94,15 @@ ਸਰੋਤ Vanced ਟੋਲੀ - ਸਿਸਟਮ ਦੇ ਮਾਲਕ ਨੂੰ APK ਨੂੰ Chown ਕਰਨ ਵਿੱਚ ਨਾਕਾਮ, ਫਿਰ ਤੋਂ ਕੋਸ਼ਿਸ਼ ਕਰੋ. + Failed to `chown` APK to system owner, please try again. ਡਾਉਨਲੋਡ ਕਰਨ ਵਿਚ ਖਾਮੀਂ %1$s ਪੈਕਜ ਦੀ ਸਥਾਪਨਾ ਰੱਦ ਕਰਨ ਵਿੱਚ ਨਾਕਾਮ %1$s ਇੰਸਟਾਲੇਸ਼ਨ ਲਈ ਲੋੜੀਂਦੀਆਂ ਫਾਈਲਾਂ ਦਾ ਪਤਾ ਲਗਾਉਣ ਵਿੱਚ ਅਸਫਲ. ਇੰਸਟਾਲੇਸ਼ਨ ਫਾਈਲਾਂ ਨੂੰ ਮੁੜ ਡਾਉਨਲੋਡ ਕਰੋ, ਫਿਰ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ. ਸਟੋਰੇਜ ਤੋਂ ਕਾਲੇ / ਡਾਰਕ ਥੀਮ ਲਈ apk ਫਾਈਲ ਲੱਭਣ ਵਿੱਚ ਅਸਫਲ, ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ. - ਸਥਾਪਨਾ ਨਾਕਾਮ ਰਹੀ ਕਿਓਂਕਿ ਉਪਯੋਗਕਰਤਾ ਨੇ ਸਥਾਪਨਾ ਰੱਦ ਕਰ ਦਿੱਤੀ ਸੀ - ਸਥਾਪਨਾ ਨਾਕਾਮ ਰਹੀ ਕਿਓਂਕਿ ਉਪਯੋਗਕਰਤਾ ਨੇ ਸਥਾਪਨਾ ਬਲਾਕ ਕਰ ਦਿੱਤਾ| - ਸਥਾਪਨਾ ਨਾਕਾਮ ਰਹੀ ਕਿਓਂਕਿ ਉਪਯੋਗਕਰਤਾ ਨੇ ਪੈਕਜ ਨੂੰ ਡਾਉਣਗਰੇਡ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ| ਅਸਲ YouTube ਐਪ ਤੋਂ ਅਪਡੇਟ ਅਨਇੰਸਟਾਲ ਕਰੋ, ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ। - ਸਥਾਪਨਾ ਨਾਕਾਮ ਰਹੀ ਕਿਓਂਕਿ ਐਪ ਹਿਲਾਂ ਤੋਂ ਹੀ ਇੰਸਟਾਲ ਕੀਤੀ ਗਈ ਐਪ ਨਾਲ ਸੰਘਰਸ਼ ਕਰਦਾ ਹੈ| Vanced ਦੇ ਵਰਤਮਾਨ ਸੰਸਕਰਣ ਨੂੰ ਅਣਇੰਸਟਾਲ ਕਰੋ, ਮੁੜ ਫੇਰ: ਕੋਸ਼ਿਸ਼ ਕਰੋ। + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. ਅਣਪਛਾਤੇ ਕਾਰਣਾਂ ਕਰਕੇ ਸਥਾਪਨਾ ਰੱਦ ਹੋ ਗਈ, ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ ਸਾਡੇ ਟੈਲੀਗਰਾਮ ਜਾਂ ਡਿਸਕੋਰਡ ਵਿੱਚ ਸ਼ਾਮਿਲ ਹੋਵੋ। ਸਥਾਪਨਾ ਰੱਦ ਹੋ ਗਈ ਕਿਉਂਕੀ ਸਥਾਪਨਾ ਫਾਇਲ ਆਪ ਦੇ ਯੰਤਰ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦੀ। ਪਰੀਸਥਿਤੀ ਵਿੱਚ ਡਾਉਨਲੋਡ ਕੀਤੀ ਗਈ ਫਾਇਲ ਨੂੰ ਮਿੱਟਾ ਕੇ, ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ।। ਸਥਾਪਨਾ ਰੱਦ ਹੋ ਗਈ ਕਿਉਂਕੀ ਸਥਾਪਨਾ ਫਾਇਲਾਂ ਜਾਇਜ਼ ਨਹੀਂ ਹਨ, ਕਿਰਪਾ ਫੇਰ: ਕੋਸ਼ਿਸ਼ ਕਰੋ। diff --git a/app/src/main/res/values-pa-rPK/strings.xml b/app/src/main/res/values-pa-rPK/strings.xml new file mode 100644 index 00000000..3da03e0b --- /dev/null +++ b/app/src/main/res/values-pa-rPK/strings.xml @@ -0,0 +1,114 @@ + + + + Cancel + Close + Reset + Save + Select Your Apps + + About + Manager + Settings + Update Manager + + Is Your Device Rooted? + Grant Root Permission + Select at least one app! + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + YouTube Vanced is the stock Android YouTube App, but better! + Let\'s get started + Willing to use the root version? Just hit the button below, else tap to continue + + About %1$s + Tap on the card to see the changelog. + Changelog + Downloading %1$s + Install + Reinstall + Installed: + Latest: + microG isn\'t installed + Root access not granted + Unavailable + Update + Useful Links + Support us! + + Accent Color + Blue + Green + Purple + Red + Yellow + Appearance + Behavior + Clear downloaded files + Successfully cleared files + Firebase Analytics + This lets us collect information about app performance and crash logs + Language + Use Chrome Custom Tabs + Links will open in Chrome Custom Tabs + System Default + Theme + Dark Theme + Light Theme + Update Channel URL + %1$s Push Notifications + Receive push notifications when an update for %1$s is released + Manager Update Center + No new updates + Variant + + Advanced + %1$s installation files detected! + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + Checking for updates… + Language(s): %1$s + Theme: %1$s + Version: %1$s + Guide + Stop! + Installing %1$s + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. + MIUI detected! + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) + Error + Redownload + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + Success! + %1$s Installation Preferences + Vanced has successfully been installed! Open now? + Version + Vanced Music has successfully been installed! Open now? + Please be patient… + Open + Welcome + + Choose your preferred language(s) for Vanced + Light + %1$s + Select at least one language! + + Manager Devs + Sources + Vanced Team + + Failed to `chown` APK to system owner, please try again. + Error Downloading %1$s + Failed to uninstall package %1$s + Failed to locate the required files for installation. Re-download the installation files, then try again. + Failed to locate apk file for black/dark theme from storage, please try again. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. + Installation failed for unknown reasons, join our Telegram or Discord for further support. + Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again. + Installation failed because the apk files are corrupted, please try again. + Installation failed because apk signature verification is enabled. Disable apk signature verification, then try again. + Installation failed because MIUI Optimization is enabled. Disable MIUI Optimization, then try again. + Installation failed due to a storage error. + Failed to find apk file for black/dark theme from the installer. Clear app data of Manager, then try again. + Failed to locate the stock YouTube installation path after split installation. + diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index 26ddb4d6..6e59ac18 100644 --- a/app/src/main/res/values-pl-rPL/strings.xml +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -15,13 +15,13 @@ Czy Twoje urządzenie jest zakorzenione (root)? Przyznaj uprawnienie root Wybierz co najmniej jedną aplikację! - Vanced, ale dla Muzyki YouTube!\nstosunkowo mniej funkcji, ale zaspokaja Twoje potrzeby. + Vanced, ale dla muzyki YouTube!\nstosunkowo mniej bogatych w funkcje, ale zaspokaja Twoje potrzeby. YouTube Vanced to domyślna aplikacja YouTube na Androida, ale lepsza! Zaczynajmy - Zamierzasz używać wersji root? Po prostu kliknij przycisk poniżej, jeśli nie kliknij aby kontynuować + Czy chcesz użyć wersji głównej? Po prostu naciśnij przycisk poniżej, w przeciwnym razie naciśnij aby kontynuować O %1$s - Kliknij kartę, aby zobaczyć listę zmian. + Dotknij karty, aby zobaczyć listę zmian. Lista zmian Pobieranie %1$s Zainstaluj @@ -33,7 +33,7 @@ Niedostępne Aktualizuj Przydatne linki - Wspomóż nas! + Wesprzyj nas, pobierając Brave Kolor Akcentu Niebieski @@ -63,7 +63,7 @@ Opcje zaawansowane Wykryto %1$s plików instalacyjnych! - Menedżer wykrył, że znaleziono wszystkie pliki niezbędne do instalacji %1$s. Czy chcesz zainstalować? + Menedżer wykrył, że znaleziono wszystkie pliki niezbędne do instalacji %1$s . Czy chcesz ją zainstalować? Sprawdzam aktualizacje… Język(i): %1$s Motyw: %1$s @@ -71,12 +71,12 @@ Przewodnik Stop! Instalowanie %1$s - Korzystasz z Vanced w wersji Magisk/TWRP, która została wycofana i nie można jej zaktualizować za pomocą tej aplikacji. Najpierw usuń moduł magisk/używając deinstalatora TWRP Vanced. + Używasz wersji Magisk/TWRP Vanced, która została przerwana i nie może zostać zaktualizowana za pomocą tej aplikacji. Proszę go usunąć usuwając moduł Magisk/używając TWRP Vanced deinstalatora. MIUI wykryte! - Aby zainstalować Vanced, MUSISZ wyłączyć optymalizację MIUI w ustawieniach dewelopera. (Możesz zignorować to ostrzeżenie, jeśli korzystasz z ROM 20.2.20 lub późniejszego xiaomi.eu) + Aby zainstalować Vanced, MUSI wyłączyć optymalizację MIUI w ustawieniach dewelopera. (Możesz zignorować to ostrzeżenie, jeśli używasz oprogramowania 20.2.20 lub później z bazą na xiaomi.eu) Błąd Pobierz ponownie - Upewnij się, że pobrałeś aplikację z vancedapp.com, serwera Discord Vanced lub GitHub\'a + Upewnij się, że pobrałeś aplikację z vancedapp.com, serwera Vanced Discord lub Vanced GitHub Sukces! Preferencje instalacji %1$s Vanced został pomyślnie zainstalowany! Uruchomić teraz? @@ -94,15 +94,15 @@ Źródła Zespół Vanced - Nie udało się zmienić właściciela apk, spróbuj ponownie. + Nie udało się `chown` APK dla właściciela systemu, spróbuj ponownie. Błąd pobierania %1$s Nie udało się odinstalować pakietu %1$s Nie udało się zlokalizować wymaganych plików do instalacji. Pobierz ponownie pliki instalacyjne, a następnie spróbuj ponownie. Nie udało się zlokalizować pliku apk dla czarnego/ciemnego motywu, spróbuj ponownie. - Instalacja nie powiodła się, bo użytkownik przerwał instalację. - Instalacja nie powiodła się, bo użytkownik zablokował instalację. - Instalacja nie powiodła się, ponieważ użytkownik próbował obniżyć wersję paczki. Odinstaluj aktualizacje z oryginalnej aplikacji YouTube, a następnie spróbuj ponownie. - Instalacja nie powiodła się, ponieważ aplikacja koliduje z już zainstalowaną aplikacją. Odinstaluj aktualną wersję Vanced, a następnie spróbuj ponownie. + Instalacja nie powiodła się, ponieważ użytkownik przerwał instalację. + Instalacja nie powiodła się, ponieważ użytkownik zablokował instalację. + Instalacja nie powiodła się, ponieważ użytkownik próbował obniżyć paczkę. Odinstaluj aktualizacje z aplikacji YouTube, a następnie spróbuj ponownie. + Instalacja nie powiodła się z powodu konfliktu aplikacji z już zainstalowaną aplikacją. Odinstaluj aktualną wersję Vanced, a następnie spróbuj ponownie. Operacja nie powiodła się z nieznanego powodu. Aby uzyskać wsparcie, dołącz do naszego Telegram\'u lub Discord\'a. Instalacja nie powiodła się, ponieważ plik instalacyjny jest niezgodny z Twoim urządzeniem. Wyczyść pobrane pliki w Ustawieniach, a następnie spróbuj ponownie. Instalacja nie powiodła się, bo pliki apk są uszkodzone, spróbuj jeszcze raz. diff --git a/app/src/main/res/values-ps-rAF/strings.xml b/app/src/main/res/values-ps-rAF/strings.xml new file mode 100644 index 00000000..3da03e0b --- /dev/null +++ b/app/src/main/res/values-ps-rAF/strings.xml @@ -0,0 +1,114 @@ + + + + Cancel + Close + Reset + Save + Select Your Apps + + About + Manager + Settings + Update Manager + + Is Your Device Rooted? + Grant Root Permission + Select at least one app! + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + YouTube Vanced is the stock Android YouTube App, but better! + Let\'s get started + Willing to use the root version? Just hit the button below, else tap to continue + + About %1$s + Tap on the card to see the changelog. + Changelog + Downloading %1$s + Install + Reinstall + Installed: + Latest: + microG isn\'t installed + Root access not granted + Unavailable + Update + Useful Links + Support us! + + Accent Color + Blue + Green + Purple + Red + Yellow + Appearance + Behavior + Clear downloaded files + Successfully cleared files + Firebase Analytics + This lets us collect information about app performance and crash logs + Language + Use Chrome Custom Tabs + Links will open in Chrome Custom Tabs + System Default + Theme + Dark Theme + Light Theme + Update Channel URL + %1$s Push Notifications + Receive push notifications when an update for %1$s is released + Manager Update Center + No new updates + Variant + + Advanced + %1$s installation files detected! + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + Checking for updates… + Language(s): %1$s + Theme: %1$s + Version: %1$s + Guide + Stop! + Installing %1$s + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. + MIUI detected! + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) + Error + Redownload + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + Success! + %1$s Installation Preferences + Vanced has successfully been installed! Open now? + Version + Vanced Music has successfully been installed! Open now? + Please be patient… + Open + Welcome + + Choose your preferred language(s) for Vanced + Light + %1$s + Select at least one language! + + Manager Devs + Sources + Vanced Team + + Failed to `chown` APK to system owner, please try again. + Error Downloading %1$s + Failed to uninstall package %1$s + Failed to locate the required files for installation. Re-download the installation files, then try again. + Failed to locate apk file for black/dark theme from storage, please try again. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. + Installation failed for unknown reasons, join our Telegram or Discord for further support. + Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again. + Installation failed because the apk files are corrupted, please try again. + Installation failed because apk signature verification is enabled. Disable apk signature verification, then try again. + Installation failed because MIUI Optimization is enabled. Disable MIUI Optimization, then try again. + Installation failed due to a storage error. + Failed to find apk file for black/dark theme from the installer. Clear app data of Manager, then try again. + Failed to locate the stock YouTube installation path after split installation. + diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 8de9d5d0..066edff9 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -10,7 +10,7 @@ Sobre Gerenciador Configurações - Gerente de atualização + Gerenciador de atualização Seu dispositivo tem root? Conceder permissão de root diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 67b5ed04..b7f8b2e5 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -5,23 +5,23 @@ Fechar Resetar Guardar - Seleciona as tuas aplicações + Selecione as suas aplicações Sobre Gestor Configurações Atualizar gestor - Is Your Device Rooted? + O seu dispositivo está assado? Conceder permissão de root Selecione pelo menos uma aplicação! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. - YouTube Vanced is the stock Android YouTube App, but better! - Let\'s get started - Pronto para usar a versão root? Clica no botão abaixo ou então clica no botão de continuar + Aprimorado, mas para o YouTube Music!\nrelativamente menos rico em recursos, mas atende às suas necessidades. + YouTube Vanced é o Android App original, mas melhor! + Vamos começar! + Deseja usar a versão raiz? Pressione o botão abaixo, senão toque para continuar Acerca de %1$s - Toque no cartão para ver a lista de alterações. + Toque no cartão para ver o registro de mudanças. Lista de alterações Transferindo %1$s Instalar @@ -33,7 +33,7 @@ Indisponível Atualizar Links Importantes - Apoie-nos! + Suporte-nos! Cor de Destaque Azul @@ -45,7 +45,7 @@ Comportamento Limpar ficheiros descarregados Arquivos limpos com sucesso - Firebase Analytics + Análise do Firebase Isto permite-nos recolher informações sobre o desempenho da aplicação e registos de falhas Idioma Usar abas personalizadas do Chrome @@ -61,9 +61,9 @@ Sem atualizações Variante - Advanced + Avançado %1$s arquivos de instalação detetados! - O gestor detetou que todos os ficheiros necessários para a instalação %1$s foram encontrados. Deseja instalar? + O gestor detectou que todos os arquivos necessários para a instalação %1$s foram encontrados. Você quer instalá-lo? A procurar por atualizações… Língua(s): %1$s Tema: %1$s @@ -71,14 +71,14 @@ Guia Parar! A instalar %1$s - Estás a utilizar a versão Magisk/TWRP do Vanced, que foi descontinuada e não podera ser atualizada a partir deste aplicativo. Por favor remove-o ao remover o módulo magisk ou usando o desinstalador TWRP Vanced. + Você está usando a versão Magisk/TWRP do Vanced, que está descontinuada e não pode ser atualizada usando este aplicativo. Por favor, remova-o removendo o módulo Magisk/usando a desinstalação TWRP Vanced Uninstaler. MIUI detetado! - Para instalar o Vanced, você DEVE desativar as Otimizações MIUI nas configurações do desenvolvedor. (Você pode ignorar este aviso se você estiver usando ROM baseado em xiaomi.eu de versão 20.2.20 ou maior) + Para instalar o Vanced, você DEVE desativar as Otimizações MIUI nas configurações do desenvolvedor. (Você pode ignorar este aviso se você estiver usando ROM baseada em 20.2.20 ou mais tarde xiaomi.eu) Erro Voltar a descarregar - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub + Certifique-se de que você baixou o aplicativo do vancedapp.com, o servidor Vanced Discord ou o Vanced GitHub Sucesso! - %1$s Installation Preferences + Preferências de instalação %1$s O Vanced foi instalado com sucesso! Abrir agora? Versão O Vanced Music foi instalado com sucesso! Pretende abri-lo? @@ -94,15 +94,15 @@ Fontes Equipa Vanced - Falha ao mudar o proprietário do apk para o sistema, tente novamente. + Falha no APK `chown` para o proprietário do sistema, por favor, tente novamente. Erro Transferindo %1$s Erro a desinstalar pacote %1$s Falha ao localizar os ficheiros necessários para instalação. Faça o download dos ficheiros de instalação e tente novamente. Falha ao localizar o apk para o tema preto/escuro do armazenamento, por favor, tente novamente. - A instalação falhou porque o usuário cancelou a abortou. - Falha na instalação porque o usuário bloqueou a instalação. - A instalação falhou porque o usuário tentou instalar o pacote de uma versão passada. Desinstale as atualizações do aplicativo YouTube original e tente novamente. - A instalação falhou porque o aplicativo está em conflito com um aplicativo já instalado. Desinstale a versão atual do Vanced, e tente novamente. + A instalação falhou porque o usuário abortou a instalação. + A instalação falhou porque o usuário bloqueou a instalação. + A instalação falhou porque o usuário tentou fazer o downgrade do pacote. Desinstale as atualizações do app do YouTube e, em seguida, tente novamente. + A instalação falhou por causa do app estar em conflito com um app já instalado. Desinstale a versão atual do Vanced, e tente novamente. A instalação falhou por razões desconhecidas, por favor entre no nosso Telegram ou Discord para suporte. Falha na instalação porque o pacote de instalação é incompatível com o seu dispositivo. Limpe os pacotes transferidos nas Configurações e tente novamente. A instalação falhou porque os pacotes apk estão corrompidos, por favor tente novamente. diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml index d7b52ec8..ca3dc2e0 100644 --- a/app/src/main/res/values-ro-rRO/strings.xml +++ b/app/src/main/res/values-ro-rRO/strings.xml @@ -15,13 +15,13 @@ Dispozitivul tău este rootat? Acordați permisiunea Root Selectaţi cel puţin o aplicație! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. + Vansat, dar pentru Muzica YouTube!\nrelativ mai puţin bogat în caracteristici, dar îţi satisface nevoile. YouTube Vanced este aplicația YouTube stoc, dar mai bună! Să începem - Vreți să folosiți versiunea root? Doar apăsați butonul de mai jos, altfel apăsați săgeata pentru a continua + Vrei să folosești versiunea root? Doar apasă butonul de mai jos, altfel apasă pentru a continua Despre %1$s - Apăsați pe card pentru a vedea schimbările. + Atinge cardul pentru a vedea schimbarile. Schimbări Se descarcă %1$s Instalează @@ -33,7 +33,7 @@ Indisponibil Actualizare Link-uri folositoare - Susțineți-ne! + Ajutați-ne! Nuanță culoare Albastru @@ -63,7 +63,7 @@ Avansat %1$s fișiere de instalare detectate! - Manager a detectat că au fost găsite toate fişierele necesare pentru instalarea %1$s. Doriţi să instalaţi? + Manager a detectat că au fost găsite toate fişierele necesare pentru instalarea %1$s . Doriţi să le instalaţi? Verificare actualizări… Limbă: %1$s Temă: %1$s @@ -71,12 +71,12 @@ Ghid Oprește! Se Instalează %1$s - Folosiți versiunea Magisk/TWRP a Vanced, care este întreruptă și nu poate fi actualizată folosind această aplicație. Vă rugăm să o eliminați eliminând modulul magisk/utilizând dezinstalare Vanced TWRP. + Folosiți versiunea Magisk/TWRP a Vanced, care este întreruptă și nu poate fi actualizată folosind această aplicație. Vă rugăm să o eliminați prin eliminarea modulului Magisk/folosind dezinstalatorul Vanced TWRP. MIUI detectat! - Pentru a instala Vanced, TREBUIE să dezactivaţi Optimizările MIUI în setările dezvoltatorului. (Puteți ignora această avertizare dacă utilizați un ROM cu baza pe xiaomi.eu 20.2.20 sau mai recent) + Pentru a instala Vanced, TREBUIE să dezactivați Optimizările MIUI în setările dezvoltatorului. (Puteți ignora această avertizare dacă utilizați un ROM cu baza pe xiaomi.eu 20.2.20 sau mai recent Eroare Redescărcare - Asigură-te că ai descărcat aplicația de pe vancedapp.com, serverul Discord Vanced sau GitHub Vanced + Asigurați-vă că ați descărcat aplicația de pe vancedapp.com, de pe serverul Discord Vanced sau de pe GitHub Vanced Succes! %1$s Preferințe de instalare Vanced a fost instalat cu succes! Deschideți acum? @@ -94,15 +94,15 @@ Surse Echipa Vanced - Comanda \'chown\' apk pentru proprietarul sistemului a eșuat, încercați din nou. + Nu s-a reușit `chown` APK pentru proprietarul de sistem, încercați din nou. Eroare la descărcarea %1$s Dezinstalarea pachetului %1$s a eșuat Nu s-a reușit localizarea fișierelor necesare pentru instalare. Redescărcați fișierele de instalare, apoi încercați din nou. Nu s-a reuşit localizarea fişierului apk pentru tema neagră/întunecată din stocare, vă rugăm să încercaţi din nou. - Operația a eșuat deoarece utilizatorul a anulat instalarea. - Operația a eșuat deoarece utilizatorul a blocat instalarea. - Instalarea a eșuat deoarece utilizatorul a încercat să retrogradeze pachetul. Dezinstalați actualizările de pe aplicația YouTube stocată, apoi încercați din nou. - Instalarea a eșuat deoarece aplicația intră în conflict cu o aplicație deja instalată. Dezinstalați versiunea curentă a Vanced, apoi încercați din nou. + Instalarea a eșuat deoarece utilizatorul a anulat instalarea. + Instalarea a eșuat deoarece utilizatorul a blocat instalarea. + Instalarea a eșuat deoarece utilizatorul a încercat să retrogradeze pachetul. Dezinstalați actualizările din aplicația YouTube stocată, apoi încercați din nou. + Instalarea a eșuat deoarece aplicația intră în conflict cu o aplicație deja instalată. Dezinstalați versiunea curentă de Vanced, apoi încercați din nou. Instalarea a eșuat din motive necunoscute, alătură-te Telegramului nostru sau Discord pentru mai multă asistență. Instalarea a eșuat deoarece fișierul de instalare este incompatibil cu dispozitivul dvs. Ștergeți fișierele descărcate din Setări, apoi încercați din nou. Instalarea a eșuat deoarece fișierele apk sunt corupte, încercați din nou. diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index f3a108f3..3574faf7 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -10,15 +10,15 @@ О нас Менеджер Настройки - Менеджер обновлений + Обновить Менеджер На устройстве есть рут-права? Предоставить root-права Выберите хотя бы одно приложение! - Vanced, но для YouTube Music!\nотносительно меньше возможностей, но удовлетворяет ваши потребности. + Vanced, но для YouTube Music!\nОтносительно меньше возможностей, но удовлетворит ваши потребности. YouTube Vanced — это приложение для YouTube для Android, но лучше! - Давайте начнем - Хотите использовать root-версию? Просто нажмите кнопку ниже, иначе нажмите для продолжения + Давайте приступим + Хотите использовать root-версию? Если да, то предоставьте рут-права с помощью кнопки ниже. Если нет, то нажмите на кнопку в правом нижнем углу для продолжения О %1$s Нажмите на карточку, чтобы увидеть список изменений. @@ -42,7 +42,7 @@ Красный Жёлтый Оформление - Действия + Поведение Удалить загруженные файлы Файлы успешно удалены Аналитика Firebase @@ -50,8 +50,8 @@ Язык Использовать Chrome Custom Tabs Открывать ссылки в Chrome Custom Tabs - Системный по умолчанию - Тема + Как в системе + Тема оформления Тёмная тема Светлая тема Ссылка на канал обновлений diff --git a/app/src/main/res/values-si-rLK/strings.xml b/app/src/main/res/values-si-rLK/strings.xml index 1c14e572..910e09f2 100644 --- a/app/src/main/res/values-si-rLK/strings.xml +++ b/app/src/main/res/values-si-rLK/strings.xml @@ -15,13 +15,13 @@ Is Your Device Rooted? Grant Root Permission Select at least one app! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. YouTube Vanced is the stock Android YouTube App, but better! Let\'s get started - Willing to use root version? Just hit the button below, else tap to continue + Willing to use the root version? Just hit the button below, else tap to continue About %1$s - Tap on the card to see changelog. + Tap on the card to see the changelog. Changelog Downloading %1$s ස්ථාපනය @@ -33,7 +33,7 @@ නොමැත යාවත්කාලීන කරන්න ප්‍රයෝජනවත් සබැඳි - Support US! + සහයෝගය දක්වන්න අනෙක් වර්ණය නිල් @@ -42,7 +42,7 @@ රතු කහ Appearance - Behaviour + Behavior Clear downloaded files Successfully cleared files Firebase Analytics @@ -63,7 +63,7 @@ Advanced %1$s installation files detected! - Manager detected that all necessary files for %1$s installation were found. Do you want to install? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? Checking for updates… Language(s): %1$s Theme: %1$s @@ -71,12 +71,12 @@ Guide Stop! Installing %1$s - You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the magisk module/using TWRP Vanced uninstaller. + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. MIUI detected! - In order to install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) Error Redownload - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub Success! %1$s Installation Preferences Vanced has successfully been installed! Open now? @@ -94,15 +94,15 @@ Sources Vanced Team - Failed to `chown` apk to system owner, please try again. + Failed to `chown` APK to system owner, please try again. Error Downloading %1$s Failed to uninstall package %1$s Failed to locate the required files for installation. Re-download the installation files, then try again. Failed to locate apk file for black/dark theme from storage, please try again. - Installation failed because user aborted the installation. - Installation failed because user blocked the installation. - Installation failed because user tried to downgrade the package. Uninstall updates from stock YouTube app, then try again. - Installation failed because the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. Installation failed for unknown reasons, join our Telegram or Discord for further support. Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again. Installation failed because the apk files are corrupted, please try again. diff --git a/app/src/main/res/values-sr-rSP/strings.xml b/app/src/main/res/values-sr-rSP/strings.xml index 2348a89b..23e376cf 100644 --- a/app/src/main/res/values-sr-rSP/strings.xml +++ b/app/src/main/res/values-sr-rSP/strings.xml @@ -9,19 +9,19 @@ О апликацији Менаџер - Подешавања + Поставке Освежи Менаџера Да ли је ваш уређај рутован? Омогућите дозволу за рут Одабери барем једну апликацију! - Vanced, али за YouTube Music!\nрелативно са мање напредних карактеристикама, али ће задовољити ваше потребе. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. YouTube Vanced је фабрички Android YouTube апликација, али много боља! Хајде да почнемо - Имате ли намеру користити рутовану верзију? Само кликните на дугме доле, у супротном кликните за наставак + Willing to use the root version? Just hit the button below, else tap to continue О %s - Кликните на картицу да видите историју измена. + Tap on the card to see the changelog. Историја измена Преузимање %1$s Инсталација @@ -42,7 +42,7 @@ Црвена Жута Изглед - Понашање + Behavior Обриши преузете датотеке Успешно брисање датотека Firebase Анализа @@ -52,9 +52,9 @@ Линкови ће бити отворени у Chrome Custom Tabs Системски подразумевано Тема - Тамна Тема - Светла Тема - Ажурирај URL канала + Тамна тема + Светла тема + Ажурирај УРЛ канала %1$s слање обавештења Примај обавештења када је достигнута верзија %1$s Менаџер ажурирања @@ -63,7 +63,7 @@ Napredan %1$s верзија је пронађена! - Менаџер је пронашао све датотеке за %1$s верзију инсталације. Да ли желите да инсталирате? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? Провера ажурирања… Језик (Језици):%1$s Тема: %1$s @@ -71,12 +71,12 @@ Водич Заустави! Инсталирање %1$s - Користите Magisk/TWRP верзију Vanced апликације, која више није подржана и чије коришћење није могуће. Молимо Вас да уклоните ову апликацију из Magisk/TWRP-а путем Vanced апликације за деинсталацију. + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. MIUI је детектован! - Да би апликација Vanced била исправно инсталирана морате да искључите оптимизацију за ову апликацију у MIUI подешавањима за програмере.( Ову напомену можете да занемарите у случају ако користите верзију 20.2.20 и новију xiaomi.eu ROM-а) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) Грешка Поново преузми - Преузмите апликацију само са официјелног Vanced сајта, Vanced Discord сервера или Vanced GitHub-а + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub Успешно! %1$s Инсталациона подешавања Vanced је успешно инсталиран! Желите да га одмах отворите? @@ -94,21 +94,21 @@ Извор Vanced Тим - Грешка при додели apk власнику система , покушајте поново. + Failed to `chown` APK to system owner, please try again. Грешка приликом преузимања %1$s Неуспешно деинсталирање пакета %1$s Није могуће пронаћи датотеке за инсталацију. Преузмите их поново и поновите инсталацију. Није могуће пронаћи apk датотеку за црно/тамну тему у меморијском простору, покушајте поново. - Инсталација није успешна, корисник је обуставио инсталацију. - Инсталација није успешна, корисник је блокирао инсталацију. - Инсталација није успешна, корисник је покушао да инсталира старију верзију преко новије верзије апликације. Деинсталирајте све до предодређене инсталиране верзије YouTubе апликације, затим покушајте поново. - Инсталација није успешна, зато што је дошло до конфликта са већ инсталираном верзијом. Деинсталирајте тренутну верзију Vanced-а и затим покушајте поново. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. Инсталација није успеla, услед непознатог разлога, прикључите нам се на Telegram и Discord апликацијама за даљу подршку. Инсталација је неуспешна јер инсталациона датотека није компатибилна са вашим уређајем. Очистите преузете датотеке у Подешавањима и затим покушајте поново. Инсталација није успеla јер је apk датотека оштећена, покушајте поново. Инсталација неуспешна јер је укључена провера потписа преузете apk датотеке. Искључите apk проверу и затим покушајте поново. Инсталација неуспешна јер је укључена оптимизација за ову апликацију у MIUI систему. Искључите MIUI оптимизацију за ову апликацију и затим покушајте поново. Инсталација неуспешна услед грешке у меоријском простору. - Није могуће пронаћи apk датотеку за црно/тамну тему у инсталационим датотекама. Очистите податке у Менаджеру и покушајте поново. + Није могуће пронаћи apk датотеку за црно/тамну тему у инсталационим датотекама. Очистите податке у Менаџеру и покушајте поново. Није могуће пронаћи подразумевану YouTube локацију за инсталацију после подељене инсталације. diff --git a/app/src/main/res/values-ta-rIN/strings.xml b/app/src/main/res/values-ta-rIN/strings.xml index fedb85c7..7f2cfd58 100644 --- a/app/src/main/res/values-ta-rIN/strings.xml +++ b/app/src/main/res/values-ta-rIN/strings.xml @@ -15,13 +15,13 @@ உங்கள் சாதனம் வேரூன்றியதா? கிராண்ட் ரூட் அனுமதி குறைந்தது ஒரு பயன்பாட்டையாவது தேர்ந்தெடுக்கவும்! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. - YouTube Vanced is the stock Android YouTube App, but better! - Let\'s get started - ரூட் பதிப்பைப் பயன்படுத்த விரும்புகிறீர்களா? கீழே உள்ள பொத்தானை அழுத்தினால், தொடர தொடரவும் + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + YouTube Vanced என்பது Android YouTube பயன்பாடாகும், ஆனால் சிறந்தது! + தொடங்குவோம் + Willing to use the root version? Just hit the button below, else tap to continue பற்றி %1$s - சேஞ்ச்லாக் பார்க்க அட்டையில் தட்டவும். + Tap on the card to see the changelog. சேஞ்ச்லாக் %1$s ஐப் பதிவிறக்குகிறது நிறுவு @@ -33,7 +33,7 @@ கிடைக்கவில்லை புதுப்பை பயனுள்ள இணைப்புகள் - எங்களை ஆதரியுங்கள்! + எங்களை ஆதரித்திடுக! கவனங்கவர் நிறம் நீலம் @@ -42,7 +42,7 @@ சிவப்பு மஞ்சள் தோற்றம் - நடத்தை + Behavior பதிவிறக்கிய கோப்புகளை அழிக்கவும் கோப்புகளை வெற்றிகரமாக அழித்துவிட்டது ஃபயர்பேஸ் அனலிட்டிக்ஸ் @@ -61,9 +61,9 @@ புதிய புதுப்பிப்புகள் இல்லை மாறுபாடு - Advanced + மேம்படுத்தபட்ட %1$s நிறுவல் கோப்புகள் கண்டறியப்பட்டன! - %1$s நிறுவலுக்கு தேவையான அனைத்து கோப்புகளும் கண்டறியப்பட்டதை மேலாளர் கண்டறிந்தார். நீங்கள் நிறுவ விரும்புகிறீர்களா? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? புதுப்பிப்புகளைச் சரிபார்க்கிறது… மொழி: %1$s தீம் %1$s @@ -71,12 +71,12 @@ வழிகாட்டி நிறுத்து! %1$s ஐ நிறுவுகிறது - நீங்கள் வேன்ஸ்ட்டின் மேகிஸ்க் / டி.டபிள்யூ.ஆர்.பி பதிப்பைப் பயன்படுத்துகிறீர்கள், இது நிறுத்தப்பட்டது மற்றும் இந்த பயன்பாட்டைப் பயன்படுத்தி புதுப்பிக்க முடியாது. மேஜிஸ்க் தொகுதியை அகற்றி / TWRP Vanced uninstaller ஐப் பயன்படுத்தி அதை அகற்றவும். + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. MIUI கண்டறியப்பட்டது! - Vanced ஐ நிறுவ, டெவலப்பர் அமைப்புகளில் MIUI உகப்பாக்கங்களை முடக்க வேண்டும். (நீங்கள் 20.2.20 அல்லது அதற்குப் பிறகு xiaomi.eu அடிப்படையிலான ROM ஐப் பயன்படுத்துகிறீர்கள் என்றால் இந்த எச்சரிக்கையை நீங்கள் புறக்கணிக்கலாம்) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) பிழை மீண்டும் பதிவிறக்கு - நீங்கள் பயன்பாட்டை vancedapp.com, Vanced Discord server அல்லது Vanced GitHub இலிருந்து பதிவிறக்கம் செய்துள்ளீர்கள் என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள் + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub வெற்றி! %1$s நிறுவல் விருப்பத்தேர்வுகள் வேன்ட் வெற்றிகரமாக நிறுவப்பட்டது! இப்போது திற? @@ -94,15 +94,15 @@ மூலம் Vanced கூட்டணி - கணினி உரிமையாளரிடம் `சவுன்` Apk செய்வதில் தோல்வி, தயவுசெய்து மீண்டும் முயற்சிக்கவும். + Failed to `chown` APK to system owner, please try again. %1$s பதிவிறக்குவதில் தோழ்வி %1$s நீக்குவதில் தோல்வி நிறுவலுக்கு தேவையான கோப்புகளை கண்டுபிடிப்பதில் தோல்வி. நிறுவல் கோப்புகளை மீண்டும் பதிவிறக்கவும், பின்னர் மீண்டும் முயற்சிக்கவும். சேமிப்பகத்திலிருந்து கருப்பு / இருண்ட கருப்பொருளுக்கான Apk கோப்பை கண்டுபிடிப்பதில் தோல்வி, தயவுசெய்து மீண்டும் முயற்சிக்கவும். - பயனர் நிறுவலை நிறுத்தியதால் நிறுவல் தோல்வியடைந்தது. - பயனர் நிறுவலைத் தடுத்ததால் நிறுவல் தோல்வியடைந்தது. - பயனர் தொகுப்பை தரமிறக்க முயற்சித்ததால் நிறுவல் தோல்வியடைந்தது. பங்கு YouTube பயன்பாட்டிலிருந்து புதுப்பிப்புகளை நிறுவல் நீக்க, பின்னர் மீண்டும் முயற்சிக்கவும். - ஏற்கனவே நிறுவப்பட்ட பயன்பாட்டுடன் பயன்பாடு முரண்படுவதால் நிறுவல் தோல்வியடைந்தது. வேன்ஸின் தற்போதைய பதிப்பை நிறுவல் நீக்கவும், பின்னர் மீண்டும் முயற்சிக்கவும். + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. அறியப்படாத காரணங்களுக்காக நிறுவல் தோல்வியடைந்தது, மேலும் ஆதரவுக்காக எங்கள் டெலிகிராம் அல்லது டிஸ்கார்ட் இல் சேரவும். நிறுவல் கோப்பு உங்கள் சாதனத்துடன் பொருந்தாததால் நிறுவல் தோல்வியடைந்தது. அமைப்புகளில் பதிவிறக்கம் செய்யப்பட்ட கோப்புகளை அழிக்கவும், பின்னர் மீண்டும் முயற்சிக்கவும். நிறுவல் தோல்வியுற்றது, ஏனெனில் Apk கோப்புகள் சிதைந்துள்ளன, தயவுசெய்து மீண்டும் முயற்சிக்கவும். diff --git a/app/src/main/res/values-th-rTH/strings.xml b/app/src/main/res/values-th-rTH/strings.xml new file mode 100644 index 00000000..8065fe08 --- /dev/null +++ b/app/src/main/res/values-th-rTH/strings.xml @@ -0,0 +1,114 @@ + + + + Cancel + Close + Reset + Save + Select Your Apps + + ข้อมูลเกี่ยวกับทีมนักพัฒนา + Manager + Settings + Update Manager + + Is Your Device Rooted? + Grant Root Permission + Select at least one app! + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + YouTube Vanced is the stock Android YouTube App, but better! + Let\'s get started + Willing to use the root version? Just hit the button below, else tap to continue + + About %1$s + Tap on the card to see the changelog. + Changelog + Downloading %1$s + Install + Reinstall + Installed: + Latest: + microG isn\'t installed + Root access not granted + Unavailable + Update + Useful Links + Support us! + + Accent Color + Blue + Green + Purple + Red + Yellow + Appearance + Behavior + Clear downloaded files + Successfully cleared files + Firebase Analytics + This lets us collect information about app performance and crash logs + Language + Use Chrome Custom Tabs + Links will open in Chrome Custom Tabs + System Default + Theme + Dark Theme + Light Theme + Update Channel URL + %1$s Push Notifications + Receive push notifications when an update for %1$s is released + Manager Update Center + No new updates + Variant + + Advanced + %1$s installation files detected! + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + Checking for updates… + Language(s): %1$s + Theme: %1$s + Version: %1$s + Guide + Stop! + Installing %1$s + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. + MIUI detected! + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) + Error + Redownload + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + Success! + %1$s Installation Preferences + Vanced has successfully been installed! Open now? + Version + Vanced Music has successfully been installed! Open now? + Please be patient… + Open + Welcome + + Choose your preferred language(s) for Vanced + Light + %1$s + Select at least one language! + + Manager Devs + Sources + Vanced Team + + Failed to `chown` APK to system owner, please try again. + Error Downloading %1$s + Failed to uninstall package %1$s + Failed to locate the required files for installation. Re-download the installation files, then try again. + Failed to locate apk file for black/dark theme from storage, please try again. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. + Installation failed for unknown reasons, join our Telegram or Discord for further support. + Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again. + Installation failed because the apk files are corrupted, please try again. + Installation failed because apk signature verification is enabled. Disable apk signature verification, then try again. + Installation failed because MIUI Optimization is enabled. Disable MIUI Optimization, then try again. + Installation failed due to a storage error. + Failed to find apk file for black/dark theme from the installer. Clear app data of Manager, then try again. + Failed to locate the stock YouTube installation path after split installation. + diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml index fd0f914b..fd5f2830 100644 --- a/app/src/main/res/values-tr-rTR/strings.xml +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -15,8 +15,8 @@ Cihazınız Root\'lu mu? Root İzni Ver En az bir uygulama seçin! - Vanced, ancak YouTube Music için!\nnispeten daha az zengin özelliklere sahiptir, ancak ihtiyaçlarınızı karşılar. - YouTube Vanced, stok Android YouTube Uygulamasıdır, ancak daha iyidir! + Vanced, ancak YouTube Music için!\nnispeten daha az özelliğe sahiptir ancak ihtiyaçlarınızı karşılar. + YouTube Vanced, temelde YouTube Android Uygulamasıdır, ancak orijinalinden daha iyidir! Başlayalım Root sürümünü kullanmak ister misiniz? Sadece aşağıdaki düğmeye basın, yoksa devam etmek için dokunun @@ -30,10 +30,10 @@ En son: microG yüklü değil Root erişimi verilmedi - Mevcut değil + Yüklenmemiş Güncelle Yararlı Bağlantılar - Bizi Destekle! + Bizi destekle! Tema Rengi Mavi @@ -71,7 +71,7 @@ Kılavuz Durdur! %1$s yükleniyor - Üretimi durdurulan ve bu uygulama kullanılarak güncellenemeyen Vanced\'in Magisk/TWRP sürümünü kullanıyorsunuz. Lütfen magisk modülünü/TWRP Vanced kaldırıcıyı kullanarak kaldırın. + Üretimi durdurulan ve bu uygulama kullanılarak güncellenemeyen Vanced\'in Magisk/TWRP sürümünü kullanıyorsunuz. Lütfen Magisk modülünü/TWRP Vanced kaldırıcıyı kullanarak kaldırın. MIUI tespit edildi! Vanced\'i yüklemek için geliştirici ayarlarından MIUI Optimizasyonlarını devre dışı bırakmanız GEREKİR. (20.2.20 veya üzeri xiaomi.eu tabanlı ROM kullanıyorsanız bu uyarıyı göz ardı edebilirsiniz) Hata diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml index 6b09adfc..962933c3 100644 --- a/app/src/main/res/values-uk-rUA/strings.xml +++ b/app/src/main/res/values-uk-rUA/strings.xml @@ -15,13 +15,13 @@ На Пристрої Є Root Права? Надати Root Права Оберіть принаймні один додаток! - Vanced, але для YouTube Music!\nвідносно менше можливостей, але задовольняє ваші потреби. + Ванс, але для YouTube Music!\nвідносно не багата на можливості, але задовольняє ваші потреби. YouTube Vanced - це стандартний Android YouTube додаток, але краще! Почнімо - Хочете використовувати root версію? Просто натисніть кнопку нижче, інакше натисніть для продовження + Бажаєте використовувати кореневу версію? Просто натисніть на кнопку нижче, щоб продовжити Про %1$s - Натисніть на картку, щоб побачити список змін. + Натисніть на картці, щоб побачити зміни. Список змін Завантаження %1$s Встановити @@ -33,7 +33,7 @@ Недоступно Оновити Корисні сторінки - Підтримайте нас! + Підтримай нас! Вторинний колір Синій @@ -63,7 +63,7 @@ Розширені Знайдено %1$s файлів для встановлення! - Менеджер виявив, що були знайдені всі необхідні файли для встановлення %1$s. Бажаєте встановити? + Виявлено менеджера, що всі необхідні файли для встановлення %1$s були. Бажаєте встановити їх? Перевірка оновлень… Мова(и): %1$s Тема: %1$s @@ -71,12 +71,12 @@ Гайд Зупинись! Встановлення %1$s - Схоже, ви використовуєте Magisk/TWRP-версію Vanced, підтримка якої була припинена і не може бути оновлена за допомогою цього додатку. Будь ласка, видаліть цю версію, видаливши модуль Magisk. + Ви використовуєте Magisk/TWRP версію Vanced, яка припиняється і не може бути оновлена за допомогою цього застосунку. Будь ласка, видаліть його, видаливши модуль Magisk / з використання TWRP Vanced uninstaller. Виявлено користувача MIUI! - Щоб встановити Vanced, ви ПОВИННІ вимкнути оптимізацію MIUI в налаштуваннях розробника. (Ви можете проігнорувати це попередження, якщо ви використовуєте прошивку xiaomi.eu на версії 20.2.20+) + Щоб встановити Vanced, ви ПОВИННІ вимкнути оптимізацію MIUI у налаштуваннях розробника. (Ви можете ігнорувати це попередження якщо ви використовуєте 20.2.20 або новіші xiaomi.eu based ROM) Помилка Завантажити заново - Будь ласка, переконайтеся, що ви завантажили цей додаток з vancedapp.com, Discord сервера Vanced або з GitHub Vanced + Переконайтеся, що ви завантажили додаток з vancedapp.com, Vanced Discord сервер або Vanced GitHub Успіх! Параметри встановлення %1$s Vanced був успішно встановлений! Відкрити зараз? @@ -94,15 +94,15 @@ Джерела Команда Vanced - Не вдалося передати apk власнику системи, спробуйте ще раз. + Не вдалося створити файл APK системного власника програми, будь ласка, повторіть спробу. Помилка Завантаження %1$s Не вдалося видалити пакет %1$s Не вдалося знайти необхідні файли для встановлення. Повторно завантажте файли і спробуйте ще раз. Не вдалося знайти apk-файл для чорної/темної теми зі сховища, спробуйте ще раз. - Операція не вдалася, оскільки користувач перервав встановлення. - Операція не вдалася, оскільки користувач заблокував встановлення. - Помилка встановлення, оскільки користувач намагався понизити версію. Видаліть оновлення з YouTube програми, і повторіть спробу. - Помилка встановлення, оскільки додаток конфліктує із уже встановленою програмою. Видаліть поточну версію Vanced, а потім спробуйте знову. + Встановлення не вдалося, оскільки користувач перервав встановлення. + Встановлення не вдалося, оскільки користувач заблокував встановлення. + Помилка встановлення, оскільки користувач намагався знизити пакет. Видаліть оновлення з програми YouTube на складі, а потім спробуйте ще раз. + Помилка встановлення, через конфлікт програми з уже встановленою програмою. Видаліть поточну версію Vanced, а потім спробуйте ще раз. Інсталяція була провалена з невідомих причин. Приєднуйтесь до нашої групи в Telegram або Discord для подальшої підтримки. Помилка встановлення, оскільки файл несумісний з вашим пристроєм. Очистіть завантажені файли в Налаштуваннях, а потім спробуйте ще раз. Встановлення неможливе, оскільки apk-файли пошкоджені, будь ласка, спробуйте ще раз. diff --git a/app/src/main/res/values-vi-rVN/strings.xml b/app/src/main/res/values-vi-rVN/strings.xml index d2f77456..da12459f 100644 --- a/app/src/main/res/values-vi-rVN/strings.xml +++ b/app/src/main/res/values-vi-rVN/strings.xml @@ -15,7 +15,7 @@ Thiết Bị Của Bạn Đã Được Root? Cấp quyền root Chọn ít nhất một ứng dụng! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. + Vanced, nhưng cho YouTube Music!\ntương đối ít tính năng nhưng đáp ứng những gì bạn cần. YouTube Vanced cũng là ứng dụng YouTube gốc nhưng tốt hơn! Bắt đầu nào Muốn sử dụng phiên bản root? Nhấn nút bên dưới, nếu không hãy nhấn tiếp tục @@ -61,9 +61,9 @@ Không có cập nhật mới Phiên bản - Advanced + Cải tiến Phát hiện tệp cài đặt của %1$s! - Manager đã tìm thấy tất cả các tệp cần thiết để cài đặt %1$s. Bạn có muốn cài đặt không? + Manager đã tìm thấy tất cả các tệp cần thiết để cài đặt %1$s. Bạn có muốn cài đặt nó không? Đang kiểm tra cập nhật… Ngôn ngữ: %1$s Nền: %1$s @@ -73,7 +73,7 @@ Đang cài đặt %1$s Bạn đang sử dụng phiên bản Magisk/TWRP của Vanced, hiện đã bị ngừng phát triển và không thể được cập nhập bằng ứng dụng này. Hãy gỡ mô-đun Magisk/flash trình gỡ cài đặt TWRP. Phát hiện MIUI! - Để cài đặt Vanced, bạn BẮT BUỘC PHẢI vô hiệu hóa Tối ưu hóa MIUI trong cài đặt nhà phát triển. (Bỏ qua cảnh báo này nếu bạn đang sử dụng ROM dựa trên xiaomi.eu phiên bản 20.2.20 hoặc mới hơn) + Để cài đặt Vanced, bạn PHẢI vô hiệu hóa Tối ưu hóa MIUI trong cài đặt nhà phát triển. (Bạn có thể bỏ qua cảnh báo này nếu bạn đang sử dụng ROM dựa trên xiaomi.eu 20.2.20 trở lên) Lỗi Tải lại Chắc chắn rằng bạn đã tải ứng dụng này từ vancedapp.com, server Discord của Vanced hoặc GitHub của Vanced @@ -94,15 +94,15 @@ Nguồn Đội ngũ Vanced - Không thể `đổi chủ sở hữu` tệp tin apk thành chủ hệ thống, vui lòng thử lại. + Không thể `chown`APK cho chủ sở hữu hệ thống, vui lòng thử lại. Lỗi khi tải xuống %1$s Gỡ cài đặt %1$s thất bại Không thể xác định các tệp tin cần thiết để cài đặt. Tải lại các tệp cài đặt rồi thử lại. Không thể xác định tệp tin apk cho chủ đề đen/tối từ bộ nhớ, vui lòng thử lại. - Cài đặt thất bại do người dùng hủy. - Cài đặt thất bại do người dùng chặn. - Cài đặt thất bại do người dùng hạ cấp ứng dụng. Gỡ các bản cập nhật từ ứng dụng YouTube gốc rồi thử lại. - Cài đặt thất bại do ứng dụng xung đột với một ứng dụng đã được cài đặt trước đó. Gỡ cài đặt phiên bản hiện tại của Vanced rồi thử lại. + Cài đặt không thành công vì người dùng đã hủy cài đặt. + Cài đặt không thành công vì người dùng đã chặn cài đặt. + Cài đặt không thành công do người dùng đã cố gắng hạ cấp gói. Gỡ cài đặt các bản cập nhật khỏi ứng dụng YouTube có sẵn, sau đó thử lại. + Cài đặt không thành công do ứng dụng xung đột với ứng dụng đã được cài đặt. Gỡ cài đặt phiên bản Vanced hiện tại, sau đó thử lại. Cài đặt thất bại do lỗi không xác định, tham gia Telegram hoặc Discord của chúng tôi để được hỗ trợ thêm. Cài đặt thất bại do tệp tin cài đặt không tương thích với thiết bị của bạn. Xóa các tệp tin đã tải về trong Cài đặt rồi thử lại. Cài đặt thất bại do các tệp tin apk bị lỗi, xin hãy thử lại. diff --git a/app/src/main/res/values/resources.xml b/app/src/main/res/values/resources.xml index 8dc24f21..d094fd13 100644 --- a/app/src/main/res/values/resources.xml +++ b/app/src/main/res/values/resources.xml @@ -6,6 +6,9 @@ Vanced microG YouTube Music + root + nonroot + firebase use_custom_tabs diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32697805..d98afdf4 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,14 +18,14 @@ Is Your Device Rooted? Grant Root Permission Select at least one app! - Vanced, but for YouTube Music!\nrelatively less feature rich but fulfils your needs. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. YouTube Vanced is the stock Android YouTube App, but better! Let\'s get started - Willing to use root version? Just hit the button below, else tap to continue + Don\'t know what this is or don\'t want to use the root version? just click the blue arrow below! About %1$s - Tap on the card to see changelog. + Tap on the card to see the changelog. Changelog Downloading %1$s Install @@ -37,7 +37,7 @@ Unavailable Update Useful Links - Support US! + Support us! Accent Color @@ -47,7 +47,7 @@ Red Yellow Appearance - Behaviour + Behavior Clear downloaded files Successfully cleared files Firebase Analytics @@ -69,7 +69,7 @@ Advanced %1$s installation files detected! - Manager detected that all necessary files for %1$s installation were found. Do you want to install? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? Checking for updates… Language(s): %1$s Theme: %1$s @@ -77,12 +77,12 @@ Guide Stop! Installing %1$s - You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the magisk module/using TWRP Vanced uninstaller. + You are using the Magisk/TWRP version of Vanced, which is discontinued and cannot be updated using this app. Please remove it by removing the Magisk module/using TWRP Vanced uninstaller. MIUI detected! - In order to install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) + To install Vanced, you MUST disable MIUI Optimisations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM) Error Redownload - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub Success! %1$s Installation Preferences Vanced has successfully been installed! Open now? @@ -103,15 +103,15 @@ Vanced Team - Failed to `chown` apk to system owner, please try again. + Failed to `chown` APK to system owner, please try again. Error Downloading %1$s Failed to uninstall package %1$s Failed to locate the required files for installation. Re-download the installation files, then try again. Failed to locate apk file for black/dark theme from storage, please try again. - Installation failed because user aborted the installation. - Installation failed because user blocked the installation. - Installation failed because user tried to downgrade the package. Uninstall updates from stock YouTube app, then try again. - Installation failed because the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. + Installation failed because the user aborted the installation. + Installation failed because the user blocked the installation. + Installation failed because the user tried to downgrade the package. Uninstall updates from the stock YouTube app, then try again. + Installation failed because of the app conflicts with an already installed app. Uninstall the current version of Vanced, then try again. Installation failed for unknown reasons, join our Telegram or Discord for further support. Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again. Installation failed because the apk files are corrupted, please try again.