From f5708c212e00b542a4745e111ce9fd7db1044ae5 Mon Sep 17 00:00:00 2001 From: Sahin D <5789670+seahindeniz@users.noreply.github.com> Date: Sat, 14 Nov 2020 03:08:24 +0300 Subject: [PATCH 01/48] Fix grammar --- app/src/main/res/values/strings.xml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 326978059e..e64259be39 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 + 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 @@ -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. From be23fe821da0168f0048a15f4b2b2b1420a46333 Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 04:05:35 +0700 Subject: [PATCH 02/48] improvements view binding Why use a heavy data binding for such things if there is a view binding? Moreover, data binding is bad! --- app/build.gradle | 1 + .../vanced/manager/ui/core/BindingFragment.kt | 37 ++++++ .../manager/ui/fragments/AboutFragment.kt | 30 +++-- app/src/main/res/layout/fragment_about.xml | 86 ++++++------- .../main/res/layout/include_about_sources.xml | 118 ++++++++---------- 5 files changed, 137 insertions(+), 135 deletions(-) create mode 100644 app/src/main/java/com/vanced/manager/ui/core/BindingFragment.kt diff --git a/app/build.gradle b/app/build.gradle index 55882e68f0..14743ed3d2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -53,6 +53,7 @@ android { buildFeatures { dataBinding true + viewBinding true } // To inline the bytecode built with JVM target 1.8 into 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 0000000000..73318bc984 --- /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/fragments/AboutFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/AboutFragment.kt index bbdfcca35b..370d4fb9e5 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 @@ -9,37 +9,33 @@ import android.view.ViewGroup import android.widget.Toast 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.databinding.FragmentAboutBinding +import com.vanced.manager.ui.core.BindingFragment import com.vanced.manager.ui.viewmodels.AboutViewModel -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.root.setOnTouchListener { _, event: MotionEvent -> val eventAction = event.action if (eventAction == MotionEvent.ACTION_UP) { val time = System.currentTimeMillis() @@ -64,5 +60,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/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml index 0722a8add9..b99338a23f 100644 --- a/app/src/main/res/layout/fragment_about.xml +++ b/app/src/main/res/layout/fragment_about.xml @@ -1,58 +1,42 @@ - - - - - - - - - + + - - + + - - - - + android:layout_height="wrap_content"/> - - - - - - - - - + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/include_about_sources.xml b/app/src/main/res/layout/include_about_sources.xml index 0c7b013a5b..d898fe1a8e 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 @@ - - - - - - - - - - + + - - + + + + - - + + - - - - - - - - - - - - - - + + + + \ No newline at end of file From 4d14ddf1c6b39a684722af2925c5058cccc94a96 Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 04:43:20 +0700 Subject: [PATCH 03/48] GrantRootFragment view binding --- .../manager/ui/fragments/GrantRootFragment.kt | 59 ++++----- .../main/res/layout/fragment_grant_root.xml | 118 +++++++++--------- 2 files changed, 84 insertions(+), 93 deletions(-) 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 08591fc217..388121bc96 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,47 @@ 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 androidx.preference.PreferenceManager.* 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 onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - binding.grantRootFinishFab.setOnClickListener(this) - binding.grantRootFab.setOnClickListener(this) + override fun otherSetups() { + bindData() } - 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") } + } 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/res/layout/fragment_grant_root.xml b/app/src/main/res/layout/fragment_grant_root.xml index c7abb3f89e..fdcc58bcf0 100644 --- a/app/src/main/res/layout/fragment_grant_root.xml +++ b/app/src/main/res/layout/fragment_grant_root.xml @@ -1,62 +1,58 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + \ No newline at end of file From cdd522844789ac5d0771c634eae44134dad2372e Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 04:48:47 +0700 Subject: [PATCH 04/48] HomeFragment view binding --- .../manager/ui/fragments/HomeFragment.kt | 50 ++++---- app/src/main/res/layout/fragment_home.xml | 116 ++++++++---------- 2 files changed, 74 insertions(+), 92 deletions(-) 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 3e7ae94675..5e011f1017 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 @@ -22,37 +22,43 @@ import com.vanced.manager.R import com.vanced.manager.adapter.AppListAdapter import com.vanced.manager.adapter.LinkAdapter import com.vanced.manager.adapter.SponsorAdapter +import com.vanced.manager.databinding.FragmentGrantRootBinding 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 onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) + override fun otherSetups() { + bindData() + } + 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/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 98df331ef3..91844333cb 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"/> + + + + + + + + + From 60b297adc1e0ca3599c1a7af7aa19d678cdcd071 Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 04:55:29 +0700 Subject: [PATCH 05/48] SelectAppsFragment view binding --- .../ui/fragments/SelectAppsFragment.kt | 59 ++++++++------- .../main/res/layout/fragment_select_apps.xml | 74 +++++++++---------- 2 files changed, 67 insertions(+), 66 deletions(-) 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 40f747391b..41c397d880 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.preference.PreferenceManager.* 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/res/layout/fragment_select_apps.xml b/app/src/main/res/layout/fragment_select_apps.xml index 9ccb947399..863b38faff 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 @@ - + - - - + - - - + - + - + From e126878035f34ab99e596d8389d34013f117815c Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 05:08:15 +0700 Subject: [PATCH 06/48] SettingsFragment view binding, fixed code and add ext --- .../vanced/manager/core/ext/FragmentExt.kt | 15 +++ .../manager/ui/fragments/SettingsFragment.kt | 122 +++++++++++------- app/src/main/res/layout/fragment_settings.xml | 111 ++++++++-------- 3 files changed, 139 insertions(+), 109 deletions(-) create mode 100644 app/src/main/java/com/vanced/manager/core/ext/FragmentExt.kt 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 0000000000..d10352ca52 --- /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/ui/fragments/SettingsFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragment.kt index 10ae88976d..cf25667c7c 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,59 +1,86 @@ 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.preference.PreferenceManager.* import androidx.recyclerview.widget.LinearLayoutManager import com.google.firebase.analytics.FirebaseAnalytics 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/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index c7712e1be3..61dbd66e92 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"/> - - - - - - - + + From 8a3d96a3deb85516edacfe233dbb6acda41d7750 Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 05:12:21 +0700 Subject: [PATCH 07/48] WelcomeFragment view binding --- .../manager/ui/fragments/WelcomeFragment.kt | 31 +++++----- app/src/main/res/layout/fragment_welcome.xml | 61 +++++++++---------- 2 files changed, 42 insertions(+), 50 deletions(-) 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 9dfed6530f..1c7a53c172 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/res/layout/fragment_welcome.xml b/app/src/main/res/layout/fragment_welcome.xml index 8331a70ebe..8d5c043707 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" + android:src="@drawable/ic_launch_text" + android:textAlignment="center" + app:layout_constraintTop_toTopOf="parent"/> - - - - - - - + + From 31162db14511f92f1e194c2e663fe6fd07212cae Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 06:24:15 +0700 Subject: [PATCH 08/48] fix MiuiHelper npe --- .../com/vanced/manager/utils/MiuiHelper.kt | 26 +++++++------------ 1 file changed, 9 insertions(+), 17 deletions(-) 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 96434f4646..07fe962406 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 From b7ba61b5e2dedc2386d11e379f529acaa323505e Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 06:28:11 +0700 Subject: [PATCH 09/48] fix VancedDownloader lang npe --- .../manager/core/downloader/VancedDownloader.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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 d906685db1..0010e4baeb 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 @@ -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" @@ -112,7 +114,7 @@ object VancedDownloader { "lang" -> { count++ succesfulLangCount++ - if (count < lang?.size!!) + if (count < lang.size) downloadSplits(context, "lang") else startVancedInstall(context) @@ -132,9 +134,9 @@ 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) From 3b092c96527e481ec1d7c9dcda6a7ea41c516f3b Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 06:31:04 +0700 Subject: [PATCH 10/48] fix VancedLanguageSelectionDialog langPrefs npe --- .../vanced/manager/ui/dialogs/VancedLanguageSelectionDialog.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 ddfa8bf058..36bf925ee9 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 @@ -70,7 +70,7 @@ class VancedLanguageSelectionDialog : BottomSheetDialogFragment() { val loc = Locale(lang) val box: MaterialCheckBox = MaterialCheckBox(requireActivity()).apply { tag = lang - isChecked = langPrefs!!.contains(lang) + isChecked = langPrefs?.contains(lang) ?: false text = loc.getDisplayLanguage(loc).capitalize(Locale.ROOT) textSize = 18F typeface = ResourcesCompat.getFont(requireActivity(), R.font.exo_bold) From ad173c95879ae7a2c698377279560fc274f2a0ab Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 06:32:26 +0700 Subject: [PATCH 11/48] fix checkSHA256 npe --- app/src/main/java/com/vanced/manager/utils/InternetTools.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 d189c05143..10bd3a570f 100644 --- a/app/src/main/java/com/vanced/manager/utils/InternetTools.kt +++ b/app/src/main/java/com/vanced/manager/utils/InternetTools.kt @@ -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) From 4b100b7b5721326f0be7385ad868279bc3115aff Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 06:34:03 +0700 Subject: [PATCH 12/48] fix getJson npe --- .../java/com/vanced/manager/utils/JsonHelper.kt | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) 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 f2d2391182..a4a5bafbc2 100644 --- a/app/src/main/java/com/vanced/manager/utils/JsonHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/JsonHelper.kt @@ -12,15 +12,11 @@ object JsonHelper { private var dataMap: HashMap = HashMap() suspend fun getJson(url: String): JsonObject? { - return try { - if(dataMap.containsKey(url)) { - dataMap[url]!! - } else { - dataMap[url] = getSuspendJson(url) - dataMap[url]!! - } - } catch (e: Exception) { - null + return if (dataMap.containsKey(url)) { + dataMap[url] + } else { + dataMap[url] = getSuspendJson(url) + dataMap[url] } } From 7d68735706f5a80f4d0c5544a73ff670b65ab94a Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 06:37:07 +0700 Subject: [PATCH 13/48] fix doCommitSession npe --- app/src/main/java/com/vanced/manager/utils/PackageHelper.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 3b72d00bed..20e8c3e7c8 100644 --- a/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt @@ -298,7 +298,7 @@ object PackageHelper { } } finally { - session!!.close() + session?.close() } } From bff06750cd4cc98ec12cdfc9b047546b41ac46b0 Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 06:38:14 +0700 Subject: [PATCH 14/48] fix PackageHelper.copy npe --- app/src/main/java/com/vanced/manager/utils/PackageHelper.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 20e8c3e7c8..df07777e30 100644 --- a/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt @@ -579,8 +579,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()) } From 32cd632506843ee46a5abc0c7851852bbed758eb Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 07:26:07 +0700 Subject: [PATCH 15/48] Small fixes coroutine I could not fix everything, as there were very strange moments in the code ... Also, not all fixes are as beautiful as we would like. --- .../main/java/com/vanced/manager/core/App.kt | 6 +- .../core/downloader/MicrogDownloader.kt | 27 +++--- .../core/downloader/MusicDownloader.kt | 94 +++++++++---------- .../core/downloader/VancedDownloader.kt | 10 +- .../InstallationFilesDetectedDialog.kt | 2 + .../manager/ui/dialogs/ManagerUpdateDialog.kt | 26 +++-- .../manager/ui/dialogs/URLChangeDialog.kt | 11 ++- .../dialogs/VancedLanguageSelectionDialog.kt | 10 +- .../manager/ui/viewmodels/HomeViewModel.kt | 21 +++-- .../java/com/vanced/manager/utils/AppUtils.kt | 22 ++--- .../vanced/manager/utils/DownloadHelper.kt | 9 +- .../com/vanced/manager/utils/Extensions.kt | 2 +- .../com/vanced/manager/utils/InternetTools.kt | 20 ++-- 13 files changed, 133 insertions(+), 127 deletions(-) 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 92466b33c0..e0727a57b7 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,15 @@ 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.* open class App: Application() { private val prefs by lazy { getDefaultSharedPreferences(this) } + private val scope = CoroutineScope(SupervisorJob() + Dispatchers.Main.immediate) override fun onCreate() { - loadJson(this) + scope.launch { loadJson(this@App) } super.onCreate() PRDownloader.initialize(this) @@ -46,6 +48,4 @@ open class App: Application() { super.onConfigurationChanged(newConfig) Crowdin.onConfigurationChanged() } - - } 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 55d9ffe445..bf2872a4bf 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,22 +13,21 @@ 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") - - 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) })) - } - .setOnProgressListener { progress -> - downloadProgress.get()?.downloadProgress?.set((progress.currentBytes * 100 / progress.totalBytes).toInt()) - } + ) = 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) })) + } + .setOnProgressListener { progress -> + downloadProgress.get()?.downloadProgress?.set((progress.currentBytes * 100 / progress.totalBytes).toInt()) + } .start(object : OnDownloadListener { override fun onDownloadComplete() { startMicrogInstall(context) @@ -40,12 +39,10 @@ object MicrogDownloader { }) } - } fun startMicrogInstall(context: Context) { downloadProgress.get()?.installing?.set(true) downloadProgress.get()?.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 44570a05a5..ea8fb71964 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 @@ -1,7 +1,7 @@ package com.vanced.manager.core.downloader import android.content.Context -import androidx.preference.PreferenceManager.getDefaultSharedPreferences +import androidx.preference.PreferenceManager.* import com.downloader.Error import com.downloader.OnDownloadListener import com.downloader.PRDownloader @@ -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,60 +46,56 @@ 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 - } + launch { + val url = if (apk == "stock") "$baseurl/stock/${getArch()}.apk" else "$baseurl/$variant.apk" + suspendCoroutine { + 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") // 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) + 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.get()?.downloadingFile?.set(context.getString(R.string.error_downloading, "Music")) } - - downloadProgress.get()?.downloadingFile?.set(context.getString(R.string.error_downloading, "Music")) - } - }) + }) + } } - } fun startMusicInstall(context: Context) { @@ -109,5 +106,4 @@ object MusicDownloader { 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 d906685db1..4c96d6778b 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 @@ -73,7 +73,7 @@ object VancedDownloader { context: Context, type: String = "theme" ) { - CoroutineScope(Dispatchers.IO).launch { + launch { val url = when (type) { "theme" -> "$themePath/$theme.apk" @@ -160,8 +160,4 @@ object VancedDownloader { else installVanced(context) } - - - - -} +} \ 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 a949ec4ef8..7a52a35df3 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 @@ -5,6 +5,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.databinding.DataBindingUtil +import androidx.lifecycle.lifecycleScope import androidx.preference.PreferenceManager.getDefaultSharedPreferences import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.vanced.manager.R @@ -13,6 +14,7 @@ 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.utils.Extensions.show +import kotlinx.coroutines.launch class InstallationFilesDetectedDialog(private val app: String) : BottomSheetDialogFragment() { 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 5e36ce19e5..cf90fe127e 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 @@ -12,6 +12,7 @@ import android.view.View import android.view.ViewGroup import androidx.databinding.DataBindingUtil import androidx.fragment.app.DialogFragment +import androidx.lifecycle.lifecycleScope import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.downloader.PRDownloader import com.vanced.manager.R @@ -19,6 +20,7 @@ import com.vanced.manager.databinding.DialogManagerUpdateBinding 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 @@ -51,15 +53,18 @@ class ManagerUpdateDialog( 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() + lifecycleScope.launch { + if (forceUpdate) { + binding.managerUpdatePatient.text = requireActivity().getString(R.string.please_be_patient) + downloadManager(requireActivity()) + } else { + checkUpdates() + } - binding.managerUpdateCancel.setOnClickListener { - PRDownloader.cancel(downloadProgress.get()!!.currentDownload) - dismiss() + binding.managerUpdateCancel.setOnClickListener { + PRDownloader.cancel(downloadProgress.get()!!.currentDownload) + dismiss() + } } } @@ -68,12 +73,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() { 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 2e2a67d3b9..05dfdbce6e 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 @@ -10,11 +10,13 @@ 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.utils.Extensions.fetchData import com.vanced.manager.utils.InternetTools.baseUrl +import kotlinx.coroutines.launch class URLChangeDialog : DialogFragment() { @@ -46,9 +48,10 @@ class URLChangeDialog : DialogFragment() { } 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 ddfa8bf058..929acdca8d 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 @@ -12,6 +12,8 @@ import android.widget.LinearLayout import android.widget.Toast import androidx.core.content.edit import androidx.core.content.res.ResourcesCompat +import androidx.lifecycle.coroutineScope +import androidx.lifecycle.lifecycleScope import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.button.MaterialButton import com.google.android.material.checkbox.MaterialCheckBox @@ -23,6 +25,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import java.util.* +import kotlin.coroutines.coroutineContext class VancedLanguageSelectionDialog : BottomSheetDialogFragment() { @@ -36,7 +39,6 @@ class VancedLanguageSelectionDialog : BottomSheetDialogFragment() { 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") @@ -60,9 +62,8 @@ class VancedLanguageSelectionDialog : BottomSheetDialogFragment() { } } - @ExperimentalStdlibApi private fun loadBoxes(ll: LinearLayout) { - CoroutineScope(Dispatchers.Main).launch { + lifecycleScope.launch { // default Main //// But why is it here? val langPrefs = prefs.getString("lang", getDefaultVancedLanguages()) if (this@VancedLanguageSelectionDialog::langs.isInitialized) { if (!langs.contains("null")) { @@ -78,8 +79,9 @@ class VancedLanguageSelectionDialog : BottomSheetDialogFragment() { ll.addView(box, MATCH_PARENT, WRAP_CONTENT) } } - } else + } else { loadBoxes(ll) + } } } 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 ac602fccaf..adeb7651f4 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 @@ -10,6 +10,7 @@ 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) @@ -122,7 +126,13 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() { } - 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) @@ -134,5 +144,4 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() { manager.set(DataModel(InternetTools.manager, activity, managerPkg, activity.getString(R.string.app_name), ContextCompat.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 2641598b85..1649a7996e 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,25 @@ 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) { + fun sendCloseDialog(context: Context): Job { downloadProgress.get()?.installing?.set(false) - CoroutineScope(Dispatchers.IO).launch { + return launch { delay(700) LocalBroadcastManager.getInstance(context).sendBroadcast(Intent(AppDownloadDialog.CLOSE_DIALOG)) } } - fun sendFailure(status: Int, context: Context) { + fun sendFailure(status: Int, context: Context): Job { downloadProgress.get()?.installing?.set(false) //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 +50,9 @@ object AppUtils { } } - fun sendFailure(error: MutableList, context: Context) { + fun sendFailure(error: MutableList, context: Context): Job { downloadProgress.get()?.installing?.set(false) - CoroutineScope(Dispatchers.IO).launch { + return launch { delay(700) val intent = Intent(HomeFragment.INSTALL_FAILED) intent.putExtra("errorMsg", getErrorMessage(error.joinToString(), context)) @@ -134,6 +134,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 6d9b61d7d5..faeba16bae 100644 --- a/app/src/main/java/com/vanced/manager/utils/DownloadHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/DownloadHelper.kt @@ -16,9 +16,8 @@ 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 { @@ -41,8 +40,8 @@ object DownloadHelper { downloadProgress.set(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") .build() @@ -82,6 +81,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 6c3fdd4585..2d5c575457 100644 --- a/app/src/main/java/com/vanced/manager/utils/Extensions.kt +++ b/app/src/main/java/com/vanced/manager/utils/Extensions.kt @@ -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 d189c05143..b80614c2eb 100644 --- a/app/src/main/java/com/vanced/manager/utils/InternetTools.kt +++ b/app/src/main/java/com/vanced/manager/utils/InternetTools.kt @@ -7,16 +7,15 @@ import androidx.browser.customtabs.CustomTabsIntent import androidx.core.content.ContextCompat import androidx.core.net.toUri import androidx.databinding.ObservableField -import androidx.preference.PreferenceManager.getDefaultSharedPreferences +import androidx.preference.PreferenceManager.* import com.beust.klaxon.JsonArray import com.beust.klaxon.JsonObject 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,19 +48,20 @@ 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 { - 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)}") + 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)}") // braveTiers.apply { // set(getJson("$installUrl/sponsor.json")) // notifyChange() // } - vanced.apply { - set(latest?.obj("vanced")) + vanced.apply { + set(latest?.obj("vanced")) notifyChange() } vancedVersions.set(versions?.array("vanced")) From c33e069e79cf16a05d882d18757e71ba97be0090 Mon Sep 17 00:00:00 2001 From: Xinto Date: Sun, 15 Nov 2020 13:49:40 +0400 Subject: [PATCH 16/48] language selector fixes --- app/build.gradle | 17 +++++++++------ .../com/vanced/manager/adapter/LinkAdapter.kt | 21 ++++++++++--------- .../vanced/manager/adapter/SponsorAdapter.kt | 7 +++++-- .../manager/ui/fragments/AboutFragment.kt | 6 +++++- .../manager/ui/viewmodels/HomeViewModel.kt | 14 ++++++------- app/src/main/res/layout/dialog_app_info.xml | 2 +- app/src/main/res/layout/fragment_about.xml | 1 + app/src/main/res/layout/fragment_welcome.xml | 2 +- app/src/main/res/layout/view_social_link.xml | 1 - app/src/main/res/layout/view_sponsor.xml | 1 - 10 files changed, 42 insertions(+), 30 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 55882e68f0..1c878fe4d9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -71,19 +71,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) { 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 92107ec9aa..c3108c050f 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/SponsorAdapter.kt b/app/src/main/java/com/vanced/manager/adapter/SponsorAdapter.kt index 6b8bc82119..41095e728c 100644 --- a/app/src/main/java/com/vanced/manager/adapter/SponsorAdapter.kt +++ b/app/src/main/java/com/vanced/manager/adapter/SponsorAdapter.kt @@ -3,6 +3,7 @@ package com.vanced.manager.adapter import android.content.Context import android.view.LayoutInflater import android.view.ViewGroup +import androidx.appcompat.content.res.AppCompatResources import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.vanced.manager.R @@ -17,13 +18,13 @@ class SponsorAdapter( ) : 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 +34,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 +49,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/ui/fragments/AboutFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/AboutFragment.kt index bbdfcca35b..c3388e16a8 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 @@ -7,6 +7,7 @@ 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 @@ -14,7 +15,10 @@ import androidx.fragment.app.viewModels import androidx.preference.PreferenceManager import com.vanced.manager.R import com.vanced.manager.databinding.FragmentAboutBinding +import com.vanced.manager.ui.dialogs.AppInfoDialog import com.vanced.manager.ui.viewmodels.AboutViewModel +import com.vanced.manager.utils.Extensions.show +import com.vanced.manager.utils.InternetTools.manager class AboutFragment : Fragment() { @@ -37,7 +41,7 @@ class AboutFragment : Fragment() { @SuppressLint("ClickableViewAccessibility") override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - + binding.aboutHeader.setOnClickListener { AppInfoDialog(getString(R.string.app_name), AppCompatResources.getDrawable(requireActivity(), R.mipmap.ic_launcher), manager.get()?.string("changelog")).show(requireActivity()) } view.setOnTouchListener { _, event: MotionEvent -> val eventAction = event.action 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 ac602fccaf..aeca2df8ba 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,7 +5,7 @@ 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 @@ -126,12 +126,12 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() { 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/res/layout/dialog_app_info.xml b/app/src/main/res/layout/dialog_app_info.xml index aef8cb2aa1..d24c6620d8 100644 --- a/app/src/main/res/layout/dialog_app_info.xml +++ b/app/src/main/res/layout/dialog_app_info.xml @@ -25,7 +25,7 @@ app:layout_constraintTop_toTopOf="parent" tools:text="About YouTube Vanced" /> - diff --git a/app/src/main/res/layout/fragment_welcome.xml b/app/src/main/res/layout/fragment_welcome.xml index 8331a70ebe..31ff0c8d7b 100644 --- a/app/src/main/res/layout/fragment_welcome.xml +++ b/app/src/main/res/layout/fragment_welcome.xml @@ -13,7 +13,7 @@ android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginTop="@dimen/top_header_margin" - android:src="@drawable/ic_launch_text" + app:srcCompat="@drawable/ic_launch_text" android:textAlignment="center" app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/layout/view_social_link.xml b/app/src/main/res/layout/view_social_link.xml index 6496be2c86..2147053a5a 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 21f64af367..fe97b1d369 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" From 870725a09ad36beda4e4f7442e722c3e92c3bb10 Mon Sep 17 00:00:00 2001 From: Xinto Date: Sun, 15 Nov 2020 14:29:20 +0400 Subject: [PATCH 17/48] null safety for installation preferences --- .../vanced/manager/ui/dialogs/AppVersionSelectorDialog.kt | 5 ++++- .../vanced/manager/ui/dialogs/VancedThemeSelectorDialog.kt | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) 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 7bdf55f282..5ff4b86f94 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 @@ -35,7 +35,10 @@ class AppVersionSelectorDialog( override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) loadBoxes() - view.findViewWithTag(prefs.getString("${app}_version", "latest")).isChecked = true + val tag = view.findViewWithTag(prefs.getString("${app}_version", "latest")) + if (tag != null) { + tag.isChecked = true + } binding.dialogTitle.text = requireActivity().getString(R.string.version) binding.dialogSave.setOnClickListener { prefs.edit { 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 19f3ee3bf2..45c393ff51 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 @@ -34,7 +34,10 @@ class VancedThemeSelectorDialog : BottomSheetDialogFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { loadButtons() binding.dialogTitle.text = requireActivity().getString(R.string.theme) - view.findViewWithTag(prefs.getString("theme", "dark")).isChecked = true + val tag = view.findViewWithTag(prefs.getString("theme", "dark")) + if (tag != null) { + tag.isChecked = true + } binding.dialogSave.setOnClickListener { prefs.edit { putString("theme", binding.dialogRadiogroup.getCheckedButtonTag()) } dismiss() From af76bcb2a6c31aef7f85aa06acefaf89ba4d6e56 Mon Sep 17 00:00:00 2001 From: Xinto Date: Sun, 15 Nov 2020 14:48:56 +0400 Subject: [PATCH 18/48] Bumped up version --- app/build.gradle | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 62c1bfd9b6..4b95a035c5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,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 @@ -36,10 +36,6 @@ android { disable 'MissingTranslation', 'ExtraTranslation' } - aaptOptions { - noCompress 'apk', '.apk' - } - applicationVariants.all { variant -> resValue "string", "versionName", versionName } From b53aff9b232d1b7af385490db5ba672b5be7c651 Mon Sep 17 00:00:00 2001 From: Xinto Date: Sun, 15 Nov 2020 16:52:24 +0400 Subject: [PATCH 19/48] fixed more android 5 and 6 crash --- app/src/main/res/layout/fragment_welcome.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/layout/fragment_welcome.xml b/app/src/main/res/layout/fragment_welcome.xml index 8d5c043707..033c4ca3f7 100644 --- a/app/src/main/res/layout/fragment_welcome.xml +++ b/app/src/main/res/layout/fragment_welcome.xml @@ -11,7 +11,7 @@ android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginTop="@dimen/top_header_margin" - android:src="@drawable/ic_launch_text" + app:srcCompat="@drawable/ic_launch_text" android:textAlignment="center" app:layout_constraintTop_toTopOf="parent"/> From ce5e561354c6c77b6370447f5ab79ecd37e9eb76 Mon Sep 17 00:00:00 2001 From: Xinto Date: Sun, 15 Nov 2020 16:53:09 +0400 Subject: [PATCH 20/48] fixed a visual bug in manager update center --- app/src/main/java/com/vanced/manager/utils/DownloadHelper.kt | 1 + 1 file changed, 1 insertion(+) 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 faeba16bae..e211373d0c 100644 --- a/app/src/main/java/com/vanced/manager/utils/DownloadHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/DownloadHelper.kt @@ -54,6 +54,7 @@ object DownloadHelper { } .start(object : OnDownloadListener { override fun onDownloadComplete() { + downloadProgress.get()?.downloadProgress?.set(0) val apk = File("${context.getExternalFilesDir("manager")?.path}/manager.apk") val uri = From 89b7d011b07f8cdd66c80b7e7590b4047eed4582 Mon Sep 17 00:00:00 2001 From: Xinto Date: Sun, 15 Nov 2020 17:22:17 +0400 Subject: [PATCH 21/48] fixed crash when no internet connection --- app/src/main/java/com/vanced/manager/core/App.kt | 2 +- .../manager/core/downloader/VancedDownloader.kt | 2 +- .../com/vanced/manager/utils/InternetTools.kt | 13 ++++++------- .../java/com/vanced/manager/utils/JsonHelper.kt | 15 ++++++++++----- 4 files changed, 18 insertions(+), 14 deletions(-) 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 e0727a57b7..4690c40f40 100644 --- a/app/src/main/java/com/vanced/manager/core/App.kt +++ b/app/src/main/java/com/vanced/manager/core/App.kt @@ -16,7 +16,7 @@ import kotlinx.coroutines.* open class App: Application() { private val prefs by lazy { getDefaultSharedPreferences(this) } - private val scope = CoroutineScope(SupervisorJob() + Dispatchers.Main.immediate) + private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO) override fun onCreate() { scope.launch { loadJson(this@App) } 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 6af1d0074c..4d1a5a71fe 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 @@ -134,7 +134,7 @@ object VancedDownloader: CoroutineScope by CoroutineScope(Dispatchers.IO) { if (type == "lang") { count++ when { - count < lang.size -> downloadSplits(context, "lang") + count < lang.size -> downloadSplits(context, "lang") succesfulLangCount == 0 -> { lang.add("en") downloadSplits(context, "lang") 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 c45bef76d3..3af011b6db 100644 --- a/app/src/main/java/com/vanced/manager/utils/InternetTools.kt +++ b/app/src/main/java/com/vanced/manager/utils/InternetTools.kt @@ -50,18 +50,17 @@ object InternetTools { fun getFileNameFromUrl(url: String) = url.substring(url.lastIndexOf('/') + 1, url.length) - 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)}") + 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)}") // braveTiers.apply { // set(getJson("$installUrl/sponsor.json")) // notifyChange() // } - vanced.apply { - set(latest?.obj("vanced")) + vanced.apply { + set(latest?.obj("vanced")) notifyChange() } vancedVersions.set(versions?.array("vanced")) 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 a4a5bafbc2..40db24d927 100644 --- a/app/src/main/java/com/vanced/manager/utils/JsonHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/JsonHelper.kt @@ -12,11 +12,16 @@ object JsonHelper { private var dataMap: HashMap = HashMap() suspend fun getJson(url: String): JsonObject? { - return if (dataMap.containsKey(url)) { - dataMap[url] - } else { - dataMap[url] = getSuspendJson(url) - dataMap[url] + return try { + if (dataMap.containsKey(url)) { + dataMap[url] + } else { + dataMap[url] = getSuspendJson(url) + dataMap[url] + } + } catch (e: Exception) { + //This null is NEEDED, do NOT try to "fix" NPE here!!! + null } } From 41cd02c256d7fcd75210afa5f0c056a7572e308d Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 21:11:44 +0700 Subject: [PATCH 22/48] AppInfoDialog view binding and add BindingDialogFragment --- .../vanced/manager/adapter/AppListAdapter.kt | 10 +- .../vanced/manager/core/base/BaseFragment.kt | 5 - .../manager/ui/core/BindingDialogFragment.kt | 39 +++++++ .../vanced/manager/ui/core/BindingFragment.kt | 2 +- .../manager/ui/dialogs/AppInfoDialog.kt | 53 +++++---- .../manager/ui/fragments/AboutFragment.kt | 14 ++- app/src/main/res/layout/dialog_app_info.xml | 107 +++++++++--------- 7 files changed, 141 insertions(+), 89 deletions(-) delete mode 100644 app/src/main/java/com/vanced/manager/core/base/BaseFragment.kt create mode 100644 app/src/main/java/com/vanced/manager/ui/core/BindingDialogFragment.kt 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 0015f4d07d..e639750073 100644 --- a/app/src/main/java/com/vanced/manager/adapter/AppListAdapter.kt +++ b/app/src/main/java/com/vanced/manager/adapter/AppListAdapter.kt @@ -3,7 +3,7 @@ package com.vanced.manager.adapter import android.view.LayoutInflater import android.view.ViewGroup import androidx.fragment.app.FragmentActivity -import androidx.preference.PreferenceManager.getDefaultSharedPreferences +import androidx.preference.PreferenceManager.* import androidx.recyclerview.widget.RecyclerView import com.github.florent37.viewtooltip.ViewTooltip import com.vanced.manager.R @@ -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/core/base/BaseFragment.kt b/app/src/main/java/com/vanced/manager/core/base/BaseFragment.kt deleted file mode 100644 index 2f759f37b2..0000000000 --- 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/ui/core/BindingDialogFragment.kt b/app/src/main/java/com/vanced/manager/ui/core/BindingDialogFragment.kt new file mode 100644 index 0000000000..8e75f2f8db --- /dev/null +++ b/app/src/main/java/com/vanced/manager/ui/core/BindingDialogFragment.kt @@ -0,0 +1,39 @@ +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.fragment.app.DialogFragment +import androidx.fragment.app.Fragment +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 index 73318bc984..62a0d0edd6 100644 --- a/app/src/main/java/com/vanced/manager/ui/core/BindingFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/core/BindingFragment.kt @@ -16,7 +16,7 @@ abstract class BindingFragment : Fragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { + ): View { _binding = binding(inflater, container, savedInstanceState) otherSetups() return binding.root 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 126d90ae6f..517e881e2a 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/fragments/AboutFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/AboutFragment.kt index 84409ed283..515eef4a1b 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 @@ -11,11 +11,11 @@ import androidx.core.content.edit 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.dialogs.AppInfoDialog 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.Extensions.show import com.vanced.manager.utils.InternetTools.manager class AboutFragment : BindingFragment() { @@ -37,7 +37,15 @@ class AboutFragment : BindingFragment() { @SuppressLint("ClickableViewAccessibility") private fun dataBind() { requireActivity().title = getString(R.string.title_about) - binding.aboutHeader.root.setOnClickListener { AppInfoDialog(getString(R.string.app_name), AppCompatResources.getDrawable(requireActivity(), R.mipmap.ic_launcher), manager.get()?.string("changelog")).show(requireActivity()) } + 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) { diff --git a/app/src/main/res/layout/dialog_app_info.xml b/app/src/main/res/layout/dialog_app_info.xml index d24c6620d8..2469d1e19c 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 @@ - - - + + - - + + + + + + - - - - - - - - - - - - - - + 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 From d4f01eb8b38c817873a04ea6f02b87d0d4956067 Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 21:53:25 +0700 Subject: [PATCH 23/48] ManagerUpdateDialog, AppDownloadDialog view binding migrate ProgressModel to MutableLiveData --- .../core/downloader/MicrogDownloader.kt | 26 ++-- .../core/downloader/MusicDownloader.kt | 12 +- .../core/downloader/VancedDownloader.kt | 12 +- .../com/vanced/manager/model/ProgressModel.kt | 18 +-- .../manager/ui/dialogs/AppDownloadDialog.kt | 104 ++++++++----- .../InstallationFilesDetectedDialog.kt | 17 ++- .../manager/ui/dialogs/ManagerUpdateDialog.kt | 70 ++++++--- .../ui/dialogs/MusicPreferencesDialog.kt | 5 +- .../ui/dialogs/VancedPreferencesDialog.kt | 4 +- .../manager/ui/viewmodels/HomeViewModel.kt | 32 +++- .../java/com/vanced/manager/utils/AppUtils.kt | 6 +- .../vanced/manager/utils/DownloadHelper.kt | 12 +- .../main/res/layout/dialog_app_download.xml | 144 ++++++++---------- .../main/res/layout/dialog_manager_update.xml | 121 +++++++-------- 14 files changed, 312 insertions(+), 271 deletions(-) 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 bf2872a4bf..06a1743450 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 @@ -20,29 +20,29 @@ object MicrogDownloader : CoroutineScope by CoroutineScope(Dispatchers.IO) { ) = launch { val url = microg.get()?.string("url") - downloadProgress.get()?.currentDownload = PRDownloader.download(url, context.getExternalFilesDir("microg")?.path, "microg.apk") + downloadProgress.value?.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?.downloadingFile?.value = context.getString(R.string.downloading_file, url?.let { getFileNameFromUrl(it) }) } .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() { - startMicrogInstall(context) - } + .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 ea8fb71964..331e52d356 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 @@ -49,13 +49,13 @@ object MusicDownloader: CoroutineScope by CoroutineScope(Dispatchers.IO) { launch { val url = if (apk == "stock") "$baseurl/stock/${getArch()}.apk" else "$baseurl/$variant.apk" suspendCoroutine { - 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() { @@ -90,7 +90,7 @@ object MusicDownloader: CoroutineScope by CoroutineScope(Dispatchers.IO) { return } - downloadProgress.get()?.downloadingFile?.set(context.getString(R.string.error_downloading, "Music")) + downloadProgress.value?.downloadingFile?.value = context.getString(R.string.error_downloading, "Music") } }) } @@ -99,8 +99,8 @@ object MusicDownloader: CoroutineScope by CoroutineScope(Dispatchers.IO) { } 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 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 6af1d0074c..b0825a91a7 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 @@ -86,13 +86,13 @@ object VancedDownloader: CoroutineScope by CoroutineScope(Dispatchers.IO) { 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() { @@ -143,7 +143,7 @@ object VancedDownloader: CoroutineScope by CoroutineScope(Dispatchers.IO) { } } 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)) } } }) @@ -151,8 +151,8 @@ object VancedDownloader: CoroutineScope by CoroutineScope(Dispatchers.IO) { } 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) } 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 23840c6829..47c852a12f 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/dialogs/AppDownloadDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/AppDownloadDialog.kt index 9815d7bb18..481736a6ca 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 @@ -10,8 +10,7 @@ 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 +18,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 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 + override fun otherSetups() { + dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + bindData() + } - 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(downloadProgress.value?.currentDownload) + dismiss() + } + } + progressModel.downloadingFile.observe(viewLifecycleOwner) { + appDownloadFile.text = it + } } } } @@ -80,9 +113,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/InstallationFilesDetectedDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/InstallationFilesDetectedDialog.kt index 7a52a35df3..4ad8a805e6 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 @@ -5,8 +5,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.databinding.DataBindingUtil -import androidx.lifecycle.lifecycleScope -import androidx.preference.PreferenceManager.getDefaultSharedPreferences +import androidx.preference.PreferenceManager.* import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.vanced.manager.R import com.vanced.manager.core.downloader.MicrogDownloader.startMicrogInstall @@ -14,7 +13,6 @@ 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.utils.Extensions.show -import kotlinx.coroutines.launch class InstallationFilesDetectedDialog(private val app: String) : BottomSheetDialogFragment() { @@ -39,18 +37,23 @@ class InstallationFilesDetectedDialog(private val app: String) : BottomSheetDial dismiss() if (app == requireActivity().getString(R.string.vanced)) VancedPreferencesDialog().show(requireActivity()) - else - AppDownloadDialog(app).show(requireActivity()) + else { + AppDownloadDialog.newInstance(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.vanced) -> startVancedInstall(requireActivity(), + getDefaultSharedPreferences(requireActivity()).getString("vanced_variant", "nonroot")) requireActivity().getString(R.string.music) -> startMusicInstall(requireActivity()) requireActivity().getString(R.string.microg) -> startMicrogInstall(requireActivity()) } - AppDownloadDialog(app, true).show(requireActivity()) + AppDownloadDialog.newInstance( + app = app, + installing = true + ).show(requireActivity()) } } 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 cf90fe127e..804389df72 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 @@ -10,13 +10,19 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.view.isVisible import androidx.databinding.DataBindingUtil import androidx.fragment.app.DialogFragment import androidx.lifecycle.lifecycleScope import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.downloader.PRDownloader import com.vanced.manager.R +import com.vanced.manager.core.downloader.MicrogDownloader +import com.vanced.manager.core.downloader.MusicDownloader +import com.vanced.manager.core.downloader.VancedDownloader +import com.vanced.manager.databinding.DialogAppDownloadBinding 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 @@ -24,9 +30,24 @@ import kotlinx.coroutines.launch class ManagerUpdateDialog( private val forceUpdate: Boolean -) : DialogFragment() { +) : BindingDialogFragment() { - private lateinit var binding: DialogManagerUpdateBinding + 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()) } @@ -38,21 +59,15 @@ 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)) - } - isCancelable = false - binding = DataBindingUtil.inflate(inflater, R.layout.dialog_manager_update, container, false) - binding.progress = downloadProgress.get() - return binding.root - } + ) = DialogManagerUpdateBinding.inflate(inflater, container, false) - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) + override fun otherSetups() { + dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + bindData() lifecycleScope.launch { if (forceUpdate) { binding.managerUpdatePatient.text = requireActivity().getString(R.string.please_be_patient) @@ -62,12 +77,30 @@ class ManagerUpdateDialog( } binding.managerUpdateCancel.setOnClickListener { - PRDownloader.cancel(downloadProgress.get()!!.currentDownload) + PRDownloader.cancel(downloadProgress.value?.currentDownload) dismiss() } } } + private fun bindData() { + with(binding) { + isCancelable = false + bindDownloadProgress() + } + } + + private fun DialogManagerUpdateBinding.bindDownloadProgress() { + with(downloadProgress) { + observe(viewLifecycleOwner) { progressModel -> + progressModel.downloadProgress.observe(viewLifecycleOwner) { + managerUpdateProgressbar.progress = it + managerUpdateProgressbar.isVisible = it != 0 + } + } + } + } + override fun onResume() { super.onResume() registerReceiver() @@ -87,9 +120,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/MusicPreferencesDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/MusicPreferencesDialog.kt index e595b210c9..47a5696046 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 @@ -43,8 +43,9 @@ class MusicPreferencesDialog : BottomSheetDialogFragment() { } binding.musicInstall.setOnClickListener { dismiss() - AppDownloadDialog(requireActivity().getString(R.string.music)).show(requireActivity()) + AppDownloadDialog.newInstance( + app = getString(R.string.music) + ).show(requireActivity()) } } - } \ No newline at end of file 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 3602ef12f9..cc64f642dc 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 @@ -68,7 +68,9 @@ class VancedPreferencesDialog : BottomSheetDialogFragment() { binding.vancedInstall.setOnClickListener { dismiss() - AppDownloadDialog(requireActivity().getString(R.string.vanced)).show(requireActivity()) + AppDownloadDialog.newInstance( + app = getString(R.string.vanced) + ).show(requireActivity()) } } } 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 bea5621cf9..3d638c023b 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 @@ -100,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 @@ -109,18 +109,38 @@ 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(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(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(app).show(activity) + } else { + AppDownloadDialog.newInstance(app).show(activity) + } } } 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 1649a7996e..50013aae4d 100644 --- a/app/src/main/java/com/vanced/manager/utils/AppUtils.kt +++ b/app/src/main/java/com/vanced/manager/utils/AppUtils.kt @@ -32,7 +32,7 @@ object AppUtils: CoroutineScope by CoroutineScope(Dispatchers.IO) { } fun sendCloseDialog(context: Context): Job { - downloadProgress.get()?.installing?.set(false) + downloadProgress.value?.installing?.value = false return launch { delay(700) LocalBroadcastManager.getInstance(context).sendBroadcast(Intent(AppDownloadDialog.CLOSE_DIALOG)) @@ -40,7 +40,7 @@ object AppUtils: CoroutineScope by CoroutineScope(Dispatchers.IO) { } fun sendFailure(status: Int, context: Context): Job { - downloadProgress.get()?.installing?.set(false) + downloadProgress.value?.installing?.value = false //Delay error broadcast until activity (and fragment) get back to the screen return launch { delay(700) @@ -51,7 +51,7 @@ object AppUtils: CoroutineScope by CoroutineScope(Dispatchers.IO) { } fun sendFailure(error: MutableList, context: Context): Job { - downloadProgress.get()?.installing?.set(false) + downloadProgress.value?.installing?.value = false return launch { delay(700) val intent = Intent(HomeFragment.INSTALL_FAILED) 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 faeba16bae..993330559e 100644 --- a/app/src/main/java/com/vanced/manager/utils/DownloadHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/DownloadHelper.kt @@ -10,7 +10,7 @@ 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 @@ -34,23 +34,23 @@ object DownloadHelper { return downloadManager.enqueue(request) } - val downloadProgress = ObservableField() + val downloadProgress = MutableLiveData() init { - downloadProgress.set(ProgressModel()) + downloadProgress.value = ProgressModel() } 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() { diff --git a/app/src/main/res/layout/dialog_app_download.xml b/app/src/main/res/layout/dialog_app_download.xml index 8319522343..8fba62e435 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:layout_centerVertical="true" + android:layout_toStartOf="@+id/app_download_cancel" + android:textSize="15sp" + tools:text="Downloading base.apk..."/> + - - - - + + diff --git a/app/src/main/res/layout/dialog_manager_update.xml b/app/src/main/res/layout/dialog_manager_update.xml index 6bfb0b2b4b..6159d9ccd9 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"> - + - - - - - - - - - - - + + + + + + + \ No newline at end of file From e60eec1cd97071a7fd42e7cc0f8d87344eb316dc Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 22:00:57 +0700 Subject: [PATCH 24/48] URLChangeDialog view binding --- .../manager/ui/dialogs/URLChangeDialog.kt | 67 +++++++++++-------- app/src/main/res/layout/dialog_custom_url.xml | 6 +- 2 files changed, 41 insertions(+), 32 deletions(-) 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 05dfdbce6e..0d18d4d35d 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,47 +4,58 @@ 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 androidx.preference.PreferenceManager.* +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("/") - - saveUrl(finalUrl) + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ) = DialogCustomUrlBinding.inflate(inflater, container, false) + + 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) { diff --git a/app/src/main/res/layout/dialog_custom_url.xml b/app/src/main/res/layout/dialog_custom_url.xml index 1099adea8f..15d0340bae 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 From ce4b06f2b3e5d7f10e577239d2e61a39511994bf Mon Sep 17 00:00:00 2001 From: Xinto Date: Sun, 15 Nov 2020 19:39:33 +0400 Subject: [PATCH 25/48] crash fixes in dialogs --- .../ui/dialogs/AppVersionSelectorDialog.kt | 15 ++++--- .../dialogs/VancedLanguageSelectionDialog.kt | 44 +++++++------------ .../ui/dialogs/VancedThemeSelectorDialog.kt | 5 ++- .../com/vanced/manager/utils/Extensions.kt | 4 +- .../com/vanced/manager/utils/InternetTools.kt | 1 + 5 files changed, 30 insertions(+), 39 deletions(-) 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 5ff4b86f94..df00d338ba 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 @@ -16,7 +16,7 @@ import com.vanced.manager.utils.Extensions.getDefaultPrefs import com.vanced.manager.utils.Extensions.show class AppVersionSelectorDialog( - private val versions: List, + private val versions: List?, private val app: String ) : BottomSheetDialogFragment() { @@ -41,19 +41,20 @@ class AppVersionSelectorDialog( } binding.dialogTitle.text = requireActivity().getString(R.string.version) binding.dialogSave.setOnClickListener { - prefs.edit { - putString("${app}_version", binding.dialogRadiogroup.getCheckedButtonTag()) - } + val checkedTag = binding.dialogRadiogroup.getCheckedButtonTag() + if (checkedTag != null) + prefs.edit { putString("${app}_version", checkedTag) } + dismiss() } } private fun loadBoxes() { requireActivity().runOnUiThread { - for (i in versions.indices) { + versions?.forEach { version -> val rb = MaterialRadioButton(requireActivity()).apply { - text = versions[i] - tag = versions[i] + text = version + tag = version textSize = 18f } binding.dialogRadiogroup.addView(rb, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) 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 8495e9742d..dc72e12635 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 @@ -12,8 +12,6 @@ import android.widget.LinearLayout import android.widget.Toast import androidx.core.content.edit import androidx.core.content.res.ResourcesCompat -import androidx.lifecycle.coroutineScope -import androidx.lifecycle.lifecycleScope import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.button.MaterialButton import com.google.android.material.checkbox.MaterialCheckBox @@ -21,15 +19,11 @@ import com.vanced.manager.R 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.* -import kotlin.coroutines.coroutineContext class VancedLanguageSelectionDialog : BottomSheetDialogFragment() { - private lateinit var langs: MutableList + private val langs = vanced.get()?.array("langs")?.value private val prefs by lazy { requireActivity().getSharedPreferences("installPrefs", Context.MODE_PRIVATE) } override fun onCreateView( @@ -41,16 +35,14 @@ class VancedLanguageSelectionDialog : BottomSheetDialogFragment() { 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) - } + 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() @@ -63,24 +55,18 @@ class VancedLanguageSelectionDialog : BottomSheetDialogFragment() { } private fun loadBoxes(ll: LinearLayout) { - lifecycleScope.launch { // default Main //// But why is it here? + requireActivity().runOnUiThread { 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) ?: false - text = loc.getDisplayLanguage(loc).capitalize(Locale.ROOT) - textSize = 18F - typeface = ResourcesCompat.getFont(requireActivity(), R.font.exo_bold) - } - ll.addView(box, MATCH_PARENT, WRAP_CONTENT) - } + 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) } - } else { - loadBoxes(ll) + ll.addView(box, MATCH_PARENT, WRAP_CONTENT) } } } 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 45c393ff51..5341d9ee34 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 @@ -39,7 +39,10 @@ class VancedThemeSelectorDialog : BottomSheetDialogFragment() { tag.isChecked = true } binding.dialogSave.setOnClickListener { - prefs.edit { putString("theme", binding.dialogRadiogroup.getCheckedButtonTag()) } + val checkedTag = binding.dialogRadiogroup.getCheckedButtonTag() + if (checkedTag != null) + prefs.edit { putString("theme", checkedTag) } + dismiss() } } 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 2d5c575457..433ccf8ef8 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 as String? } fun RadioGroup.getCheckedButtonText(): String { 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 3af011b6db..d174e9948d 100644 --- a/app/src/main/java/com/vanced/manager/utils/InternetTools.kt +++ b/app/src/main/java/com/vanced/manager/utils/InternetTools.kt @@ -77,6 +77,7 @@ object InternetTools { set(latest?.obj("manager")) notifyChange() } + } suspend fun getJsonString(file: String, obj: String, context: Context): String { From 3d86d6b309057a2f38c5268aa0191bdaf606b326 Mon Sep 17 00:00:00 2001 From: Xinto Date: Sun, 15 Nov 2020 19:41:46 +0400 Subject: [PATCH 26/48] made music enabled by default --- .../main/java/com/vanced/manager/adapter/SelectAppsAdapter.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 3c6ce9f983..92a39eba83 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 Date: Sun, 15 Nov 2020 20:06:25 +0400 Subject: [PATCH 27/48] even more crash fixes --- .../com/vanced/manager/ui/dialogs/MusicPreferencesDialog.kt | 4 +--- .../com/vanced/manager/ui/dialogs/VancedPreferencesDialog.kt | 4 +--- app/src/main/java/com/vanced/manager/utils/Extensions.kt | 2 +- 3 files changed, 3 insertions(+), 7 deletions(-) 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 e595b210c9..d0bc3119f6 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 @@ -37,9 +37,7 @@ class MusicPreferencesDialog : BottomSheetDialogFragment() { binding.openVersionSelector.setOnClickListener { dismiss() - if (musicVersionsConv != null) { - AppVersionSelectorDialog(musicVersionsConv, "music").show(requireActivity()) - } + AppVersionSelectorDialog(musicVersionsConv, "music").show(requireActivity()) } binding.musicInstall.setOnClickListener { dismiss() 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 3602ef12f9..1e2d7dbe84 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 @@ -56,9 +56,7 @@ class VancedPreferencesDialog : BottomSheetDialogFragment() { binding.openVersionSelector.setOnClickListener { dismiss() - if (vancedVersionsConv != null) { - AppVersionSelectorDialog(vancedVersionsConv, "vanced").show(requireActivity()) - } + AppVersionSelectorDialog(vancedVersionsConv, "vanced").show(requireActivity()) } binding.openLanguageSelector.setOnClickListener { 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 433ccf8ef8..7ce0a67974 100644 --- a/app/src/main/java/com/vanced/manager/utils/Extensions.kt +++ b/app/src/main/java/com/vanced/manager/utils/Extensions.kt @@ -17,7 +17,7 @@ import java.util.* object Extensions { fun RadioGroup.getCheckedButtonTag(): String? { - return findViewById(checkedRadioButtonId).tag as String? + return findViewById(checkedRadioButtonId)?.tag?.toString() } fun RadioGroup.getCheckedButtonText(): String { From 76a867142eda591b2e78569f668a8d2b87a73384 Mon Sep 17 00:00:00 2001 From: Xinto Date: Sun, 15 Nov 2020 20:15:45 +0400 Subject: [PATCH 28/48] fixed livedata getter --- app/src/main/java/com/vanced/manager/utils/DownloadHelper.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 bb36d0474b..a4c9c6f06a 100644 --- a/app/src/main/java/com/vanced/manager/utils/DownloadHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/DownloadHelper.kt @@ -54,7 +54,7 @@ object DownloadHelper { } .start(object : OnDownloadListener { override fun onDownloadComplete() { - downloadProgress.get()?.downloadProgress?.set(0) + downloadProgress.value?.downloadProgress?.value = 0 val apk = File("${context.getExternalFilesDir("manager")?.path}/manager.apk") val uri = From 08cca4b56b26f1bb7b67a933eb66e6a160ebaf19 Mon Sep 17 00:00:00 2001 From: Xinto Date: Sun, 15 Nov 2020 20:53:36 +0400 Subject: [PATCH 29/48] updated icons --- .../manager/ui/dialogs/AppDownloadDialog.kt | 3 +- app/src/main/res/drawable/ic_discord.xml | 23 ++++++++++---- app/src/main/res/drawable/ic_reddit.xml | 31 ++++++++++++------- 3 files changed, 37 insertions(+), 20 deletions(-) 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 481736a6ca..b418363982 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,7 +8,6 @@ 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.core.view.isVisible import androidx.localbroadcastmanager.content.LocalBroadcastManager @@ -92,7 +91,7 @@ class AppDownloadDialog : BindingDialogFragment() { if (installing) { return@setOnClickListener } - PRDownloader.cancel(downloadProgress.value?.currentDownload) + PRDownloader.cancel(progressModel.currentDownload) dismiss() } } diff --git a/app/src/main/res/drawable/ic_discord.xml b/app/src/main/res/drawable/ic_discord.xml index 7960bd7259..c95df4a13d 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 9c485f5a56..fe80f925fd 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="35dp" + android:height="35dp" + android:viewportWidth="35" + android:viewportHeight="35"> + + + + + From bef7ff4cb0a050e99560b9a9593362186fb939f8 Mon Sep 17 00:00:00 2001 From: Xinto Date: Sun, 15 Nov 2020 20:54:30 +0400 Subject: [PATCH 30/48] removed threading from installers --- .../com/vanced/manager/utils/PackageHelper.kt | 94 +++++++++---------- 1 file changed, 44 insertions(+), 50 deletions(-) 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 df07777e30..5a51dde55d 100644 --- a/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt @@ -165,36 +165,33 @@ object PackageHelper { } 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.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("Files_Missing_VA").toMutableList(), context) + sendFailure(listOf("ModApk_Missing").toMutableList(), context) sendCloseDialog(context) } - + } + else { + sendFailure(listOf("Files_Missing_VA").toMutableList(), context) + sendCloseDialog(context) } } @@ -303,38 +300,35 @@ object PackageHelper { } 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.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("Files_Missing_VA").toMutableList(), context) + sendFailure(listOf("ModApk_Missing").toMutableList(), context) sendCloseDialog(context) } - + } + else { + sendFailure(listOf("Files_Missing_VA").toMutableList(), context) + sendCloseDialog(context) } } From dc77080d371e6a98371a707f9b3cb68f909dc85e Mon Sep 17 00:00:00 2001 From: Xinto Date: Sun, 15 Nov 2020 21:04:23 +0400 Subject: [PATCH 31/48] cleanup --- .../java/com/vanced/manager/adapter/AppListAdapter.kt | 2 +- .../java/com/vanced/manager/adapter/SponsorAdapter.kt | 1 - app/src/main/java/com/vanced/manager/core/App.kt | 5 ++++- .../com/vanced/manager/core/downloader/MusicDownloader.kt | 2 +- .../com/vanced/manager/ui/core/BindingDialogFragment.kt | 2 -- .../manager/ui/dialogs/InstallationFilesDetectedDialog.kt | 2 +- .../com/vanced/manager/ui/dialogs/ManagerUpdateDialog.kt | 7 ------- .../java/com/vanced/manager/ui/dialogs/URLChangeDialog.kt | 2 +- .../com/vanced/manager/ui/fragments/GrantRootFragment.kt | 2 +- .../java/com/vanced/manager/ui/fragments/HomeFragment.kt | 8 ++++---- .../com/vanced/manager/ui/fragments/SelectAppsFragment.kt | 2 +- .../com/vanced/manager/ui/fragments/SettingsFragment.kt | 2 +- .../main/java/com/vanced/manager/utils/InternetTools.kt | 2 +- .../main/java/com/vanced/manager/utils/PackageHelper.kt | 3 --- 14 files changed, 16 insertions(+), 26 deletions(-) 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 e639750073..0213c7689f 100644 --- a/app/src/main/java/com/vanced/manager/adapter/AppListAdapter.kt +++ b/app/src/main/java/com/vanced/manager/adapter/AppListAdapter.kt @@ -3,7 +3,7 @@ package com.vanced.manager.adapter import android.view.LayoutInflater import android.view.ViewGroup import androidx.fragment.app.FragmentActivity -import androidx.preference.PreferenceManager.* +import androidx.preference.PreferenceManager.getDefaultSharedPreferences import androidx.recyclerview.widget.RecyclerView import com.github.florent37.viewtooltip.ViewTooltip import com.vanced.manager.R diff --git a/app/src/main/java/com/vanced/manager/adapter/SponsorAdapter.kt b/app/src/main/java/com/vanced/manager/adapter/SponsorAdapter.kt index 41095e728c..ca2e619bcc 100644 --- a/app/src/main/java/com/vanced/manager/adapter/SponsorAdapter.kt +++ b/app/src/main/java/com/vanced/manager/adapter/SponsorAdapter.kt @@ -4,7 +4,6 @@ import android.content.Context import android.view.LayoutInflater import android.view.ViewGroup import androidx.appcompat.content.res.AppCompatResources -import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.vanced.manager.R import com.vanced.manager.databinding.ViewSponsorBinding 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 4690c40f40..9457a8a1fb 100644 --- a/app/src/main/java/com/vanced/manager/core/App.kt +++ b/app/src/main/java/com/vanced/manager/core/App.kt @@ -11,7 +11,10 @@ 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.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.launch open class App: Application() { 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 331e52d356..833983c067 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 @@ -1,7 +1,7 @@ package com.vanced.manager.core.downloader import android.content.Context -import androidx.preference.PreferenceManager.* +import androidx.preference.PreferenceManager.getDefaultSharedPreferences import com.downloader.Error import com.downloader.OnDownloadListener import com.downloader.PRDownloader 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 index 8e75f2f8db..b2a224aa11 100644 --- a/app/src/main/java/com/vanced/manager/ui/core/BindingDialogFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/core/BindingDialogFragment.kt @@ -5,8 +5,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.appcompat.app.AppCompatDialogFragment -import androidx.fragment.app.DialogFragment -import androidx.fragment.app.Fragment import androidx.viewbinding.ViewBinding abstract class BindingDialogFragment : AppCompatDialogFragment() { 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 4ad8a805e6..a434da3656 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 @@ -5,7 +5,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.databinding.DataBindingUtil -import androidx.preference.PreferenceManager.* +import androidx.preference.PreferenceManager.getDefaultSharedPreferences import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.vanced.manager.R import com.vanced.manager.core.downloader.MicrogDownloader.startMicrogInstall 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 804389df72..e55fa54a98 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,19 +8,12 @@ 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.core.view.isVisible -import androidx.databinding.DataBindingUtil -import androidx.fragment.app.DialogFragment import androidx.lifecycle.lifecycleScope import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.downloader.PRDownloader import com.vanced.manager.R -import com.vanced.manager.core.downloader.MicrogDownloader -import com.vanced.manager.core.downloader.MusicDownloader -import com.vanced.manager.core.downloader.VancedDownloader -import com.vanced.manager.databinding.DialogAppDownloadBinding import com.vanced.manager.databinding.DialogManagerUpdateBinding import com.vanced.manager.ui.core.BindingDialogFragment import com.vanced.manager.utils.DownloadHelper.downloadManager 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 0d18d4d35d..b0e6b69416 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 @@ -8,7 +8,7 @@ import android.view.ViewGroup import android.widget.TextView import androidx.core.content.edit import androidx.lifecycle.lifecycleScope -import androidx.preference.PreferenceManager.* +import androidx.preference.PreferenceManager.getDefaultSharedPreferences import com.vanced.manager.databinding.DialogCustomUrlBinding import com.vanced.manager.ui.core.BindingDialogFragment import com.vanced.manager.utils.Extensions.fetchData 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 388121bc96..9006cf680d 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 @@ -6,7 +6,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.Toast import androidx.core.content.edit -import androidx.preference.PreferenceManager.* +import androidx.preference.PreferenceManager.getDefaultSharedPreferences import com.topjohnwu.superuser.Shell import com.vanced.manager.R import com.vanced.manager.databinding.FragmentGrantRootBinding 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 5e011f1017..778724a994 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 @@ -22,7 +23,6 @@ import com.vanced.manager.R import com.vanced.manager.adapter.AppListAdapter import com.vanced.manager.adapter.LinkAdapter import com.vanced.manager.adapter.SponsorAdapter -import com.vanced.manager.databinding.FragmentGrantRootBinding import com.vanced.manager.databinding.FragmentHomeBinding import com.vanced.manager.ui.core.BindingFragment import com.vanced.manager.ui.dialogs.DialogContainer.installAlertBuilder 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 41c397d880..df94499a71 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 @@ -6,7 +6,7 @@ import android.view.ViewGroup import android.widget.Toast import androidx.core.content.edit import androidx.navigation.fragment.findNavController -import androidx.preference.PreferenceManager.* +import androidx.preference.PreferenceManager.getDefaultSharedPreferences import androidx.recyclerview.widget.LinearLayoutManager import com.vanced.manager.R import com.vanced.manager.adapter.SelectAppsAdapter 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 cf25667c7c..4cd42c6d81 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 @@ -6,7 +6,7 @@ import android.view.Menu import android.view.MenuInflater import android.view.ViewGroup import android.widget.Toast -import androidx.preference.PreferenceManager.* +import androidx.preference.PreferenceManager.getDefaultSharedPreferences import androidx.recyclerview.widget.LinearLayoutManager import com.google.firebase.analytics.FirebaseAnalytics import com.google.firebase.crashlytics.FirebaseCrashlytics 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 d174e9948d..673f420da2 100644 --- a/app/src/main/java/com/vanced/manager/utils/InternetTools.kt +++ b/app/src/main/java/com/vanced/manager/utils/InternetTools.kt @@ -7,7 +7,7 @@ import androidx.browser.customtabs.CustomTabsIntent import androidx.core.content.ContextCompat import androidx.core.net.toUri import androidx.databinding.ObservableField -import androidx.preference.PreferenceManager.* +import androidx.preference.PreferenceManager.getDefaultSharedPreferences import com.beust.klaxon.JsonArray import com.beust.klaxon.JsonObject import com.vanced.manager.BuildConfig 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 5a51dde55d..55262ae363 100644 --- a/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt @@ -20,9 +20,6 @@ import com.vanced.manager.utils.AppUtils.sendRefresh import com.vanced.manager.utils.AppUtils.vancedRootPkg import com.vanced.manager.utils.InternetTools.music import com.vanced.manager.utils.InternetTools.vanced -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch import java.io.* import java.text.SimpleDateFormat import java.util.* From 52bb26b3e039407f4cffcbd01c8d1a913db1c196 Mon Sep 17 00:00:00 2001 From: Xinto Date: Sun, 15 Nov 2020 21:13:27 +0400 Subject: [PATCH 32/48] added back threading to installers bruh --- .../main/java/com/vanced/manager/utils/PackageHelper.kt | 9 +++++++-- app/src/main/res/drawable/ic_discord.xml | 4 ++-- app/src/main/res/drawable/ic_reddit.xml | 4 ++-- 3 files changed, 11 insertions(+), 6 deletions(-) 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 55262ae363..298af0f121 100644 --- a/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt @@ -20,6 +20,9 @@ import com.vanced.manager.utils.AppUtils.sendRefresh import com.vanced.manager.utils.AppUtils.vancedRootPkg import com.vanced.manager.utils.InternetTools.music import com.vanced.manager.utils.InternetTools.vanced +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch import java.io.* import java.text.SimpleDateFormat import java.util.* @@ -161,7 +164,7 @@ object PackageHelper { return false } - fun installMusicRoot(context: Context) { + fun installMusicRoot(context: Context) = CoroutineScope(Dispatchers.IO).launch { Shell.enableVerboseLogging = BuildConfig.DEBUG Shell.setDefaultBuilder( Shell.Builder.create() @@ -192,6 +195,7 @@ object PackageHelper { } } + } fun installVanced(context: Context): Int { @@ -296,7 +300,7 @@ object PackageHelper { } } - fun installVancedRoot(context: Context) { + fun installVancedRoot(context: Context) = CoroutineScope(Dispatchers.IO).launch { Shell.enableVerboseLogging = BuildConfig.DEBUG Shell.setDefaultBuilder( Shell.Builder.create() @@ -332,6 +336,7 @@ object PackageHelper { } + private fun installSplitApkFiles(apkFiles: ArrayList, context: Context) : Boolean { var sessionId: Int? val filenames = arrayOf("black.apk", "dark.apk", "blue.apk", "pink.apk", "hash.json") diff --git a/app/src/main/res/drawable/ic_discord.xml b/app/src/main/res/drawable/ic_discord.xml index c95df4a13d..38cec852fe 100644 --- a/app/src/main/res/drawable/ic_discord.xml +++ b/app/src/main/res/drawable/ic_discord.xml @@ -1,6 +1,6 @@ Date: Sun, 15 Nov 2020 23:30:22 +0700 Subject: [PATCH 33/48] create BindingBottomSheetDialogFragment --- .../core/BindingBottomSheetDialogFragment.kt | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 app/src/main/java/com/vanced/manager/ui/core/BindingBottomSheetDialogFragment.kt 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 0000000000..1b8408e1b5 --- /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 From a3767e4c9ebbdf16a189d3effad5501bacffbd19 Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Sun, 15 Nov 2020 23:48:22 +0700 Subject: [PATCH 34/48] AppVersionSelectorDialog and VancedThemeSelectorDialog migrate to view binding --- .../ui/dialogs/AppVersionSelectorDialog.kt | 97 +++++++++++-------- .../ui/dialogs/MusicPreferencesDialog.kt | 5 +- .../ui/dialogs/VancedPreferencesDialog.kt | 5 +- .../ui/dialogs/VancedThemeSelectorDialog.kt | 70 +++++++------ .../res/layout/dialog_bottom_radio_button.xml | 52 +++++----- 5 files changed, 129 insertions(+), 100 deletions(-) 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 df00d338ba..940d23b777 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,72 +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 - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - loadBoxes() - val tag = view.findViewWithTag(prefs.getString("${app}_version", "latest")) - if (tag != null) { - tag.isChecked = true - } - binding.dialogTitle.text = requireActivity().getString(R.string.version) - binding.dialogSave.setOnClickListener { - val checkedTag = binding.dialogRadiogroup.getCheckedButtonTag() - if (checkedTag != null) - prefs.edit { putString("${app}_version", checkedTag) } + ) = DialogBottomRadioButtonBinding.inflate(inflater, container, false) - dismiss() - } + override fun otherSetups() { + bindData() } - private fun loadBoxes() { - requireActivity().runOnUiThread { - versions?.forEach { version -> - val rb = MaterialRadioButton(requireActivity()).apply { - text = version - tag = version - textSize = 18f + private fun bindData() { + with(binding) { + loadBoxes()?.forEach { mrb -> + dialogRadiogroup.addView( + mrb, + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT + ) + } + 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/MusicPreferencesDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/MusicPreferencesDialog.kt index 30d83f84a5..98074ad517 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 @@ -37,7 +37,10 @@ class MusicPreferencesDialog : BottomSheetDialogFragment() { binding.openVersionSelector.setOnClickListener { dismiss() - AppVersionSelectorDialog(musicVersionsConv, "music").show(requireActivity()) + AppVersionSelectorDialog.newInstance( + versions = musicVersionsConv, + app = "music" + ).show(requireActivity()) } binding.musicInstall.setOnClickListener { dismiss() 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 3b0408ece0..170168fcb0 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 @@ -56,7 +56,10 @@ class VancedPreferencesDialog : BottomSheetDialogFragment() { binding.openVersionSelector.setOnClickListener { dismiss() - AppVersionSelectorDialog(vancedVersionsConv, "vanced").show(requireActivity()) + AppVersionSelectorDialog.newInstance( + versions = vancedVersionsConv, + app = "vanced" + ).show(requireActivity()) } binding.openLanguageSelector.setOnClickListener { 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 5341d9ee34..3699779118 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,57 +12,67 @@ 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() { + + companion object { + + fun newInstance(): VancedThemeSelectorDialog = VancedThemeSelectorDialog().apply { + arguments = Bundle() + } + } - private lateinit var binding: DialogBottomRadioButtonBinding private val prefs by lazy { requireActivity().getSharedPreferences("installPrefs", Context.MODE_PRIVATE) } - override fun onCreateView( + 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 - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - loadButtons() - binding.dialogTitle.text = requireActivity().getString(R.string.theme) - val tag = view.findViewWithTag(prefs.getString("theme", "dark")) - if (tag != null) { - tag.isChecked = true - } - binding.dialogSave.setOnClickListener { - val checkedTag = binding.dialogRadiogroup.getCheckedButtonTag() - if (checkedTag != null) - prefs.edit { putString("theme", checkedTag) } + ) = DialogBottomRadioButtonBinding.inflate(inflater, container, false) - dismiss() - } + override fun otherSetups() { + bindData() } - 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 + 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) } } - binding.dialogRadiogroup.addView(rb, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + dismiss() } } } + private fun loadButtons() = vanced.get()?.array("themes")?.value?.map {theme -> + MaterialRadioButton(requireActivity()).apply { + text = theme.convertToAppTheme(requireActivity()) + tag = theme + textSize = 18f + } + } + override fun onDismiss(dialog: DialogInterface) { super.onDismiss(dialog) VancedPreferencesDialog().show(requireActivity()) } - } \ 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 24932f3426..e600a84b97 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 @@ - + - + - + - + - - - - - - - - - - - - + + - \ No newline at end of file + + + \ No newline at end of file From 00d30034980eaffa326b8b02e2a625dad029ed3d Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Mon, 16 Nov 2020 00:10:36 +0700 Subject: [PATCH 35/48] InstallationFilesDetectedDialog migrate to view binding --- .../InstallationFilesDetectedDialog.kt | 80 ++++++++++--------- .../manager/ui/viewmodels/HomeViewModel.kt | 6 +- .../dialog_installation_files_detected.xml | 69 ++++++++-------- 3 files changed, 79 insertions(+), 76 deletions(-) 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 a434da3656..1d8f04d1ee 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,59 +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 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) + override fun otherSetups() { + bindData() + } - binding.installationDetectedRedownload.setOnClickListener { - dismiss() - if (app == requireActivity().getString(R.string.vanced)) - VancedPreferencesDialog().show(requireActivity()) - else { - AppDownloadDialog.newInstance(app).show(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()) + } } - } - - 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()) + 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.newInstance( - app = app, - installing = true - ).show(requireActivity()) } } - } \ 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 3d638c023b..f7a1aa11df 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 @@ -111,7 +111,7 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() { when (variant) { "nonroot" -> { if (vancedInstallFilesExist(activity)) { - InstallationFilesDetectedDialog(app).show(activity) + InstallationFilesDetectedDialog.newInstance(app).show(activity) } else { VancedPreferencesDialog().show(activity) } @@ -125,7 +125,7 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() { when (variant) { "nonroot" -> { if (musicApkExists(activity)) { - InstallationFilesDetectedDialog(app).show(activity) + InstallationFilesDetectedDialog.newInstance(app).show(activity) } else { MusicPreferencesDialog().show(activity) } @@ -137,7 +137,7 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() { } activity.getString(R.string.microg) -> { if (apkExist(activity, "microg.apk")) { - InstallationFilesDetectedDialog(app).show(activity) + InstallationFilesDetectedDialog.newInstance(app).show(activity) } else { AppDownloadDialog.newInstance(app).show(activity) } 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 8fa1d58018..b6f2404f84 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 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + From a7545071a1cbfe6d16ea4ab240d931e5b25d208a Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Mon, 16 Nov 2020 00:13:32 +0700 Subject: [PATCH 36/48] ManagerAccentColorDialog migrate to view binding --- .../ui/dialogs/ManagerAccentColorDialog.kt | 46 ++++--- .../layout/dialog_manager_accent_color.xml | 113 ++++++++---------- 2 files changed, 80 insertions(+), 79 deletions(-) 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 7ef7e684a9..5d8c2436ac 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() { + + companion object { + fun newInstance(): ManagerAccentColorDialog = ManagerAccentColorDialog().apply { + arguments = Bundle() + } + } - private lateinit var binding: DialogManagerAccentColorBinding 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_accent_color, container, false) - return binding.root + ) = DialogManagerAccentColorBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() } - 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() + 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/res/layout/dialog_manager_accent_color.xml b/app/src/main/res/layout/dialog_manager_accent_color.xml index 088dbb042f..adfe2176fb 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:tag="Blue" + android:text="@string/accent_blue" + android:textSize="18sp"/> - - - - - + - + - + - + + + + + + + From d9290928883f93501ef2f345c169b5a89010cf7d Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Mon, 16 Nov 2020 00:19:22 +0700 Subject: [PATCH 37/48] ManagerLanguageDialog migrate to view binding --- .../ui/dialogs/ManagerLanguageDialog.kt | 77 ++++++++++--------- .../dialog_installation_files_detected.xml | 2 +- .../res/layout/dialog_manager_language.xml | 56 ++++++-------- 3 files changed, 64 insertions(+), 71 deletions(-) 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 8592dd6224..0df816f894 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 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() - } - } + override fun otherSetups() { + bindData() } - 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 + private fun bindData() { + with(binding) { + addRadioButtons().forEach { mrb -> + languageRadiogroup.addView(mrb, MATCH_PARENT, WRAP_CONTENT) + } + 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/res/layout/dialog_installation_files_detected.xml b/app/src/main/res/layout/dialog_installation_files_detected.xml index b6f2404f84..4d293b5512 100644 --- a/app/src/main/res/layout/dialog_installation_files_detected.xml +++ b/app/src/main/res/layout/dialog_installation_files_detected.xml @@ -1,6 +1,6 @@ diff --git a/app/src/main/res/layout/dialog_manager_language.xml b/app/src/main/res/layout/dialog_manager_language.xml index dee0e78007..09e140457e 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="wrap_content"/> + + + + + \ No newline at end of file From 874b5d6f90ce05b26cdc6462176e89d933b1b32a Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Mon, 16 Nov 2020 00:21:34 +0700 Subject: [PATCH 38/48] ManagerThemeDialog migrate to view binding --- .../manager/ui/dialogs/ManagerThemeDialog.kt | 51 ++++++----- .../main/res/layout/dialog_manager_theme.xml | 89 +++++++++---------- 2 files changed, 69 insertions(+), 71 deletions(-) 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 0cdfb32a37..af3a970b8c 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/res/layout/dialog_manager_theme.xml b/app/src/main/res/layout/dialog_manager_theme.xml index cc7fdf8195..bdbacb3cb1 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:tag="System Default" + android:text="@string/system_default" + android:textSize="18sp"/> - - - - - - - + - + + + + + + + \ No newline at end of file From 7e05a3846fdf949f1a46116a162251eb46aae088 Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Mon, 16 Nov 2020 00:24:19 +0700 Subject: [PATCH 39/48] ManagerVariantDialog migrate to view binding --- .../ui/dialogs/ManagerVariantDialog.kt | 61 +++++++------- .../res/layout/dialog_manager_variant.xml | 80 +++++++++---------- 2 files changed, 71 insertions(+), 70 deletions(-) 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 e64ca95d33..38341fd984 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/res/layout/dialog_manager_variant.xml b/app/src/main/res/layout/dialog_manager_variant.xml index 68273770e6..e2c7891a98 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" + tools:ignore="HardcodedText"> - - - - - - - - - + android:tag="nonroot" + android:text="nonroot" + android:textSize="18sp"/> - - - - - - - + + + + + + + From 83ac980eccfd93632c88fab2af4d4f5abc5aecaf Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Mon, 16 Nov 2020 00:27:29 +0700 Subject: [PATCH 40/48] MusicPreferencesDialog migrate to view binding --- .../ui/dialogs/MusicPreferencesDialog.kt | 61 ++++++++------- .../res/layout/dialog_music_preferences.xml | 77 +++++++++---------- 2 files changed, 67 insertions(+), 71 deletions(-) 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 98074ad517..3a40696d8a 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,51 +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 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")) + override fun otherSetups() { + bindData() + } - binding.openVersionSelector.setOnClickListener { - dismiss() - AppVersionSelectorDialog.newInstance( - versions = musicVersionsConv, - app = "music" - ).show(requireActivity()) - } - binding.musicInstall.setOnClickListener { - dismiss() - AppDownloadDialog.newInstance( - app = getString(R.string.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()) + } } } } \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_music_preferences.xml b/app/src/main/res/layout/dialog_music_preferences.xml index c92ba97a43..bafa32a977 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: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 From 5f030608b093d6260de8737451d2aed35cd24e99 Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Mon, 16 Nov 2020 00:30:51 +0700 Subject: [PATCH 41/48] SelectAppsDialog migrate to view binding --- .../manager/ui/dialogs/SelectAppsDialog.kt | 59 +++++++++++-------- .../main/res/layout/dialog_select_apps.xml | 44 +++++++------- 2 files changed, 53 insertions(+), 50 deletions(-) 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 1b5d933549..6936f172c4 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/res/layout/dialog_select_apps.xml b/app/src/main/res/layout/dialog_select_apps.xml index 5893210db9..2606c3b920 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 From 94d339732f1cca2798b7862b866a3462a026d97d Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Mon, 16 Nov 2020 00:35:54 +0700 Subject: [PATCH 42/48] VancedLanguageSelectionDialog migrate to view binding --- .../dialogs/VancedLanguageSelectionDialog.kt | 84 ++++++++++--------- .../dialog_vanced_language_selection.xml | 15 ++-- 2 files changed, 50 insertions(+), 49 deletions(-) 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 dc72e12635..da1503f6f8 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,70 +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 java.util.* -class VancedLanguageSelectionDialog : BottomSheetDialogFragment() { +class VancedLanguageSelectionDialog : BindingBottomSheetDialogFragment() { + + companion object { + + fun newInstance(): VancedLanguageSelectionDialog = VancedLanguageSelectionDialog().apply { + arguments = Bundle() + } + } private val langs = vanced.get()?.array("langs")?.value private val prefs 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? { - return inflater.inflate(R.layout.dialog_vanced_language_selection, container, false) + ) = DialogVancedLanguageSelectionBinding.inflate(inflater, container, false) + + override fun otherSetups() { + bindData() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - loadBoxes(view.findViewById(R.id.lang_button_ll)) - view.findViewById(R.id.vanced_install_finish).setOnClickListener { - val chosenLangs = mutableListOf() - langs?.forEach { lang -> - if (view.findViewWithTag(lang).isChecked) { - chosenLangs.add(lang) + private fun bindData() { + with(binding) { + langButtonLl.loadBoxes() + vancedInstallFinish.setOnClickListener { + val chosenLangs = mutableListOf() + langs?.forEach { lang -> + if (root.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() } - - 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 loadBoxes(ll: LinearLayout) { - requireActivity().runOnUiThread { - 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) - } - ll.addView(box, MATCH_PARENT, WRAP_CONTENT) + 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) } } @@ -75,5 +80,4 @@ class VancedLanguageSelectionDialog : BottomSheetDialogFragment() { super.onDismiss(dialog) VancedPreferencesDialog().show(requireActivity()) } - } 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 7ea2b90a1e..43387c0c05 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 From 707ed94878be33e1843d55692f04df4755fbfee4 Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Mon, 16 Nov 2020 00:39:37 +0700 Subject: [PATCH 43/48] VancedPreferencesDialog migrate to view binding --- .../ui/dialogs/VancedPreferencesDialog.kt | 100 +++++++++--------- .../res/layout/dialog_vanced_preferences.xml | 83 +++++++-------- 2 files changed, 86 insertions(+), 97 deletions(-) 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 170168fcb0..8b7ba823f1 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,61 +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() { - 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?, - savedInstanceState: Bundle? - ): View? { - binding = DataBindingUtil.inflate(inflater, R.layout.dialog_vanced_preferences, container, false) - return binding.root - } + companion object { - @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)) + fun newInstance(): VancedPreferencesDialog = VancedPreferencesDialog().apply { + arguments = Bundle() } + } - 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()) - } + private val defPrefs by lazy { requireActivity().getDefaultPrefs() } + private val installPrefs by lazy { requireActivity().getSharedPreferences("installPrefs", Context.MODE_PRIVATE) } - binding.openVersionSelector.setOnClickListener { - dismiss() - AppVersionSelectorDialog.newInstance( - versions = vancedVersionsConv, - app = "vanced" - ).show(requireActivity()) - } + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ) = DialogVancedPreferencesBinding.inflate(inflater, container, false) - binding.openLanguageSelector.setOnClickListener { - dismiss() - VancedLanguageSelectionDialog().show(requireActivity()) - } + override fun otherSetups() { + bindData() + } - binding.vancedInstall.setOnClickListener { - dismiss() - AppDownloadDialog.newInstance( - app = getString(R.string.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()) + } } } } diff --git a/app/src/main/res/layout/dialog_vanced_preferences.xml b/app/src/main/res/layout/dialog_vanced_preferences.xml index 13d508f740..672cab8c33 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: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 From f8d204a4db4c92b1323dcf3c842e32fdcab3dbcc Mon Sep 17 00:00:00 2001 From: HaliksaR Date: Mon, 16 Nov 2020 00:40:56 +0700 Subject: [PATCH 44/48] ManagerUpdateDialog FIX --- .../java/com/vanced/manager/ui/MainActivity.kt | 9 +++++---- .../manager/ui/dialogs/ManagerUpdateDialog.kt | 17 ++++++----------- .../manager/ui/fragments/DevSettingsFragment.kt | 4 ++-- 3 files changed, 13 insertions(+), 17 deletions(-) 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 3d9123af35..b0dd13c020 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/dialogs/ManagerUpdateDialog.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/ManagerUpdateDialog.kt index e55fa54a98..1939b06585 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 @@ -21,23 +21,18 @@ import com.vanced.manager.utils.DownloadHelper.downloadProgress import com.vanced.manager.utils.InternetTools.isUpdateAvailable import kotlinx.coroutines.launch -class ManagerUpdateDialog( - private val forceUpdate: Boolean -) : BindingDialogFragment() { +class ManagerUpdateDialog : BindingDialogFragment() { companion object { const val CLOSE_DIALOG = "close_dialog" - private const val TAG_APP = "TAG_APP" - private const val TAG_INSTALLING = "TAG_INSTALLING" + private const val TAG_FORCE_UPDATE = "TAG_FORCE_UPDATE" fun newInstance( - app: String, - installing: Boolean = false - ): AppDownloadDialog = AppDownloadDialog().apply { + forceUpdate: Boolean + ): ManagerUpdateDialog = ManagerUpdateDialog().apply { arguments = Bundle().apply { - putString(TAG_APP, app) - putBoolean(TAG_INSTALLING, installing) + putBoolean(TAG_FORCE_UPDATE, forceUpdate) } } } @@ -62,7 +57,7 @@ class ManagerUpdateDialog( dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) bindData() lifecycleScope.launch { - if (forceUpdate) { + if (arguments?.getBoolean(TAG_FORCE_UPDATE) == true) { binding.managerUpdatePatient.text = requireActivity().getString(R.string.please_be_patient) downloadManager(requireActivity()) } else { 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 b8a1b29420..dc386d639b 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" ) From 98f634051ac251793be5ee43281d58d8af599240 Mon Sep 17 00:00:00 2001 From: Xinto Date: Sun, 15 Nov 2020 23:02:49 +0400 Subject: [PATCH 45/48] fixed crash when setting livedata value from a background thread --- app/src/main/java/com/vanced/manager/utils/AppUtils.kt | 4 +--- app/src/main/java/com/vanced/manager/utils/PackageHelper.kt | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) 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 50013aae4d..73c24ef34a 100644 --- a/app/src/main/java/com/vanced/manager/utils/AppUtils.kt +++ b/app/src/main/java/com/vanced/manager/utils/AppUtils.kt @@ -32,15 +32,14 @@ object AppUtils: CoroutineScope by CoroutineScope(Dispatchers.IO) { } fun sendCloseDialog(context: Context): Job { - downloadProgress.value?.installing?.value = false return launch { delay(700) + downloadProgress.value?.installing?.postValue(false) LocalBroadcastManager.getInstance(context).sendBroadcast(Intent(AppDownloadDialog.CLOSE_DIALOG)) } } fun sendFailure(status: Int, context: Context): Job { - downloadProgress.value?.installing?.value = false //Delay error broadcast until activity (and fragment) get back to the screen return launch { delay(700) @@ -51,7 +50,6 @@ object AppUtils: CoroutineScope by CoroutineScope(Dispatchers.IO) { } fun sendFailure(error: MutableList, context: Context): Job { - downloadProgress.value?.installing?.value = false return launch { delay(700) val intent = Intent(HomeFragment.INSTALL_FAILED) 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 298af0f121..741e06e2f9 100644 --- a/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt @@ -374,7 +374,6 @@ object PackageHelper { } sendFailure(installResult.out, context) sendCloseDialog(context) - return false } From 6a0792aa91187da379c931c632aed8e12701d1f7 Mon Sep 17 00:00:00 2001 From: KevinX8 Date: Sun, 15 Nov 2020 19:08:58 +0000 Subject: [PATCH 46/48] New Crowdin updates (#246) * New translations strings.xml (Turkish) * New translations strings.xml (Portuguese, Brazilian) * New translations strings.xml (Bengali) * New translations strings.xml (Finnish) * New translations strings.xml (Italian) * New translations strings.xml (Japanese) * New translations strings.xml (Norwegian) * New translations strings.xml (Russian) * New translations strings.xml (Azerbaijani) * New translations strings.xml (Bengali, India) * New translations strings.xml (Kurdish) * New translations strings.xml (Bengali) * New translations strings.xml (French) * New translations strings.xml (Korean) * New translations strings.xml (Dutch) * New translations strings.xml (Indonesian) * New translations strings.xml (Tamil) * New translations strings.xml (Azerbaijani) * New translations strings.xml (Bengali, India) * New translations strings.xml (Sorani (Kurdish)) * New translations strings.xml (Serbian (Cyrillic)) * New translations strings.xml (Vietnamese) * New translations strings.xml (Hindi) * New translations strings.xml (Turkish) * New translations strings.xml (Portuguese) * New translations strings.xml (Japanese) * New translations strings.xml (Georgian) * New translations strings.xml (Korean) * New translations strings.xml (Dutch) * New translations strings.xml (Norwegian) * New translations strings.xml (Punjabi) * New translations strings.xml (Polish) * New translations strings.xml (Russian) * New translations strings.xml (Hungarian) * New translations strings.xml (Ukrainian) * New translations strings.xml (Indonesian) * New translations strings.xml (Tamil) * New translations strings.xml (Azerbaijani) * New translations strings.xml (Hindi) * New translations strings.xml (Sinhala) * New translations strings.xml (Bengali, India) * New translations strings.xml (Italian) * New translations strings.xml (Hebrew) * New translations strings.xml (German) * New translations strings.xml (Vietnamese) * New translations strings.xml (Kurdish) * New translations strings.xml (Serbian (Cyrillic)) * New translations strings.xml (Arabic) * New translations strings.xml (Bengali) * New translations strings.xml (Finnish) * New translations strings.xml (Romanian) * New translations strings.xml (French) * New translations strings.xml (Spanish) * New translations strings.xml (Afrikaans) * New translations strings.xml (Catalan) * New translations strings.xml (Czech) * New translations strings.xml (Danish) * New translations strings.xml (Greek) * New translations strings.xml (Sorani (Kurdish)) --- app/src/main/res/values-af-rZA/strings.xml | 28 ++++---- app/src/main/res/values-ar-rSA/strings.xml | 28 ++++---- app/src/main/res/values-az-rAZ/strings.xml | 54 ++++++++-------- app/src/main/res/values-bn-rBD/strings.xml | 68 +++++++++---------- app/src/main/res/values-bn-rIN/strings.xml | 50 +++++++------- app/src/main/res/values-ca-rES/strings.xml | 28 ++++---- app/src/main/res/values-ckb-rIR/strings.xml | 34 +++++----- app/src/main/res/values-cs-rCZ/strings.xml | 2 +- app/src/main/res/values-da-rDK/strings.xml | 6 +- app/src/main/res/values-de-rDE/strings.xml | 28 ++++---- app/src/main/res/values-el-rGR/strings.xml | 28 ++++---- app/src/main/res/values-es-rES/strings.xml | 22 +++---- app/src/main/res/values-fi-rFI/strings.xml | 44 ++++++------- app/src/main/res/values-fr-rFR/strings.xml | 24 +++---- app/src/main/res/values-hi-rIN/strings.xml | 72 ++++++++++----------- app/src/main/res/values-hu-rHU/strings.xml | 29 ++++----- app/src/main/res/values-in-rID/strings.xml | 34 +++++----- app/src/main/res/values-it-rIT/strings.xml | 40 ++++++------ app/src/main/res/values-iw-rIL/strings.xml | 28 ++++---- app/src/main/res/values-ja-rJP/strings.xml | 32 ++++----- app/src/main/res/values-ka-rGE/strings.xml | 28 ++++---- app/src/main/res/values-ko-rKR/strings.xml | 32 ++++----- app/src/main/res/values-ku-rTR/strings.xml | 32 ++++----- app/src/main/res/values-nl-rNL/strings.xml | 18 +++--- app/src/main/res/values-no-rNO/strings.xml | 56 ++++++++-------- app/src/main/res/values-pa-rIN/strings.xml | 28 ++++---- app/src/main/res/values-pl-rPL/strings.xml | 28 ++++---- app/src/main/res/values-pt-rBR/strings.xml | 2 +- app/src/main/res/values-pt-rPT/strings.xml | 30 ++++----- app/src/main/res/values-ro-rRO/strings.xml | 28 ++++---- app/src/main/res/values-ru-rRU/strings.xml | 14 ++-- app/src/main/res/values-si-rLK/strings.xml | 28 ++++---- app/src/main/res/values-sr-rSP/strings.xml | 38 +++++------ app/src/main/res/values-ta-rIN/strings.xml | 34 +++++----- app/src/main/res/values-tr-rTR/strings.xml | 30 ++++----- app/src/main/res/values-uk-rUA/strings.xml | 28 ++++---- app/src/main/res/values-vi-rVN/strings.xml | 18 +++--- 37 files changed, 575 insertions(+), 576 deletions(-) diff --git a/app/src/main/res/values-af-rZA/strings.xml b/app/src/main/res/values-af-rZA/strings.xml index 608fd2b0ca..2b34d841ee 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 5ff5241fc1..8bd653564d 100644 --- a/app/src/main/res/values-ar-rSA/strings.xml +++ b/app/src/main/res/values-ar-rSA/strings.xml @@ -15,13 +15,13 @@ هل جهازك مروت؟ امنح صلاحيات الروت حدد تطبيق واحد على الأقل! - ڤانسد، ولكن لموسيقى يوتيوب! \n نسبياً فيه مميزات أقل ولكن يلبي احتياجاتك. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. يوتيوب ڤانسد هو يوتيوب الأندرويد العادي، ولكن أفضل! فلنبدأ - هل ترغب باستعمال نسخة الروت؟ فقط عليك الضغط على الزر في الأسفل، إذا لا اضغط على زر المتابعة + 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 @@ غير متاح تحديث روابط مفيدة - ادعمنا! + Support us! الألوان أزرق @@ -42,7 +42,7 @@ أحمر أصفر المظهر - السلوك + Behavior مسح الملفات التي تم تنزيلها تم مسح الملفات بنجاح تحليلات Firebase @@ -63,7 +63,7 @@ إعدادات متقدمة تم اكتشاف ملفات تثبيت %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 من ڤانسد، الذي قد تم إيقافه ولا يمكن تحديثه بإستخدام هذا التطبيق. الرجاء إزالته أولاً من قائمة إضافات ماجيسك أو بإستخدام أداة إلغاء تثبيت ڤانسد من TWRP. + 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! - من أجل تثبيت ڤانسد، عليك تعطيل تحسينات MIUI في إعدادات المطور. (يمكنك تجاهل هذه الرسالة إذا كنت تستخدم نسخة رقم 20.2.20 أو أجدد تستند إلى نسخة نظام شاومي أوروبا) + 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 @@ المصادر فريق ڤانسد - فشل تغيير ملكية حزمة التثبيت الى مالك النظام، الرجاء المحاولة مرة أخرى. + Failed to `chown` APK to system owner, please try again. خطأ في تنزيل %1$s فشل في الغاء تثبيت الحزمة %1$s فشل العثور على الملفات المطلوبة للتثبيت. أعد تحميل ملفات التثبيت، ثم حاول مرة أخرى. فشل العثور على حزمة تثبيت السمة السوداء/المظلمة من وحدة التخزين، الرجاء المحاولة مرة أخرى. - فشل التثبيت لأن المستخدم ألغى التثبيت. - فشل التثبيت لأن المستخدم قام بحظر التثبيت. - فشل التثبيت لأن المستخدم حاول تثبيت إصدار قديم. قم بألغاء تثبيت التحديثات الخاصة باليوتيوب الأصلي، ثم حاول مرة أخرى. - فشل التثبيت لأن التطبيق يتعارض مع تطبيق مثبت بالفعل. قم بإلغاء تثبيت الإصدار الحالي من ڤانسد، ثم حاول مرة أخرى. + 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-az-rAZ/strings.xml b/app/src/main/res/values-az-rAZ/strings.xml index e9f0789d31..83fc84ae01 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! + Support us! 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 e496975289..28369fe42f 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! + আপডেট + উপকারী লিংকগুলি + 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 Version: %1$s সহায়িকা থামো! Installing %1$s - আপনি ভ্যানসিডের ম্যাজিক / টিডব্লিউআরপি সংস্করণ ব্যবহার করছেন যা বন্ধ হয়ে গেছে এবং এই অ্যাপ্লিকেশনটি ব্যবহার করে আপডেট করা যাবে না। দয়া করে Magisk মডিউলটি সরিয়ে / TWRP ভ্যান্সড আনইনস্টলার ব্যবহার করে এটি সরিয়ে দিন।. + 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 04de25eba4..b5bc381cf2 100644 --- a/app/src/main/res/values-bn-rIN/strings.xml +++ b/app/src/main/res/values-bn-rIN/strings.xml @@ -3,25 +3,25 @@ বাতিল করুন বন্ধ করুন - রিসেট করুন + পুনরায় স্থির করুন সংরক্ষণ করুন আপনার পছন্দসই অ্যাপগুলি নির্বাচন করুন সম্বন্ধে ম্যানেজার সেটিংস - ম্যানেজার হালনাগাদ করুন + ম্যানেজার আপডেট করুন আপনার ডিভাইসটিতে আপনার রুট অ্যাক্সেস আছে? রুট অনুমতি মঞ্জুর করুন অন্তত একটি অ্যাপ নির্বাচন করুন! - ভ্যান্সড, তবে ইউটিউব মিউজিকের জন্য!\nতুলনামূলকভাবে কম বৈশিষ্ট্যযুক্ত, তবে আপনার চাহিদা পূরণ করে। + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. ইউটিউব ভ্যান্সড হল স্টক অ্যান্ড্রয়েড ইউটিউব অ্যাপ, তবে আরো ভাল! শুরু করা যাক - রুট সংস্করণ ব্যবহার করতে ইচ্ছুক? নীচের বোতামটি চাপুন, অন্যথায় চালিয়ে যেতে আলতো চাপুন + 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 ডাউনলোড করা হচ্ছে ইনস্টল করুন @@ -29,20 +29,20 @@ ইনস্টল করা আছে: সর্বশেষ: মাইক্রোজি ইনস্টল করা নেই - রুট অ্যাক্সেস দেওয়া হয়নি + রুট অনুমতি দেয়া হয়নি অনুপলব্ধ - হালনাগাদ + আপডেট উপকারী লিংকগুলি - আমাদের সমর্থন করুন! + Support us! অ্যাকসেন্ট রঙ নীল সবুজ - বেগুনি + বেগুনী লাল হলুদ রূপ - আচরণ + Behavior ডাউনলোড করা ফাইলগুলি মুছে ফেলুন সফলভাবে ফাইলগুলি মুছে ফেলা হয়েছে ফায়ারবেস তথ্য বিশ্লেষণ @@ -54,29 +54,29 @@ থিম গাঢ় থিম হালকা থিম - চ্যানেল ইউআরএল হালনাগাদ করুন - %1$s পুশ নোটিফিকেশনগুলি - %1$s এর আপডেট প্রকাশিত হলে পুশ বিজ্ঞপ্তিগুলি পান - পরিচালক আপডেট কেন্দ্র - কোনো নতুন হালনাগাদ নেই + চ্যানেল URL আপডেট করুন + %1$s পুশ বিজ্ঞপ্তিগুলি + %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 সংস্করণ: %1$s সহায়িকা থামুন! %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. মিআইইউআই শনাক্তকৃত! - ভ্যান্সড ইনস্টল করার জন্য, আপনাকে বিকাশকারী সেটিংসে এমআইইউআই অপটিমাইজেশন অক্ষম করতে হবে। (আপনি যদি ২০.২.২০ বা তার পরে 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, ভ্যান্সড ডিসকার্ড সার্ভার বা ভ্যান্সড গিটহাব থেকে ডাউনলোড করেছেন + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub সফল! %1$s ইনস্টল করার পছন্দগুলি ভ্যান্সড সফলভাবে ইনস্টল করা হয়েছে! এখন চালু করুন? @@ -94,15 +94,15 @@ উৎসগুলি ভ্যান্সড টীম - সিস্টেমের মালিককে এপিকে `chown` করতে ব্যর্থ, দয়া করে আবার চেষ্টা করুন। + Failed to `chown` APK to system owner, please try again. %1$s ডাউনলোড করার সময় ত্রুটি %1$s পেকেজ আন‌ইনস্টল করা যাইনি ইনস্টলেশনের জন্য প্রয়োজনীয় ফাইলগুলি খুঁজে পাওয়া যায় নি। ইনস্টল করার জন্য ফাইলগুলি পুনরায় ডাউনলোড করুন, তারপরে আবার চেষ্টা করুন। স্টোরেজ থেকে কালো/গাঢ় থিমের জন্য এপিকে ফাইল সনাক্ত করতে ব্যর্থ, দয়া করে আবার চেষ্টা করুন। - ইনস্টলেশন ব্যর্থ হয়েছে কারণ ব্যবহারকারী ইনস্টলেশনটি বাতিল করে দিয়েছেন। - ইনস্টলেশন ব্যর্থ হয়েছে কারণ ব্যবহারকারী ইনস্টলেশন অবরুদ্ধ করেছেন। - ইনস্টলেশন ব্যর্থ হয়েছে কারণ ব্যবহারকারী প্যাকেজটি ডাউনগ্রেড করার চেষ্টা করছিলেন। স্টক ইউটিউব অ্যাপ্লিকেশন থেকে আপডেটগুলি আনইনস্টল করুন, তারপরে আবার চেষ্টা করুন। - ইনস্টলেশন ব্যর্থ হয়েছে কারণ অ্যাপ্লিকেশনটি ইতিমধ্যে ইনস্টল হওয়া আরেকটি অ্যাপ্লিকেশানের সাথে দ্বন্দ্ব করছে। ভ্যান্সডের বর্তমান সংস্করণটি আনইনস্টল করুন, তারপরে আবার চেষ্টা করুন। + 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-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml index c29ce93b70..605c22cb0d 100644 --- a/app/src/main/res/values-ca-rES/strings.xml +++ b/app/src/main/res/values-ca-rES/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 Descarregant %1$s Instal·lar @@ -33,7 +33,7 @@ No disponible Actualitza Enllaços d\'interès - Support US! + Support us! Color d\'èmfasi Blau @@ -42,7 +42,7 @@ Vermell Groc Appearance - Behaviour + Behavior Esborrar fitxers descarregats Fitxers netejats correctament 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… Idioma: %1$s Theme: %1$s @@ -71,12 +71,12 @@ 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. + 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 bdc95ee502..a1b37069d7 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 @@ بەردەست نیە نوێکردنەوە کراوە بە کوردی لەلایەن: گۆران غەریب(کوردرۆید) - پاڵپشتی تیمەکەمان! + Support us! ڕەنگی سەرەکی شین @@ -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 117854e234..d71f03a695 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 637f9ce39a..ddef4b9c14 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 26b07b49d5..114c4d93e8 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, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. 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 + Willing to use the root version? Just hit the button below, else tap to continue Über %1$s - Tippe auf die Karte, um Changelog zu sehen. + Tap on the card to see the changelog. Changelog %1$s wird heruntergeladen Installieren @@ -33,7 +33,7 @@ Nicht verfügbar Aktualisieren Nützliche Links - Ünterstütze uns! + Support us! Akzentfarbe Blau @@ -42,7 +42,7 @@ Rot Gelb Darstellung - Verhalten + Behavior Heruntergeladene Dateien löschen Daten erfolgreich gelöscht Firebase-Analyse @@ -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 detected that all necessary files for %1$s installation were found. Do you want to install it? Suche nach Updates… Sprache(n): %1$s Theme: %1$s @@ -71,12 +71,12 @@ Erklärung Stop! %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. + 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 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) + 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) Fehler Erneut herunterladen - Bitte stellen Sie sicher, dass Sie die App von vancedapp.com, dem Vanced Discord Server oder dem Vanced GitHub heruntergeladen haben + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub 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. + Failed to `chown` APK to system owner, please try again. 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 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 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 22105eb482..dbb8edc05e 100644 --- a/app/src/main/res/values-el-rGR/strings.xml +++ b/app/src/main/res/values-el-rGR/strings.xml @@ -15,13 +15,13 @@ Έχετε πρόσβαση Root στην συσκευή σας; Χορήγηση Άδειας Root Επιλέξτε τουλάχιστον μια εφαρμογή! - Vanced, αλλά για το YouTube Music!\nμε σχετικά λιγότερες δυνατότητες αλλά καλύπτει όλες τις ανάγκες σας. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. Το YouTube Vanced είναι το όπως την αρχική εφαρμογή YouTube, αλλά καλύτερο! Ας ξεκινήσουμε - Επιθυμείτε την έκδοση 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 @@ Μη διαθέσιμο Ενημέρωση Χρήσιμοι σύνδεσμοι - Υποστηρίξτε μας! + Support us! Χρώμα Διεπαφής Μπλε @@ -42,7 +42,7 @@ Κόκκινο Κίτρινο Εμφάνιση - Συμπεριφορά + Behavior Εκκαθάριση ληφθέντων αρχείων Επιτυχής εκκαθάριση αρχείων Firebase Analytics @@ -63,7 +63,7 @@ Για προχωρημένους Ανιχνεύτηκαν τα αρχεία εγκατάστασης του %1$s! - Ο Διαχειριστής του Vanced ανίχνευσε ότι βρέθηκαν όλα τα απαραίτητα αρχεία για την εγκατάσταση του %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 Module/χρησιμοποιόντας το πρόγραμμα κατάργησης 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 στις επιλογές προγραμματιστών. (Μπορείτε να αγνοήσετε αυτήν την προειδοποίηση εάν χρησιμοποιείτε την έκδοση ROM 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, τον διακομιστή Discord του Vanced ή το GitHub του Vanced + 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 - Αποτυχία αλλαγής του κατόχου του Apk σε system owner, παρακαλώ προσπαθήστε ξανά. + 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-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index a1f8661590..9be9ca0f35 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -18,10 +18,10 @@ Vanced, pero para YouTube Music!\nrelativamente menos características, pero satisface tus necesidades. YouTube Vanced es la aplicación stock de YouTube, 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-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml index 42e31a3183..395828ac98 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 + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + YouTube Vanced on Androidin Youtube-vakiosovellus, mutta parempi! + Aloitetaan + Willing to use the root version? Just hit the button below, else tap to continue - About %1$s - Napauta korttia nähdäksesi muutoshistoria. + %1$s-tietoja + Tap on the card to see the changelog. Muutoshistoria Ladataan %1$s Asenna @@ -33,7 +33,7 @@ Ei saatavilla Päivitä Hyödyllisiä linkkejä - Tue meitä! + Support us! Aksenttiväri Sininen @@ -42,7 +42,7 @@ Punainen Keltainen Ulkoasu - Behaviour + Behavior 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 + Kehittyneet %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? 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. + 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 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ä) + 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) Virhe Uudelleenlataa - 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 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. + Failed to `chown` APK to system owner, please try again. %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. + 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. 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 1c1e6f016a..db8ee0cd60 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. @@ -110,5 +110,5 @@ 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 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 e149679983..58f259eff3 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 @@ अनुपलब्ध अद्यतन करें उपयोगी लिंक्स - हमें सपोर्ट कीजिए! + Support us! एक्सेंट रंग नीला @@ -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-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml index 109b67b6ad..abfdb30409 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! + Support us! 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 c618d97a9c..a974396edb 100644 --- a/app/src/main/res/values-in-rID/strings.xml +++ b/app/src/main/res/values-in-rID/strings.xml @@ -15,13 +15,13 @@ 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 - Bersedia menggunakan versi root? Cukup tekan tombol di bawah, atau ketuk untuk melanjutkan + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + YouTube Vanced adalah aplikasi YouTube untuk Android, tetapi lebih baik! + Mari kita mulai + Willing to use the root version? Just hit the button below, else tap to continue Tentang %1$s - Ketuk kartu untuk melihat catatan perubahan. + Tap on the card to see the changelog. Catatan perubahan Mengunduh %1$s Pasang @@ -33,7 +33,7 @@ Tidak tersedia Perbarui Tautan Berguna - Dukung Kami! + Support us! Aksen Warna Biru @@ -42,7 +42,7 @@ Merah Kuning Penampilan - Perilaku + Behavior Hapus file yang diunduh Berhasil menghapus file Analisis Firebase @@ -61,9 +61,9 @@ Tidak ada pembaruan Varian - Advanced + Maju %1$s file instalasi terdeteksi! - Manager mendeteksi bahwa semua file yang diperlukan untuk instalasi %1$s ditemukan. Apakah anda ingin memasang? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? 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. + 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 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) + 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) Terjadi kesalahan Unduh ulang - Pastikan anda mengunduh aplikasi ini dari vancedapp.com, Vanced Discord atau Vanced Github + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub Berhasil! Preferensi Instalasi %1$s Vanced berhasil dipasang! Buka sekarang? @@ -94,15 +94,15 @@ Sumber Tim Vanced - Gagal untuk `chown` apk ke pemilik sistem, mohon coba lagi. + Failed to `chown` APK to system owner, please try again. 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. Gagal untuk menemukan file apk untuk tema hitam/gelap dari penyimpanan, mohon coba lagi. - 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. + 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. 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 14b8ad24bc..3759a45176 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. + Vanced, ma per YouTube Music!\nrelativamente meno ricco di funzionalità, ma soddisfa le 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 usare la versione root? Basta premere il pulsante in basso, altrimenti tappa per continuare Informazioni su %1$s - Tocca la scheda per vedere le novità. + Tappa sulla scheda per vedere 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 @@ -73,15 +73,15 @@ 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. 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 PER FORZA 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 perché l\'utente ha annullato l\'installazione. + Installazione non riuscita perché l\'utente ha bloccato l\'installazione. + Installazione non riuscita perché l\'utente ha provato a eseguire il downgrade del pacchetto. Disinstalla gli aggiornamenti dell\'app predefinita di YouTube, poi riprova. + Installazione non riuscita perché l\'app va 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 4445c12bc1..c249a15479 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 @@ אינו זמין עדכן קישורים שימושיים - תמוך בנו! + Support us! צבע הדגשה כחול @@ -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 acc5f1da62..a4de141d90 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 @@ 利用不可 更新 リンク集 - サポートする + Support us! アクセントカラー @@ -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 fcfafbb652..43453c7bbe 100644 --- a/app/src/main/res/values-ka-rGE/strings.xml +++ b/app/src/main/res/values-ka-rGE/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 მიმდინარეობს %1$s-ის გადმოწერა ინსტალაცია @@ -33,7 +33,7 @@ ხელმიუწვდომელია განახლება საჭირო ლინკები - Support US! + 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 @@ ინსტრუქცია 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-ის მომხმარებელი! - 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-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 4c3fda5d63..9ba8f09618 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! + Support us! 강조 색상 파란색 @@ -42,7 +42,7 @@ 빨간색 노란색 Appearance - Behaviour + Behavior 다운로드된 파일 모두 지우기 다운로드된 파일을 모두 삭제했습니다 Firebase 분석 @@ -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… 언어: %1$s Theme: %1$s @@ -71,12 +71,12 @@ 가이드 잠깐만요! Installing %1$s - 현재 설치되어 있는 Vanced의 Magisk/TWRP 버전은 더 이상 지원되지 않으며 이 앱으로 업데이트할 수 없습니다. 먼저 삭제 프로그램을 이용하여 Vanced의 TWRP/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.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 e23fe7bebb..563263158f 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 @@ -33,7 +33,7 @@ Berdest nîne Hildemîne Girêdanên kêrhatî - Piştgiriya me bike! + Support us! Rengê devokê Şîn @@ -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-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml index 124521cc27..10b4d7964e 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 1601ed5735..3ef73dd456 100644 --- a/app/src/main/res/values-no-rNO/strings.xml +++ b/app/src/main/res/values-no-rNO/strings.xml @@ -1,7 +1,7 @@ - Cancel + Avbryt Lukk Tilbakestill Lagre @@ -14,15 +14,15 @@ 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. + Velg minst en 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 root version? Just hit the button below, else tap to continue + La oss komme i gang + 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. - Changelog + Om %1$s + Tap on the card to see the changelog. + Endringslogg Laster ned %1$s Installer Reinstaller @@ -33,7 +33,7 @@ Utilgjengelig Oppdater Nyttige lenker - Support US! + Support us! Aksentfarge Blå @@ -41,8 +41,8 @@ Lilla Rød Gul - Appearance - Behaviour + Utseende + Behavior Fjern nedlastede filer Successfully cleared files Firebase analyser @@ -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? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? Checking for updates… 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 + 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 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) + 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) Feil - Redownload - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server or the Vanced GitHub + Last ned på nytt + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub Suksess! %1$s Installation Preferences Vanced har blitt installert! Åpne nå? - Version + Versjon Vanced Music har blitt installert! Åpne nå? Please be patient… Å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. + Failed to `chown` APK to system owner, please try again. 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. + 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. 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 a0b94b0db0..3325f2976c 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 ਸਥਾਪਨਾ @@ -33,7 +33,7 @@ ਮੋਜੂਦ ਨਹੀਂ ਹੈ ਅੱਪਡੇਟ ਉਪਯੋਗੀ ਲਿੰਕ - ਸਾਨੂੰ ਸਹਿਯੋਗ ਕਰੋ! + Support us! ਐੱਕਸੈਂਟ ਰੰਗ ਨੀਲਾ @@ -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-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index 26ddb4d6e9..a2e4368eec 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, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. 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ć + Willing to use the root version? Just hit the button below, else tap to continue O %1$s - Kliknij kartę, aby zobaczyć listę zmian. + Tap on the card to see the changelog. Lista zmian Pobieranie %1$s Zainstaluj @@ -33,7 +33,7 @@ Niedostępne Aktualizuj Przydatne linki - Wspomóż nas! + Support us! Kolor Akcentu Niebieski @@ -42,7 +42,7 @@ Czerwony Żółty Wygląd - Zachowanie + Behavior Wyczyść pobrane pliki Pomyślnie wyczyszczono pliki Analityka Firebase @@ -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ć? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? 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. + 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 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) + 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) Błąd Pobierz ponownie - Upewnij się, że pobrałeś aplikację z vancedapp.com, serwera Discord Vanced lub GitHub\'a + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the 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. + Failed to `chown` APK to system owner, please try again. 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. + 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. 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-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 8de9d5d0aa..066edff983 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 67b5ed045b..4baf749ba2 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -5,7 +5,7 @@ Fechar Resetar Guardar - Seleciona as tuas aplicações + Selecione as suas aplicações Sobre Gestor @@ -15,13 +15,13 @@ Is Your Device Rooted? Conceder permissão de root Selecione pelo menos uma aplicação! - 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 - Pronto para usar a versão root? Clica no botão abaixo ou então clica no botão de continuar + Willing to use the root version? Just hit the button below, else tap to continue Acerca de %1$s - Toque no cartão para ver a lista de alterações. + Tap on the card to see the changelog. Lista de alterações Transferindo %1$s Instalar @@ -33,7 +33,7 @@ Indisponível Atualizar Links Importantes - Apoie-nos! + Support us! Cor de Destaque Azul @@ -42,7 +42,7 @@ Vermelho Amarelo Aparência - Comportamento + Behavior Limpar ficheiros descarregados Arquivos limpos com sucesso Firebase Analytics @@ -63,7 +63,7 @@ Advanced %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? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? A procurar por atualizações… Língua(s): %1$s Tema: %1$s @@ -71,12 +71,12 @@ 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. + 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 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) + 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) Erro Voltar a descarregar - 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 Sucesso! %1$s Installation Preferences O Vanced foi instalado com sucesso! Abrir agora? @@ -94,15 +94,15 @@ Fontes Equipa Vanced - Falha ao mudar o proprietário do apk para o sistema, tente novamente. + Failed to `chown` APK to system owner, please try again. 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. + 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 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 d7b52ec80f..04f067d1d4 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. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. 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 + Willing to use the root version? Just hit the button below, else tap to continue Despre %1$s - Apăsați pe card pentru a vedea schimbările. + Tap on the card to see the changelog. Schimbări Se descarcă %1$s Instalează @@ -33,7 +33,7 @@ Indisponibil Actualizare Link-uri folositoare - Susțineți-ne! + Support us! Nuanță culoare Albastru @@ -42,7 +42,7 @@ Roşu Galben Aspect - Comportament + Behavior Ştergeţi fişierele descărcate Fişiere şterse cu succes Statistici Firebase @@ -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 detected that all necessary files for %1$s installation were found. Do you want to install it? 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. + 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! - 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) + 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) Eroare Redescărcare - Asigură-te că ai descărcat aplicația de pe vancedapp.com, serverul Discord Vanced sau GitHub Vanced + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub 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. + Failed to `chown` APK to system owner, please try again. 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. + 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. 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 f3a108f3b5..3574faf7ff 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 1c14e57294..899d8e6429 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! + 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 2348a89b72..1ed8f7a7a8 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 Инсталација @@ -33,7 +33,7 @@ Недоступно Ажурирај Корисни линкови - Подржите нас! + Support us! Боја наглашавања Плава @@ -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 fedb85c70c..af1517a052 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 @@ கிடைக்கவில்லை புதுப்பை பயனுள்ள இணைப்புகள் - எங்களை ஆதரியுங்கள்! + Support us! கவனங்கவர் நிறம் நீலம் @@ -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-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml index fd0f914bcd..6bcdae835d 100644 --- a/app/src/main/res/values-tr-rTR/strings.xml +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -15,13 +15,13 @@ 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, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + YouTube Vanced, temelde YouTube Android Uygulamasıdır, ancak orjinalinden 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 + Willing to use the root version? Just hit the button below, else tap to continue %1$s Hakkında - Değişiklikleri görmek için karta dokunun. + Tap on the card to see the changelog. Değişiklikler %1$s indiriliyor Yükle @@ -33,7 +33,7 @@ Mevcut değil Güncelle Yararlı Bağlantılar - Bizi Destekle! + Support us! Tema Rengi Mavi @@ -42,7 +42,7 @@ Kırmızı Sarı Görünüm - Davranış + Behavior İndirilen dosyaları temizle Dosyalar başarıyla temizlendi Firebase Analizi @@ -63,7 +63,7 @@ Gelişmiş %1$s kurulum dosyası algılandı! - Manager, %1$s kurulumu için gerekli tüm dosyaların bulunduğunu tespit etti. Yüklemek ister misiniz? + Manager detected that all necessary files for %1$s installation were found. Do you want to install it? Güncellemeler denetleniyor… Dil(ler): %1$s Tema: %1$s @@ -71,12 +71,12 @@ 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. + 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 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) + 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) Hata Yeniden indir - Uygulamayı vancedapp.com, Vanced Discord sunucusu veya Vanced GitHub\'dan indirdiğinizden emin olun + Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub Başarılı! %1$s Kurulum Tercihleri Vanced başarıyla yüklendi! Şimdi açılsın mı? @@ -94,15 +94,15 @@ Kaynaklar Vanced Ekibi - Apk sistem sahibine değiştirilemedi, lütfen tekrar deneyin. + Failed to `chown` APK to system owner, please try again. %1$s İndirilemedi %1$s paketi kaldırılamadı Yükleme için gerekli dosyalar bulunamadı. Yükleme dosyalarını yeniden indirip tekrar deneyin. Depolamada siyah/koyu tema için apk dosyası bulunamadı, lütfen tekrar deneyin. - Kullanıcı yüklemeyi iptal ettiği için yükleme başarısız oldu. - Kullanıcı yüklemeyi engellediği için yükleme başarısız oldu. - Kullanıcı paketi eski sürüme düşürmeye çalıştığı için yükleme başarısız oldu. Stok YouTube uygulamasından güncellemeleri kaldırıp tekrar deneyin. - Uygulama önceden yüklenmiş bir uygulamayla çakıştığından yükleme başarısız oldu. Mevcut Vanced sürümünü kaldırıp tekrar deneyin. + 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. Yükleme bilinmeyen nedenlerle başarısız oldu, daha fazla destek için Telegram veya Discord\'a katılın. Yükleme dosyası cihazınızla uyumlu olmadığından yükleme başarısız oldu. İndirilen dosyaları Ayarlar\'dan temizleyip tekrar deneyin. Apk dosyaları bozuk olduğundan yükleme başarısız oldu, lütfen tekrar deneyin. diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml index 6b09adfcf2..cae11f21c7 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відносно менше можливостей, але задовольняє ваші потреби. + Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. YouTube Vanced - це стандартний Android YouTube додаток, але краще! Почнімо - Хочете використовувати 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 @@ Недоступно Оновити Корисні сторінки - Підтримайте нас! + Support us! Вторинний колір Синій @@ -42,7 +42,7 @@ Червоний Жовтий Вигляд - Поведінка + Behavior Очистити завантажені файли Файли було успішно очищено Аналітика Firebase @@ -63,7 +63,7 @@ Розширені Знайдено %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 в налаштуваннях розробника. (Ви можете проігнорувати це попередження, якщо ви використовуєте прошивку xiaomi.eu на версії 20.2.20+) + 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, Discord сервера Vanced або з GitHub Vanced + 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 - Не вдалося передати 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. Інсталяція була провалена з невідомих причин. Приєднуйтесь до нашої групи в 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 d2f77456b1..da12459fa9 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. From 48f376a24691fc1cdc1cc136da4cfccfbc6f54e2 Mon Sep 17 00:00:00 2001 From: Xinto Date: Mon, 16 Nov 2020 15:52:23 +0400 Subject: [PATCH 47/48] small updates --- .../vanced/manager/core/downloader/VancedDownloader.kt | 2 +- .../vanced/manager/ui/fragments/GrantRootFragment.kt | 1 + .../java/com/vanced/manager/utils/PackageHelper.kt | 2 +- app/src/main/res/layout/fragment_grant_root.xml | 10 ++++++++++ app/src/main/res/values/resources.xml | 3 +++ app/src/main/res/values/strings.xml | 2 +- 6 files changed, 17 insertions(+), 3 deletions(-) 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 c6b92c716f..affbe1eca3 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 @@ -82,7 +82,7 @@ object VancedDownloader: CoroutineScope by CoroutineScope(Dispatchers.IO) { "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?") } 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 9006cf680d..ca7cc51490 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 @@ -42,6 +42,7 @@ class GrantRootFragment : BindingFragment() { 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() } 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 741e06e2f9..aa6c1cd783 100644 --- a/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt +++ b/app/src/main/java/com/vanced/manager/utils/PackageHelper.kt @@ -466,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() diff --git a/app/src/main/res/layout/fragment_grant_root.xml b/app/src/main/res/layout/fragment_grant_root.xml index fdcc58bcf0..9138b57580 100644 --- a/app/src/main/res/layout/fragment_grant_root.xml +++ b/app/src/main/res/layout/fragment_grant_root.xml @@ -44,6 +44,16 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/grant_root_fab"/> + + 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 e64259be39..d98afdf4ff 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -21,7 +21,7 @@ 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 + Don\'t know what this is or don\'t want to use the root version? just click the blue arrow below! About %1$s From e2c6163b197ceafde0dd9936ee90cdbf39c83ab6 Mon Sep 17 00:00:00 2001 From: KevinX8 Date: Mon, 16 Nov 2020 13:36:23 +0000 Subject: [PATCH 48/48] New Crowdin updates (#261) * New translations strings.xml (Turkish) * New translations strings.xml (Azerbaijani) * New translations strings.xml (Norwegian) * New translations strings.xml (Punjabi) * New translations strings.xml (Polish) * New translations strings.xml (Portuguese) * New translations strings.xml (Ukrainian) * New translations strings.xml (Indonesian) * New translations strings.xml (Tamil) * New translations strings.xml (Hindi) * New translations strings.xml (Georgian) * New translations strings.xml (Sinhala) * New translations strings.xml (Bengali, India) * New translations strings.xml (Sorani (Kurdish)) * New translations strings.xml (Marathi) * New translations strings.xml (Thai) * New translations strings.xml (Croatian) * New translations strings.xml (Estonian) * New translations strings.xml (Kurmanji (Kurdish)) * New translations strings.xml (Pashto) * New translations strings.xml (Korean) * New translations strings.xml (Japanese) * New translations strings.xml (German) * New translations strings.xml (Romanian) * New translations strings.xml (Kurdish) * New translations strings.xml (Serbian (Cyrillic)) * New translations strings.xml (Arabic) * New translations strings.xml (Bengali) * New translations strings.xml (French) * New translations strings.xml (Italian) * New translations strings.xml (Spanish) * New translations strings.xml (Catalan) * New translations strings.xml (Greek) * New translations strings.xml (Finnish) * New translations strings.xml (Hebrew) * New translations strings.xml (Hungarian) * New translations strings.xml (Punjabi, Pakistan) --- app/src/main/res/values-ar-rSA/strings.xml | 28 ++--- app/src/main/res/values-az-rAZ/strings.xml | 2 +- app/src/main/res/values-bn-rBD/strings.xml | 6 +- app/src/main/res/values-bn-rIN/strings.xml | 28 ++--- app/src/main/res/values-ca-rES/strings.xml | 10 +- app/src/main/res/values-ckb-rIR/strings.xml | 2 +- app/src/main/res/values-de-rDE/strings.xml | 28 ++--- app/src/main/res/values-el-rGR/strings.xml | 30 +++--- app/src/main/res/values-es-rES/strings.xml | 6 +- app/src/main/res/values-et-rEE/strings.xml | 114 ++++++++++++++++++++ app/src/main/res/values-fi-rFI/strings.xml | 30 +++--- app/src/main/res/values-fr-rFR/strings.xml | 2 +- app/src/main/res/values-hi-rIN/strings.xml | 2 +- app/src/main/res/values-hr-rHR/strings.xml | 114 ++++++++++++++++++++ app/src/main/res/values-hu-rHU/strings.xml | 2 +- app/src/main/res/values-in-rID/strings.xml | 34 +++--- app/src/main/res/values-it-rIT/strings.xml | 18 ++-- app/src/main/res/values-iw-rIL/strings.xml | 2 +- app/src/main/res/values-ja-rJP/strings.xml | 2 +- app/src/main/res/values-ka-rGE/strings.xml | 10 +- app/src/main/res/values-kmr-rTR/strings.xml | 114 ++++++++++++++++++++ app/src/main/res/values-ko-rKR/strings.xml | 8 +- app/src/main/res/values-ku-rTR/strings.xml | 2 +- app/src/main/res/values-mr-rIN/strings.xml | 114 ++++++++++++++++++++ app/src/main/res/values-no-rNO/strings.xml | 52 ++++----- app/src/main/res/values-pa-rIN/strings.xml | 2 +- app/src/main/res/values-pa-rPK/strings.xml | 114 ++++++++++++++++++++ app/src/main/res/values-pl-rPL/strings.xml | 28 ++--- app/src/main/res/values-ps-rAF/strings.xml | 114 ++++++++++++++++++++ app/src/main/res/values-pt-rPT/strings.xml | 40 +++---- app/src/main/res/values-ro-rRO/strings.xml | 28 ++--- app/src/main/res/values-si-rLK/strings.xml | 2 +- app/src/main/res/values-sr-rSP/strings.xml | 2 +- app/src/main/res/values-ta-rIN/strings.xml | 2 +- app/src/main/res/values-th-rTH/strings.xml | 114 ++++++++++++++++++++ app/src/main/res/values-tr-rTR/strings.xml | 32 +++--- app/src/main/res/values-uk-rUA/strings.xml | 28 ++--- 37 files changed, 1032 insertions(+), 234 deletions(-) create mode 100644 app/src/main/res/values-et-rEE/strings.xml create mode 100644 app/src/main/res/values-hr-rHR/strings.xml create mode 100644 app/src/main/res/values-kmr-rTR/strings.xml create mode 100644 app/src/main/res/values-mr-rIN/strings.xml create mode 100644 app/src/main/res/values-pa-rPK/strings.xml create mode 100644 app/src/main/res/values-ps-rAF/strings.xml create mode 100644 app/src/main/res/values-th-rTH/strings.xml diff --git a/app/src/main/res/values-ar-rSA/strings.xml b/app/src/main/res/values-ar-rSA/strings.xml index 8bd653564d..f2b78eb499 100644 --- a/app/src/main/res/values-ar-rSA/strings.xml +++ b/app/src/main/res/values-ar-rSA/strings.xml @@ -15,13 +15,13 @@ هل جهازك مروت؟ امنح صلاحيات الروت حدد تطبيق واحد على الأقل! - Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + ڤانسد، ولكن لموسيقى يوتيوب! \n نسبياً فيه مميزات أقل ولكن يلبي احتياجاتك. يوتيوب ڤانسد هو يوتيوب الأندرويد العادي، ولكن أفضل! فلنبدأ - 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 @@ غير متاح تحديث روابط مفيدة - Support us! + ادعمنا بتريق تنزيل بريف الألوان أزرق @@ -42,7 +42,7 @@ أحمر أصفر المظهر - Behavior + السلوك مسح الملفات التي تم تنزيلها تم مسح الملفات بنجاح تحليلات Firebase @@ -63,7 +63,7 @@ إعدادات متقدمة تم اكتشاف ملفات تثبيت %1$s! - Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + اكتشف المدير أن جميع الملفات اللازمة لتثبيت %1$s موجودة. هل تريد التثبيت؟ جارٍ التحقق من وجود تحديثات… اللغة/اللغات: %1$s السمة: %1$s @@ -71,12 +71,12 @@ الدليل إيقاف! جاري تثبيت %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. + يبدو أنك تستخدم إصدار ماجيسك/TWRP من ڤانسد، الذي قد تم إيقافه ولا يمكن تحديثه بإستخدام هذا التطبيق. الرجاء إزالته أولاً من قائمة إضافات ماجيسك أو بإستخدام أداة إلغاء تثبيت ڤانسد من TWRP. تم اكتشاف MIUI! - 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) + من أجل تثبيت ڤانسد، عليك تعطيل تحسينات MIUI في إعدادات المطور. (يمكنك تجاهل هذه الرسالة إذا كنت تستخدم نسخة رقم 20.2.20 أو أجدد تستند إلى نسخة نظام شاومي أوروبا) خطأ إعادة التنزيل - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + تأكد من أنك قمت بتنزيل التطبيق من موقع vancedapp.com، أو خادم الديسكورد لڤانسد أو Vanced GitHub نجاح! تفضيلات تثبيت %1$s تم تثبيت ڤانسد بنجاح! افتح الآن؟ @@ -94,15 +94,15 @@ المصادر فريق ڤانسد - Failed to `chown` APK to system owner, please try again. + فشل تغيير ملكية حزمة التثبيت الى مالك النظام، الرجاء المحاولة مرة أخرى. خطأ في تنزيل %1$s فشل في الغاء تثبيت الحزمة %1$s فشل العثور على الملفات المطلوبة للتثبيت. أعد تحميل ملفات التثبيت، ثم حاول مرة أخرى. فشل العثور على حزمة تثبيت السمة السوداء/المظلمة من وحدة التخزين، الرجاء المحاولة مرة أخرى. - 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-az-rAZ/strings.xml b/app/src/main/res/values-az-rAZ/strings.xml index 83fc84ae01..a2eb181fff 100644 --- a/app/src/main/res/values-az-rAZ/strings.xml +++ b/app/src/main/res/values-az-rAZ/strings.xml @@ -33,7 +33,7 @@ Əlçatmazdır Yenilə Faydalı Bağlantılar - Support us! + Bizi dəstəklə! Tema rəngi Mavi diff --git a/app/src/main/res/values-bn-rBD/strings.xml b/app/src/main/res/values-bn-rBD/strings.xml index 28369fe42f..cf3f7fc3b7 100644 --- a/app/src/main/res/values-bn-rBD/strings.xml +++ b/app/src/main/res/values-bn-rBD/strings.xml @@ -33,7 +33,7 @@ অনুপলব্ধ আপডেট উপকারী লিংকগুলি - Support us! + আমাদের সমর্থন করো! অ্যাকসেন্ট রঙ নীল @@ -66,11 +66,11 @@ 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 + %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. মিইউআই শনাক্তকৃত! 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) diff --git a/app/src/main/res/values-bn-rIN/strings.xml b/app/src/main/res/values-bn-rIN/strings.xml index b5bc381cf2..9890bef0d2 100644 --- a/app/src/main/res/values-bn-rIN/strings.xml +++ b/app/src/main/res/values-bn-rIN/strings.xml @@ -15,13 +15,13 @@ আপনার ডিভাইসটিতে আপনার রুট অ্যাক্সেস আছে? রুট অনুমতি মঞ্জুর করুন অন্তত একটি অ্যাপ নির্বাচন করুন! - Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + ভ্যান্সড, তবে ইউটিউব মিউজিকের জন্য!\nতুলনামূলকভাবে কম বৈশিষ্ট্যযুক্ত, তবে আপনার চাহিদা পূরণ করবে। ইউটিউব ভ্যান্সড হল স্টক অ্যান্ড্রয়েড ইউটিউব অ্যাপ, তবে আরো ভাল! শুরু করা যাক - 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 @@ অনুপলব্ধ আপডেট উপকারী লিংকগুলি - Support us! + আমাদের সমর্থন করুন! অ্যাকসেন্ট রঙ নীল @@ -42,7 +42,7 @@ লাল হলুদ রূপ - Behavior + আচরণ ডাউনলোড করা ফাইলগুলি মুছে ফেলুন সফলভাবে ফাইলগুলি মুছে ফেলা হয়েছে ফায়ারবেস তথ্য বিশ্লেষণ @@ -63,7 +63,7 @@ উন্নত ইনস্টল করার জন্য %1$s ফাইল খুঁজে পাওয়া গেছে! - Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + %1$s ইনস্টল করার জন্য প্রয়োজনীয় সমস্ত ফাইলগুলি ম্যানেজার খুঁজে পেয়েছে। আপনি কি ইনস্টল করতে চান? আপডেটের জন্য চেক করা হচ্ছে… ভাষা(গুলি): %1$s থিম: %1$s @@ -71,12 +71,12 @@ সহায়িকা থামুন! %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. + আপনি ভ্যান্সড ম্যাজিস্ক/TWRP সংস্করণ ব্যবহার করছেন যা বন্ধ হয়ে গেছে এবং আপনি এটিকে আপডেট করতে পারবেন না। দয়া করে ম্যাজিস্ক মডিউলটি সরিয়ে/TWRP ভ্যান্সড আনইনস্টলার ব্যবহার করে এটি মুছে ফেলুন। মিআইইউআই শনাক্তকৃত! - 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) + ভ্যান্সড ইনস্টল করার জন্য, আপনাকে সেটিংসে ডেভেলপারের বিকল্পে গিয়ে MIUI অপটিমাইজেশন নিস্ক্রিয় করতে হবে। (আপনি যদি ২০.২.২০ বা তার পরে xiaomi.eu ভিত্তিক রম ব্যবহার করেন তবে আপনি এই সতর্কতাটিকে এড়িয়ে যেতে পারেন) ত্রুটি পুনরায় ডাউনলোড করুন - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + নিশ্চিত করুন যে আপনি অ্যাপটি vancedapp.com, ভ্যান্সড ডিসকার্ড সার্ভার বা ভ্যান্সড গিটহাব থেকে ডাউনলোড করেছেন সফল! %1$s ইনস্টল করার পছন্দগুলি ভ্যান্সড সফলভাবে ইনস্টল করা হয়েছে! এখন চালু করুন? @@ -94,15 +94,15 @@ উৎসগুলি ভ্যান্সড টীম - Failed to `chown` APK to system owner, please try again. + System owner কে APK `chown` করতে ব্যর্থ, দয়া করে আবার চেষ্টা করুন। %1$s ডাউনলোড করার সময় ত্রুটি %1$s পেকেজ আন‌ইনস্টল করা যাইনি ইনস্টলেশনের জন্য প্রয়োজনীয় ফাইলগুলি খুঁজে পাওয়া যায় নি। ইনস্টল করার জন্য ফাইলগুলি পুনরায় ডাউনলোড করুন, তারপরে আবার চেষ্টা করুন। স্টোরেজ থেকে কালো/গাঢ় থিমের জন্য এপিকে ফাইল সনাক্ত করতে ব্যর্থ, দয়া করে আবার চেষ্টা করুন। - 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-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml index 605c22cb0d..142373e5bf 100644 --- a/app/src/main/res/values-ca-rES/strings.xml +++ b/app/src/main/res/values-ca-rES/strings.xml @@ -8,7 +8,7 @@ Select Your Apps Quant a - Manager + Gestor Configuració Update Manager @@ -33,7 +33,7 @@ No disponible Actualitza Enllaços d\'interès - Support us! + Doneu-nos suport! Color d\'èmfasi Blau @@ -58,7 +58,7 @@ %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 @@ -66,11 +66,11 @@ 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 + 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! 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) diff --git a/app/src/main/res/values-ckb-rIR/strings.xml b/app/src/main/res/values-ckb-rIR/strings.xml index a1b37069d7..4ef1fcc4cf 100644 --- a/app/src/main/res/values-ckb-rIR/strings.xml +++ b/app/src/main/res/values-ckb-rIR/strings.xml @@ -33,7 +33,7 @@ بەردەست نیە نوێکردنەوە کراوە بە کوردی لەلایەن: گۆران غەریب(کوردرۆید) - Support us! + پشتگیریکردن! ڕەنگی سەرەکی شین diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 114c4d93e8..8ba7098f35 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, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + 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 - Willing to use the root version? Just hit the button below, else tap to continue + Möchten Sie die Root-Version verwenden? Tippen Sie einfach auf die Schaltfläche unten, sonst tippen Sie um fortzufahren Über %1$s - Tap on the card to see the changelog. + 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 - Support us! + Unterstütze uns! Akzentfarbe Blau @@ -42,7 +42,7 @@ Rot Gelb Darstellung - Behavior + Verhalten Heruntergeladene Dateien löschen Daten erfolgreich gelöscht Firebase-Analyse @@ -63,7 +63,7 @@ Erweitert %1$s Installationsdateien erkannt! - Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + 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 @@ -71,12 +71,12 @@ Erklärung Stop! %1$s wird installiert - 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. + 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! - 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) + 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 - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + 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 - Failed to `chown` APK to system owner, please try again. + 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 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 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 dbb8edc05e..337ae4bb19 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, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + Vanced, αλλά για το YouTube Music!\nΣχετικά λιγότερες δυνατότητες, αλλά καλύπτει τις ανάγκες σας. Το YouTube Vanced είναι το όπως την αρχική εφαρμογή YouTube, αλλά καλύτερο! Ας ξεκινήσουμε - Willing to use the root version? Just hit the button below, else tap to continue + Θέλετε να χρησιμοποιήσετε την έκδοση root; Πατήστε απλά το παρακάτω κουμπί, αλλιώς πατήστε το βέλος για συνέχεια Σχετικά με το %1$s - Tap on the card to see the changelog. + Πατήστε στην καρτέλα για να δείτε το αρχείο αλλαγών. Αρχείο καταγραφής αλλαγών Λήψη %1$s Εγκατάσταση @@ -33,7 +33,7 @@ Μη διαθέσιμο Ενημέρωση Χρήσιμοι σύνδεσμοι - Support us! + Υποστηρίξτε μας! Χρώμα Διεπαφής Μπλε @@ -42,7 +42,7 @@ Κόκκινο Κίτρινο Εμφάνιση - Behavior + Συμπεριφορά Εκκαθάριση ληφθέντων αρχείων Επιτυχής εκκαθάριση αρχείων Firebase Analytics @@ -63,7 +63,7 @@ Για προχωρημένους Ανιχνεύτηκαν τα αρχεία εγκατάστασης του %1$s! - Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + Ο Διαχειριστής του Vanced ανίχνευσε ότι βρέθηκαν όλα τα απαραίτητα αρχεία για την εγκατάσταση του %1$s. Θέλετε να εγκατασταθεί; Έλεγχος για ενημερώσεις… Γλώσσα(/ες): %1$s Θέμα: %1$s @@ -71,12 +71,12 @@ Οδηγίες Σταματήστε! Εγκατάσταση του %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. + Χρησιμοποιείτε την έκδοση Magisk/TWRP του Vanced, η οποία δεν υποστηρίζεται πλέον και δεν μπορεί να ενημερωθεί μέσω αυτής της εφαρμογής. Παρακαλούμε αφαιρέστε αυτή την έκδοση αφαιρώντας το Magisk Module/χρησιμοποιόντας το πρόγραμμα κατάργησης TWRP Vanced. Ανιχνεύτηκε MIUI! - 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, ΠΡΕΠΕΙ να απενεργοποιήσετε τις Βελτιστοποιήσεις MIUI στις ρυθμίσεις για προγραμματιστές. (Μπορείτε να αγνοήσετε αυτή την προειδοποίηση αν χρησιμοποιείτε την έκδοση ROM 20.2.20 ή μεταγενέστερη, βάσει του xiaomi.eu) Σφάλμα Επανάληψη λήψης - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + Βεβαιωθείτε ότι κάνατε λήψη της εφαρμογής από το vancedapp.com, τον διακομιστή Discord του Vanced ή το GitHub του Vanced Επιτυχία! Προτιμήσεις Εγκατάστασης του %1$s Το Vanced έχει εγκατασταθεί επιτυχώς! Εκκίνηση τώρα; @@ -94,15 +94,15 @@ Πηγές Η ομάδα του Vanced - Failed to `chown` APK to system owner, please try again. + Αποτυχία παραχώρησης ιδιοκτησίας του APK στον κάτοχο συστήματος, παρακαλούμε προσπαθείστε ξανά. Σφάλμα λήψης του %1$s Αποτυχία απεγκατάστασης πακέτου %1$s Αδυναμία εντοπισμού των απαιτούμενων αρχείων για την εγκατάσταση. Κατεβάστε τα αρχεία εγκατάστασης, και προσπαθήστε ξανά. Αδυναμία εντοπισμού του αρχείου apk σκουρόχρωμου/απολύτου μαύρου θέματος στον αποθηκευτικό χώρο, παρακαλώ προσπαθήστε ξανά. - 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. + Η εγκατάσταση απέτυχε διότι ο χρήστης ακύρωσε την εγκατάσταση. + Η εγκατάσταση απέτυχε διότι ο χρήστης απέκλεισε την εγκατάσταση. + Η εγκατάσταση απέτυχε διότι ο χρήστης προσπάθησε να υποβαθμίσει το πακέτο. Απεγκαταστήστε τις ενημερώσεις της αρχικής εφαρμογής YouTube, στη συνέχεια προσπαθήστε ξανά. + Η εγκατάσταση απέτυχε διότι η εφαρμογή αντικρούεται με μια ήδη εγκατεστημένη εφαρμογή. Απεγκαταστήστε την τρέχουσα έκδοση του Vanced, στην συνέχεια προσπαθήστε ξανά. Η εγκατάσταση απέτυχε για άγνωστους λόγους, παρακαλούμε μπείτε στο Telegram ή στο Discord μας για περαιτέρω βοήθεια. Η εγκατάσταση απέτυχε διότι το αρχείο εγκατάστασης είναι μη συμβατό με την συσκευή σας. Κάντε εκκαθάριση των ληφθέντων αρχείων στις ρυθμίσεις, στην συνέχεια προσπαθήστε ξανά. Η εγκατάσταση απέτυχε διότι τα αρχεία apk έχουν διαφθαρεί, παρακαλώ προσπαθήστε ξανά. diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 9be9ca0f35..22d21c86bb 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -10,13 +10,13 @@ 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 haz clic en el botón de abajo, si no, toca para continuar 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 0000000000..3da03e0b58 --- /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 395828ac98..16750c7380 100644 --- a/app/src/main/res/values-fi-rFI/strings.xml +++ b/app/src/main/res/values-fi-rFI/strings.xml @@ -15,13 +15,13 @@ Onko laitteesi rootattu? Anna root-oikeudet Valitse ainakin yksi sovellus! - Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + Vanhentunut, mutta YouTube Music!\nsuhteellisen vähemmän ominaisuus-rikas, mutta täyttää tarpeesi. YouTube Vanced on Androidin Youtube-vakiosovellus, mutta parempi! Aloitetaan - Willing to use the root version? Just hit the button below, else tap to continue + Haluaisitko käyttää juuriversiota? Paina vain alla olevaa painiketta, muuta napauta jatkaaksesi %1$s-tietoja - Tap on the card to see the changelog. + Napauta korttia nähdäksesi muutoslokin. Muutoshistoria Ladataan %1$s Asenna @@ -33,7 +33,7 @@ Ei saatavilla Päivitä Hyödyllisiä linkkejä - Support us! + Tue meitä! Aksenttiväri Sininen @@ -42,7 +42,7 @@ Punainen Keltainen Ulkoasu - Behavior + Käyttäytyminen Tyhjennä ladatut tiedostot Tiedostot tyhjennettiin onnistuneesti Firebase-analytiikka @@ -62,8 +62,8 @@ Variaatio Kehittyneet - %1$s installation files detected! - Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + %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,12 +71,12 @@ Opas Pysähdy! Asennetaan %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. + 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! - 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) + 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 asennusasetukset Vanced on asennettu onnistuneesti! Avaa nyt? @@ -94,15 +94,15 @@ Lähdekoodi Vanced kehitystiimi - Failed to `chown` APK to system owner, please try again. + 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. - 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. + Asennus epäonnistui, koska käyttäjä keskeytti asennuksen. + 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 db8ee0cd60..ec37726756 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -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 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 58f259eff3..46d8b05719 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -33,7 +33,7 @@ अनुपलब्ध अद्यतन करें उपयोगी लिंक्स - Support us! + हमें सपॉर्ट कीजिये! एक्सेंट रंग नीला 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 0000000000..a8b3a39618 --- /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 abfdb30409..178dd5cc9f 100644 --- a/app/src/main/res/values-hu-rHU/strings.xml +++ b/app/src/main/res/values-hu-rHU/strings.xml @@ -33,7 +33,7 @@ Nem elérhető Frissítés Hasznos hivatkozások - Support us! + Támogasson bennünket! Kiemelés színe Kék diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml index a974396edb..ed8044a255 100644 --- a/app/src/main/res/values-in-rID/strings.xml +++ b/app/src/main/res/values-in-rID/strings.xml @@ -15,13 +15,13 @@ Apakah Perangkat Anda Mempunyai Root? Berikan Izin Root Pilih setidaknya satu aplikasi! - Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. - YouTube Vanced adalah aplikasi YouTube untuk Android, tetapi lebih baik! - Mari kita mulai - Willing to use the root version? Just hit the button below, else tap to continue + 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 - Tap on the card to see the changelog. + Ketuk kartu untuk melihat catatan perubahan. Catatan perubahan Mengunduh %1$s Pasang @@ -33,7 +33,7 @@ Tidak tersedia Perbarui Tautan Berguna - Support us! + Dukung kami! Aksen Warna Biru @@ -42,7 +42,7 @@ Merah Kuning Penampilan - Behavior + Perilaku Hapus file yang diunduh Berhasil menghapus file Analisis Firebase @@ -61,9 +61,9 @@ Tidak ada pembaruan Varian - Maju + Tingkat Lanjut %1$s file instalasi terdeteksi! - Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + 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 - 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. + 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! - 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) + 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 - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the 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,15 +94,15 @@ Sumber Tim Vanced - Failed to `chown` APK to system owner, please try again. + 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. Gagal untuk menemukan file apk untuk tema hitam/gelap dari penyimpanan, mohon coba lagi. - 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. + 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 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 3759a45176..ae3ef70abd 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -15,13 +15,13 @@ 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 funzionalità, ma soddisfa le tue esigenze. + 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 - Vuoi usare la versione root? Basta premere il pulsante in basso, altrimenti tappa per continuare + Vuoi utilizzare la versione root? Basta premere il pulsante in basso, altrimenti tocca per continuare Informazioni su %1$s - Tappa sulla scheda per vedere le novità. + Tocca la scheda per leggere le novità. Novità Download in corso di %1$s Installa @@ -71,9 +71,9 @@ 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 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) + 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 Discord di Vanced o dalla pagina GitHub di Vanced @@ -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 perché l\'utente ha annullato l\'installazione. - Installazione non riuscita perché l\'utente ha bloccato l\'installazione. - Installazione non riuscita perché l\'utente ha provato a eseguire il downgrade del pacchetto. Disinstalla gli aggiornamenti dell\'app predefinita di YouTube, poi riprova. - Installazione non riuscita perché 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 c249a15479..840c8a8116 100644 --- a/app/src/main/res/values-iw-rIL/strings.xml +++ b/app/src/main/res/values-iw-rIL/strings.xml @@ -33,7 +33,7 @@ אינו זמין עדכן קישורים שימושיים - Support us! + תמכו בנו! צבע הדגשה כחול diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index a4de141d90..3475a2b258 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -33,7 +33,7 @@ 利用不可 更新 リンク集 - Support us! + Brave をダウンロードして支援する アクセントカラー diff --git a/app/src/main/res/values-ka-rGE/strings.xml b/app/src/main/res/values-ka-rGE/strings.xml index 43453c7bbe..5d24fee537 100644 --- a/app/src/main/res/values-ka-rGE/strings.xml +++ b/app/src/main/res/values-ka-rGE/strings.xml @@ -8,7 +8,7 @@ Select Your Apps შესახებ - Manager + მენეჯერი პარამეტრები Update Manager @@ -33,7 +33,7 @@ ხელმიუწვდომელია განახლება საჭირო ლინკები - Support us! + დაგვიჭირეთ მხარი Brave-ის გადმოწერით აქცენტის ფერი ლურჯი @@ -58,7 +58,7 @@ %1$s Push Notifications Receive push notifications when an update for %1$s is released განახლების ცენტრი - No new updates + განახლება არ არის აღმოჩენილი Variant Advanced @@ -66,11 +66,11 @@ 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 + მიმდინარეობს %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-ის მომხმარებელი! 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) 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 0000000000..3da03e0b58 --- /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 9ba8f09618..0131b06a39 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -33,7 +33,7 @@ 사용 불가 업데이트 참고할 만한 링크 - Support us! + 우리를 지원해주세요! 강조 색상 파란색 @@ -58,7 +58,7 @@ %1$s 푸시 알림 새로운 %1$s 업데이트가 출시되면 알림 받기 업데이트 센터 - No new updates + 새로운 업데이트 없음 Variant Advanced @@ -66,11 +66,11 @@ 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 + %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 사용자로 보입니다! 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) diff --git a/app/src/main/res/values-ku-rTR/strings.xml b/app/src/main/res/values-ku-rTR/strings.xml index 563263158f..ecbaf3417c 100644 --- a/app/src/main/res/values-ku-rTR/strings.xml +++ b/app/src/main/res/values-ku-rTR/strings.xml @@ -33,7 +33,7 @@ Berdest nîne Hildemîne Girêdanên kêrhatî - Support us! + Piştgiriya me bike! Rengê devokê Şîn 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 0000000000..3da03e0b58 --- /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-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml index 3ef73dd456..b57ae733fe 100644 --- a/app/src/main/res/values-no-rNO/strings.xml +++ b/app/src/main/res/values-no-rNO/strings.xml @@ -5,23 +5,23 @@ Lukk Tilbakestill Lagre - Select Your Apps + Velg dine apper Om - Manager + Leder Innstillinger - Update Manager + Oppdater administrator - Is Your Device Rooted? - Grant Root Permission + Er enheten tilkoblet? + Gi root-tillatelse Velg minst en app! - Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. - YouTube Vanced is the stock Android YouTube App, but better! + 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 - Willing to use the root version? Just hit the button below, else tap to continue + Gå til å bruke rotversjonen? Bare trykk på knappen nedenfor, ellers trykk for å fortsette Om %1$s - Tap on the card to see the changelog. + Trykk på kortet for å se endringsloggen. Endringslogg Laster ned %1$s Installer @@ -33,7 +33,7 @@ Utilgjengelig Oppdater Nyttige lenker - Support us! + Støtt oss! Aksentfarge Blå @@ -42,9 +42,9 @@ Rød Gul Utseende - Behavior + 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 @@ -61,28 +61,28 @@ 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 it? - 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 Tema: %1$s Versjon: %1$s Guide Stopp! Installerer %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. + 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! - 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) + 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 Last ned på nytt - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + 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å? Versjon Vanced Music har blitt installert! Åpne nå? - Please be patient… + Vær tålmodig… Åpne Velkommen @@ -94,15 +94,15 @@ Kilder Vanced Team - Failed to `chown` APK to system owner, please try again. + 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. - 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. + 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 3325f2976c..7bfe131ab9 100644 --- a/app/src/main/res/values-pa-rIN/strings.xml +++ b/app/src/main/res/values-pa-rIN/strings.xml @@ -33,7 +33,7 @@ ਮੋਜੂਦ ਨਹੀਂ ਹੈ ਅੱਪਡੇਟ ਉਪਯੋਗੀ ਲਿੰਕ - Support us! + ਸਾਨੂੰ ਸਹਿਯੋਗ ਕਰੋ! ਐੱਕਸੈਂਟ ਰੰਗ ਨੀਲਾ 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 0000000000..3da03e0b58 --- /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 a2e4368eec..6e59ac187f 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, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + 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 - Willing to use the root version? Just hit the button below, else tap to continue + Czy chcesz użyć wersji głównej? Po prostu naciśnij przycisk poniżej, w przeciwnym razie naciśnij aby kontynuować O %1$s - Tap on the card to see the changelog. + Dotknij karty, aby zobaczyć listę zmian. Lista zmian Pobieranie %1$s Zainstaluj @@ -33,7 +33,7 @@ Niedostępne Aktualizuj Przydatne linki - Support us! + Wesprzyj nas, pobierając Brave Kolor Akcentu Niebieski @@ -42,7 +42,7 @@ Czerwony Żółty Wygląd - Behavior + Zachowanie Wyczyść pobrane pliki Pomyślnie wyczyszczono pliki Analityka Firebase @@ -63,7 +63,7 @@ Opcje zaawansowane Wykryto %1$s plików instalacyjnych! - Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + 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 - 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. + 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! - 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) + 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 - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + 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 - Failed to `chown` APK to system owner, please try again. + 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. - 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. + 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 0000000000..3da03e0b58 --- /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-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 4baf749ba2..b7f8b2e50f 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -12,16 +12,16 @@ 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 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 + 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 - Tap on the card to see the changelog. + 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 - Support us! + Suporte-nos! Cor de Destaque Azul @@ -42,10 +42,10 @@ Vermelho Amarelo Aparência - Behavior + 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! - Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + 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 - 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. + 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! - 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) + 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 - Failed to `chown` APK to system owner, please try again. + 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. - 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 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 04f067d1d4..ca3dc2e00d 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 fulfills 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 - Willing to use the root version? Just hit the button below, else tap to continue + Vrei să folosești versiunea root? Doar apasă butonul de mai jos, altfel apasă pentru a continua Despre %1$s - Tap on the card to see the changelog. + Atinge cardul pentru a vedea schimbarile. Schimbări Se descarcă %1$s Instalează @@ -33,7 +33,7 @@ Indisponibil Actualizare Link-uri folositoare - Support us! + Ajutați-ne! Nuanță culoare Albastru @@ -42,7 +42,7 @@ Roşu Galben Aspect - Behavior + Comportament Ştergeţi fişierele descărcate Fişiere şterse cu succes Statistici Firebase @@ -63,7 +63,7 @@ Avansat %1$s fișiere de instalare detectate! - Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + 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 - 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. + 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! - 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) + 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 - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + 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 - Failed to `chown` APK to system owner, please try again. + 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. - 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. + 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-si-rLK/strings.xml b/app/src/main/res/values-si-rLK/strings.xml index 899d8e6429..910e09f2a9 100644 --- a/app/src/main/res/values-si-rLK/strings.xml +++ b/app/src/main/res/values-si-rLK/strings.xml @@ -33,7 +33,7 @@ නොමැත යාවත්කාලීන කරන්න ප්‍රයෝජනවත් සබැඳි - Support us! + සහයෝගය දක්වන්න අනෙක් වර්ණය නිල් diff --git a/app/src/main/res/values-sr-rSP/strings.xml b/app/src/main/res/values-sr-rSP/strings.xml index 1ed8f7a7a8..23e376cf25 100644 --- a/app/src/main/res/values-sr-rSP/strings.xml +++ b/app/src/main/res/values-sr-rSP/strings.xml @@ -33,7 +33,7 @@ Недоступно Ажурирај Корисни линкови - Support us! + Подржите нас! Боја наглашавања Плава diff --git a/app/src/main/res/values-ta-rIN/strings.xml b/app/src/main/res/values-ta-rIN/strings.xml index af1517a052..7f2cfd58ed 100644 --- a/app/src/main/res/values-ta-rIN/strings.xml +++ b/app/src/main/res/values-ta-rIN/strings.xml @@ -33,7 +33,7 @@ கிடைக்கவில்லை புதுப்பை பயனுள்ள இணைப்புகள் - Support us! + எங்களை ஆதரித்திடுக! கவனங்கவர் நிறம் நீலம் 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 0000000000..8065fe08dc --- /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 6bcdae835d..fd5f28305a 100644 --- a/app/src/main/res/values-tr-rTR/strings.xml +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -15,13 +15,13 @@ Cihazınız Root\'lu mu? Root İzni Ver En az bir uygulama seçin! - Vanced, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. - YouTube Vanced, temelde YouTube Android Uygulamasıdır, ancak orjinalinden 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 - Willing to use the root version? Just hit the button below, else tap to continue + Root sürümünü kullanmak ister misiniz? Sadece aşağıdaki düğmeye basın, yoksa devam etmek için dokunun %1$s Hakkında - Tap on the card to see the changelog. + Değişiklikleri görmek için karta dokunun. Değişiklikler %1$s indiriliyor Yükle @@ -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 - Support us! + Bizi destekle! Tema Rengi Mavi @@ -42,7 +42,7 @@ Kırmızı Sarı Görünüm - Behavior + Davranış İndirilen dosyaları temizle Dosyalar başarıyla temizlendi Firebase Analizi @@ -63,7 +63,7 @@ Gelişmiş %1$s kurulum dosyası algılandı! - Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + Manager, %1$s kurulumu için gerekli tüm dosyaların bulunduğunu tespit etti. Yüklemek ister misiniz? Güncellemeler denetleniyor… Dil(ler): %1$s Tema: %1$s @@ -71,12 +71,12 @@ Kılavuz Durdur! %1$s yükleniyor - 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. + Ü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! - 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\'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 Yeniden indir - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + Uygulamayı vancedapp.com, Vanced Discord sunucusu veya Vanced GitHub\'dan indirdiğinizden emin olun Başarılı! %1$s Kurulum Tercihleri Vanced başarıyla yüklendi! Şimdi açılsın mı? @@ -94,15 +94,15 @@ Kaynaklar Vanced Ekibi - Failed to `chown` APK to system owner, please try again. + Apk sistem sahibine değiştirilemedi, lütfen tekrar deneyin. %1$s İndirilemedi %1$s paketi kaldırılamadı Yükleme için gerekli dosyalar bulunamadı. Yükleme dosyalarını yeniden indirip tekrar deneyin. Depolamada siyah/koyu tema için apk dosyası bulunamadı, lütfen tekrar deneyin. - 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. + Kullanıcı yüklemeyi iptal ettiği için yükleme başarısız oldu. + Kullanıcı yüklemeyi engellediği için yükleme başarısız oldu. + Kullanıcı paketi eski sürüme düşürmeye çalıştığı için yükleme başarısız oldu. Stok YouTube uygulamasından güncellemeleri kaldırıp tekrar deneyin. + Uygulama önceden yüklenmiş bir uygulamayla çakıştığından yükleme başarısız oldu. Mevcut Vanced sürümünü kaldırıp tekrar deneyin. Yükleme bilinmeyen nedenlerle başarısız oldu, daha fazla destek için Telegram veya Discord\'a katılın. Yükleme dosyası cihazınızla uyumlu olmadığından yükleme başarısız oldu. İndirilen dosyaları Ayarlar\'dan temizleyip tekrar deneyin. Apk dosyaları bozuk olduğundan yükleme başarısız oldu, lütfen tekrar deneyin. diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml index cae11f21c7..962933c3d7 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, but for YouTube Music!\nrelatively less feature-rich but fulfills your needs. + Ванс, але для YouTube Music!\nвідносно не багата на можливості, але задовольняє ваші потреби. 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 @@ Недоступно Оновити Корисні сторінки - Support us! + Підтримай нас! Вторинний колір Синій @@ -42,7 +42,7 @@ Червоний Жовтий Вигляд - Behavior + Поведінка Очистити завантажені файли Файли було успішно очищено Аналітика Firebase @@ -63,7 +63,7 @@ Розширені Знайдено %1$s файлів для встановлення! - Manager detected that all necessary files for %1$s installation were found. Do you want to install it? + Виявлено менеджера, що всі необхідні файли для встановлення %1$s були. Бажаєте встановити їх? Перевірка оновлень… Мова(и): %1$s Тема: %1$s @@ -71,12 +71,12 @@ Гайд Зупинись! Встановлення %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. + Ви використовуєте Magisk/TWRP версію Vanced, яка припиняється і не може бути оновлена за допомогою цього застосунку. Будь ласка, видаліть його, видаливши модуль Magisk / з використання TWRP Vanced uninstaller. Виявлено користувача MIUI! - 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, ви ПОВИННІ вимкнути оптимізацію MIUI у налаштуваннях розробника. (Ви можете ігнорувати це попередження якщо ви використовуєте 20.2.20 або новіші xiaomi.eu based ROM) Помилка Завантажити заново - Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub + Переконайтеся, що ви завантажили додаток з vancedapp.com, Vanced Discord сервер або Vanced GitHub Успіх! Параметри встановлення %1$s Vanced був успішно встановлений! Відкрити зараз? @@ -94,15 +94,15 @@ Джерела Команда Vanced - Failed to `chown` APK to system owner, please try again. + Не вдалося створити файл APK системного власника програми, будь ласка, повторіть спробу. Помилка Завантаження %1$s Не вдалося видалити пакет %1$s Не вдалося знайти необхідні файли для встановлення. Повторно завантажте файли і спробуйте ще раз. Не вдалося знайти apk-файл для чорної/темної теми зі сховища, спробуйте ще раз. - 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. + Встановлення не вдалося, оскільки користувач перервав встановлення. + Встановлення не вдалося, оскільки користувач заблокував встановлення. + Помилка встановлення, оскільки користувач намагався знизити пакет. Видаліть оновлення з програми YouTube на складі, а потім спробуйте ще раз. + Помилка встановлення, через конфлікт програми з уже встановленою програмою. Видаліть поточну версію Vanced, а потім спробуйте ще раз. Інсталяція була провалена з невідомих причин. Приєднуйтесь до нашої групи в Telegram або Discord для подальшої підтримки. Помилка встановлення, оскільки файл несумісний з вашим пристроєм. Очистіть завантажені файли в Налаштуваннях, а потім спробуйте ще раз. Встановлення неможливе, оскільки apk-файли пошкоджені, будь ласка, спробуйте ще раз.