0
0
Fork 0
mirror of https://github.com/YTVanced/VancedManager synced 2024-11-15 23:35:06 +00:00

Compare commits

...

22 commits
v2.6.1 ... dev

Author SHA1 Message Date
KevinX8
8b3f2c5e2e
New Crowdin updates (#700)
* New translations strings.xml (Indonesian)

* New translations strings.xml (Croatian)

* New translations strings.xml (Croatian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Croatian)

* New translations strings.xml (Persian)

* New translations strings.xml (Persian)

* New translations strings.xml (Catalan)

* New translations strings.xml (Catalan)

* New translations strings.xml (Russian)

* New translations strings.xml (Russian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Russian)

* New translations strings.xml (Russian)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Bengali)

* New translations strings.xml (German)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Filipino)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (German)

* New translations strings.xml (Russian)

* New translations strings.xml (Belarusian)

* New translations strings.xml (Belarusian)

* New translations strings.xml (Belarusian)

* New translations strings.xml (Odia)

* New translations strings.xml (Odia)

* New translations strings.xml (German)

* New translations strings.xml (Finnish)
2022-03-14 01:11:33 +00:00
Xinto
7421ed9462
Merge pull request #797 from BioGeek/dev
Fix typo
2022-02-27 00:48:22 +04:00
Jeroen Van Goey
2ded1e87dd
Fix typo
user-freindly -> user-friendly
2022-02-17 15:13:12 +01:00
Xinto
dcc3ad9a55
Merge pull request #783 from zamansoum/dev
Added Google Advanced Protection Program instructions
2022-02-04 14:09:15 +04:00
AmineMansoum
42bb94bd84
Fix Typos 2022-02-02 13:08:58 -05:00
AmineMansoum
0db7ddd83a
Added Google Advanced Protection Program notice 2022-02-02 13:07:32 -05:00
Xinto
fc9da62528
Merge pull request #782 from AlphaVS-76/patch-3
Update README.md
2022-02-01 10:19:05 +04:00
Vaibhav Sharma
dd9ffeca18
Update README.md 2022-02-01 09:43:36 +05:30
Xinto
a2720c00fd
Merge pull request #781 from zamansoum/dev
Vanced FAQ not available on the playstore anymore
2022-01-31 12:58:07 +04:00
AmineMansoum
a2d6c1b9de
Vanced FAQ not available on the playstore anymore 2022-01-30 18:33:18 -05:00
Xinto
a170835b1d
Merge pull request #721 from NotWoods/autoupdate
Add background updates on Android 12
2021-10-27 00:29:50 -07:00
Tiger Oakes
9ca0fb789b Updated installSplitApks 2021-10-26 20:11:38 -07:00
Xinto
eb28c6163c
Merge pull request #724 from NotWoods/viewmodel-no-leak
Remove HomeViewModel memory leak
2021-10-25 02:17:33 -07:00
Tiger Oakes
368808de0c Remove viewmodel memory leak 2021-10-24 23:36:47 -07:00
Tiger Oakes
4af47e8de0 Remove lifecycleOwner parameter from DataModel 2021-10-24 13:13:03 -07:00
Tiger Oakes
9a14d0f10c Add background updates on Android 12 2021-10-23 19:21:29 -07:00
X1nto
25f8f800ea update templates 2021-10-11 17:34:57 +04:00
X1nto
851727a1c1 bumped up version 2021-10-11 15:01:38 +04:00
X1nto
7c1dbb654a small optimization 2021-10-11 15:01:15 +04:00
X1nto
7c1392de94 preheat the shell in splash screen 2021-10-11 15:01:07 +04:00
X1nto
9a31f2b7e3 disable busybox 2021-10-11 15:00:51 +04:00
X1nto
f887ba5d6c root installer improvements 2021-10-11 15:00:25 +04:00
36 changed files with 618 additions and 361 deletions

View file

@ -35,5 +35,7 @@ body:
attributes:
label: Additional checks
options:
- label: I have checked other bug reports and this is not a duplicate.
required: true
- label: This is a bug in Vanced Manager and NOT YouTube Vanced/YouTube Vanced Music/Vanced microG.
required: true

View file

@ -23,5 +23,7 @@ body:
attributes:
label: Additional checks
options:
- label: I have checked other feature requests and this is not a duplicate.
required: true
- label: This is a suggestion for Vanced Manager and NOT YouTube Vanced/YouTube Vanced Music/Vanced microG.
required: true

View file

@ -5,23 +5,38 @@
</div>
Hi, when we released Vanced 15.05.54, people were upset because it used the .apks format, which was way harder to install than a traditional .apk file. Even though we wrote clear instructions on how to install the new Vanced build, people still couldn't figure it out.
Then we thought, "why don't we make a manager for vanced, which will download, update and uninstall Vanced and MicroG, have an easy and understandable UI and be less than 10mb?" and that's how Vanced Manager was born.
After 3 months of development, we are finally ready to introduce Vanced Manager to the masses. Vanced manager can easily install and uninstall vanced and microg, has various settings for customisation and better experience. The Manager comes with an easy-to-use interface
## Introduction
##### Background download/installation feature is no longer supported due to problems with some ROMs, please do NOT report issues regarding background activity.
Hi, when we released Vanced 15.05.54, people were upset because it used the .apks format, which was burdensome to install than a traditional .apk file. Even though we wrote clear instructions on how to install the new Vanced build, people still couldn't figure it out.
Then we thought, "why don't we make a manager for vanced, which will download, update and uninstall Vanced and MicroG, have an easy and user-friendly UI and be less than 10mb?" and that's how Vanced Manager was born.
After 3 months of development, we are finally ready to Introduce [Vanced Manager](https://github.com/YTVanced/VancedManager) to the masses!!
## Features
- Vanced manager can easily install and uninstall Vanced and MicroG.
- It has various settings for customization and better experience.
- The Manager comes with an easy-to-use Interface.
</br>
<div class="note">
<p><strong>NOTE: </strong>Background download/installation feature is no longer supported due to problems with some ROMs, please <b>DO NOT</b> report issues regarding background activity.</p>
</div>
<!-- ##### Background download/installation feature is no longer supported due to problems with some ROMs, please do NOT report issues regarding background activity. -->
## Contributions
Pull requests should be made to the Dev branch as that is the working branch, master is for release code.
Pull Requests should be made to the [Dev](https://github.com/YTVanced/VancedManager) Branch as that is the working branch, master is for Release code only.
For anyone who wants to provide translations please submit them to https://crowdin.com/project/vanced-manager as we also use it for YouTube Vanced. Any issues with translations should be posted there too.
For anyone who wants to provide translations please submit them to this [link](https://crowdin.com/project/vanced-manager) as we also use it for YouTube Vanced. Any issues with translations should be posted there too.
## TODO
- [ ] Clean up the ViewModel and DataModel code
- [ ] Migrate to Jetpack Compose when it's officially released
## Building
## Building
<div>
@ -29,10 +44,14 @@ For anyone who wants to provide translations please submit them to https://crowd
</div>
### Using Android Studio
Clone the repo, open it in Android Studio and build the app.
## Using Android Studio
Clone the Repository, open it in Android Studio and build the application.
### Using command line
## Google Advanced Protection Program
If you are using this feature on your Google account, you must either disable it or log out from your Google account before installing Youtube Vanced via Vanced Manager.
The Google Advanced Protection Program does not allow the installation of apps from unknown sources. These security measures are tied to the protected account and not the device. After the installation, you will be able to log back in or enroll again into the program.
## Using Command Line
#### On Windows:
```powershell
.\gradlew.bat assembleDebug
@ -43,7 +62,3 @@ chmod +x gradlew
./gradlew assembleDebug
```
## Vanced FAQ
Vanced FAQ (from the faq branch) now available on the playstore!
<a href='https://play.google.com/store/apps/details?id=com.vanced.faq&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Get it on Google Play' height="85" src='https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png'/></a>

View file

@ -16,8 +16,8 @@ android {
applicationId = "com.vanced.manager"
minSdk = 21
targetSdk = 31
versionCode = 261
versionName = "2.6.1 (Crimson)"
versionCode = 262
versionName = "2.6.2 (Crimson)"
vectorDrawables {
useSupportLibrary = true
@ -126,7 +126,7 @@ dependencies {
val libsuVersion = "3.1.2"
implementation("com.github.topjohnwu.libsu:core:$libsuVersion")
implementation("com.github.topjohnwu.libsu:io:$libsuVersion")
implementation("com.github.topjohnwu.libsu:busybox:$libsuVersion")
//implementation("com.github.topjohnwu.libsu:busybox:$libsuVersion")
// Layout
implementation("com.google.android.flexbox:flexbox:3.0.0")

View file

@ -6,6 +6,7 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.INTERNET" />

View file

@ -84,10 +84,12 @@ class ExpandableAppListAdapter(
appDownload.apply {
setOnClickListener {
viewModel.openInstallDialog(
activity.supportFragmentManager,
buttonTag,
apps[position]
)
}
appDownload.setIconResource(buttonTag.image)
contentDescription = activity.getString(
when (buttonTag) {
ButtonTag.UPDATE -> R.string.accessibility_update
@ -108,11 +110,6 @@ class ExpandableAppListAdapter(
dataModel?.installedVersionName?.observe(activity) {
appVersionInstalled.text = it
}
dataModel?.buttonImage?.observe(activity) {
if (it != null) {
appDownload.icon = it
}
}
}
}
}

View file

@ -64,7 +64,7 @@ class LinkAdapter(
fun bind(position: Int) {
binding.linkBg.setOnClickListener {
viewModel.openUrl(links[position].linkUrl)
viewModel.openUrl(context, links[position].linkUrl)
}
}
}

View file

@ -42,7 +42,7 @@ class SponsorAdapter(
with(binding) {
sponsorName.text = sponsors[position].name
cardSponsor.setOnClickListener {
viewModel.openUrl(sponsors[position].url)
viewModel.openUrl(context, sponsors[position].url)
}
}
}

View file

@ -2,7 +2,6 @@ package com.vanced.manager.core
import android.app.Application
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.topjohnwu.superuser.BusyBoxInstaller
import com.topjohnwu.superuser.Shell
import com.vanced.manager.BuildConfig
import com.vanced.manager.utils.loadJson
@ -27,7 +26,7 @@ class App : Application() {
Shell.Builder
.create()
.setFlags(Shell.FLAG_REDIRECT_STDERR)
.setInitializers(BusyBoxInstaller::class.java)
//.setInitializers(BusyBoxInstaller::class.java) //TODO fix busybox
.setTimeout(10)
)
}

View file

@ -0,0 +1,37 @@
package com.vanced.manager.core
import androidx.lifecycle.LiveData
import androidx.lifecycle.MediatorLiveData
/**
* CombinedLiveData is a helper class to combine results from two LiveData sources.
* @param combine Function reference that will be used to combine all LiveData data.
* @param R The type of data returned after combining all LiveData data.
* Usage:
* CombinedLiveData(
* getLiveData1(),
* getLiveData2()
* ) { data1, data2 ->
* // Use datas[0], datas[1], ..., datas[N] to return a value
* }
*/
class CombinedLiveData<R, A, B>(
liveDataA: LiveData<A>,
liveDataB: LiveData<B>,
private val combine: (a: A?, b: B?) -> R
) : MediatorLiveData<R>() {
private var a: A? = null
private var b: B? = null
init {
addSource(liveDataA) {
a = it
value = combine(a, b)
}
addSource(liveDataB) {
b = it
value = combine(a, b)
}
}
}

View file

@ -1,5 +1,10 @@
package com.vanced.manager.model
enum class ButtonTag {
INSTALL, UPDATE, REINSTALL
import androidx.annotation.DrawableRes
import com.vanced.manager.R
enum class ButtonTag(@DrawableRes val image: Int) {
INSTALL(R.drawable.ic_app_download),
UPDATE(R.drawable.ic_app_update),
REINSTALL(R.drawable.ic_app_reinstall)
}

View file

@ -5,63 +5,46 @@ import android.graphics.drawable.Drawable
import android.os.Build
import androidx.annotation.DrawableRes
import androidx.core.content.ContextCompat
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.*
import com.beust.klaxon.JsonObject
import com.vanced.manager.R
import com.vanced.manager.core.CombinedLiveData
import com.vanced.manager.utils.PackageHelper.isPackageInstalled
open class DataModel(
private val jsonObject: LiveData<JsonObject?>,
private val context: Context,
lifecycleOwner: LifecycleOwner,
jsonObject: LiveData<JsonObject?>,
context: Context,
val appPkg: String,
val appName: String,
val appDescription: String,
@DrawableRes val appIcon: Int
) {
private val versionCode = MutableLiveData<Int>()
private val installedVersionCode = MutableLiveData<Int>()
val isAppInstalled = Transformations.map(jsonObject) { isAppInstalled(appPkg) }
private val versionCode = Transformations.map(jsonObject) { jobj ->
jobj?.int("versionCode") ?: 0
}
private val installedVersionCode = Transformations.map(isAppInstalled) {
getPkgVersionCode(appPkg, it)
}
private val unavailable = context.getString(R.string.unavailable)
private val pm = context.packageManager
val isAppInstalled = MutableLiveData<Boolean>()
val versionName = MutableLiveData<String>()
val installedVersionName = MutableLiveData<String>()
val buttonTag = MutableLiveData<ButtonTag>()
val buttonImage = MutableLiveData<Drawable>()
val changelog = MutableLiveData<String>()
private fun fetch() {
val jobj = jsonObject.value
isAppInstalled.value = isAppInstalled(appPkg)
versionCode.value = jobj?.int("versionCode") ?: 0
versionName.value = jobj?.string("version") ?: unavailable
changelog.value = jobj?.string("changelog") ?: unavailable
val versionName = Transformations.map(jsonObject) { jobj ->
jobj?.string("version") ?: unavailable
}
val changelog = Transformations.map(jsonObject) { jobj ->
jobj?.string("changelog") ?: unavailable
}
val installedVersionName = Transformations.map(isAppInstalled) {
getPkgVersionName(appPkg, it)
}
val buttonTag = CombinedLiveData(versionCode, installedVersionCode) { versionCode, installedVersionCode ->
compareInt(installedVersionCode, versionCode)
}
init {
fetch()
with(lifecycleOwner) {
jsonObject.observe(this) {
fetch()
}
isAppInstalled.observe(this) {
installedVersionCode.value = getPkgVersionCode(appPkg, it)
installedVersionName.value = getPkgVersionName(appPkg, it)
}
versionCode.observe(this) { versionCode ->
installedVersionCode.observe(this) { installedVersionCode ->
buttonTag.value = compareInt(installedVersionCode, versionCode)
buttonImage.value = compareIntDrawable(installedVersionCode, versionCode)
}
}
}
}
open fun isAppInstalled(pkg: String): Boolean = isPackageInstalled(pkg, context.packageManager)
open fun isAppInstalled(pkg: String): Boolean = isPackageInstalled(pkg, pm)
private fun getPkgVersionName(pkg: String, isAppInstalled: Boolean): String {
return if (isAppInstalled) {
@ -95,16 +78,4 @@ open class DataModel(
}
return ButtonTag.INSTALL
}
private fun compareIntDrawable(int1: Int?, int2: Int?): Drawable {
if (int2 != null && int1 != null) {
return when {
int1 == 0 -> ContextCompat.getDrawable(context, R.drawable.ic_app_download)!!
int2 > int1 -> ContextCompat.getDrawable(context, R.drawable.ic_app_update)!!
int1 >= int2 -> ContextCompat.getDrawable(context, R.drawable.ic_app_reinstall)!!
else -> ContextCompat.getDrawable(context, R.drawable.ic_app_download)!!
}
}
return ContextCompat.getDrawable(context, R.drawable.ic_app_download)!!
}
}

View file

@ -10,7 +10,6 @@ import com.vanced.manager.utils.PackageHelper
class RootDataModel(
jsonObject: LiveData<JsonObject?>,
context: Context,
lifecycleOwner: LifecycleOwner,
appPkg: String,
appName: String,
appDescription: String,
@ -22,7 +21,7 @@ class RootDataModel(
//Ironic, isn't it?
private val scriptName: String?
) : DataModel(
jsonObject, context, lifecycleOwner, appPkg, appName, appDescription, appIcon
jsonObject, context, appPkg, appName, appDescription, appIcon
) {
override fun isAppInstalled(pkg: String): Boolean {

View file

@ -4,18 +4,22 @@ import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.topjohnwu.superuser.Shell
class SplashScreenActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (getDefaultSharedPreferences(this).getBoolean("firstLaunch", true)) {
startActivity(Intent(this, WelcomeActivity::class.java))
finish()
} else {
startActivity(Intent(this, MainActivity::class.java))
finish()
//Preheat the shell
Shell.getShell {
if (getDefaultSharedPreferences(this).getBoolean("firstLaunch", true)) {
startActivity(Intent(this, WelcomeActivity::class.java))
finish()
} else {
startActivity(Intent(this, MainActivity::class.java))
finish()
}
}
}

View file

@ -26,7 +26,6 @@ import com.vanced.manager.databinding.FragmentHomeBinding
import com.vanced.manager.ui.dialogs.AppInfoDialog
import com.vanced.manager.ui.dialogs.DialogContainer.installAlertBuilder
import com.vanced.manager.ui.viewmodels.HomeViewModel
import com.vanced.manager.ui.viewmodels.HomeViewModelFactory
import com.vanced.manager.utils.isFetching
import com.vanced.manager.utils.manager
@ -37,9 +36,7 @@ class HomeFragment : BindingFragment<FragmentHomeBinding>() {
const val REFRESH_HOME = "REFRESH_HOME"
}
private val viewModel: HomeViewModel by viewModels {
HomeViewModelFactory(requireActivity())
}
private val viewModel: HomeViewModel by viewModels()
private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(requireActivity()) }

View file

@ -1,13 +1,14 @@
package com.vanced.manager.ui.viewmodels
import android.annotation.SuppressLint
import android.app.Application
import android.content.ActivityNotFoundException
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.widget.Toast
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.vanced.manager.R
@ -38,12 +39,11 @@ import com.vanced.manager.utils.PackageHelper.uninstallRootApk
import com.vanced.manager.utils.PackageHelper.vancedInstallFilesExist
import kotlinx.coroutines.launch
//TODO fix leak
@SuppressLint("StaticFieldLeak")
class HomeViewModel(private val activity: FragmentActivity) : ViewModel() {
class HomeViewModel(application: Application) : AndroidViewModel(application) {
private val prefs = getDefaultSharedPreferences(activity)
private val prefs = getDefaultSharedPreferences(context)
private val variant get() = prefs.getString("vanced_variant", "nonroot")
private val context: Context get() = getApplication()
val vancedModel = MutableLiveData<DataModel>()
val vancedRootModel = MutableLiveData<RootDataModel>()
@ -54,13 +54,13 @@ class HomeViewModel(private val activity: FragmentActivity) : ViewModel() {
fun fetchData() {
viewModelScope.launch {
loadJson(activity)
loadJson(context)
}
}
private val microgToast = Toast.makeText(activity, R.string.no_microg, Toast.LENGTH_LONG)
private val microgToast = Toast.makeText(context, R.string.no_microg, Toast.LENGTH_LONG)
fun openUrl(url: String) {
fun openUrl(context: Context, url: String) {
val color: Int =
when (url) {
DISCORD -> R.color.Discord
@ -71,82 +71,82 @@ class HomeViewModel(private val activity: FragmentActivity) : ViewModel() {
else -> R.color.Vanced
}
openUrl(url, color, activity)
openUrl(url, color, context)
}
fun launchApp(app: String, isRoot: Boolean) {
val componentName = when (app) {
activity.getString(R.string.vanced) -> if (isRoot) ComponentName(
context.getString(R.string.vanced) -> if (isRoot) ComponentName(
vancedRootPkg,
"$vancedRootPkg.HomeActivity"
) else ComponentName(vancedPkg, "$vancedRootPkg.HomeActivity")
activity.getString(R.string.music) -> if (isRoot) ComponentName(
context.getString(R.string.music) -> if (isRoot) ComponentName(
musicRootPkg,
"$musicRootPkg.activities.MusicActivity"
) else ComponentName(musicPkg, "$musicRootPkg.activities.MusicActivity")
activity.getString(R.string.microg) -> ComponentName(
context.getString(R.string.microg) -> ComponentName(
microgPkg,
"org.microg.gms.ui.SettingsActivity"
)
else -> throw IllegalArgumentException("Can't open this app")
}
try {
activity.startActivity(Intent().setComponent(componentName))
context.startActivity(Intent().setComponent(componentName))
} catch (e: ActivityNotFoundException) {
log("VMHMV", e.toString())
}
}
fun openInstallDialog(buttonTag: ButtonTag?, app: String) {
if (variant == "nonroot" && app != activity.getString(R.string.microg) && !microgModel.value?.isAppInstalled?.value!!) {
fun openInstallDialog(fragmentManager: FragmentManager, buttonTag: ButtonTag?, app: String) {
if (variant == "nonroot" && app != context.getString(R.string.microg) && !microgModel.value?.isAppInstalled?.value!!) {
microgToast.show()
return
}
if (buttonTag == ButtonTag.UPDATE) {
when (app) {
activity.getString(R.string.vanced) -> VancedPreferencesDialog().show(activity)
activity.getString(R.string.music) -> MusicPreferencesDialog().show(activity)
else -> AppDownloadDialog.newInstance(app).show(activity)
context.getString(R.string.vanced) -> VancedPreferencesDialog().show(fragmentManager)
context.getString(R.string.music) -> MusicPreferencesDialog().show(fragmentManager)
else -> AppDownloadDialog.newInstance(app).show(fragmentManager)
}
return
}
when (app) {
activity.getString(R.string.vanced) -> {
context.getString(R.string.vanced) -> {
when (variant) {
"nonroot" -> {
if (vancedInstallFilesExist(activity)) {
InstallationFilesDetectedDialog.newInstance(app).show(activity)
if (vancedInstallFilesExist(context)) {
InstallationFilesDetectedDialog.newInstance(app).show(fragmentManager)
} else {
VancedPreferencesDialog().show(activity)
VancedPreferencesDialog().show(fragmentManager)
}
}
"root" -> {
VancedPreferencesDialog().show(activity)
VancedPreferencesDialog().show(fragmentManager)
}
}
}
activity.getString(R.string.music) -> {
context.getString(R.string.music) -> {
when (variant) {
"nonroot" -> {
if (musicApkExists(activity)) {
InstallationFilesDetectedDialog.newInstance(app).show(activity)
if (musicApkExists(context)) {
InstallationFilesDetectedDialog.newInstance(app).show(fragmentManager)
} else {
MusicPreferencesDialog().show(activity)
MusicPreferencesDialog().show(fragmentManager)
}
}
"root" -> {
MusicPreferencesDialog().show(activity)
MusicPreferencesDialog().show(fragmentManager)
}
}
}
activity.getString(R.string.microg) -> {
if (apkExist(activity, "microg.apk")) {
InstallationFilesDetectedDialog.newInstance(app).show(activity)
context.getString(R.string.microg) -> {
if (apkExist(context, "microg.apk")) {
InstallationFilesDetectedDialog.newInstance(app).show(fragmentManager)
} else {
AppDownloadDialog.newInstance(app).show(activity)
AppDownloadDialog.newInstance(app).show(fragmentManager)
}
}
}
@ -155,32 +155,30 @@ class HomeViewModel(private val activity: FragmentActivity) : ViewModel() {
fun uninstallPackage(pkg: String) {
if (variant == "root" && uninstallRootApk(pkg)) {
viewModelScope.launch { loadJson(activity) }
viewModelScope.launch { loadJson(context) }
} else {
uninstallApk(pkg, activity)
uninstallApk(pkg, context)
}
}
init {
with(activity) {
with(context) {
if (variant == "root") {
vancedRootModel.value = RootDataModel(
vanced,
this,
this,
vancedRootPkg,
this.getString(R.string.vanced),
activity.getString(R.string.description_vanced),
this.getString(R.string.description_vanced),
R.drawable.ic_vanced,
"vanced"
)
musicRootModel.value = RootDataModel(
music,
this,
this,
musicRootPkg,
this.getString(R.string.music),
activity.getString(R.string.description_vanced_music),
this.getString(R.string.description_vanced_music),
R.drawable.ic_music,
"music"
)
@ -188,35 +186,31 @@ class HomeViewModel(private val activity: FragmentActivity) : ViewModel() {
vancedModel.value = DataModel(
vanced,
this,
this,
vancedPkg,
this.getString(R.string.vanced),
activity.getString(R.string.description_vanced),
this.getString(R.string.description_vanced),
R.drawable.ic_vanced
)
musicModel.value = DataModel(
music,
this,
this,
musicPkg,
this.getString(R.string.music),
activity.getString(R.string.description_vanced_music),
this.getString(R.string.description_vanced_music),
R.drawable.ic_music
)
microgModel.value = DataModel(
microg,
this,
this,
microgPkg,
this.getString(R.string.microg),
activity.getString(R.string.description_microg),
this.getString(R.string.description_microg),
R.drawable.ic_microg
)
}
managerModel.value = DataModel(
manager,
this,
this,
managerPkg,
this.getString(R.string.app_name),
"Just manager meh",

View file

@ -1,14 +0,0 @@
package com.vanced.manager.ui.viewmodels
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
class HomeViewModelFactory(private val activity: FragmentActivity) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return HomeViewModel(activity) as T
}
}

View file

@ -10,6 +10,7 @@ import android.text.style.ForegroundColorSpan
import android.text.style.StyleSpan
import android.util.Log
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.vanced.manager.BuildConfig
import com.vanced.manager.BuildConfig.APPLICATION_ID
import com.vanced.manager.R
import com.vanced.manager.ui.dialogs.AppDownloadDialog
@ -48,7 +49,9 @@ object AppUtils : CoroutineScope by CoroutineScope(Dispatchers.IO) {
)
}
)
Log.d(tag, message)
if (BuildConfig.DEBUG) {
Log.d(tag, message)
}
}
fun sendRefresh(context: Context): Job {
@ -68,7 +71,7 @@ object AppUtils : CoroutineScope by CoroutineScope(Dispatchers.IO) {
}
}
fun sendFailure(error: MutableList<String>, context: Context) {
fun sendFailure(error: List<String>, context: Context) {
sendFailure(error.joinToString(" "), context)
}

View file

@ -7,6 +7,7 @@ import android.widget.RadioGroup
import androidx.core.graphics.ColorUtils
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.LifecycleOwner
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.progressindicator.LinearProgressIndicator
@ -22,14 +23,18 @@ val RadioGroup.checkedButtonTag: String?
checkedRadioButtonId
)?.tag?.toString()
fun DialogFragment.show(activity: FragmentActivity) {
fun DialogFragment.show(fragmentManager: FragmentManager) {
try {
show(activity.supportFragmentManager, "")
show(fragmentManager, "")
} catch (e: Exception) {
log("VMUI", e.stackTraceToString())
}
}
fun DialogFragment.show(activity: FragmentActivity) {
show(activity.supportFragmentManager)
}
fun List<String>.convertToAppVersions(): List<String> = listOf("latest") + reversed()
fun String.formatVersion(context: Context): String =

View file

@ -163,6 +163,9 @@ object PackageHelper {
val packageInstaller = context.packageManager.packageInstaller
val params =
PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
params.setRequireUserAction(PackageInstaller.SessionParams.USER_ACTION_NOT_REQUIRED)
}
val sessionId: Int
var session: PackageInstaller.Session? = null
try {
@ -193,20 +196,18 @@ object PackageHelper {
if (apk.name != "root.apk") {
val newPath = "/data/local/tmp/${apk.name}"
//moving apk to tmp folder in order to avoid permission denials
Shell.su("mv ${apk.path} $newPath").exec()
//Copy apk to tmp folder in order to avoid permission denials
Shell.su("cp ${apk.path} $newPath").exec()
val command = Shell.su("pm install -r $newPath").exec()
Shell.su("rm $newPath").exec()
if (command.isSuccess) {
return true
} else {
if (!command.isSuccess) {
sendFailure(command.out, context)
sendCloseDialog(context)
return false
}
}
}
return false
return true
}
private fun installRootApp(
@ -216,32 +217,35 @@ object PackageHelper {
pkg: String,
modApkBool: (fileName: String) -> Boolean
) = CoroutineScope(Dispatchers.IO).launch {
Shell.getShell {
val apkFilesPath = context.getExternalFilesDir("$app/root")?.path
val files = File(apkFilesPath.toString()).listFiles()?.toList()
if (files != null) {
val modApk: File? = files.lastOrNull { modApkBool(it.name) }
if (modApk != null) {
if (appVerCode != null) {
if (overwriteBase(modApk, files, appVerCode, pkg, app, context)) {
setInstallerPackage(context, pkg, playStorePkg)
log(INSTALLER_TAG, "Finished installation")
sendRefresh(context)
sendCloseDialog(context)
}
} else {
sendFailure(listOf("appVerCode is null").toMutableList(), context)
if (!isMagiskInstalled()) {
sendFailure("NO_MAGISK", context)
sendCloseDialog(context)
return@launch
}
val apkFilesPath = context.getExternalFilesDir("$app/root")?.path
val files = File(apkFilesPath.toString()).listFiles()?.toList()
if (files != null) {
val modApk: File? = files.lastOrNull { modApkBool(it.name) }
if (modApk != null) {
if (appVerCode != null) {
if (overwriteBase(modApk, files, appVerCode, pkg, app, context)) {
setInstallerPackage(context, pkg, playStorePkg)
log(INSTALLER_TAG, "Finished installation")
sendRefresh(context)
sendCloseDialog(context)
}
} else {
sendFailure(listOf("ModApk_Missing").toMutableList(), context)
sendFailure("appVerCode is null", context)
sendCloseDialog(context)
}
} else {
sendFailure(listOf("Files_Missing_VA").toMutableList(), context)
sendFailure("ModApk_Missing", context)
sendCloseDialog(context)
}
} else {
sendFailure("Files_Missing_VA", context)
sendCloseDialog(context)
}
}
@ -278,6 +282,9 @@ object PackageHelper {
val sessionId: Int
val sessionParams =
PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
sessionParams.setRequireUserAction(PackageInstaller.SessionParams.USER_ACTION_NOT_REQUIRED)
}
val callbackIntent = Intent(context, AppInstallerService::class.java)
val pendingIntent = PendingIntent.getService(context, 0, callbackIntent, intentFlags)
try {
@ -322,8 +329,8 @@ object PackageHelper {
val apkName = apkFile.name
log(INSTALLER_TAG, "installing APK: $apkName")
val newPath = "/data/local/tmp/$apkName"
// Moving apk to avoid permission denials
Shell.su("mv ${apkFile.path} $newPath").exec()
//Copy apk to tmp folder in order to avoid permission denials
Shell.su("cp ${apkFile.path} $newPath").exec()
val command = Shell.su("pm install-write $sessionId $apkName $newPath").exec()
Shell.su("rm $newPath").exec()
if (!command.isSuccess) {
@ -334,12 +341,12 @@ object PackageHelper {
}
log(INSTALLER_TAG, "committing...")
val installResult = Shell.su("pm install-commit $sessionId").exec()
if (installResult.isSuccess) {
return true
if (!installResult.isSuccess) {
sendFailure(installResult.out, context)
sendCloseDialog(context)
return false
}
sendFailure(installResult.out, context)
sendCloseDialog(context)
return false
return true
}
@ -469,59 +476,48 @@ object PackageHelper {
) else installRootMusic(baseApkFiles, context)
}
private fun isMagiskInstalled() = Shell.su("magisk -c").exec().isSuccess
//set chcon to apk_data_file
private fun chConV(apkFPath: String, context: Context): Boolean {
log(INSTALLER_TAG, "Running chcon")
val response = Shell.su("chcon u:object_r:apk_data_file:s0 $apkFPath").exec()
//val response = Shell.su("chcon -R u:object_r:system_file:s0 $path").exec()
return if (response.isSuccess) {
true
} else {
if (!response.isSuccess) {
sendFailure(response.out, context)
sendCloseDialog(context)
false
return false
}
return true
}
//move patch to data/app
private fun moveAPK(apkFile: String, path: String, pkg: String, context: Context): Boolean {
log(INSTALLER_TAG, "Moving app")
val apkinF = SuFile.open(apkFile)
val apkoutF = SuFile.open(path)
Shell.su("am force-stop $pkg").exec()
if (apkinF.exists()) {
try {
Shell.su("am force-stop $pkg").exec()
//Shell.su("rm -r SuFile.open(path).parent")
copy(apkinF, apkoutF)
Shell.su("chmod 644 $path").exec().isSuccess
return if (Shell.su("chown system:system $path").exec().isSuccess) {
true
} else {
sendFailure(listOf("Chown_Fail").toMutableList(), context)
sendCloseDialog(context)
false
}
} catch (e: IOException) {
sendFailure(listOf("${e.message}").toMutableList(), context)
sendCloseDialog(context)
log(INSTALLER_TAG, e.stackTraceToString())
return false
}
val mv = Shell.su("cp $apkFile $path").exec()
if (!mv.isSuccess) {
sendFailure(mv.out.apply { add(0, "MV_Fail") }, context)
sendCloseDialog(context)
return false
}
sendFailure(listOf("IFile_Missing").toMutableList(), context)
sendCloseDialog(context)
return false
}
val chmod = Shell.su("chmod 644 $path").exec()
if (!chmod.isSuccess) {
sendFailure(chmod.out.apply { add(0, "Chmod_Fail") }, context)
sendCloseDialog(context)
return false
}
@Throws(IOException::class)
fun copy(src: File, dst: File) {
val cmd = Shell.su("mv ${src.absolutePath} ${dst.absolutePath}").exec().isSuccess
log("ZLog", cmd.toString())
val chown = Shell.su("chown system:system $path").exec()
if (!chown.isSuccess) {
sendFailure(chown.out.apply { add(0, "Chown_Fail") }, context)
sendCloseDialog(context)
return false
}
return true
}
@Suppress("DEPRECATION")

View file

@ -5,7 +5,7 @@
<string name="close">Bağla</string>
<string name="description_microg">microG layihəsi əsasında Vanced üçün təkmilləşdirilmiş özəl bir GMS tətbiqi.</string>
<string name="description_vanced">Çoxlu faydalı özəllikləri ilə modifikasiya edilmiş YouTube versiyası!</string>
<string name="description_vanced_music">Yenə Vanced, ancaq YouTube Msuic üçün! Nisbətən daha az özəlliyi olsa da, ehtiyaclarınızı qarşılayacaq.</string>
<string name="description_vanced_music">Yenə Vanced, ancaq YouTube Music üçün! Nisbətən daha az özəlliyi olsa da, ehtiyaclarınızı qarşılayacaq.</string>
<string name="reset">Sıfırla</string>
<string name="save">Saxla</string>
<string name="select_apps">Tətbiqlərinizi Seçin</string>
@ -15,7 +15,7 @@
<string name="title_home">Menecer</string>
<string name="title_logs">Qeydlər</string>
<string name="title_settings">Tənzimləmələr</string>
<string name="update_manager">Yeniləmə Meneceri</string>
<string name="update_manager">Meneceri Yenilə</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Cihazınızda root varmı?</string>
<string name="grant_root">Root İcazəsi Ver</string>
@ -24,10 +24,10 @@
<string name="willing_to_use_root">Bunun nə olduğunu bilmirsiniz və ya root (kök) versiyasını istifadə etmək istəmirsiniz? Sadəcə aşağıdakı göy oxa toxunun!</string>
<!-- Home Page -->
<string name="about_app">%1$s Haqqında</string>
<string name="accessibility_download">Yüklə</string>
<string name="accessibility_download">Endir</string>
<string name="accessibility_info">Məlumat</string>
<string name="accessibility_launch">Başlat</string>
<string name="accessibility_reinstall">Yenidən qur</string>
<string name="accessibility_reinstall">Yenidən quraşdır</string>
<string name="accessibility_uninstall">Sil</string>
<string name="accessibility_update">Yenilə</string>
<string name="apps">Tətbiqlər</string>

View file

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
<!-- Global Strings -->
<string name="cancel">Скасаваць</string>
<string name="close">Закрыць</string>
<string name="description_microg">Карыстальнцкая рэалізацыя для Vanced, заснованная на праэкце microG.</string>
<string name="description_vanced">Мадзіфіцыраваны кліент YouTube з з мноствам карысных функцый!</string>
<string name="description_vanced_music">Vanced, але для YouTube Music! Адносна менш шматфункцыянальны, але адпавядае вашым патрэбам.</string>
<string name="reset">Скінуць</string>
<string name="save">Захаваць</string>
<string name="select_apps">Выберыце вашы праграмы</string>
<!-- Main Activity -->
<string name="title_about">Пра нас</string>
<string name="title_guide">Кіраўніцтва</string>
<string name="title_home">Менеджэр</string>
<string name="title_logs">Журнал</string>
<string name="title_settings">Налады</string>
<string name="update_manager">Абнавіць Менеджэр</string>
<!-- Welcome Page -->
<string name="are_you_rooted">На вашай прыладзе ёсць рут-права?</string>
<string name="grant_root">Прадастаўленне root доступу</string>
<string name="lets_get_started">Давайце пачнём</string>
<string name="select_at_least_one_app">Выберыце прынамсі адну праграму!</string>
<string name="willing_to_use_root">Не ведаеце, што гэта ці не жадаеце выкарыстоўваць root-версію? Проста націсніце на сінюю стрэлку ніжэй!</string>
<!-- Home Page -->
<string name="about_app">Аб %1$s</string>
<string name="accessibility_download">Спампаваць</string>
<string name="accessibility_info">Звесткі</string>
<string name="accessibility_launch">Запусціць</string>
<string name="accessibility_reinstall">Пераўсталяваць</string>
<string name="accessibility_uninstall">Выдаліць</string>
<string name="accessibility_update">Абнавіць</string>
<string name="apps">Праграмы</string>
<string name="changelog">Журнал змяненняў</string>
<string name="downloading_file">Спампована %1$s</string>
<string name="install">Усталяваць</string>
<string name="latest">Апошняя:</string>
<string name="no_microg">Спачатку ўсталюйце Vanced microG</string>
<string name="root_not_granted">Root доступ не прадастаўлены</string>
<string name="social_media">Сацыяльныя сеткі</string>
<string name="support_us">Падтрымаць нас</string>
<string name="unavailable">Недаступна</string>
<string name="version_installed">Усталявана:</string>
<!-- Settings -->
<string name="accent_color">Колер акцэнту</string>
<string name="category_appearance">Знешні выгляд</string>
<string name="category_behaviour">Паводзіны</string>
<string name="clear_files">Выдаліць спампованыя файлы</string>
<string name="cleared_files">Файлы паспяхова выдалены</string>
<string name="firebase_summary">Гэта дазваляе нам збіраць інфармацыю аб прадукцыйнасці праграмы і журналы збояў</string>
<string name="firebase_title">Аналітыка Firebase</string>
<string name="language_title">Мова</string>
<string name="link_custom_tabs">Адкрываць спасылкі ў Chrome Custom Tabs</string>
<string name="link_title">Выкарыстоўваць Chrome Custom Tabs</string>
<string name="push_notifications">Push-апавяшчэнні для %1$s</string>
<string name="push_notifications_summary">Атрымліваць апавяшчэнні аб абнаўленні для %1$s</string>
<string name="script_save_failed">Не ўдалося захаваць новае значэнне часу</string>
<string name="script_sleep_timer">Root скрыпт Таймер сну</string>
<string name="script_sleep_timer_description">Адрэгулюйце значэнне часу сну, якое выкарыстоўваецца ў сцэнарыі /data/adb/service.d/app.sh, карысна для выпраўлення праблем з мантажом</string>
<string name="system_default">Сістэмны</string>
<string name="theme">Тэма</string>
<string name="theme_dark">Цёмная тэма</string>
<string name="theme_light">Светлая тэма</string>
<string name="update_center">Цэнтр абнаўленняў</string>
<string name="update_not_found">Абнаўленні не знойдзены</string>
<string name="variant">Варыянт</string>
<!-- Logs -->
<string name="logs_not_saved">Не атрымалася захаваць логі</string>
<string name="logs_saved">Логі паспяхова захаваны ў %1$s</string>
<!-- Dialogs -->
<string name="advanced">Падрабязнасці</string>
<string name="app_install_files_detected">Знойдзены файлы ўстаноўкі для %1$s!</string>
<string name="app_install_files_detected_summary">Менеджэр знайшоў усе неабходныя файлы для ўсталёўкі %1$s. Працягнуць усталёўку?</string>
<string name="app_installation_preferences">Параметры усталёўкі %1$s</string>
<string name="checking_updates">Праверка абнаўленняў…</string>
<string name="chosen_lang">Мова(-ы): %1$s</string>
<string name="chosen_theme">Тэма: %1$s</string>
<string name="chosen_version">Версія: %1$s</string>
<string name="error">Памылка</string>
<string name="guide">Кіраўніцтва</string>
<string name="hold_on">Спыніцеся!</string>
<string name="magisk_vanced">Здаецца, вы выкарыстоўваеце Magisk/TWRP версію Vanced, якая больш не падтрымліваецца і не можа быць абноўлена з дапамогай гэтай праграмы. Калі ласка, выдаліце модуль Vanced праз Magisk ці з дапамогай Vanced TWRP uninstaller.</string>
<string name="miui_one">Каб усталяваць Vanced, вы ПАВІННЫ адключыць аптымізацыю MIUI у наладах распрацоўшчыка. (Вы можаце праігнараваць гэтае папярэджанне, калі вы карыстаецеся прашыўкай на xiaomi.eu версіі 20.2.20+)</string>
<string name="miui_one_title">Аптымізацыя MIUI уключана!</string>
<string name="please_be_patient">Калі ласка, НЕ выходзьце з праграмы падчас гэтага працэсу!</string>
<string name="uninstall_app_text">Вы сапраўды жадаеце выдаліць %1$s?</string>
<string name="uninstall">Выдаліць</string>
<string name="redownload">Спампаваць зноў</string>
<string name="security_context">Калі ласка, пераканайцеся, што вы спампавалі гэту праграму з vancedapp.com, сервера Vanced у Discord або з афіцыйнага GitHub</string>
<string name="version">Версія</string>
<string name="welcome">Вітаем</string>
<!-- Install Page -->
<string name="choose_preferred_language">Выберыце пажаданую мову(-ы) для Vanced</string>
<string name="install_latest">Апошняя</string>
<string name="light_plus_other">Светлая + %1$s</string>
<string name="select_at_least_one_lang">Выберыце прынамсі адну мову!</string>
<string name="vanced_black">Чорны</string>
<string name="vanced_dark">Цёмны</string>
<!-- About Page -->
<string name="manager_dev">Распрацоўшчыкі Менеджэра</string>
<string name="other_contributors">Іншыя ўдзельнікі</string>
<string name="sources">Крыніца</string>
<string name="vanced_team">Каманда Vanced</string>
<!-- Error messages -->
<string name="chown_fail">Не атрымалася перадаць apk уладальніку сістэмы, паспрабуйце яшчэ раз.</string>
<string name="error_downloading">Памылка спампоўвання %1$s</string>
<string name="failed_accent">Не ўдалося прымяніць новы колер акцэнту</string>
<string name="failed_uninstall">Не ўдалося выдаліць пакет %1$s</string>
<string name="files_missing_va">Не ўдалося знайсці неабходныя файлы для ўстаноўкі. Паўторна загрузіце файлы ўсталявання і паспрабуйце яшчэ раз.</string>
<string name="ifile_missing">Не атрымался знайсці apk файл для чорнай/цёмнай тэмы ў сховішчы, калі ласка, паўтарыце яшчэ раз.</string>
<string name="installation_aborted">Не атрымалася ўсталяваць, таму што карыстальнік спыніў усталяванне.</string>
<string name="installation_conflict">Усталёўка не ўдалася, бо праграма канфліктуе з ужо ўсталёванай праграмай. Выдаліце бягучую версію праграмы, паспрабуйце яшчэ раз.</string>
<string name="installation_downgrade">Усталёўка не атрымалася, бо карыстач паспрабаваў панізіць версію праграмы. Выдаліце абнаўленні звычайнага YouTube, потым паспрабуйце яшчэ раз.</string>
<string name="installation_failed">Не атрымалася ўсталяваць па невядомых прычынах, далучайцесь да нашага Telegram або Discord для далейшай падтрымкі. Калі ласка, таксама прыкладзеце скрыншот з меню Падрабязнасці</string>
<string name="installation_incompatible">Не атрымалася ўсталяваць, таму што файл ўсталёўкі несумяшчальны з вашай прыладай. Выдаліце спампаваныя файлы ў наладах, а потым паспрабуйце яшчэ раз.</string>
<string name="installation_invalid">Усталёўка не ўдалася, таму што apk файлы пашкоджаны. Калі ласка, паспрабуйце яшчэ раз.</string>
<string name="installation_miui">Не атрымалася ўсталяваць, таму што ўключана аптымізацыя MIUI. Адключыце аптымізацыю MIUI, а потым паўтарыце спробу.</string>
<string name="installation_signature">Усталёўка не ўдалася, таму што ўключана праверка подпісу apk. Адключыце праверку подпісу apk, а потым паспрабуйце яшчэ раз.</string>
<string name="installation_storage">Не атрымалася ўсталяваць, таму што на прыладзе недастаткова месца.</string>
<string name="modapk_missing">Не атрымалася знайсці apk файл для чорнай/цёмнай тэмы ва ўсталёўніку. Ачысціце данныя Vanced Manager і паспрабуйце яшчэ раз.</string>
<string name="path_missing">Не атрымалася знайсці стандартны шлях ўсталёўкіі YouTube пасля раздзеленай ўсталёўкі.</string>
</resources>

View file

@ -4,14 +4,14 @@
<string name="cancel">বাতিল করুন</string>
<string name="close">বন্ধ করুন</string>
<string name="description_microg">A custom GMS Implementation for Vanced based on the microG project.</string>
<string name="description_vanced">A modified YouTube client with many useful features!</string>
<string name="description_vanced_music">Vanced, but for YouTube Music! Relatively less feature-rich but fulfills your needs.</string>
<string name="description_vanced">Çoxlu faydalı özəllikləri ilə modifikasiya edilmiş YouTube versiyası!</string>
<string name="description_vanced_music">Yenə Vanced, ancaq YouTube Msuic üçün! Nisbətən daha az özəlliyi olsa da, ehtiyaclarınızı qarşılayacaq.</string>
<string name="reset">পুনরায় স্থির করুন</string>
<string name="save">সংরক্ষণ করুন</string>
<string name="select_apps">আপনার পছন্দসই অ্যাপগুলি নির্বাচন করুন</string>
<!-- Main Activity -->
<string name="title_about">সম্বন্ধে</string>
<string name="title_guide">Guide</string>
<string name="title_guide">แนะนำ</string>
<string name="title_home">ম্যানেজার</string>
<string name="title_logs">Logs</string>
<string name="title_settings">সেটিংস</string>

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
<!-- Global Strings -->
<string name="cancel">Cancel·lar</string>
<string name="cancel">Cancel·la</string>
<string name="close">Tanca</string>
<string name="description_microg">A custom GMS Implementation for Vanced based on the microG project.</string>
<string name="description_microg">Una implementació modificada de GMS per a Vanced basat en el projecte microG.</string>
<string name="description_vanced">Una aplicació modificada de YouTube amb moltes característiques útils!</string>
<string name="description_vanced_music">Vanced, però per a YouTube Music! Amb relativament menys característiques, però que assoleix les vostres necessitats.</string>
<string name="reset">Restableix</string>
@ -15,13 +15,13 @@
<string name="title_home">Gestor</string>
<string name="title_logs">Registre</string>
<string name="title_settings">Configuració</string>
<string name="update_manager">Gestionador d\'actualitzacions</string>
<string name="update_manager">Gestor d\'actualitzacions</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Té el vostre dispositiu accés de Superusuari (\'Root\')?</string>
<string name="grant_root">Concedir permís de Superusuari (\'Root\')</string>
<string name="lets_get_started">Comencem-hi</string>
<string name="select_at_least_one_app">Selecciona com a mínim una aplicació!</string>
<string name="willing_to_use_root">Don\'t know what this is or don\'t want to use the root version? Just click the blue arrow below!</string>
<string name="willing_to_use_root">No saps què és això o no vols fer servir la versió de superusuari (\'root\')? Simplement prem la fletxa blava de sota!</string>
<!-- Home Page -->
<string name="about_app">Sobre %1$s</string>
<string name="accessibility_download">Descarrega</string>
@ -66,7 +66,7 @@
<string name="variant">Variant</string>
<!-- Logs -->
<string name="logs_not_saved">No s\'han pogut desar els registres</string>
<string name="logs_saved">Successfully saved logs to %1$s</string>
<string name="logs_saved">Registres desats satisfactòriament a %1$s</string>
<!-- Dialogs -->
<string name="advanced">Detalls</string>
<string name="app_install_files_detected">Arxius d\'instal·lació de %1$s detectats!</string>
@ -107,16 +107,16 @@
<string name="failed_accent">No s\'ha pogut aplicar el nou color d\'accent</string>
<string name="failed_uninstall">Error en instal·lar el paquet %1$s</string>
<string name="files_missing_va">No s\'ha pogut localitzar els fitxers necessaris per a la instal·lació. Torneu a descarregar els fitxers d\'instal·lació i intenteu-ho de nou.</string>
<string name="ifile_missing">Failed to locate APK file for black/dark theme from storage, please try again.</string>
<string name="ifile_missing">No s\'ha pogut localitzar el fitxer apk per al tema negre/fosc a l\'emmagatzematge, si us plau, intenteu-ho de nou.</string>
<string name="installation_aborted">La instal·lació ha fallat perquè l\'usuari ha cancel·lat la instal·lació.</string>
<string name="installation_conflict">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 intenteu-ho de nou.</string>
<string name="installation_downgrade">La instal·lació ha fallat perquè l\'usuari ha tractat de rebaixar el paquet. Desinstal·leu les actualitzacions de l\'aplicació original i intenteu-ho de nou.</string>
<string name="installation_failed">La instal·lació ha fallat per motius desconeguts, uniu-vos al nostre Telegram o Discord per a més suport. Si us plau, adjunteu-hi també una captura de pantalla des del menú Avançat</string>
<string name="installation_incompatible">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.</string>
<string name="installation_invalid">Installation failed because the APK files are corrupted, please try again.</string>
<string name="installation_invalid">La instal·lació ha fallat perquè els fitxers apk estan malmesos. Torneu-ho a provar.</string>
<string name="installation_miui">La instal·lació ha fallat perquè l\'optimització MIUI està activada. Desactiveu l\'optimització MIUI i torneu-ho a provar.</string>
<string name="installation_signature">Installation failed because APK signature verification is enabled. Disable APK signature verification, then try again.</string>
<string name="installation_signature">La instal·lació ha fallat perquè la verificació de la signatura d\'APK està activada. Desactiveu la verificació de la signatura d\'APK i torneu-ho a intentar.</string>
<string name="installation_storage">La instal·lació ha fallat perquè el dispositiu no disposa de prou espai lliure.</string>
<string name="modapk_missing">Failed to find APK file for black/dark theme from the installer. Clear app data of Manager, then try again.</string>
<string name="modapk_missing">No s\'ha trobat el fitxer APK per al tema negre/fosc a l\'instal·lador. Netejeu les dades del Gestor i intenteu-ho de nou.</string>
<string name="path_missing">No s\'ha pogut localitzar la ruta de instal·lació de YouTube després de la instal·lació \'split\'.</string>
</resources>

View file

@ -3,7 +3,7 @@
<!-- Global Strings -->
<string name="cancel">Abbrechen</string>
<string name="close">Schließen</string>
<string name="description_microg">Eine eigene GMS-Implementation für Vanced, basierend auf dem MicroG-Projekt.</string>
<string name="description_microg">Eine angepasste GMS Implementierung für Vanced, basierend auf dem Projekt microG.</string>
<string name="description_vanced">Ein modifizierter YouTube-Client mit vielen nützlichen Funktionen!</string>
<string name="description_vanced_music">Vanced, aber für YouTube Music! Weniger Funktionen, stillt aber deine Bedürfnisse.</string>
<string name="reset">Zurücksetzen</string>
@ -21,7 +21,7 @@
<string name="grant_root">Root-Berechtigung erteilen</string>
<string name="lets_get_started">Los geht\'s</string>
<string name="select_at_least_one_app">Wähle mindestens eine App!</string>
<string name="willing_to_use_root">Du weißt nicht was das ist oder willst die Root-Version nicht benutzen? Klicke einfach den blauen Pfeil unten an!</string>
<string name="willing_to_use_root">Du weißt nicht, was das ist oder möchtest die Root-Version nicht benutzen? Dann tippe einfach auf den blauen Pfeil unten!</string>
<!-- Home Page -->
<string name="about_app">Über %1$s</string>
<string name="accessibility_download">Download</string>
@ -113,10 +113,10 @@
<string name="installation_downgrade">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.</string>
<string name="installation_failed">Die Installation ist aus unbekannten Gründen fehlgeschlagen. Betrete unser Telegram Chat oder Discord Server für weitere Unterstützung und halte bitte einen Screenshot aus dem erweiterten Menü bereit</string>
<string name="installation_incompatible">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.</string>
<string name="installation_invalid">Installation fehlgeschlagen, da die APK-Dateien beschädigt sind, bitte versuchen Sie es erneut.</string>
<string name="installation_invalid">Installation fehlgeschlagen wegen fehlerhafter APK-Dateien. Bitte erneut versuchen.</string>
<string name="installation_miui">Installation fehlgeschlagen, da die MIUI-Optimierung aktiviert ist. Deaktivieren Sie die MIUI-Optimierung, und versuchen Sie es erneut.</string>
<string name="installation_signature">Installation fehlgeschlagen, da die APK-Signaturüberprüfung aktiviert ist. Deaktivieren Sie die APK-Signaturüberprüfung und versuchen Sie es dann erneut.</string>
<string name="installation_signature">Installation fehlgeschlagen wegen aktivierter APK-Signaturprüfung. Bitte APK-Signaturprüfung deaktivieren und erneut versuchen.</string>
<string name="installation_storage">Installation fehlgeschlagen, da das Gerät nicht genügend freien Speicherplatz hat.</string>
<string name="modapk_missing">APK-Datei für schwarzes/dunkles Theme konnte vom Installer nicht gefunden werden. Löschen Sie die App-Daten des Managers und versuchen Sie es erneut.</string>
<string name="modapk_missing">Es konnte keine APK-Datei für dunkles/schwarzes Design gefunden werden. Bitte die App-Daten des Managers löschen und erneut versuchen.</string>
<string name="path_missing">Fehler beim Auffinden des YouTube-Installationspfades nach der geteilten Installation.</string>
</resources>

View file

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
<!-- Global Strings -->
<string name="cancel">انصراف</string>
<string name="close">بستن</string>
<string name="description_microg">یک پیاده سازی سرویس های گوگل سفارشی برای Vanced بر اساس پروژه microG.</string>
<string name="description_vanced">یک یوتیوب اصلاح شده با بسیاری از ویژگی های مفید!</string>
<string name="description_vanced_music">پیشرفته، اما برای یوتیوب موزیک! ویژگی های نسبتاً کمتری دارد اما نیازهای شما را برآورده می کند.</string>
<string name="reset">بازنشانی</string>
<string name="save">ذخیره</string>
<string name="select_apps">برنامه های خود را انتخاب کنید</string>
<!-- Main Activity -->
<string name="title_about">درباره ما</string>
<string name="title_guide">راهنما</string>
<string name="title_home">مدیریت</string>
<string name="title_logs">گزارشات</string>
<string name="title_settings">تنظیمات</string>
<string name="update_manager">بروزرسانی کردن برنامه</string>
<!-- Welcome Page -->
<string name="are_you_rooted">آیا دستگاه شما روت شده؟</string>
<string name="grant_root">اجازه دسترسی به روت را بدهید</string>
<string name="lets_get_started">بریم شروع کنیم</string>
<string name="select_at_least_one_app">حداقل یک برنامه را انتخاب کنید!</string>
<string name="willing_to_use_root">نمی دانید این چیست یا نمی خواهید از نسخه اصلی استفاده کنید؟ فقط روی فلش آبی زیر کلیک کنید!</string>
<!-- Home Page -->
<string name="about_app">درباره %1$s</string>
<string name="accessibility_download">دانلود</string>
<string name="accessibility_info">اطلاعات</string>
<string name="accessibility_launch">اجرا</string>
<string name="accessibility_reinstall">نصب مجدد</string>
<string name="accessibility_uninstall">حذف نصب</string>
<string name="accessibility_update">بروزرسانی</string>
<string name="apps">برنامه ها</string>
<string name="changelog">تغییرات</string>
<string name="downloading_file">درحال دانلود %1$s</string>
<string name="install">نصب</string>
<string name="latest">آخرین:</string>
<string name="no_microg">لطفاً اول microG را نصب کنید</string>
<string name="root_not_granted">دسترسی به روت داده نشده است</string>
<string name="social_media">رسانه های اجتماعی</string>
<string name="support_us">ما را پشتیبانی کنید</string>
<string name="unavailable">غیر قابل دسترس</string>
<string name="version_installed">نصب شده:</string>
<!-- Settings -->
<string name="accent_color">رنگ برنامه</string>
<string name="category_appearance">ظاهراً</string>
<string name="category_behaviour">رفتار</string>
<string name="clear_files">فایل های دانلود شده را پاک کنید</string>
<string name="cleared_files">با موفقیت حذف شدند</string>
<string name="firebase_summary">این به ما امکان می‌دهد اطلاعاتی درباره عملکرد برنامه و گزارش‌های خرابی جمع‌آوری کنیم</string>
<string name="firebase_title">تجزیه و تحلیل بیس</string>
<string name="language_title">زبان</string>
<string name="link_custom_tabs">پیوندها در برگه‌های گوگل کروم باز می‌شوند</string>
<string name="link_title">استفاده از صفحات های گوگل کروم</string>
<string name="push_notifications">%1$s اعلانات لحظه ای</string>
<string name="push_notifications_summary">هنگام انتشار بروزرسانی برای %1$s، اعلان‌های لحظه ای دریافت کنید</string>
<string name="script_save_failed">ذخیره مقادیر زمان جدید انجام نشد</string>
<string name="script_sleep_timer">زمان خاموشی اسکریپت روت</string>
<string name="script_sleep_timer_description">مقدار زمان خاموشی مورد استفاده در اسکریپت /data/adb/service.d/app.sh را تنظیم کنید، برای رفع مشکلات نصب ، مفید است</string>
<string name="system_default">پیش فرض سیستم</string>
<string name="theme">تم</string>
<string name="theme_dark">تم تیره</string>
<string name="theme_light">تم روشن</string>
<string name="update_center">قسمت آپدیت</string>
<string name="update_not_found">آپدیت جدیدی موجود نیست</string>
<string name="variant">نوع دیگر</string>
<!-- Logs -->
<string name="logs_not_saved">نمی توان گزارشات را ذخیره کرد</string>
<string name="logs_saved">گزارشات با موفقیت ذخیره شدند در %1$s</string>
<!-- Dialogs -->
<string name="advanced">جزئیات</string>
<string name="app_install_files_detected">%1$s فایل های نصبی شناسایی شد!</string>
<string name="app_install_files_detected_summary">برنامه تشخیص داد که همه فایل‌های لازم برای نصب %1$s پیدا شد. آیا می خواهید آن را نصب کنید?</string>
<string name="app_installation_preferences">%1$s تنظیمات نصب</string>
<string name="checking_updates">بررسی برای وجود بروزرسانی ها…</string>
<string name="chosen_lang">زبان ها: %1$s</string>
<string name="chosen_theme">تم: %1$s</string>
<string name="chosen_version">نسخه: %1$s</string>
<string name="error">خطا</string>
<string name="guide">راهنما</string>
<string name="hold_on">توقف!</string>
<string name="magisk_vanced">شما از مجیسک /کاستوم ریکاوری استفاده می کنید که متوقف شده است و با استفاده از این برنامه نمی توان آن را به روز کرد. لطفاً با حذف ماژول مجیسک/کاستوم ریکاوری برنامه را حذف کنید.</string>
<string name="miui_one">برای نصب برنامه، باید بهینه سازی می یو آی را در تنظیمات توسعه دهنده غیرفعال کنید. (اگر از رام مبتنی بر xiaomi.eu 20.2.20 یا جدیدتر استفاده می کنید، می توانید این هشدار را نادیده بگیرید)</string>
<string name="miui_one_title">بهینه سازی می یو آی فعال شده!</string>
<string name="please_be_patient">لطفاً در هنگام نصب از برنامه خارج نشوید با تشکر!</string>
<string name="uninstall_app_text">آیا مطمئنید می‌خواهید حذف نصب کنید %1$s?</string>
<string name="uninstall">حذف نصب</string>
<string name="redownload">دانلود مجدد</string>
<string name="security_context">مطمئن شوید که برنامه را از vancedapp.com، سرور دیسکورد یا گیت هاپ دانلود کرده اید</string>
<string name="version">نسخه</string>
<string name="welcome">خوش آمدید</string>
<!-- Install Page -->
<string name="choose_preferred_language">زبان مورد نظر خود را انتخاب کنید</string>
<string name="install_latest">آخرین</string>
<string name="light_plus_other">روشن + %1$s</string>
<string name="select_at_least_one_lang">حداقل ۱ زبان را انتخاب کنید!</string>
<string name="vanced_black">سیاه</string>
<string name="vanced_dark">تیره</string>
<!-- About Page -->
<string name="manager_dev">توسعه دهندگان برنامه</string>
<string name="other_contributors">سایر مشارکت کنندگان</string>
<string name="sources">منابع</string>
<string name="vanced_team">تیم ما</string>
<!-- Error messages -->
<string name="chown_fail">فایل نصب `اسپلیت` برای مالک سیستم انجام نشد، لطفاً دوباره امتحان کنید.</string>
<string name="error_downloading">خطا در دانلود %1$s</string>
<string name="failed_accent">اعمال رنگ کلی برنامه ناموفق بود</string>
<string name="failed_uninstall">حذف نصب برنامه ناموفق بود %1$s</string>
<string name="files_missing_va">یافتن فایل های مورد نیاز برای نصب انجام نشد. فایل های نصب را دوباره دانلود کنید، سپس دوباره امتحان کنید.</string>
<string name="ifile_missing">یافتن فایل نصبی برای تم سیاه/تاریک از فضای ذخیره‌سازی انجام نشد، لطفاً دوباره امتحان کنید.</string>
<string name="installation_aborted">نصب انجام نشد زیرا کاربر نصب را لغو کرد.</string>
<string name="installation_conflict">نصب انجام نشد زیرا برنامه با یک برنامه از قبل نصب شده تداخل دارد. نسخه فعلی برنامه را حذف نصب کنید، سپس دوباره امتحان کنید.</string>
<string name="installation_downgrade">نصب انجام نشد زیرا کاربر سعی کرد برنامه را به نسخه قبلی برگرداند. بروزرسانی‌های برنامه اصلی را حذف نصب کنید، سپس دوباره امتحان کنید.</string>
<string name="installation_failed">نصب به دلایل نامعلومی انجام نشد، برای پشتیبانی بیشتر به تلگرام یا دیسکورد ما بپیوندید. لطفاً یک اسکرین شات از منوی پیشرفته نیز پیوست کنید</string>
<string name="installation_incompatible">نصب انجام نشد زیرا فایل نصبی با دستگاه شما سازگار نیست. فایل های دانلود شده را در تنظیمات پاک کنید، سپس دوباره امتحان کنید.</string>
<string name="installation_invalid">نصب انجام نشد زیرا فایل‌های نصبی خراب هستند، لطفاً دوباره امتحان کنید.</string>
<string name="installation_miui">نصب انجام نشد زیرا بهینه سازی می یو آی فعال است. بهینه سازی می یو آی را غیرفعال کنید، سپس دوباره امتحان کنید.</string>
<string name="installation_signature">نصب انجام نشد زیرا تأیید امضای برنامه فعال است. تأیید امضای برنامه را غیرفعال کنید، سپس دوباره امتحان کنید.</string>
<string name="installation_storage">نصب انجام نشد زیرا دستگاه فضای خالی کافی ندارد.</string>
<string name="modapk_missing">فایل نصبی برای طرح زمینه سیاه/تاریک از نصب کننده یافت نشد. داده های این برنامه را پاک کنید، سپس دوباره امتحان کنید.</string>
<string name="path_missing">پس از نصب تقسیمی برنامه ، مسیر نصب یوتیوب اصلی پیدا نشد.</string>
</resources>

View file

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
<!-- Global Strings -->
<string name="cancel">Peruuta</string>
<string name="cancel">Cancel</string>
<string name="close">Sulje</string>
<string name="description_microg">MicroG-projektiin perustuva mukautettu GMS-toteutus Vancedille.</string>
<string name="description_vanced">Muokattu YouTube-sovellus, jossa on monia hyödyllisiä ominaisuuksia!</string>
<string name="description_vanced_music">Vanced, Youtube Musicille! Vähemmän ominaisuuksia, mutta täyttää tarpeesi.</string>
<string name="description_vanced">A modified YouTube client with many useful features!</string>
<string name="description_vanced_music">Vanced, mutta YouTube Musicille! Suhteellisen vähemmän ominaisuuksia, mutta täyttää tarpeesi.</string>
<string name="reset">Palauta</string>
<string name="save">Tallenna</string>
<string name="select_apps">Valitse Sovelluksesi</string>
@ -17,53 +17,53 @@
<string name="title_settings">Asetukset</string>
<string name="update_manager">Päivitä hallintasovellus</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Onko laitteesi rootattu?</string>
<string name="grant_root">Anna root-oikeudet</string>
<string name="lets_get_started">Aloitetaan</string>
<string name="select_at_least_one_app">Valitse ainakin yksi sovellus!</string>
<string name="are_you_rooted">Is Your Device Rooted?</string>
<string name="grant_root">Grant Root Permission</string>
<string name="lets_get_started">Let\'s get started</string>
<string name="select_at_least_one_app">Select at least one app!</string>
<string name="willing_to_use_root">Etkö tiedä mikä tämä on tai etkö halua käyttää rootattua versiota? Klikkaa alla olevaa sinistä nuolta!</string>
<!-- Home Page -->
<string name="about_app">%1$s-tietoja</string>
<string name="accessibility_download">Lataa</string>
<string name="accessibility_info">Tietoa</string>
<string name="accessibility_launch">Avaa</string>
<string name="accessibility_reinstall">Uudelleenasenna</string>
<string name="accessibility_uninstall">Poista asennus</string>
<string name="accessibility_update">Päivitä</string>
<string name="apps">Sovellukset</string>
<string name="about_app">About %1$s</string>
<string name="accessibility_download">Download</string>
<string name="accessibility_info">Info</string>
<string name="accessibility_launch">Launch</string>
<string name="accessibility_reinstall">Reinstall</string>
<string name="accessibility_uninstall">Uninstall</string>
<string name="accessibility_update">Update</string>
<string name="apps">Apps</string>
<string name="changelog">Muutoshistoria</string>
<string name="downloading_file">Ladataan %1$s</string>
<string name="install">Asenna</string>
<string name="latest">Uusin:</string>
<string name="no_microg">Asenna Vanced microG ensin</string>
<string name="root_not_granted">Pääkäyttäjän oikeuksia ei ole annettu</string>
<string name="social_media">Sosiaalinen media</string>
<string name="support_us">Tue meitä</string>
<string name="social_media">Social Media</string>
<string name="support_us">Support us</string>
<string name="unavailable">Ei saatavilla</string>
<string name="version_installed">Asennettu:</string>
<!-- Settings -->
<string name="accent_color">Aksenttiväri</string>
<string name="category_appearance">Ulkoasu</string>
<string name="category_behaviour">Käyttäytyminen</string>
<string name="clear_files">Tyhjennä ladatut tiedostot</string>
<string name="cleared_files">Tiedostot tyhjennettiin onnistuneesti</string>
<string name="firebase_summary">Tämän avulla voimme kerätä tietoa sovelluksen suorituskyvystä ja kaatumislokeista</string>
<string name="firebase_title">Firebase-analytiikka</string>
<string name="language_title">Kieli</string>
<string name="clear_files">Clear downloaded files</string>
<string name="cleared_files">Successfully cleared files</string>
<string name="firebase_summary">This lets us collect information about app performance and crash logs</string>
<string name="firebase_title">Firebase Analytics</string>
<string name="language_title">Language</string>
<string name="link_custom_tabs">Linkit aukeavat Chromen mukautetuissa välilehdissä</string>
<string name="link_title">Käytä Chromen mukautettuja välilehtiä</string>
<string name="push_notifications">%1$s Push-ilmoitusta</string>
<string name="push_notifications_summary">Vastaanota push-ilmoituksia, kun %1$s:lle on julkaistu päivitys</string>
<string name="push_notifications">%1$s Push Notifications</string>
<string name="push_notifications_summary">Receive push notifications when an update for %1$s is released</string>
<string name="script_save_failed">Uuden ajan tallennus epäonnistui</string>
<string name="script_sleep_timer">Root Skriptin Lepoaika</string>
<string name="script_sleep_timer_description">Säädä lepoajan arvoa jota käytetään /data/adb/service.d/app.sh skriptissä, joka on hyödyllinen asennusongelmien korjaamisessa</string>
<string name="system_default">Järjestelmän oletus</string>
<string name="system_default">System Default</string>
<string name="theme">Teema</string>
<string name="theme_dark">Tumma teema</string>
<string name="theme_light">Vaalea teema</string>
<string name="update_center">Managerin päivityskeskus</string>
<string name="update_not_found">Ei uusia päivityksiä</string>
<string name="variant">Variaatio</string>
<string name="update_not_found">No new updates</string>
<string name="variant">Variant</string>
<!-- Logs -->
<string name="logs_not_saved">Lokeja ei voitu tallentaa</string>
<string name="logs_saved">Lokit tallennettiin onnistuneesti sijaintiin %1$s</string>
@ -71,52 +71,52 @@
<string name="advanced">Lisätiedot</string>
<string name="app_install_files_detected">%1$s asennustiedostoa havaittu!</string>
<string name="app_install_files_detected_summary">Hallitsija havaitsi, että kaikki tarvittavat tiedostot %1$s asennusta varten. Haluatko asentaa sen?</string>
<string name="app_installation_preferences">%1$s asennusasetukset</string>
<string name="checking_updates">Tarkistetaan päivityksiä</string>
<string name="chosen_lang">Kieli: %1$s</string>
<string name="chosen_theme">Teema: %1$s</string>
<string name="chosen_version">Versio: %1$s</string>
<string name="app_installation_preferences">%1$s Installation Preferences</string>
<string name="checking_updates">Checking for updates</string>
<string name="chosen_lang">Language(s): %1$s</string>
<string name="chosen_theme">Theme: %1$s</string>
<string name="chosen_version">Version: %1$s</string>
<string name="error">Virhe</string>
<string name="guide">Opas</string>
<string name="hold_on">Pysähdy!</string>
<string name="hold_on">Stop!</string>
<string name="magisk_vanced">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.</string>
<string name="miui_one">Asentaaksesi Vancedin, sinun täytyy poistaa MIUI-optimisaatiot käytöstä kehittäjäasetuksista. (Voit ohittaa tämän varoituksen, jos käytät versiota 20.2.20 tai uudempaa xiaomi.eu-pohjaista ROM:ia)</string>
<string name="miui_one_title">MIUI-optimoinnit ovat käytössä!</string>
<string name="miui_one_title">MIUI Optimizations are enabled!</string>
<string name="please_be_patient">ÄLÄ poistu sovelluksesta tämän prosessin aikana!</string>
<string name="uninstall_app_text">Oletko varma, että haluat poistaa %1$s asennuksen?</string>
<string name="uninstall">Poista</string>
<string name="redownload">Uudelleenlataa</string>
<string name="redownload">Redownload</string>
<string name="security_context">Varmista, että latasit sovelluksen osoitteesta vancedapp.com, Vanced Discord-palvelin tai Vanced GitHub</string>
<string name="version">Versio</string>
<string name="version">Version</string>
<string name="welcome">Tervetuloa</string>
<!-- Install Page -->
<string name="choose_preferred_language">Valitse Vancedille haluamasi kieli tai kielet</string>
<string name="choose_preferred_language">Choose your preferred language(s) for Vanced</string>
<string name="install_latest">Uusin</string>
<string name="light_plus_other">Vaalea + %1$s</string>
<string name="select_at_least_one_lang">Valitse ainakin yksi kieli!</string>
<string name="light_plus_other">Light + %1$s</string>
<string name="select_at_least_one_lang">Select at least one language!</string>
<string name="vanced_black">Musta</string>
<string name="vanced_dark">Tumma</string>
<!-- About Page -->
<string name="manager_dev">Managerin kehittäjät</string>
<string name="other_contributors">Muut avustajat</string>
<string name="manager_dev">Kehittäjäpäällikkö</string>
<string name="other_contributors">Other Contributors</string>
<string name="sources">Lähdekoodi</string>
<string name="vanced_team">Vanced kehitystiimi</string>
<!-- Error messages -->
<string name="chown_fail">Ei voitu `chown` APK järjestelmän omistajalle, yritä uudelleen.</string>
<string name="error_downloading">%1$s lataus epäonnistui</string>
<string name="failed_accent">Uuden aksenttivärin käyttöönotto epäonnistui</string>
<string name="failed_accent">Failed to apply new accent color</string>
<string name="failed_uninstall">Paketin %1$s asennus epäonnistui</string>
<string name="files_missing_va">Asennukseen vaadittavien tiedostojen paikannus epäonnistui. Yritä ladata asennustiedostot uudelleen.</string>
<string name="files_missing_va">Failed to locate the required files for installation. Re-download the installation files, then try again.</string>
<string name="ifile_missing">APK-tiedostoa mustalle/tummalle teemalle ei voitu paikantaa tallennustilasta, yritä uudelleen.</string>
<string name="installation_aborted">Asennus epäonnistui, koska käyttäjä keskeytti asennuksen.</string>
<string name="installation_conflict">Asennus epäonnistui, koska sovellus on ristiriidassa jo asennetun sovelluksen kanssa. Poista sovelluksen nykyinen versio ja yritä uudelleen.</string>
<string name="installation_downgrade">Asennus epäonnistui, koska käyttäjä yritti asentaa paketin vanhempaa versiota. Poista YouTube-sovelluksen päivitykset ja yritä sitten uudelleen.</string>
<string name="installation_failed">Asennus epäonnistui tuntemattomasta syystä, liity Vancedin Telegramiin tai Discordiin saadaksesi tukea. Liitä myös kuvankaappaus Lisäasetukset-valikosta</string>
<string name="installation_incompatible">Asennus epäonnistui, koska asennustiedosto ei ole yhteensopiva laitteesi kanssa. Tyhjennä ladatut tiedostot asetuksista ja yritä uudelleen.</string>
<string name="installation_conflict">Installation failed because the app conflicts with an already installed app. Uninstall the current version of the app, then try again.</string>
<string name="installation_downgrade">Installation failed because the user tried to downgrade the package. Uninstall updates from the stock app, then try again.</string>
<string name="installation_failed">Asennus epäonnistui tuntemattomasta syystä, liity Vancedin Telegramiin tai Discordiin saadaksesi tukea. Liitä myös kuvankaappaus Lisäasetukset valikosta</string>
<string name="installation_incompatible">Installation failed because the installation file is incompatible with your device. Clear downloaded files in the Settings, then try again.</string>
<string name="installation_invalid">Asennus epäonnistui, koska APK-tiedostot ovat vioittuneet, yritä uudelleen.</string>
<string name="installation_miui">Asennus epäonnistui, koska MIUI-optimointi on käytössä. Poista MIUI-optimointi käytöstä ja yritä uudelleen.</string>
<string name="installation_miui">Installation failed because MIUI Optimization is enabled. Disable MIUI Optimization, then try again.</string>
<string name="installation_signature">Asennus epäonnistui, koska APK-allekirjoituksen vahvistus on käytössä. Poista APK-allekirjoituksen vahvistus käytöstä, ja yritä uudelleen.</string>
<string name="installation_storage">Asennus epäonnistui, koska laitteella ei ole tarpeeksi vapaata tilaa.</string>
<string name="installation_storage">Installation failed because the device doesn\'t have enough free space.</string>
<string name="modapk_missing">APK-tiedostoa mustalle/tummalle teemalle ei löytynyt asentajalta. Tyhjennä Managerin sovellustiedot ja yritä uudelleen.</string>
<string name="path_missing">Youtube-sovelluksen asennuspolkua ei voitu paikantaa jaetun asennuksen jälkeen.</string>
<string name="path_missing">Failed to locate the stock YouTube installation path after split installation.</string>
</resources>

View file

@ -11,7 +11,7 @@
<string name="select_apps">Piliin ang mga app</string>
<!-- Main Activity -->
<string name="title_about">Tungkol sa app</string>
<string name="title_guide">Gabay</string>
<string name="title_guide">Guide</string>
<string name="title_home">Manager</string>
<string name="title_logs">Mga Log</string>
<string name="title_settings">Settings</string>

View file

@ -3,7 +3,7 @@
<!-- Global Strings -->
<string name="cancel">Odustani</string>
<string name="close">Zatvori</string>
<string name="description_microg">Prilagođena GMS implementacija za Vanced zasnovana na microG projektu.</string>
<string name="description_microg">Prilagođena GMS implementacija za Vanced temeljena na microG projektu.</string>
<string name="description_vanced">Modificirani YouTube klijent sa mnogo korisnih značajki!</string>
<string name="description_vanced_music">Vanced, ali za YouTube Music! S manje značajki ali ispunjava vaše potrebe.</string>
<string name="reset">Resetiraj</string>
@ -21,7 +21,7 @@
<string name="grant_root">Dopusti root dozvolu</string>
<string name="lets_get_started">Započnite</string>
<string name="select_at_least_one_app">Odaberite najmanje jednu aplikaciju!</string>
<string name="willing_to_use_root">Ne znate što je ovo ili ne želite koristiti root verziju? Jednostavno kliknite na plavu strelicu ispod!</string>
<string name="willing_to_use_root">Ne znate što je ovo ili ne želite koristiti root izdanje? Jednostavno kliknite na plavu strelicu ispod!</string>
<!-- Home Page -->
<string name="about_app">O %1$s</string>
<string name="accessibility_download">Preuzmi</string>
@ -66,7 +66,7 @@
<string name="variant">Izdanje</string>
<!-- Logs -->
<string name="logs_not_saved">Nije moguće spremiti zapise</string>
<string name="logs_saved">Dnevnici su uspješno spremljeni u %1$s</string>
<string name="logs_saved">Uspješno spremljeni zapisi u %1$s</string>
<!-- Dialogs -->
<string name="advanced">Detalji</string>
<string name="app_install_files_detected">%1$s instalacijska datoteka je otkrivena!</string>
@ -83,7 +83,7 @@
<string name="miui_one">Kako bi instalirali Vanced, MORATE onemogućiti MIUI optimizaciju u razvojnim mogućnostima. (Ovo upozorenje možete zanemariti ako koristite 20.2.20 ili noviji xiaomi.eu ROM)</string>
<string name="miui_one_title">MIUI optimizacija je omogućena!</string>
<string name="please_be_patient">NE zatvarajte aplikaciju tijekom ovog postupka!</string>
<string name="uninstall_app_text">Da li ste sigurni da želite deinstalirati %1$s ?</string>
<string name="uninstall_app_text">Sigurno želite deinstalirati %1$s ?</string>
<string name="uninstall">Deinstaliraj</string>
<string name="redownload">Ponovno preuzmi</string>
<string name="security_context">Aplikaciju obavezno preuzmite s vancedapp.com, Vanced Discord poslužitelja ili Vanced GitHuba</string>
@ -113,10 +113,10 @@
<string name="installation_downgrade">Instalacija nije uspjela jer je korisnik pokušao instalirati stariju inačicu paketa. Deinstalirajte ažuriranja izvorne YouTube aplikacije, zatim pokušajte ponovno.</string>
<string name="installation_failed">Neuspjela instalacija, nepoznati razlog. Priključite se našem Telegramu ili Diskordu za našu pomoć. Molimo Vas da priključite sliku ekrana iz Proširenog Menua</string>
<string name="installation_incompatible">Instalacija nije uspjela zato jer datoteka instalacije nije kompatibilna s vašim uređajem. Uklonite preuzete datoteke u postavkama, zatim pokušajte ponovno.</string>
<string name="installation_invalid">Instalacija nije uspjela jer su APK datoteke oštećene, pokušajte ponovo.</string>
<string name="installation_invalid">Instalacija nije uspjela jer su APK datoteke oštećene, pokušajte ponovno.</string>
<string name="installation_miui">Instalacija nije uspjela zato jer je MIUI optimizacija uključena. Isključite MIUI optimizaciju, zatim pokušajte ponovno.</string>
<string name="installation_signature">Instalacija nije uspjela jer je omogućena provjera potpisa APK -a. Onemogućite provjeru potpisa APK -a, a zatim pokušajte ponovno.</string>
<string name="installation_signature">Instalacija nije uspjela jer je omogućena provjera APK potpisa. Onemogućite provjeru APK potpisa, a zatim pokušajte ponovno.</string>
<string name="installation_storage">Neuspješna instalacija jer na uređaju nema dovoljno slobodnog prostora.</string>
<string name="modapk_missing">Instalacijski program nije uspio pronaći APK datoteku za crnu/tamnu temu. Izbrišite podatke aplikacije Managera, a zatim pokušajte ponovno.</string>
<string name="modapk_missing">Instalacijski program nije uspio pronaći APK datoteku za crnu/tamnu temu. Uklonite podatke aplikacije Upravitelja, a zatim pokušajte ponovno.</string>
<string name="path_missing">Neuspjelo lociranje putanje izvorne YouTube instalacije nakon razdvojene instalacije.</string>
</resources>

View file

@ -114,7 +114,7 @@ Akarod telepíteni?</string>
<string name="installation_downgrade">A telepítés nem sikerült, mert a felhasználó, régebbi verzióra próbált frissíteni. Távolítsa el az eredeti alkalmazás frissítéseit, majd próbálja újra.</string>
<string name="installation_failed">A telepítés ismeretlen ok miatt meghiúsult, kérjük csatlakozzon a Telegram vagy a Discord csatornánkhoz további támogatásért. Kérjük mellékeljen egy olyan képernyőképet is, ami a Haladó menüben készült</string>
<string name="installation_incompatible">A telepítés nem sikerült, mert a telepítő fájl nem kompatibilis a készülékével. Kérjük törölje a letöltött fájlokat a Beállításokban és próbálja újra.</string>
<string name="installation_invalid">A telepítés nem sikerült, mert az apk fájlok sérültek. Kérjük próbálja újra.</string>
<string name="installation_invalid">A telepítés nem sikerült, mert az APK fájlok sérültek. Kérjük próbálja újra.</string>
<string name="installation_miui">A telepítés nem sikerült, mert a MIUI Optimalizáció engedélyezve van. Kapcsolja ki a MIUI Optimalizációt és próbálja újra.</string>
<string name="installation_signature">A telepítés nem sikerült, mert az apk aláírás ellenőrzés engedélyezve van.
Kapcsolja ki az apk aláírás ellenőrzését és próbálja újra.</string>

View file

@ -45,8 +45,8 @@
<string name="accent_color">Aksen Warna</string>
<string name="category_appearance">Penampilan</string>
<string name="category_behaviour">Perilaku</string>
<string name="clear_files">Hapus file yang diunduh</string>
<string name="cleared_files">Berhasil menghapus file</string>
<string name="clear_files">Hapus berkas yang terunduh</string>
<string name="cleared_files">Berhasil menghapus berkas</string>
<string name="firebase_summary">Analisis firebase mengizinkan kami mengumpulkan informasi tentang performa aplikasi dan catatan crash</string>
<string name="firebase_title">Analisis Firebase</string>
<string name="language_title">Bahasa</string>
@ -69,8 +69,8 @@
<string name="logs_saved">Berhasil menyimpan log ke %1$s</string>
<!-- Dialogs -->
<string name="advanced">Rincian</string>
<string name="app_install_files_detected">File instalasi %1$s terdeteksi!</string>
<string name="app_install_files_detected_summary">Manager mendeteksi bahwa semua file yang diperlukan untuk instalasi %1$s ditemukan. Apakah Anda ingin memasangnya?</string>
<string name="app_install_files_detected">Berkas instalasi %1$s terdeteksi!</string>
<string name="app_install_files_detected_summary">Manager mendeteksi bahwa semua berkas yang diperlukan untuk instalasi %1$s ditemukan. Apakah Anda ingin memasangnya?</string>
<string name="app_installation_preferences">Preferensi Instalasi %1$s</string>
<string name="checking_updates">Memeriksa pembaruan…</string>
<string name="chosen_lang">Bahasa: %1$s</string>
@ -80,7 +80,7 @@
<string name="guide">Petunjuk</string>
<string name="hold_on">Berhenti!</string>
<string name="magisk_vanced">Anda memakai Vanced versi Magisk/TWRP, yang pengembangannya dihentikan dan tidak bisa diperbarui menggunakan aplikasi ini. Mohon untuk menghapusnya dengan menghapus modul Magisk/gunakan pencopot Vanced TWRP.</string>
<string name="miui_one">Untuk memasang Vanced, Anda HARUS menonaktifkan Optimisasi MIUI pada pengaturan developer. (Anda dapat mengabaikan peringatan ini apabila Anda menggunakan ROM versi 20.2.20 atau lebih yang berbasis xiaomi.eu)</string>
<string name="miui_one">Untuk memasang Vanced, Anda HARUS menonaktifkan Optimisasi MIUI pada opsi pengembang. (Anda dapat mengabaikan peringatan ini apabila Anda menggunakan ROM versi 20.2.20 atau lebih yang berbasis xiaomi.eu)</string>
<string name="miui_one_title">Optimisasi MIUI diaktifkan!</string>
<string name="please_be_patient">Mohon untuk TIDAK keluar dari aplikasi saat proses ini!</string>
<string name="uninstall_app_text">Apakah Anda yakin ingin mencopot pemasangan %1$s ?</string>
@ -106,17 +106,17 @@
<string name="error_downloading">Gagal Mengunduh %1$s</string>
<string name="failed_accent">Gagal untuk menerapkan warna aksen baru</string>
<string name="failed_uninstall">Gagal untuk mencopot pemasangan paket %1$s</string>
<string name="files_missing_va">Gagal untuk menemukan file yang diperlukan untuk instalasi. Unduh ulang file instalasi, lalu coba lagi.</string>
<string name="ifile_missing">Gagal untuk menemukan file APK untuk tema hitam/gelap dari penyimpanan, mohon coba lagi.</string>
<string name="files_missing_va">Gagal untuk menemukan berkas yang diperlukan untuk instalasi. Unduh ulang berkas instalasi, lalu coba lagi.</string>
<string name="ifile_missing">Gagal untuk menemukan berkas APK untuk tema hitam/gelap dari penyimpanan, mohon coba lagi.</string>
<string name="installation_aborted">Pemasangan gagal dikarenakan pengguna membatalkan pemasangan.</string>
<string name="installation_conflict">Pemasangan gagal dikarenakan aplikasi konflik dengan aplikasi yang sudah terpasang. Copot pemasangan aplikasi versi saat ini, lalu coba lagi.</string>
<string name="installation_downgrade">Pemasangan gagal dikarenakan pengguna mencoba menurunkan versi paket. Hapus pembaruan dari aplikasi bawaan, lalu coba lagi.</string>
<string name="installation_failed">Pemasangan gagal untuk alasan yang tidak diketahui, gabung Telegram atau Discord kami untuk bantuan lebih lanjut. Mohon untuk melampirkan screenshot dari menu Tingkat Lanjut</string>
<string name="installation_incompatible">Pemasangan gagal dikarenakan file pemasangan tidak kompatibel dengan perangkat Anda. Hapus file yang diunduh di pengaturan, lalu coba lagi.</string>
<string name="installation_invalid">Pemasangan gagal dikarenakan file APK rusak, mohon coba lagi.</string>
<string name="installation_failed">Pemasangan gagal untuk alasan yang tidak diketahui, gabung Telegram atau Discord kami untuk bantuan lebih lanjut. Mohon untuk melampirkan screenshot dari menu Rincian</string>
<string name="installation_incompatible">Pemasangan gagal dikarenakan berkas pemasangan tidak kompatibel dengan perangkat Anda. Hapus berkas yang diunduh di pengaturan, lalu coba lagi.</string>
<string name="installation_invalid">Pemasangan gagal dikarenakan berkas APK rusak, mohon coba lagi.</string>
<string name="installation_miui">Pemasangan gagal dikarenakan Optimisasi MIUI diaktifkan. Nonaktifkan Optimisasi MIUI, lalu coba lagi.</string>
<string name="installation_signature">Pemasangan gagal dikarenakan APK signature verification diaktifkan. Nonaktifkan APK signature verification, lalu coba lagi.</string>
<string name="installation_storage">Pemasangan gagal dikarenakan perangkat tidak memiliki ruang penyimpanan yang cukup.</string>
<string name="modapk_missing">Gagal untuk menemukan file APK untuk tema hitam/gelap dari penginstal. Hapus data aplikasi Manager, lalu coba lagi.</string>
<string name="modapk_missing">Gagal untuk menemukan berkas APK untuk tema hitam/gelap dari penginstal. Hapus data aplikasi Manager, lalu coba lagi.</string>
<string name="path_missing">Gagal untuk menemukan path instalasi YouTube setelah pemasangan split.</string>
</resources>

View file

@ -21,15 +21,15 @@
<string name="grant_root">Gi root-tillatelse</string>
<string name="lets_get_started">La oss komme i gang</string>
<string name="select_at_least_one_app">Velg minst en app!</string>
<string name="willing_to_use_root">Don\'t know what this is or don\'t want to use the root version? Just click the blue arrow below!</string>
<string name="willing_to_use_root">Vet du ikke hva dette er eller ønsker ikke å bruke rot-versjonen? Bare klikk på den blå pilen nedenfor!</string>
<!-- Home Page -->
<string name="about_app">Om %1$s</string>
<string name="accessibility_download">Download</string>
<string name="accessibility_download">Last ned</string>
<string name="accessibility_info">Info</string>
<string name="accessibility_launch">Launch</string>
<string name="accessibility_reinstall">Reinstall</string>
<string name="accessibility_uninstall">Uninstall</string>
<string name="accessibility_update">Update</string>
<string name="accessibility_reinstall">Reinstaller</string>
<string name="accessibility_uninstall">Avinstaller</string>
<string name="accessibility_update">Oppdater</string>
<string name="apps">Apper</string>
<string name="changelog">Endringslogg</string>
<string name="downloading_file">Laster ned %1$s</string>
@ -68,7 +68,7 @@
<string name="logs_not_saved">Could not save logs</string>
<string name="logs_saved">Successfully saved logs to %1$s</string>
<!-- Dialogs -->
<string name="advanced">Details</string>
<string name="advanced">Detaljer</string>
<string name="app_install_files_detected">%1$s installasjonsfiler oppdaget!</string>
<string name="app_install_files_detected_summary">Manager oppdaget at alle nødvendige filer for %1$s installasjonen ble funnet. Vil du installere den?</string>
<string name="app_installation_preferences">%1$s Installasjonsinnstillinger</string>
@ -80,11 +80,11 @@
<string name="guide">Guide</string>
<string name="hold_on">Stopp!</string>
<string name="magisk_vanced">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.</string>
<string name="miui_one">To install Vanced, you MUST disable MIUI Optimizations in the developer settings. (You can ignore this warning if you are using 20.2.20 or later xiaomi.eu based ROM)</string>
<string name="miui_one">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)</string>
<string name="miui_one_title">MIUI Optimizations are enabled!</string>
<string name="please_be_patient">Please do NOT exit the app during this process!</string>
<string name="uninstall_app_text">Are you sure you want to uninstall %1$s ?</string>
<string name="uninstall">Uninstall</string>
<string name="uninstall_app_text">Er du sikker på at du vil avinstallere %1$s?</string>
<string name="uninstall">Avinstaller</string>
<string name="redownload">Last ned på nytt</string>
<string name="security_context">Sørg for at du lastet ned appen fra vancedapp.com, Vanced Discord server, eller Vanced GitHub</string>
<string name="version">Versjon</string>
@ -94,11 +94,11 @@
<string name="install_latest">Latest</string>
<string name="light_plus_other">Lys + %1$s</string>
<string name="select_at_least_one_lang">Velg minst ett språk!</string>
<string name="vanced_black">Black</string>
<string name="vanced_dark">Dark</string>
<string name="vanced_black">Svart</string>
<string name="vanced_dark">rk</string>
<!-- About Page -->
<string name="manager_dev">Manager Devs</string>
<string name="other_contributors">Other Contributors</string>
<string name="other_contributors">Andre bidragsytere</string>
<string name="sources">Kilder</string>
<string name="vanced_team">Vanced Team</string>
<!-- Error messages -->

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
<!-- Global Strings -->
<string name="cancel">Cancel</string>
<string name="cancel">ବାତିଲ୍ କର</string>
<string name="close">Close</string>
<string name="description_microg">A custom GMS Implementation for Vanced based on the microG project.</string>
<string name="description_vanced">A modified YouTube client with many useful features!</string>
@ -25,7 +25,7 @@
<!-- Home Page -->
<string name="about_app">About %1$s</string>
<string name="accessibility_download">Download</string>
<string name="accessibility_info">Info</string>
<string name="accessibility_info">ସୂଚନା</string>
<string name="accessibility_launch">Launch</string>
<string name="accessibility_reinstall">Reinstall</string>
<string name="accessibility_uninstall">Uninstall</string>
@ -43,8 +43,8 @@
<string name="version_installed">Installed:</string>
<!-- Settings -->
<string name="accent_color">Accent Color</string>
<string name="category_appearance">Appearance</string>
<string name="category_behaviour">Behavior</string>
<string name="category_appearance">ରୂପ</string>
<string name="category_behaviour">ଆଚରଣ</string>
<string name="clear_files">Clear downloaded files</string>
<string name="cleared_files">Successfully cleared files</string>
<string name="firebase_summary">This lets us collect information about app performance and crash logs</string>
@ -58,9 +58,9 @@
<string name="script_sleep_timer">Root Script Sleep Time</string>
<string name="script_sleep_timer_description">Adjust sleep time value used in /data/adb/service.d/app.sh script, useful for fixing mounting issues</string>
<string name="system_default">System Default</string>
<string name="theme">Theme</string>
<string name="theme_dark">Dark Theme</string>
<string name="theme_light">Light Theme</string>
<string name="theme">ଥିମ୍</string>
<string name="theme_dark">ଗାଢ଼ ଥିମ୍</string>
<string name="theme_light">ହାଲୁକା ଥିମ୍</string>
<string name="update_center">Manager Update Center</string>
<string name="update_not_found">No new updates</string>
<string name="variant">Variant</string>
@ -74,9 +74,9 @@
<string name="app_installation_preferences">%1$s Installation Preferences</string>
<string name="checking_updates">Checking for updates…</string>
<string name="chosen_lang">Language(s): %1$s</string>
<string name="chosen_theme">Theme: %1$s</string>
<string name="chosen_version">Version: %1$s</string>
<string name="error">Error</string>
<string name="chosen_theme">ଥିମ୍: %1$s</string>
<string name="chosen_version">ସଂସ୍କରଣ: %1$s</string>
<string name="error">ତ୍ରୁଟି</string>
<string name="guide">Guide</string>
<string name="hold_on">Stop!</string>
<string name="magisk_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.</string>
@ -87,15 +87,15 @@
<string name="uninstall">Uninstall</string>
<string name="redownload">Redownload</string>
<string name="security_context">Make sure that you downloaded the app from vancedapp.com, the Vanced Discord server, or the Vanced GitHub</string>
<string name="version">Version</string>
<string name="version">ସଂସ୍କରଣ</string>
<string name="welcome">Welcome</string>
<!-- Install Page -->
<string name="choose_preferred_language">Choose your preferred language(s) for Vanced</string>
<string name="install_latest">Latest</string>
<string name="light_plus_other">Light + %1$s</string>
<string name="select_at_least_one_lang">Select at least one language!</string>
<string name="vanced_black">Black</string>
<string name="vanced_dark">Dark</string>
<string name="vanced_black">କଳା</string>
<string name="vanced_dark">ଗାଢ଼</string>
<!-- About Page -->
<string name="manager_dev">Manager Devs</string>
<string name="other_contributors">Other Contributors</string>

View file

@ -8,17 +8,17 @@
<string name="description_vanced_music">Vanced, mas para o YouTube Music! Relativamente menos funções, mas satisfaz suas necessidades.</string>
<string name="reset">Resetar</string>
<string name="save">Salvar</string>
<string name="select_apps">Selecione Seus Aplicativos</string>
<string name="select_apps">Selecione seus aplicativos</string>
<!-- Main Activity -->
<string name="title_about">Sobre</string>
<string name="title_guide">Guia</string>
<string name="title_home">Gerenciador</string>
<string name="title_logs">Registros</string>
<string name="title_home">Vanced Manager</string>
<string name="title_logs">Arquivos de logs</string>
<string name="title_settings">Configurações</string>
<string name="update_manager">Gerenciador de Atualização</string>
<string name="update_manager">Atualizar o Vanced Manager</string>
<!-- Welcome Page -->
<string name="are_you_rooted">Seu Dispositivo Tem Root?</string>
<string name="grant_root">Conceder Permissão de Root</string>
<string name="are_you_rooted">Seu dispositivo tem root?</string>
<string name="grant_root">Conceder permissão de root</string>
<string name="lets_get_started">Vamos começar</string>
<string name="select_at_least_one_app">Selecione pelo menos um aplicativo!</string>
<string name="willing_to_use_root">Não sabe o que isto é ou não quer usar a versão root? Basta clicar na seta azul abaixo!</string>
@ -37,7 +37,7 @@
<string name="latest">Mais recente:</string>
<string name="no_microg">Instale o microG Vanced primeiro</string>
<string name="root_not_granted">Acesso root não concedido</string>
<string name="social_media">Mídias Sociais</string>
<string name="social_media">Redes Sociais</string>
<string name="support_us">Apoie-nos</string>
<string name="unavailable">Indisponível</string>
<string name="version_installed">Instalado:</string>
@ -66,11 +66,11 @@
<string name="variant">Variante</string>
<!-- Logs -->
<string name="logs_not_saved">Não foi possível salvar os registros</string>
<string name="logs_saved">Registros salvos com sucesso em %1$s</string>
<string name="logs_saved">Arquivos de logs salvos com sucesso em %1$s</string>
<!-- Dialogs -->
<string name="advanced">Detalhes</string>
<string name="app_install_files_detected">%1$s arquivos de instalação detectados!</string>
<string name="app_install_files_detected_summary">O gerenciador detectou que todos os arquivos necessários para a instalação de %1$s foram encontrados. Você quer instalar?</string>
<string name="app_install_files_detected_summary">O Vanced Manager detectou que todos os arquivos necessários para a instalação de %1$s foram encontrados. Deseja prosseguir com a instalação?</string>
<string name="app_installation_preferences">%1$s Preferências de Instalação</string>
<string name="checking_updates">Verificando por atualizações…</string>
<string name="chosen_lang">Idioma(s): %1$s</string>
@ -97,7 +97,7 @@
<string name="vanced_black">Preto</string>
<string name="vanced_dark">Escuro</string>
<!-- About Page -->
<string name="manager_dev">Desenvolvedores do Manager</string>
<string name="manager_dev">Desenvolvedores do Vanced Manager</string>
<string name="other_contributors">Outros contribuidores</string>
<string name="sources">Fontes</string>
<string name="vanced_team">Equipe Vanced</string>
@ -107,7 +107,7 @@
<string name="failed_accent">Falha ao aplicar nova cor de destaque</string>
<string name="failed_uninstall">Falha ao desinstalar o pacote %1$s</string>
<string name="files_missing_va">Falha ao localizar os arquivos necessários para instalação. Baixe novamente os arquivos de instalação e tente novamente.</string>
<string name="ifile_missing">Falha ao localizar o arquivo APK para o tema preto/escuro a partir do armazenamento, por favor tente novamente.</string>
<string name="ifile_missing">Falha ao localizar o arquivo APK para o tema preto/escuro no armazenamento, por favor tente novamente.</string>
<string name="installation_aborted">A instalação falhou porque o usuário abortou a instalação.</string>
<string name="installation_conflict">A instalação falhou porque o app está em conflito com um app já instalado. Desinstale a versão atual do aplicativo e tente novamente.</string>
<string name="installation_downgrade">A instalação falhou porque o usuário tentou fazer o downgrade do pacote. Desinstale as atualizações do aplicativo padrão e tente novamente.</string>
@ -117,6 +117,6 @@
<string name="installation_miui">A instalação falhou porque a Otimização MIUI está ativada. Desative a Otimização MIUI e tente novamente.</string>
<string name="installation_signature">A instalação falhou porque a verificação de assinatura do APK está ativada. Desative a verificação de assinatura do APK e tente novamente.</string>
<string name="installation_storage">A instalação falhou porque o dispositivo não tem espaço livre suficiente.</string>
<string name="modapk_missing">Falha ao encontrar o arquivo APK para o tema preto/escuro a partir do instalador. Limpe os \"dados do app\" do Gerenciador e tente novamente.</string>
<string name="modapk_missing">Falha ao encontrar o arquivo APK para o tema preto/escuro a partir do instalador. Limpe os \"dados do app\" do Vanced Manager e tente novamente.</string>
<string name="path_missing">Falha ao localizar o caminho de instalação padrão do YouTube após a instalação dividida (split).</string>
</resources>

View file

@ -21,7 +21,7 @@
<string name="grant_root">Предоставить root-права</string>
<string name="lets_get_started">Давайте приступим</string>
<string name="select_at_least_one_app">Выберите хотя бы одно приложение!</string>
<string name="willing_to_use_root">Не знаете, что это или не хотите использовать рут версию? Просто нажмите на синюю стрелку ниже!</string>
<string name="willing_to_use_root">Не знаете, что это или не хотите использовать root-версию? Просто нажмите на синюю стрелку ниже!</string>
<!-- Home Page -->
<string name="about_app">О %1$s</string>
<string name="accessibility_download">Скачать</string>
@ -107,16 +107,16 @@
<string name="failed_accent">Не удалось применить новый второстепенный цвет</string>
<string name="failed_uninstall">Ошибка установки пакета %1$s</string>
<string name="files_missing_va">Не удалось найти необходимые файлы для установки. Повторно загрузите установочные файлы и попробуйте еще раз.</string>
<string name="ifile_missing">Не удалось найти APK-файл для черной/темной темы в памяти устройства, повторите попытку.</string>
<string name="ifile_missing">Не удалось найти APK-файл для чёрной/тёмной темы в хранилище, пожалуйста, повторите ещё раз.</string>
<string name="installation_aborted">Установка не была выполнена, поскольку пользователь прервал установку.</string>
<string name="installation_conflict">Установка не удалась, так как приложение конфликтует с уже установленным приложением. Удалите текущую версию приложения, затем повторите попытку.</string>
<string name="installation_downgrade">Установка не удалась, так как пользователь попытался понизить версию приложения. Удалите обновления обычного приложения YouTube, затем повторите попытку.</string>
<string name="installation_failed">Установка не удалась по неизвестным причинам, присоединитесь к нашим каналам Telegram или Discord для дальнейшей поддержки. Пожалуйста, также прикрепите скриншот из расширенного меню</string>
<string name="installation_incompatible">Установка не удалась, так как установочный файл несовместим с вашим устройством. Очистите загруженные файлы в настройках, затем повторите попытку.</string>
<string name="installation_invalid">Установка не удалась, так как APK-файлы повреждены, попробуйте еще раз.</string>
<string name="installation_invalid">Установка не удалась, так как APK-файлы повреждены. Пожалуйста, повторите попытку.</string>
<string name="installation_miui">Установка не удалась, так как включена Оптимизация MIUI. Отключите Оптимизацию MIUI, затем повторите попытку.</string>
<string name="installation_signature">Установка не удалась, так как включена проверка подписи APK. Отключите проверку подписи APK, а затем повторите попытку.</string>
<string name="installation_storage">Установка не удалась из-за отсутствия на устройстве свободного места.</string>
<string name="modapk_missing">Не удалось найти APK-файл для черной/темной темы в программе установки. Удалите данные приложения из Manager и повторите попытку.</string>
<string name="modapk_missing">Не удалось найти APK-файл для черной/темной темы в установщике. Очистите данные Vanced Manager и повторите попытку.</string>
<string name="path_missing">Не удалось найти стандартный путь установки YouTube после раздельной установки.</string>
</resources>

View file

@ -66,7 +66,7 @@
<string name="variant">Варіант</string>
<!-- Logs -->
<string name="logs_not_saved">Не вдалося зберегти логи</string>
<string name="logs_saved">Логі успішно збережені в %1$s</string>
<string name="logs_saved">Успішно збережено логи до %1$s</string>
<!-- Dialogs -->
<string name="advanced">Детальніше</string>
<string name="app_install_files_detected">Знайдено %1$s файлів для встановлення!</string>