Compare commits

..

46 Commits

Author SHA1 Message Date
topjohnwu
0c782edf21 Bump version 2018-03-18 12:25:13 +08:00
topjohnwu
e3948d295e Update fragment transaction 2018-03-18 12:25:13 +08:00
topjohnwu
5f2c742a5c Fix strings 2018-03-18 12:25:12 +08:00
Vv2233Bb
b30c77aab9 Update for values-lt 2018-03-17 20:22:09 +08:00
Albert I
a5916b9c49 values-in: Add missing translation
Signed-off-by: Albert I <krascgq@outlook.co.id>
2018-03-17 20:21:52 +08:00
dark-basic #DarkBasic BasicHD
453180e30b Update strings.xml 2018-03-17 20:21:39 +08:00
linar10
8bd432d391 Update strings.xml 2018-03-17 20:21:21 +08:00
topjohnwu
c9d3e20aef Fix repo loading UI logic 2018-03-17 20:20:05 +08:00
topjohnwu
d5408d1f09 Bump version 2018-03-11 08:28:56 +08:00
topjohnwu
f334532aba Fix strings 2018-03-11 07:33:30 +08:00
dark-basic #DarkBasic BasicHD
be77c09f3d Update Strings
Translation update or translation improvement :D
2018-03-11 07:26:57 +08:00
Jonas Schubert
7de6a92753 added missing update and fingerprint string for german translation 2018-03-11 07:26:33 +08:00
feliph-rc
36f76f5a14 Update strings.xml 2018-03-11 07:26:10 +08:00
Rom
b84523d557 Update French translation
All lines checked 3 times to aoid any problem(s).
2018-03-11 07:26:00 +08:00
topjohnwu
2c78c415e9 Android P cannot install from sdcardfs, use TMPDIR 2018-03-11 05:28:47 +08:00
topjohnwu
79ccb30dd2 Disable SQLite WAL mode manually
Android P seems to default to WAL mode, we don't like it
2018-03-11 04:48:58 +08:00
topjohnwu
3c566becf6 Revert support library
Stupid Google bug: https://issuetracker.google.com/issues/74051124
2018-03-11 04:47:41 +08:00
topjohnwu
151ca593af Update support library 2018-03-04 12:47:15 +08:00
topjohnwu
4132eacba0 Clear folder if installation failed
Close #420
2018-03-03 22:09:12 +08:00
Taras
06e6151816 update Ukrainian translation 2018-03-03 21:00:49 +08:00
Igor Sorocean
70277d4edd update romanian translation 2018-03-03 21:00:37 +08:00
RoySchutte
d21d2f1a9c Update strings.xml 2018-03-03 21:00:17 +08:00
dark-basic #DarkBasic BasicHD
74a7be996f ReUpdate Strings 2018-03-03 21:00:07 +08:00
topjohnwu
3f38579529 Fix strings 2018-02-22 01:29:09 +08:00
topjohnwu
4d5a9f6e15 Bump version 2018-02-22 01:09:55 +08:00
topjohnwu
41f47acd76 Use native XML parser for settings migration 2018-02-22 01:09:55 +08:00
Ilya Kushnir
821dcaa7c7 Update RU strings 2018-02-22 01:09:41 +08:00
vvb2060
7135d26419 Update zh-rCN translation 2018-02-22 01:09:30 +08:00
Oliver Cervera
f7fd354dce Update it strings
- New strings added
2018-02-21 16:58:42 +08:00
dark-basic #DarkBasic BasicHD
0c69a65bc4 Update strings.xml
New Lines added.
New Translation subject to change. :D
2018-02-21 16:58:33 +08:00
Fatih Fırıncı
2f2ca5eab4 Update strings.xml 2018-02-21 16:58:24 +08:00
topjohnwu
df9c40c035 Move to raw resources 2018-02-20 05:07:18 +08:00
topjohnwu
25b67017e4 Update traditional Chinese translation 2018-02-20 03:34:36 +08:00
linar10
bc9c3346f3 Update strings.xml 2018-02-20 03:30:36 +08:00
Vv2233Bb
1db7e19fe8 Updated string-lt 2018-02-20 03:30:23 +08:00
Albert I
102c03ce2b Update Indonesian translations
* Add restore manager strings

Signed-off-by: Albert I <krascgq@outlook.co.id>
2018-02-20 03:29:55 +08:00
Ilya Kushnir
ec19eb4455 Update RU strings 2018-02-20 03:29:39 +08:00
Igor Sorocean
6d9924d50e Update romanian translation 2018-02-20 03:24:56 +08:00
Artem
16c4d74274 Add some Rus translate 2018-02-20 03:24:38 +08:00
Jonas Schubert
e4af5fd36a Added german string values for settings restore 2018-02-20 03:24:19 +08:00
dark-basic #DarkBasic BasicHD
702775493a Update strings.xml
New Line Added.
2018-02-20 03:23:55 +08:00
Oliver Cervera
b2ae826066 Italian - Add option to restore Magisk Manager
- Updated Italian translation with new two strings from 5.6.0
2018-02-20 03:23:44 +08:00
Fatih Fırıncı
cc3e9990fa Update strings.xml 2018-02-20 03:23:30 +08:00
topjohnwu
271cbddd5e Settings improvements 2018-02-20 00:39:17 +08:00
topjohnwu
c1423ca9ad Fix F2FS crashes on SQLite 3.21.0 2018-02-18 18:12:12 +08:00
topjohnwu
74379150a1 Use scripts to setup sudb 2018-02-18 12:41:58 +08:00
43 changed files with 753 additions and 579 deletions

2
.gitignore vendored
View File

@@ -6,7 +6,7 @@
app/release
*.hprof
.externalNativeBuild/
*.sh
src/main/assets
public.certificate.x509.pem
private.key.pk8
*.apk

View File

@@ -2,14 +2,13 @@ apply plugin: 'com.android.application'
android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
defaultConfig {
applicationId "com.topjohnwu.magisk"
minSdkVersion 21
targetSdkVersion 27
versionCode 100
versionName "5.6.0"
versionCode 110
versionName "5.6.3"
javaCompileOptions {
annotationProcessorOptions {
argument('butterknife.debuggable', 'false')
@@ -46,14 +45,13 @@ repositories {
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation project(':utils')
implementation 'com.github.topjohnwu:libsu:1.1.0'
implementation 'com.android.support:recyclerview-v7:27.0.2'
implementation 'com.android.support:cardview-v7:27.0.2'
implementation 'com.android.support:design:27.0.2'
implementation 'com.android.support:support-v4:27.0.2'
implementation 'com.github.topjohnwu:libsu:1.1.1'
implementation 'com.android.support:recyclerview-v7:27.1.0'
implementation 'com.android.support:cardview-v7:27.1.0'
implementation 'com.android.support:design:27.1.0'
implementation 'com.android.support:support-v4:27.1.0'
implementation 'com.jakewharton:butterknife:8.8.1'
implementation 'com.atlassian.commonmark:commonmark:0.10.0'
implementation 'org.kamranzafar:jtar:2.3'
implementation 'com.google.code.gson:gson:2.8.2'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}

View File

@@ -1,5 +0,0 @@
### v5.6.0
- Remove JNI requirement, Magisk Manager is now pure Java
- Update the method of handling su database, may fix the issue that root requests won't save
- Add the option to restore Magisk Manager after repackaging with random package name
- Massive under-the-hood optimizations

View File

@@ -14,8 +14,6 @@ import com.topjohnwu.magisk.components.AboutCardRow;
import com.topjohnwu.magisk.components.Activity;
import com.topjohnwu.magisk.utils.Const;
import java.io.IOException;
import java.io.InputStream;
import java.util.Locale;
import butterknife.BindView;
@@ -56,12 +54,8 @@ public class AboutActivity extends Activity {
appChangelog.removeSummary();
appChangelog.setOnClickListener(v -> {
try {
InputStream is = getAssets().open("changelog.md");
new MarkDownWindow(this, getString(R.string.app_changelog), is).exec();
} catch (IOException e) {
e.printStackTrace();
}
new MarkDownWindow(this, getString(R.string.app_changelog),
getResources().openRawResource(R.raw.changelog)).exec();
});
String translators = getString(R.string.translators);

View File

@@ -159,8 +159,8 @@ public class MagiskFragment extends Fragment
safetyNetStatusText.setText(R.string.safetyNet_check_text);
mm.safetyNetDone.hasPublished = false;
mm.updateCheckDone.hasPublished = false;
mm.safetyNetDone.reset();
mm.updateCheckDone.reset();
mm.remoteMagiskVersionString = null;
mm.remoteMagiskVersionCode = -1;
collapse();
@@ -176,11 +176,11 @@ public class MagiskFragment extends Fragment
}
@Override
public void onTopicPublished(Topic topic, Object result) {
public void onTopicPublished(Topic topic) {
if (topic == mm.updateCheckDone) {
updateCheckUI();
} else if (topic == mm.safetyNetDone) {
updateSafetyNetUI((int) result);
updateSafetyNetUI((int) topic.getResults()[0]);
}
}

View File

@@ -84,7 +84,7 @@ public class MagiskHideFragment extends Fragment implements Topic.Subscriber {
}
@Override
public void onTopicPublished(Topic topic, Object result) {
public void onTopicPublished(Topic topic) {
mSwipeRefreshLayout.setRefreshing(false);
appAdapter.filter(lastFilter);
}

View File

@@ -1,5 +1,8 @@
package com.topjohnwu.magisk;
import android.app.job.JobInfo;
import android.app.job.JobScheduler;
import android.content.ComponentName;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
@@ -14,6 +17,7 @@ import android.widget.Toast;
import com.topjohnwu.magisk.container.Module;
import com.topjohnwu.magisk.database.RepoDatabaseHelper;
import com.topjohnwu.magisk.database.SuDatabaseHelper;
import com.topjohnwu.magisk.services.UpdateCheckService;
import com.topjohnwu.magisk.utils.Const;
import com.topjohnwu.magisk.utils.Topic;
import com.topjohnwu.magisk.utils.Utils;
@@ -101,8 +105,10 @@ public class MagiskManager extends Shell.ContainerApp {
Shell.setInitializer(new Shell.Initializer() {
@Override
public void onRootShellInit(@NonNull Shell shell) {
try (InputStream in = MagiskManager.get().getAssets().open(Const.UTIL_FUNCTIONS)) {
shell.loadInputStream(null, null, in);
try (InputStream utils = getAssets().open(Const.UTIL_FUNCTIONS);
InputStream sudb = getResources().openRawResource(R.raw.sudb)) {
shell.loadInputStream(null, null, utils);
shell.loadInputStream(null, null, sudb);
} catch (IOException e) {
e.printStackTrace();
}
@@ -205,7 +211,8 @@ public class MagiskManager extends Shell.ContainerApp {
try {
magiskVersionString = Utils.cmd("magisk -v").split(":")[0];
magiskVersionCode = Integer.parseInt(Utils.cmd("magisk -V"));
String s = Utils.cmd((magiskVersionCode > 1435 ? "resetprop -p " : "getprop ") + Const.MAGISKHIDE_PROP);
String s = Utils.cmd((magiskVersionCode > 1435 ? "resetprop -p " : "getprop ")
+ Const.MAGISKHIDE_PROP);
magiskHide = s == null || Integer.parseInt(s) != 0;
} catch (Exception ignored) {}
@@ -223,4 +230,23 @@ public class MagiskManager extends Shell.ContainerApp {
public void setPermissionGrantCallback(Runnable callback) {
permissionGrantCallback = callback;
}
public void setupUpdateCheck() {
JobScheduler scheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
if (prefs.getBoolean(Const.Key.CHECK_UPDATES, true)) {
if (scheduler.getAllPendingJobs().isEmpty() ||
Const.UPDATE_SERVICE_VER > prefs.getInt(Const.Key.UPDATE_SERVICE_VER, -1)) {
ComponentName service = new ComponentName(this, UpdateCheckService.class);
JobInfo info = new JobInfo.Builder(Const.ID.UPDATE_SERVICE_ID, service)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.setPersisted(true)
.setPeriodic(8 * 60 * 60 * 1000)
.build();
scheduler.schedule(info);
}
} else {
scheduler.cancel(Const.UPDATE_SERVICE_VER);
}
}
}

View File

@@ -23,9 +23,6 @@ import com.topjohnwu.magisk.utils.Topic;
import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.superuser.Shell;
import java.io.IOException;
import java.io.InputStream;
import butterknife.BindView;
import butterknife.ButterKnife;
@@ -99,12 +96,8 @@ public class MainActivity extends Activity
if (mm.prefs.getInt(Const.Key.APP_VER, -1) < BuildConfig.VERSION_CODE) {
prefs.edit().putInt(Const.Key.APP_VER, BuildConfig.VERSION_CODE).apply();
try {
InputStream is = getAssets().open("changelog.md");
new MarkDownWindow(this, getString(R.string.app_changelog), is).exec();
} catch (IOException e) {
e.printStackTrace();
}
new MarkDownWindow(this, getString(R.string.app_changelog),
getResources().openRawResource(R.raw.changelog)).exec();
}
}
@@ -134,7 +127,7 @@ public class MainActivity extends Activity
}
@Override
public void onTopicPublished(Topic topic, Object result) {
public void onTopicPublished(Topic topic) {
recreate();
}
@@ -197,22 +190,22 @@ public class MainActivity extends Activity
navigationView.setCheckedItem(itemId);
switch (itemId) {
case R.id.magisk:
displayFragment(new MagiskFragment(), "magisk", true);
displayFragment(new MagiskFragment(), true);
break;
case R.id.superuser:
displayFragment(new SuperuserFragment(), "superuser", true);
displayFragment(new SuperuserFragment(), true);
break;
case R.id.modules:
displayFragment(new ModulesFragment(), "modules", true);
displayFragment(new ModulesFragment(), true);
break;
case R.id.downloads:
displayFragment(new ReposFragment(), "downloads", true);
displayFragment(new ReposFragment(), true);
break;
case R.id.magiskhide:
displayFragment(new MagiskHideFragment(), Const.Key.MAGISKHIDE, true);
displayFragment(new MagiskHideFragment(), true);
break;
case R.id.log:
displayFragment(new LogFragment(), "log", false);
displayFragment(new LogFragment(), false);
break;
case R.id.settings:
startActivity(new Intent(this, SettingsActivity.class));
@@ -225,12 +218,13 @@ public class MainActivity extends Activity
}
}
private void displayFragment(@NonNull Fragment navFragment, String tag, boolean setElevation) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
private void displayFragment(@NonNull Fragment navFragment, boolean setElevation) {
supportInvalidateOptionsMenu();
transaction.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
transaction.replace(R.id.content_frame, navFragment, tag).commitNow();
if (setElevation) toolbar.setElevation(toolbarElevation);
else toolbar.setElevation(0);
getSupportFragmentManager()
.beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.replace(R.id.content_frame, navFragment)
.commitNow();
toolbar.setElevation(setElevation ? toolbarElevation : 0);
}
}

View File

@@ -79,7 +79,7 @@ public class ModulesFragment extends Fragment implements Topic.Subscriber {
}
@Override
public void onTopicPublished(Topic topic, Object result) {
public void onTopicPublished(Topic topic) {
updateUI();
}

View File

@@ -27,6 +27,7 @@ import butterknife.Unbinder;
public class ReposFragment extends Fragment implements Topic.Subscriber {
private Unbinder unbinder;
private MagiskManager mm;
@BindView(R.id.recyclerView) RecyclerView recyclerView;
@BindView(R.id.empty_rv) TextView emptyRv;
@BindView(R.id.swipeRefreshLayout) SwipeRefreshLayout mSwipeRefreshLayout;
@@ -44,8 +45,9 @@ public class ReposFragment extends Fragment implements Topic.Subscriber {
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_repos, container, false);
unbinder = ButterKnife.bind(this, view);
mm = getApplication();
mSwipeRefreshLayout.setRefreshing(true);
mSwipeRefreshLayout.setRefreshing(mm.repoLoadDone.isPending());
mSwipeRefreshLayout.setOnRefreshListener(() -> {
recyclerView.setVisibility(View.VISIBLE);
@@ -60,7 +62,7 @@ public class ReposFragment extends Fragment implements Topic.Subscriber {
@Override
public void onResume() {
adapter = new ReposAdapter(getApplication().repoDB, getApplication().moduleMap);
adapter = new ReposAdapter(mm.repoDB, mm.moduleMap);
recyclerView.setAdapter(adapter);
super.onResume();
}
@@ -72,7 +74,7 @@ public class ReposFragment extends Fragment implements Topic.Subscriber {
}
@Override
public void onTopicPublished(Topic topic, Object result) {
public void onTopicPublished(Topic topic) {
mSwipeRefreshLayout.setRefreshing(false);
recyclerView.setVisibility(adapter.getItemCount() == 0 ? View.GONE : View.VISIBLE);
emptyRv.setVisibility(adapter.getItemCount() == 0 ? View.VISIBLE : View.GONE);
@@ -80,7 +82,7 @@ public class ReposFragment extends Fragment implements Topic.Subscriber {
@Override
public Topic[] getSubscription() {
return new Topic[] { getApplication().repoLoadDone };
return new Topic[] { mm.repoLoadDone };
}
@Override
@@ -103,7 +105,6 @@ public class ReposFragment extends Fragment implements Topic.Subscriber {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
MagiskManager mm = getApplication();
if (item.getItemId() == R.id.repo_sort) {
new AlertDialog.Builder(getActivity())
.setTitle(R.string.sorting_order)

View File

@@ -69,7 +69,7 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
}
@Override
public void onTopicPublished(Topic topic, Object result) {
public void onTopicPublished(Topic topic) {
recreate();
}
@@ -150,17 +150,16 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
reauth.setSummary(R.string.android_o_not_support);
}
// Remove fingerprint option if not possible
// Disable fingerprint option if not possible
if (!FingerprintHelper.canUseFingerprint()) {
suCategory.removePreference(fingerprint);
fingerprint.setEnabled(false);
fingerprint.setSummary(R.string.disable_fingerprint);
}
if (mm.magiskVersionCode >= 1440) {
if (mm.getPackageName().equals(Const.ORIG_PKG_NAME)) {
hideManager.setOnPreferenceClickListener((pref) -> {
Utils.runWithPermission(getActivity(),
Manifest.permission.WRITE_EXTERNAL_STORAGE,
() -> new HideManager(getActivity()).exec());
new HideManager(getActivity()).exec();
return true;
});
generalCatagory.removePreference(restoreManager);
@@ -187,18 +186,6 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
generalCatagory.removePreference(hideManager);
}
if (mm.getPackageName().equals(Const.ORIG_PKG_NAME) && mm.magiskVersionCode >= 1440) {
hideManager.setOnPreferenceClickListener((pref) -> {
Utils.runWithPermission(getActivity(),
Manifest.permission.WRITE_EXTERNAL_STORAGE,
() -> new HideManager(getActivity()).exec());
return true;
});
generalCatagory.removePreference(restoreManager);
} else {
generalCatagory.removePreference(hideManager);
}
if (!Shell.rootAccess() || (Const.USER_ID > 0 &&
mm.multiuserMode == Const.Value.MULTIUSER_MODE_OWNER_MANAGED)) {
prefScreen.removePreference(suCategory);
@@ -298,6 +285,9 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
case Const.Key.UPDATE_CHANNEL:
new CheckUpdates().exec();
break;
case Const.Key.CHECK_UPDATES:
mm.setupUpdateCheck();
break;
}
mm.loadConfig();
setSummary();
@@ -321,7 +311,7 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
}
@Override
public void onTopicPublished(Topic topic, Object result) {
public void onTopicPublished(Topic topic) {
setLocalePreference((ListPreference) findPreference(Const.Key.LOCALE));
}

View File

@@ -2,10 +2,6 @@ package com.topjohnwu.magisk;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.job.JobInfo;
import android.app.job.JobScheduler;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
@@ -15,7 +11,6 @@ import com.topjohnwu.magisk.asyncs.LoadModules;
import com.topjohnwu.magisk.asyncs.ParallelTask;
import com.topjohnwu.magisk.asyncs.UpdateRepos;
import com.topjohnwu.magisk.components.Activity;
import com.topjohnwu.magisk.services.UpdateCheckService;
import com.topjohnwu.magisk.utils.Const;
import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.superuser.Shell;
@@ -50,31 +45,18 @@ public class SplashActivity extends Activity {
LoadModules loadModuleTask = new LoadModules();
if (Utils.checkNetworkStatus()) {
// Fire update check
new CheckUpdates().exec();
// Add repo update check
loadModuleTask.setCallBack(() -> new UpdateRepos(false).exec());
}
// Magisk working as expected
if (Shell.rootAccess() && mm.magiskVersionCode > 0) {
// Add update checking service
if (Const.UPDATE_SERVICE_VER > mm.prefs.getInt(Const.Key.UPDATE_SERVICE_VER, -1)) {
ComponentName service = new ComponentName(this, UpdateCheckService.class);
JobInfo info = new JobInfo.Builder(Const.ID.UPDATE_SERVICE_ID, service)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.setPersisted(true)
.setPeriodic(8 * 60 * 60 * 1000)
.build();
((JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE)).schedule(info);
}
// Update check service
mm.setupUpdateCheck();
// Fire asynctasks
loadModuleTask.exec();
// Check dtbo status
Utils.patchDTBO();
}

View File

@@ -54,7 +54,7 @@ public class CheckUpdates extends ParallelTask<Void, Void, Void> {
@Override
protected void onPostExecute(Void v) {
MagiskManager mm = MagiskManager.get();
if (showNotification && mm.prefs.getBoolean(Const.Key.UPDATE_NOTIFICATION, true)) {
if (showNotification) {
if (BuildConfig.VERSION_CODE < mm.remoteManagerVersionCode) {
ShowUI.managerUpdateNotification();
} else if (mm.magiskVersionCode < mm.remoteMagiskVersionCode) {

View File

@@ -11,9 +11,10 @@ import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.magisk.utils.ZipUtils;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.ShellUtils;
import com.topjohnwu.superuser.io.SuFile;
import com.topjohnwu.superuser.io.SuFileOutputStream;
import com.topjohnwu.utils.JarMap;
import java.io.File;
import java.io.FileInputStream;
import java.security.SecureRandom;
import java.util.jar.JarEntry;
@@ -104,8 +105,7 @@ public class HideManager extends ParallelTask<Void, Void, Boolean> {
MagiskManager mm = MagiskManager.get();
// Generate a new unhide app with random package name
File repack = new File(Const.EXTERNAL_PATH, "repack.apk");
repack.getParentFile().mkdirs();
SuFile repack = new SuFile("/data/local/tmp/repack.apk", true);
String pkg = genPackageName("com.", Const.ORIG_PKG_NAME.length());
try {
@@ -123,7 +123,7 @@ public class HideManager extends ParallelTask<Void, Void, Boolean> {
apk.getOutputStream(je).write(xml);
// Sign the APK
ZipUtils.signZip(apk, repack);
ZipUtils.signZip(apk, new SuFileOutputStream(repack));
} catch (Exception e) {
e.printStackTrace();
return false;
@@ -136,7 +136,6 @@ public class HideManager extends ParallelTask<Void, Void, Boolean> {
repack.delete();
mm.suDB.setStrings(Const.Key.SU_REQUESTER, pkg);
mm.suDB.flush();
Utils.dumpPrefs();
Utils.uninstallPkg(Const.ORIG_PKG_NAME);

View File

@@ -42,6 +42,7 @@ public class InstallMagisk extends ParallelTask<Void, Void, Boolean> {
private List<String> console, logs;
private String mBootLocation;
private int mode;
private File install;
private InstallMagisk(Activity context, List<String> console, List<String> logs, Uri zip) {
super(context);
@@ -66,10 +67,10 @@ public class InstallMagisk extends ParallelTask<Void, Void, Boolean> {
protected Boolean doInBackground(Void... voids) {
MagiskManager mm = MagiskManager.get();
File install = new File(
install = new File(
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ?
mm.createDeviceProtectedStorageContext() :
mm).getFilesDir().getParent()
mm.createDeviceProtectedStorageContext() : mm)
.getFilesDir().getParent()
, "install");
Shell.Sync.sh("rm -rf " + install);
@@ -249,6 +250,7 @@ public class InstallMagisk extends ParallelTask<Void, Void, Boolean> {
protected void onPostExecute(Boolean result) {
FlashActivity activity = (FlashActivity) getActivity();
if (!result) {
Shell.Async.sh("rm -rf " + install);
console.add("! Installation failed");
activity.reboot.setVisibility(View.GONE);
}

View File

@@ -54,11 +54,13 @@ public class MarkDownWindow extends ParallelTask<Void, Void, String> {
}
String css;
try (
InputStream in = mm.getAssets().open(mm.isDarkTheme ? "dark.css" : "light.css");
InputStream in = mm.getResources().openRawResource(
mm.isDarkTheme ? R.raw.dark : R.raw.light);
ByteArrayOutputStream out = new ByteArrayOutputStream()
) {
ShellUtils.pump(in, out);
css = out.toString();
in.close();
} catch (IOException e) {
e.printStackTrace();
return "";

View File

@@ -42,7 +42,7 @@ public class UpdateRepos extends ParallelTask<Void, Void, Void> {
MagiskManager mm = MagiskManager.get();
prefs = mm.prefs;
repoDB = mm.repoDB;
mm.repoLoadDone.hasPublished = false;
mm.repoLoadDone.reset();
// Legacy data cleanup
File old = new File(mm.getApplicationInfo().dataDir + "/shared_prefs", "RepoMap.xml");
if (old.exists() || prefs.getString("repomap", null) != null) {
@@ -160,6 +160,11 @@ public class UpdateRepos extends ParallelTask<Void, Void, Void> {
ReposFragment.adapter.notifyDBChanged();
}
@Override
protected void onPreExecute() {
MagiskManager.get().repoLoadDone.setPending();
}
@Override
protected Void doInBackground(Void... voids) {
etags = new ArrayList<>(Arrays.asList(prefs.getString(Const.Key.ETAG_KEY, "").split(",")));

View File

@@ -7,6 +7,7 @@ import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Build;
import android.os.Process;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.widget.Toast;
@@ -17,6 +18,7 @@ import com.topjohnwu.magisk.container.SuLogEntry;
import com.topjohnwu.magisk.utils.Const;
import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.io.SuFile;
import java.io.File;
import java.text.DateFormat;
@@ -37,30 +39,21 @@ public class SuDatabaseHelper {
private SQLiteDatabase mDb;
private File DB_FILE;
@NonNull
public static SuDatabaseHelper getInstance(MagiskManager mm) {
try {
return new SuDatabaseHelper(mm);
} catch (Exception e) {
// Let's cleanup everything and try again
cleanup("*");
Shell.Sync.su("sudb_clean '*'");
return new SuDatabaseHelper(mm);
}
}
public static void cleanup() {
cleanup(String.valueOf(Const.USER_ID));
}
public static void cleanup(String s) {
Shell.Sync.su(
"umount -l /data/user*/*/*/databases/su.db",
"umount -l /sbin/.core/db-" + s + "/magisk.db",
"rm -rf /sbin/.core/db-" + s);
}
private SuDatabaseHelper(MagiskManager mm) {
pm = mm.getPackageManager();
mDb = openDatabase(mm);
mDb.disableWriteAheadLogging();
int version = mDb.getVersion();
if (version < DATABASE_VER) {
onUpgrade(mDb, version);
@@ -72,11 +65,11 @@ public class SuDatabaseHelper {
}
private SQLiteDatabase openDatabase(MagiskManager mm) {
String GLOBAL_DB = "/data/adb/magisk.db";
final SuFile GLOBAL_DB = new SuFile("/data/adb/magisk.db", true);
DB_FILE = new File(Utils.fmt("/sbin/.core/db-%d/magisk.db", Const.USER_ID));
Context de = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N
? mm.createDeviceProtectedStorageContext() : mm;
if (!DB_FILE.exists()) {
if (!DB_FILE.canWrite()) {
if (!Shell.rootAccess()) {
// We don't want the app to crash, create a db and return
DB_FILE = mm.getDatabasePath("su.db");
@@ -84,7 +77,7 @@ public class SuDatabaseHelper {
}
mm.loadMagiskInfo();
// Cleanup
cleanup();
Shell.Sync.su("sudb_clean " + Const.USER_ID);
if (mm.magiskVersionCode < 1410) {
// Super old legacy mode
DB_FILE = mm.getDatabasePath("su.db");
@@ -100,22 +93,23 @@ public class SuDatabaseHelper {
mm.deleteDatabase("su.db");
de.deleteDatabase("su.db");
if (mm.magiskVersionCode < 1460) {
// v14.5 global DB location
GLOBAL_DB = new File(de.getFilesDir().getParentFile().getParentFile(),
"magisk.db").getPath();
// We need some additional policies on old versions
Shell.Sync.su("magiskpolicy --live 'create su_file' 'allow * su_file file *'");
// Link to new path
File oldDB = new File(de.getFilesDir().getParentFile().getParentFile(),
"magisk.db");
Shell.Sync.su(Utils.fmt("mv -f %s %s; ln -s %s %s",
oldDB, GLOBAL_DB, GLOBAL_DB, oldDB));
}
// Touch global DB and setup db in tmpfs
Shell.Sync.su(Utils.fmt("touch %s; mkdir -p %s; touch %s; touch %s-journal;" +
"mount -o bind %s %s;" +
"chcon u:object_r:su_file:s0 %s/*; chown %d.%d %s;" +
"chmod 666 %s/*; chmod 700 %s;",
GLOBAL_DB, DB_FILE.getParent(), DB_FILE, DB_FILE,
GLOBAL_DB, DB_FILE,
DB_FILE.getParent(), Process.myUid(), Process.myUid(), DB_FILE.getParent(),
DB_FILE.getParent(), DB_FILE.getParent()
));
if (mm.magiskVersionCode < 1550) {
// We need some additional policies on old versions
Shell.Sync.su("magiskpolicy --live " +
"'create su_file' 'allow * su_file file *' 'allow * su_file dir *'");
}
if (!GLOBAL_DB.exists()) {
Shell.Sync.su("sudb_init");
SQLiteDatabase.openOrCreateDatabase(GLOBAL_DB, null).close();
Shell.Sync.su("sudb_restore");
}
Shell.Sync.su("sudb_setup " + Process.myUid());
}
}
// Not using legacy mode, open the mounted global DB
@@ -123,42 +117,37 @@ public class SuDatabaseHelper {
}
public void onUpgrade(SQLiteDatabase db, int oldVersion) {
try {
if (oldVersion == 0) {
createTables(db);
oldVersion = 3;
}
if (oldVersion == 1) {
// We're dropping column app_name, rename and re-construct table
db.execSQL(Utils.fmt("ALTER TABLE %s RENAME TO %s_old", POLICY_TABLE));
if (oldVersion == 0) {
createTables(db);
oldVersion = 3;
}
if (oldVersion == 1) {
// We're dropping column app_name, rename and re-construct table
db.execSQL(Utils.fmt("ALTER TABLE %s RENAME TO %s_old", POLICY_TABLE));
// Create the new tables
createTables(db);
// Create the new tables
createTables(db);
// Migrate old data to new tables
db.execSQL(Utils.fmt("INSERT INTO %s SELECT " +
"uid, package_name, policy, until, logging, notification FROM %s_old",
POLICY_TABLE, POLICY_TABLE));
db.execSQL(Utils.fmt("DROP TABLE %s_old", POLICY_TABLE));
// Migrate old data to new tables
db.execSQL(Utils.fmt("INSERT INTO %s SELECT " +
"uid, package_name, policy, until, logging, notification FROM %s_old",
POLICY_TABLE, POLICY_TABLE));
db.execSQL(Utils.fmt("DROP TABLE %s_old", POLICY_TABLE));
MagiskManager.get().deleteDatabase("sulog.db");
++oldVersion;
}
if (oldVersion == 2) {
db.execSQL(Utils.fmt("UPDATE %s SET time=time*1000", LOG_TABLE));
++oldVersion;
}
if (oldVersion == 3) {
db.execSQL(Utils.fmt("CREATE TABLE IF NOT EXISTS %s (key TEXT, value TEXT, PRIMARY KEY(key))", STRINGS_TABLE));
++oldVersion;
}
if (oldVersion == 4) {
db.execSQL(Utils.fmt("UPDATE %s SET uid=uid%%100000", POLICY_TABLE));
++oldVersion;
}
} catch (Exception e) {
e.printStackTrace();
onDowngrade(db);
MagiskManager.get().deleteDatabase("sulog.db");
++oldVersion;
}
if (oldVersion == 2) {
db.execSQL(Utils.fmt("UPDATE %s SET time=time*1000", LOG_TABLE));
++oldVersion;
}
if (oldVersion == 3) {
db.execSQL(Utils.fmt("CREATE TABLE IF NOT EXISTS %s (key TEXT, value TEXT, PRIMARY KEY(key))", STRINGS_TABLE));
++oldVersion;
}
if (oldVersion == 4) {
db.execSQL(Utils.fmt("UPDATE %s SET uid=uid%%100000", POLICY_TABLE));
++oldVersion;
}
}
@@ -320,9 +309,4 @@ public class SuDatabaseHelper {
}
return value;
}
public void flush() {
mDb.close();
mDb = SQLiteDatabase.openOrCreateDatabase(DB_FILE, null);
}
}

View File

@@ -120,7 +120,7 @@ public class Const {
public static final String FLASH_SET_BOOT = "boot";
// others
public static final String UPDATE_NOTIFICATION = "notification";
public static final String CHECK_UPDATES = "check_update";
public static final String UPDATE_CHANNEL = "update_channel";
public static final String CUSTOM_CHANNEL = "custom_channel";
public static final String BOOT_FORMAT = "boot_format";

View File

@@ -7,8 +7,13 @@ import java.util.List;
public class Topic {
public boolean hasPublished = false;
private static final int NON_INIT = 0;
private static final int PENDING = 1;
private static final int PUBLISHED = 2;
private int state = NON_INIT;
private List<WeakReference<Subscriber>> subscribers;
private Object[] results;
public void subscribe(Subscriber sub) {
if (subscribers == null) {
@@ -30,29 +35,47 @@ public class Topic {
}
}
public void reset() {
state = NON_INIT;
results = null;
}
public boolean isPublished() {
return state == PUBLISHED;
}
public void publish() {
publish(true, null);
publish(true);
}
public void publish(boolean record) {
publish(record, null);
}
public void publish(boolean record, Object result) {
hasPublished = record;
public void publish(boolean record, Object... results) {
if (record)
state = PUBLISHED;
this.results = results;
if (subscribers != null) {
for (WeakReference<Subscriber> subscriber : subscribers) {
if (subscriber.get() != null)
subscriber.get().onTopicPublished(this, result);
subscriber.get().onTopicPublished(this);
}
}
}
public Object[] getResults() {
return results;
}
public boolean isPending() {
return state == PENDING;
}
public void setPending() {
state = PENDING;
}
public interface Subscriber {
default void subscribeTopics() {
for (Topic topic : getSubscription()) {
if (topic.hasPublished) {
if (topic.isPublished()) {
onTopicPublished(topic);
}
topic.subscribe(this);
@@ -63,13 +86,7 @@ public class Topic {
event.unsubscribe(this);
}
}
default void onTopicPublished() {
onTopicPublished(null, null);
}
default void onTopicPublished(Topic topic) {
onTopicPublished(topic, null);
}
void onTopicPublished(Topic topic, Object result);
void onTopicPublished(Topic topic);
Topic[] getSubscription();
}
}

View File

@@ -19,27 +19,29 @@ import android.support.annotation.StringRes;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.util.Xml;
import android.widget.Toast;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.topjohnwu.magisk.MagiskManager;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.SplashActivity;
import com.topjohnwu.magisk.components.SnackbarMaker;
import com.topjohnwu.magisk.database.SuDatabaseHelper;
import com.topjohnwu.magisk.receivers.DownloadReceiver;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.ShellUtils;
import com.topjohnwu.superuser.io.SuFile;
import com.topjohnwu.superuser.io.SuFileInputStream;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
public class Utils {
@@ -50,8 +52,7 @@ public class Utils {
}
public static void uninstallPkg(String pkg) {
SuDatabaseHelper.cleanup();
Shell.Sync.su("pm uninstall " + pkg);
Shell.Sync.su("sudb_clean " + Const.USER_ID, "pm uninstall " + pkg);
}
public static void dlAndReceive(Context context, DownloadReceiver receiver, String link, String filename) {
@@ -215,35 +216,71 @@ public class Utils {
}
public static void dumpPrefs() {
Gson gson = new Gson();
Map<String, ?> prefs = MagiskManager.get().prefs.getAll();
prefs.remove("App Restrictions");
String json = gson.toJson(prefs, new TypeToken<Map<String, ?>>(){}.getType());
Shell.Sync.su(fmt("for usr in /data/user/*; do echo '%s' > ${usr}/%s; done", json, Const.MANAGER_CONFIGS));
MagiskManager mm = MagiskManager.get();
// Flush prefs to disk
mm.prefs.edit().commit();
File xml = new File(mm.getFilesDir().getParent() + "/shared_prefs",
mm.getPackageName() + "_preferences.xml");
Shell.Sync.su(fmt("for usr in /data/user/*; do cat %s > ${usr}/%s; done", xml, Const.MANAGER_CONFIGS));
}
public static void loadPrefs() {
SuFile config = new SuFile(fmt("/data/user/%d/%s", Const.USER_ID, Const.MANAGER_CONFIGS), true);
List<String> ret = Shell.Sync.su("cat " + config);
if (ShellUtils.isValidOutput(ret)) {
SharedPreferences.Editor editor = MagiskManager.get().prefs.edit();
String json = ret.get(0);
Gson gson = new Gson();
Map<String, ?> prefMap = gson.fromJson(json, new TypeToken<Map<String, ?>>(){}.getType());
editor.clear();
for (Map.Entry<String, ?> entry : prefMap.entrySet()) {
Object value = entry.getValue();
if (value instanceof String) {
editor.putString(entry.getKey(), (String) value);
} else if (value instanceof Boolean) {
editor.putBoolean(entry.getKey(), (boolean) value);
} else if (value instanceof Number) {
editor.putInt(entry.getKey(), ((Number) value).intValue());
if (config.exists()) {
MagiskManager mm = MagiskManager.get();
SharedPreferences.Editor editor = mm.prefs.edit();
try {
SuFileInputStream is = new SuFileInputStream(config);
XmlPullParser parser = Xml.newPullParser();
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
parser.setInput(is, "UTF-8");
parser.nextTag();
parser.require(XmlPullParser.START_TAG, null, "map");
while (parser.next() != XmlPullParser.END_TAG) {
if (parser.getEventType() != XmlPullParser.START_TAG)
continue;
String key = parser.getAttributeValue(null, "name");
String value = parser.getAttributeValue(null, "value");
switch (parser.getName()) {
case "string":
parser.require(XmlPullParser.START_TAG, null, "string");
editor.putString(key, parser.nextText());
parser.require(XmlPullParser.END_TAG, null, "string");
break;
case "boolean":
parser.require(XmlPullParser.START_TAG, null, "boolean");
editor.putBoolean(key, Boolean.parseBoolean(value));
parser.nextTag();
parser.require(XmlPullParser.END_TAG, null, "boolean");
break;
case "int":
parser.require(XmlPullParser.START_TAG, null, "int");
editor.putInt(key, Integer.parseInt(value));
parser.nextTag();
parser.require(XmlPullParser.END_TAG, null, "int");
break;
case "long":
parser.require(XmlPullParser.START_TAG, null, "long");
editor.putLong(key, Long.parseLong(value));
parser.nextTag();
parser.require(XmlPullParser.END_TAG, null, "long");
break;
case "float":
parser.require(XmlPullParser.START_TAG, null, "int");
editor.putFloat(key, Float.parseFloat(value));
parser.nextTag();
parser.require(XmlPullParser.END_TAG, null, "int");
break;
default:
parser.next();
}
}
} catch (IOException | XmlPullParserException e) {
e.printStackTrace();
}
editor.remove(Const.Key.ETAG_KEY);
editor.apply();
MagiskManager.get().loadConfig();
mm.loadConfig();
config.delete();
}
}

View File

@@ -49,21 +49,10 @@ public class ZipUtils {
}
}
public static void signZip(InputStream is, File output) throws Exception {
try (JarMap map = new JarMap(is, false)) {
signZip(map, output);
}
}
public static void signZip(File input, File output) throws Exception {
try (JarMap map = new JarMap(input, false)) {
signZip(map, output);
}
}
public static void signZip(JarMap input, File output) throws Exception {
try (BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(output))) {
signZip(input, out);
try (JarMap map = new JarMap(input, false);
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(output))) {
signZip(map, out);
}
}

View File

@@ -0,0 +1,2 @@
### v5.6.3
- Fix repo loading UI logic

32
src/main/res/raw/sudb.sh Normal file
View File

@@ -0,0 +1,32 @@
sudb_clean() {
local USERID=$1
local DIR="/sbin/.core/db-${USERID}"
umount -l /data/user*/*/*/databases/su.db $DIR $DIR/*
rm -rf $DIR
[ "$USERID" = "*" ] && rm -f /data/adb/magisk.db
}
sudb_init() {
ADB_CONTEXT=`/system/bin/ls -dZ /data/adb | awk '{print $1}'`
chcon u:object_r:su_file:s0 /data/adb
chmod 777 /data/adb
}
sudb_restore() {
chcon $ADB_CONTEXT /data/adb
chmod 700 /data/adb
}
sudb_setup() {
local USER=$1
local USERID=$(($USER / 100000))
local DIR=/sbin/.core/db-${USERID}
mkdir -p $DIR
touch $DIR/magisk.db
mount -o bind /data/adb/magisk.db $DIR/magisk.db
rm -f /data/adb/magisk.db-journal
chcon u:object_r:su_file:s0 $DIR $DIR/*
chmod 700 $DIR
chown $USER.$USER $DIR
chmod 666 $DIR/*
}

View File

@@ -135,9 +135,13 @@
<string name="settings_clear_cache_summary">Löscht die zwischengespeicherten Informationen der Online-Repos. Erzwingt eine Online-Aktualisierung</string>
<string name="settings_hide_manager_title">Magisk Manager verbergen</string>
<string name="settings_hide_manager_summary">Magisk Manager mit zufälligem Paketnamen neu packen</string>
<string name="settings_restore_manager_title">Stelle Magisk Manager wieder her</string>
<string name="settings_restore_manager_summary">Stelle Magisk Manager mit ursprünglichem Paket wieder her</string>
<string name="language">Sprache</string>
<string name="system_default">(Systemstandard)</string>
<string name="settings_update">Aktualisierungs-Einstellungen</string>
<string name="settings_check_update_title">Prüfe nach Aktualisierungen</string>
<string name="settings_check_update_summary">Prüfe regelmäßig im Hintergrund nach Aktualisierungen</string>
<string name="settings_update_channel_title">Aktualisierungs-Kanal</string>
<string name="settings_update_stable">Stabil</string>
<string name="settings_update_beta">Beta</string>
@@ -186,6 +190,7 @@
<string name="requester_summary">Root-Sitzungen erben den Namensraum des Abfragenden</string>
<string name="isolate_summary">Jede Root-Sitzung hat ihren isolierten Namensraum</string>
<string name="android_o_not_support">Android 8.0+ wird nicht unterstützt</string>
<string name="disable_fingerprint">Keine Fingerabdrücke gespeichert oder keine Geräteunterstützung</string>
<!--Superuser-->
<string name="su_request_title">Superuser-Anfrage</string>
@@ -195,7 +200,7 @@
<string name="grant">Gewähren</string>
<string name="su_warning">Erlaubt den vollen Zugriff auf das Gerät.\nVerweigere, wenn du dir unsicher bist!</string>
<string name="forever">Dauerhaft</string>
<string name="once">Nur diesmal</string>
<string name="once">Einmalig</string>
<string name="tenmin">10 Min.</string>
<string name="twentymin">20 Min.</string>
<string name="thirtymin">30 Min.</string>

View File

@@ -11,14 +11,14 @@
<!--Status Fragment-->
<string name="magisk_version_error">Magisk no está instalado</string>
<string name="checking_for_updates">Comprobando actualizaciones…</string>
<string name="checking_for_updates">Comprobando Actualizaciones…</string>
<string name="magisk_update_available">¡Disponible Magisk v%1$s!</string>
<string name="invalid_update_channel">Canal de actualización inválido</string>
<string name="safetyNet_check_text">Toque para empezar la comprobación de SafetyNet</string>
<string name="safetyNet_check_text">Comprobar el estado de SafetyNet</string>
<string name="checking_safetyNet_status">Comprobando estado de SafetyNet…</string>
<string name="safetyNet_check_success">La comprobación de SafetyNet fue exitosa</string>
<string name="safetyNet_check_success">La comprobación fue exitosa</string>
<string name="safetyNet_api_error">Error en la API de SafetyNet</string>
<string name="safetyNet_network_loss">Conexión de red perdida</string>
<string name="safetyNet_network_loss">Red no Disponible</string>
<string name="safetyNet_service_disconnected">Se ha detenido el servicio</string>
<string name="safetyNet_res_invalid">La respuesta no es válida</string>
@@ -29,13 +29,13 @@
<string name="current_magisk_title">Versión instalada: %1$s</string>
<string name="install_magisk_title">Última versión: %1$s</string>
<string name="uninstall">Desinstalar</string>
<string name="uninstall_magisk_msg">Todos los módulos serán desactivados / eliminados. El acceso Root se eliminará y, posiblemente, encriptará los datos si los datos no están cifrados actualmente.</string>
<string name="uninstall_magisk_msg">Todos los módulos serán desactivados / eliminados. El acceso Root se eliminará y, posiblemente, cifrará los datos si los datos no están cifrados actualmente.</string>
<string name="uninstall_magisk_title">Desinstalar Magisk</string>
<string name="update">Actualización %1$s</string>
<!--Module Fragment-->
<string name="no_info_provided">(No hay información)</string>
<string name="no_modules_found">No se han encontrado módulos</string>
<string name="no_modules_found">No se encontraron módulos</string>
<string name="update_file_created">El módulo se actualizará en el siguiente reinicio</string>
<string name="remove_file_created">El módulo se eliminará en el siguiente reinicio</string>
<string name="remove_file_deleted">El módulo no se eliminará en el siguiente reinicio</string>
@@ -47,10 +47,10 @@
<string name="reboot_download">Reiniciar en Modo Download</string>
<!--Repo Fragment-->
<string name="update_available">Actualización disponible</string>
<string name="update_available">Actualización Disponible</string>
<string name="installed">Instalado</string>
<string name="not_installed">No Instalado</string>
<string name="updated_on">Actualizando en: %1$s</string>
<string name="updated_on">Actualizado el: %1$s</string>
<string name="sorting_order">Orden de Clasificación</string>
<string name="sort_by_name">Ordenar por nombre</string>
<string name="sort_by_update">Ordenar según la última actualización</string>
@@ -84,7 +84,7 @@
<string name="download">Descargar</string>
<string name="download_file_error">Error descargando archivo</string>
<string name="reboot">Reiniciar</string>
<string name="zip_process_msg">Procesando archivo zip </string>
<string name="zip_process_msg">Procesando archivo zip…</string>
<string name="downloading_toast">Descargando %1$s</string>
<string name="magisk_update_title">¡Nueva actualización de Magisk disponible!</string>
<string name="settings_reboot_toast">Reinicia para aplicar los ajustes</string>
@@ -94,7 +94,7 @@
<string name="process_error">Error de proceso</string>
<string name="internal_storage">El zip es almacenado en:\n[Internal Storage]%1$s</string>
<string name="zip_download_title">Descargando</string>
<string name="zip_download_msg">Descargando el archivo zip (%1$d%%) </string>
<string name="zip_download_msg">Descargando el archivo zip (%1$d%%)…</string>
<string name="zip_process_title">Procesando</string>
<string name="manager_update_title">Nueva actualización de Magisk Manager disponible!</string>
<string name="manager_download_install">Pulse para descargar e instalar</string>
@@ -102,8 +102,8 @@
<string name="dtbo_patched_reboot">Magisk Manager ha parcheado dtbo.img, por favor reinicia</string>
<string name="magisk_updates">Actualización de Magisk</string>
<string name="flashing">Flasheando</string>
<string name="hide_manager_toast">Ocultando Magisk Manager...</string>
<string name="hide_manager_toast2">Esto podría tomar un tiempo...</string>
<string name="hide_manager_toast">Ocultando Magisk Manager</string>
<string name="hide_manager_toast2">Esto podría tomar un tiempo</string>
<string name="hide_manager_fail_toast">La Ocultación de Magisk Manager ha fallado…</string>
<string name="download_zip_only">Descargar sólo el archivo ZIP</string>
<string name="patch_boot_file">Parcheo de la imagen boot</string>
@@ -132,9 +132,13 @@
<string name="settings_clear_cache_summary">Limpiar la información en caché para los repositorios en línea, fuerza a la aplicación a actualizar en línea</string>
<string name="settings_hide_manager_title">Ocultar Magisk Manager</string>
<string name="settings_hide_manager_summary">Re-empaquetar Magisk Manager con un nombre de paquete al azar</string>
<string name="settings_restore_manager_title">Restaurar Magisk Manager</string>
<string name="settings_restore_manager_summary">Restaura Magisk Manager con el paquete original</string>
<string name="language">Idioma</string>
<string name="system_default">(Idioma del sistema)</string>
<string name="settings_update">Ajustes de Actualización</string>
<string name="settings_check_update_title">Comprobar Actualizaciones</string>
<string name="settings_check_update_summary">Comprobar periódicamente en segundo plano si existen actualizaciones</string>
<string name="settings_update_channel_title">Canal de Actualización</string>
<string name="settings_update_stable">Estable</string>
<string name="settings_update_beta">Beta</string>
@@ -143,10 +147,10 @@
<string name="settings_boot_format_title">Parchear imagen boot por tipo de formato</string>
<string name="settings_boot_format_summary">Seleccionar el formato de salida para parchear la imagen boot.\nEscoja .img para flashear mediante fastboot/download mode; escoja .img.tar para flashear con ODIN.</string>
<string name="settings_core_only_summary">Habilitar sólo funciones principales, no se cargarán todos los módulos. MagiskSU, MagiskHide, y archivo hosts fuera de la partición de sistema seguirán habilitados</string>
<string name="settings_core_only_summary">Habilitar sólo funciones principales, no se cargarán todos los módulos. MagiskSU, MagiskHide, y Systemless Hosts seguirán habilitados</string>
<string name="settings_magiskhide_summary">Ocultar Magisk de varias detecciones</string>
<string name="settings_hosts_title">Habilitar archivo hosts fuera de la partición de sistema</string>
<string name="settings_hosts_summary">Soporte para aplicaciones de bloqueo de publicidad fuera de la partición de sistema</string>
<string name="settings_hosts_title">Systemless Hosts</string>
<string name="settings_hosts_summary">Soporte para aplicaciones Adblock fuera de la partición system</string>
<string name="settings_su_app_adb">Aplicaciones y ADB</string>
<string name="settings_su_app">Sólo aplicaciones</string>
@@ -163,8 +167,8 @@
<string name="request_timeout_summary">%1$s segundos</string>
<string name="settings_su_reauth_title">Re-autenticación</string>
<string name="settings_su_reauth_summary">Pedir permisos de superusuario nuevamente si una aplicación es actualizada o reinstalada</string>
<string name="settings_su_fingerprint_title">Habilitar la autenticación de huellas digitales</string>
<string name="settings_su_fingerprint_summary">Utilice el escáner de huellas digitales para permitir las solicitudes de superusuario</string>
<string name="settings_su_fingerprint_title">Habilitar autenticación de Huella Dactilar</string>
<string name="settings_su_fingerprint_summary">Utilice el sensor de Huella Dactilar para permitir las solicitudes de superusuario</string>
<string name="multiuser_mode">Modo MultiUsuario</string>
@@ -184,6 +188,7 @@
<string name="requester_summary">Las sesiones de root heredarán las peticiones Namespace</string>
<string name="isolate_summary">Cada sesión root tendrá su propia Namespace</string>
<string name="android_o_not_support">No es compatible con Android 8.0+</string>
<string name="disable_fingerprint">No se establecieron huellas dactilares o no existe soporte del dispositivo</string>
<!--Superuser-->
<string name="su_request_title">Petición de superusuario</string>

View File

@@ -1,4 +1,6 @@
<resources>
<!--Universal-->
<!--Welcome Activity-->
<string name="modules">Modules</string>
<string name="downloads">Téléchargements</string>
@@ -6,18 +8,20 @@
<string name="log">Journal</string>
<string name="settings">Paramètres</string>
<string name="install">Installer</string>
<!--Status Fragment-->
<string name="magisk_version_error">Magisk non installé</string>
<string name="checking_for_updates">Vérification de mises à jour…</string>
<string name="magisk_version_error">Magisk n\'est pas installé</string>
<string name="checking_for_updates">Vérification des mises à jours</string>
<string name="magisk_update_available">Magisk v%1$s disponible !</string>
<string name="invalid_update_channel">Canal de mise à jour invalide</string>
<string name="safetyNet_check_text">Appuyer pour lancer le contrôle SafetyNet</string>
<string name="checking_safetyNet_status">Vérification de l\'état de SafetyNet…</string>
<string name="checking_safetyNet_status">Vérification de l\'état SafetyNet…</string>
<string name="safetyNet_check_success">Contrôle SafetyNet passé avec succès</string>
<string name="safetyNet_api_error">Erreur d\'API SafetyNet</string>
<string name="safetyNet_network_loss">Connexion réseau indisponible</string>
<string name="safetyNet_service_disconnected">Le service a été tué</string>
<string name="safetyNet_res_invalid">La réponse est invalide</string>
<!--Install Fragment-->
<string name="advanced_settings_title">Paramètres avancés</string>
<string name="keep_force_encryption">Garder le chiffrement forcé</string>
@@ -28,19 +32,29 @@
<string name="uninstall_magisk_title">Désinstaller Magisk</string>
<string name="uninstall_magisk_msg">Tous les modules seront désactivés/effacés. Le root sera enlevé et vos données seront potentiellement chiffrées si elles ne le sont pas actuellement</string>
<string name="update">Mise à jour %1$s</string>
<!--Module Fragment-->
<string name="no_info_provided">(Aucune information transmise)</string>
<string name="no_modules_found">Aucun module trouvé</string>
<string name="update_file_created">Le module va être mis à jour au prochain redémarrage</string>
<string name="remove_file_created">Le module va être supprimé au prochain redémarrage</string>
<string name="remove_file_deleted">Le module ne va pas être supprimé au prochain redémarrage</string>
<string name="remove_file_deleted">Le module ne sera pas supprimé au prochain redémarrage</string>
<string name="disable_file_created">Le module va être désactivé au prochain redémarrage</string>
<string name="disable_file_removed">Le module va être activé au prochain redémarrage</string>
<string name="author">Créé par %1$s</string>
<string name="reboot_recovery">Redémarrer en récupération</string>
<string name="reboot_bootloader">Redémarrer en chargement d\'image système</string>
<string name="reboot_download">Redémarrer en mode téléchargement</string>
<!--Repo Fragment-->
<string name="update_available">Mise à jour disponible</string>
<string name="installed">Installé</string>
<string name="not_installed">Non installé</string>
<string name="updated_on">Mis à jour le: %1$s</string>
<string name="sorting_order">Mode de tri</string>
<string name="sort_by_name">Trier par nom</string>
<string name="sort_by_update">Trier par dernière mis à jour</string>
<!--Log Fragment-->
<string name="menuSaveLog">Enregistrer journal</string>
<string name="menuReload">Actualiser</string>
@@ -48,15 +62,17 @@
<string name="logs_cleared">Journal effacé avec succès</string>
<string name="log_is_empty">Journal vide</string>
<string name="logs_save_failed">Impossible d\'écrire le journal sur la carte SD:</string>
<!--About Activity-->
<string name="about">À propos</string>
<string name="app_changelog">Modifications de l\'application</string>
<string name="translators">Primokorn, Naboleo, tonymanou</string>
<string name="app_version">Version de l\'application</string>
<string name="app_changelog">Journal</string>
<string name="translators"></string>
<string name="app_version">Version</string>
<string name="app_source_code">Code source</string>
<string name="donation">Dons</string>
<string name="app_translators">Traducteurs de l\'application</string>
<string name="support_thread">Fil de discussion pour support</string>
<string name="support_thread">Fil d\'assistance</string>
<!--Toasts, Dialogs-->
<string name="permissionNotGranted">Cette fonctionnalité ne marchera pas sans la permission d\'écriture sur le stockage externe.</string>
<string name="no_thanks">Non merci</string>
@@ -68,42 +84,45 @@
<string name="download">Télécharger</string>
<string name="download_file_error">Erreur de téléchargement du fichier</string>
<string name="reboot">Redémarrer</string>
<string name="zip_process_msg">Exécution du fichier zip…</string>
<string name="downloading_toast">Téléchargement %1$s</string>
<string name="magisk_update_title">Nouvelle mise à jour de Magisk disponible !</string>
<string name="settings_reboot_toast">Redémarrer pour appliquer les changements</string>
<string name="magisk_update_title">Nouvelle mis à jour Magisk disponible!</string>
<string name="settings_reboot_toast">Redémarrer afin d\'appliquer les réglages</string>
<string name="release_notes">Notes de version</string>
<string name="repo_cache_cleared">Cache du dépôt effacé</string>
<string name="safetyNet_hide_notice">Cette application utilise SafetyNet\nDéjà pris en charge par MagiskHide par défaut</string>
<string name="process_error">Erreur de traitement</string>
<string name="internal_storage">Le zip est stocké dans :\n[Stockage interne]%1$s</string>
<string name="zip_process_title">Traitement</string>
<string name="repo_cache_cleared">Cache du dépôt éffacé</string>
<string name="safetyNet_hide_notice">Cette application utilise SafetyNet\nDéjà masqué par MagiskHide par défaut</string>
<string name="process_error">Erreur du processus</string>
<string name="internal_storage">Le zip est enregistré dans:\n[Stockage Interne]%1$s</string>
<string name="zip_download_title">Téléchargement</string>
<string name="zip_download_msg">Téléchargement du fichier zip (%1$d%%)…</string>
<string name="manager_update_title">Nouvelle mise à jour de Magisk Manager disponible !</string>
<string name="manager_download_install">Appuyez pour télécharger et installer</string>
<string name="dtbo_patched_title">DTBO a été patché !</string>
<string name="dtbo_patched_reboot">Magisk Manager a patché dtbo.img, veuillez redémarrer</string>
<string name="magisk_updates">Mises à jour Magisk</string>
<string name="flashing">Flashage en cours</string>
<string name="hide_manager_toast">Masquage de Magisk Manager…</string>
<string name="hide_manager_toast2">Cela peut prendre du temps…</string>
<string name="hide_manager_fail_toast">Échec du masquage de Magisk Manager…</string>
<string name="download_zip_only">Télécharger uniquement le zip</string>
<string name="patch_boot_file">Patcher le fichier image Boot</string>
<string name="direct_install">Installation directe (recommandée)</string>
<string name="install_second_slot">Intaller sur le second slot (après une OTA)</string>
<string name="select_method">Choisir une méthode</string>
<string name="no_boot_file_patch_support">La version cible de Magisk ne supporte pas la modification du fichier image Boot</string>
<string name="boot_file_patch_msg">Sélectionnez l\'image Boot stock au format .img ou .img.tar</string>
<string name="complete_uninstall">Désinstaller complètement</string>
<string name="restore_done">Restauration effectuée !</string>
<string name="restore_fail">Pas de sauvegarde stock disponible !</string>
<string name="uninstall_toast">Désinstallation de Magisk Manager dans 5 secondes, n\'oubliez pas de redémarrer par la suite</string>
<string name="proprietary_title">Télécharger le code propriétaire</string>
<string name="proprietary_notice">Magisk Manager est un logiciel FOSS et ne contient donc pas le code propriétaire de l\'API SafetyNet de Google. Autorisez-vous Magisk Manager à télécharger une extension (qui contient GoogleApiClient) afin de tester SafetyNet ?</string>
<string name="su_db_corrupt">La base de données SU est corrompue, création d\'une nouvelle base de données prévue</string>
<!--Settings Activity -->
<string name="zip_download_msg">Téléchargement du fichier zip (%1$d%%) </string>
<string name="zip_process_title">Tritement en cours</string>
<string name="zip_process_msg">Traitement du fichier zip…</string>
<string name="manager_update_title">Nouvelle mise à jour du Gestionnaire Magisk disponible!</string>
<string name="manager_download_install">Appuyer pour télécharger et installer</string>
<string name="dtbo_patched_title">DTBO a été patché!</string>
<string name="dtbo_patched_reboot">Le Gestionnaire Magisk a vient de patcher dtbo.img, merci de redémarrer</string>
<string name="magisk_updates">Mises à jours Magisk</string>
<string name="flashing">Flahage</string>
<string name="hide_manager_toast">Masquage du Gestionnaire Magisk...</string>
<string name="hide_manager_toast2">Cela pourrait prendre un certain temps ...</string>
<string name="hide_manager_fail_toast">Masquage du Gestionnaire Magisk échoué…</string>
<string name="download_zip_only">Uniquement télécharger le zip</string>
<string name="patch_boot_file">Patch Fichier Image Démarrage</string>
<string name="direct_install">Installation directe (Recommendée)</string>
<string name="install_second_slot">Installer dans le second Slot (Après OTA)</string>
<string name="select_method">Sélectionner le méthode</string>
<string name="no_boot_file_patch_support">La version cible de Magisk ne prend pas en charge la correction de fichier image de démarrage</string>
<string name="boot_file_patch_msg">Sélectionnez l\'image par défaut de démarrage stockée au format .img ou .img.tar</string>
<string name="complete_uninstall">Désinstallation terminée</string>
<string name="restore_img">Restauration des images</string>
<string name="uninstall_app">Désinstallation de l\'application</string>
<string name="restore_done">Restauration terminée!</string>
<string name="restore_fail">Le sauvegarde par défaut n\'existe pas!</string>
<string name="uninstall_toast">Désinstallation du Gestionnaire Magisk dans 5 secondes, merci de redémarrer manuellement après celà</string>
<string name="proprietary_title">Télécharger Code Propriétaire</string>
<string name="proprietary_notice">Magisk Manager est Libre, il ne contient pas le code API SafetyNet propriétaire de Google. \ N \ nAutorisez vous le Gestionnaire Magisk à télécharger une extension (contenant GoogleApiClient) pour les contrôles SafetyNet? </string>
<string name = "su_db_corrupt"> La base de données SU est corrompue, une nouvelle base de donnée va être re-créé</string>
<!--Settings Activity -->
<string name="settings_general_category">Général</string>
<string name="settings_dark_theme_title">Thème sombre</string>
<string name="settings_dark_theme_summary">Activer le thème sombre</string>
@@ -111,11 +130,28 @@
<string name="settings_notification_summary">Afficher des notifications de mises à jour quand une nouvelle version est disponible</string>
<string name="settings_clear_cache_title">Effacer le cache du dépôt</string>
<string name="settings_clear_cache_summary">Effacer les informations en cache des dépôts distants, pour forcer une actualisation de l\'application</string>
<string name="settings_hide_manager_title">Masquer le Gestionnaire Magisk</string>
<string name="settings_hide_manager_summary">Reconstruire le Gestionnaire Magisk avec un nom de paquet aléatoire</string>
<string name="settings_restore_manager_title">Restaurer le Gestionnaire Magisk</string>
<string name="settings_restore_manager_summary">Restaurer le Gestionnaire Magisk avec le paquet originel</string>
<string name="language">Language</string>
<string name="system_default">(Système par Défaut)</string>
<string name="settings_update">Mis à jour des réglages</string>
<string name="settings_check_update_title">Vérification des mises à jours</string>
<string name="settings_check_update_summary">Vérifier l\'éxistance de mise à jour en tâche de fond de façon périodique</string>
<string name="settings_update_channel_title">Mis à jour du canal</string>
<string name="settings_update_stable">Stable</string>
<string name="settings_update_beta">Béta</string>
<string name="settings_update_custom">Personalisé</string>
<string name="settings_update_custom_msg">Insérer une URL personalisée</string>
<string name="settings_boot_format_title">Patcher Format Fichier Démarrage</string>
<string name="settings_boot_format_summary">Sélectioner le format de sortie de l\'image de boot.\nChoisir .img pour flasher à traver le mode démarrage rapide/téléchargement; choisir .img.tar pour flasher via ODIN.</string>
<string name="settings_core_only_title">Mode Magisk Core uniquement</string>
<string name="settings_core_only_summary">Activer uniquement les fonctionnalités de base, tous les modules ne seront pas chargés. MagiskSU, MagiskHide et les hosts systemless restent activés</string>
<string name="settings_magiskhide_summary">Masquer Magisk de diverses détections</string>
<string name="settings_hosts_title">Hosts systemless</string>
<string name="settings_hosts_summary">Support hosts systemless pour les applications type Adblock</string>
<string name="settings_su_app_adb">Applications et ADB</string>
<string name="settings_su_app">Applications uniquement</string>
<string name="settings_su_adb">ADB uniquement</string>
@@ -129,37 +165,31 @@
<string name="request_timeout">Délai de requête</string>
<string name="superuser_notification">Notification Superuser</string>
<string name="request_timeout_summary">%1$s secondes</string>
<string name="settings_hide_manager_title">Masquer Magisk Manager</string>
<string name="settings_hide_manager_summary">Reconstruire Magisk Manager avec un nom de paquet aléatoire</string>
<string name="language">Langue</string>
<string name="system_default">(Selon système)</string>
<string name="settings_update">Paramètres de mises à jour</string>
<string name="settings_update_channel_title">Canal de mise à jour</string>
<string name="settings_update_stable">Stable</string>
<string name="settings_update_beta">Beta</string>
<string name="settings_update_custom">Personnaliser</string>
<string name="settings_update_custom_msg">Insérer une URL personnalisée</string>
<string name="settings_boot_format_title">Format de sortie du boot patché</string>
<string name="settings_boot_format_summary">Sélectionner le format de l\'image boot patchée finale.\nChoisir .img pour flasher via fastboot/mode download ; choisir .img.tar pour flasher via ODIN.</string>
<string name="settings_su_reauth_title">Ré-authentifier après mise à jour</string>
<string name="settings_su_reauth_summary">Ré-authentifier les permissions superuser après les mises à jour d\'une application</string>
<string name="settings_su_fingerprint_title">Activer l\'authentification par empreinte</string>
<string name="multiuser_mode">Mode multi-utilisateurs</string>
<string name="settings_owner_only">Appareil du propriétaire uniquement</string>
<string name="settings_owner_manage">Appareil du propriétaire géré</string>
<string name="settings_user_independent">Utilisateur indépendant</string>
<string name="owner_only_summary">Seul le propriétaire a l\'accès root</string>
<string name="owner_manage_summary">Seul le propriétaire peut gérer les accès root et recevoir des demandes de permissions</string>
<string name="user_indepenent_summary">Chaque utilisateur dispose de ses propres règles root</string>
<string name="multiuser_hint_owner_request">Une requête a été envoyée au propriétaire de l\'appareil. Veuillez basculer sur le profil du propriétaire et accorder la permission</string>
<string name="mount_namespace_mode">Monter le mode espace de noms</string>
<string name="settings_ns_global">Espace de noms global</string>
<string name="settings_ns_requester">Hériter de l\'espace de noms</string>
<string name="settings_ns_isolate">Espace de noms isolé</string>
<string name="global_summary">Toutes les sessions root utilisent l\'espace de noms global monté</string>
<string name="requester_summary">Les sessions root hériteront des espaces de noms du demandeur</string>
<string name="isolate_summary">Chaque session root aura son propre espace de noms isolé</string>
<!--Superuser-->
<string name="settings_su_reauth_title">Ré-authentifier après la mise à niveau</string>
<string name="settings_su_reauth_summary">Réauthentifier les autorisations de superutilisateur après une mise à niveau d\'application</string>
<string name="settings_su_fingerprint_title">Activer l\'authentification par empreinte digitale</string>
<string name="settings_su_fingerprint_summary">Utiliser un scanner d\'empreintes digitales pour autoriser les demandes superutilisateur</string>
<string name="multiuser_mode">Mode Multi-utilisateurs</string>
<string name="settings_owner_only">Propriétaire de l\'appareil uniquement</string>
<string name="settings_owner_manage">Propriétaire de l\'appareil géré</string>
<string name="settings_user_independent">Utilisateur indépendant</string>
<string name="owner_only_summary">Seul le propriétaire a un accès root</string>
<string name="owner_manage_summary">Seul le propriétaire peut gérer l\'accès root et recevoir des demandes de requêtes</string>
<string name="user_indepenent_summary">Chaque utilisateur a ses propres règles de root séparées</string>
<string name="multiuser_hint_owner_request">Une requête a été envoyée au propriétaire du périphérique. Merci de basculer en propriétaire et d\'accepter les permissions requises</string>
<string name="mount_namespace_mode">Mode Montage Espace de Noms</string>
<string name="settings_ns_global">Espace de Nom Global</string>
<string name="settings_ns_requester">Hériter de l\'espace de noms</string>
<string name="settings_ns_isolate">Espace de noms isolé</string>
<string name="global_summary">Toutes les sessions racines utilisent l\'espace de noms de montage global</string>
<string name="requester_summary">Les sessions racines hériteront de l\'espace de noms de son demandeur</string>
<string name="isolate_summary">Chaque session racine aura son propre espace de noms isolé</string>
<string name="android_o_not_support">Android 8.0+ n\'est pas supporté</string>
<string name="disable_fingerprint">Aucune empreinte digitale n\'a été définie ou aucun support de périphérique</string>
<!--Superuser-->
<string name="su_request_title">Requête Superuser</string>
<string name="deny_with_str">Refuser%1$s</string>
<string name="deny">Refuser</string>
@@ -186,8 +216,11 @@
<string name="su_revoke_msg">Vous confirmez l\'annulation des droits pour %1$s ?</string>
<string name="toast">Toast</string>
<string name="none">Aucun</string>
<string name="auth_fail">Authentication Échouée</string>
<!--Superuser logs-->
<string name="pid">PID :\u0020</string>
<string name="target_uid">UID cible :\\u0020</string>
<string name="command">Commande :\u0020</string>
</resources>

View File

@@ -132,6 +132,8 @@
<string name="settings_clear_cache_summary">Bersihkan informasi ter-cache untuk repo online, memaksa apl untuk menyegarkan online</string>
<string name="settings_hide_manager_title">Sembunyikan Magisk Manager</string>
<string name="settings_hide_manager_summary">Pak ulang Magisk Manager dengan nama paket acak</string>
<string name="settings_restore_manager_title">Pulihkan Magisk Manager</string>
<string name="settings_restore_manager_summary">Pulihkan Magisk Manager dengan paket asli</string>
<string name="language">Bahasa</string>
<string name="system_default">(Default Sistem)</string>
<string name="settings_update">Pengaturan Pembaruan</string>
@@ -183,6 +185,7 @@
<string name="requester_summary">Sesi root akan mewarisi ruang nama pemintanya</string>
<string name="isolate_summary">Setiap sesi root akan memiliki ruang nama tersendiri</string>
<string name="android_o_not_support">Tidak mendukung Android 8.0+</string>
<string name="disable_fingerprint">Tidak ada sidik jari diatur atau tidak ada dukungan perangkat</string>
<!--Superuser-->
<string name="su_request_title">Permintaan Superuser</string>

View File

@@ -132,9 +132,13 @@
<string name="settings_clear_cache_summary">Svuota la cache delle repository e forza l\'aggiornamento online dell\'app</string>
<string name="settings_hide_manager_title">Nascondi Magisk Manager</string>
<string name="settings_hide_manager_summary">Reinstalla Magisk Manager con un nome pacchetto casuale</string>
<string name="settings_restore_manager_title">Ripristina Magisk Manager</string>
<string name="settings_restore_manager_summary">Ripristina Magisk Manager con il nome pacchetto originale</string>
<string name="language">Lingua</string>
<string name="system_default">(Sistema)</string>
<string name="settings_update">Impostazioni aggiornamento</string>
<string name="settings_check_update_title">Controlla aggiornamenti</string>
<string name="settings_check_update_summary">Controlla automaticamente gli aggiornamenti in background</string>
<string name="settings_update_channel_title">Canale di aggiornamento</string>
<string name="settings_update_stable">Stabile</string>
<string name="settings_update_beta">Beta</string>
@@ -183,6 +187,7 @@
<string name="requester_summary">Le sessioni di root erediteranno il namespace del loro richiedente</string>
<string name="isolate_summary">Ogni sessione di root avrà il suo namespace isolato</string>
<string name="android_o_not_support">Non è supportato da Android 8.0+</string>
<string name="disable_fingerprint">Non è presente alcuna impronta o il dispositivo non è supportato</string>
<!--Superuser-->
<string name="su_request_title">Richiesta Superuser</string>

View File

@@ -2,10 +2,10 @@
<!--Universal-->
<!--Welcome Activity-->
<string name="modules">Moduliai</string>
<string name="modules">Papildiniai</string>
<string name="downloads">Atsisiuntimai</string>
<string name="superuser">Super Naudotojas</string>
<string name="log">Surašyti (Log)</string>
<string name="superuser">Supervartotojas</string>
<string name="log">Surašymai</string>
<string name="settings">Nustatymai</string>
<string name="install">Instaliuoti</string>
@@ -28,23 +28,23 @@
<string name="keep_dm_verity">Palikti dm-verity</string>
<string name="current_magisk_title">Instaliuota versija: %1$s</string>
<string name="install_magisk_title">Naujausia versija: %1$s</string>
<string name="uninstall">Ištrinti</string>
<string name="uninstall_magisk_title">Ištrinti Magisk</string>
<string name="uninstall_magisk_msg">Visi moduliai bus išjungti/panaikinti. Roo bus panaikintas ir duomenys bus potencialiai užšifruoti, jeigu jie nėra užšifruoti.</string>
<string name="uninstall">Pašalinti</string>
<string name="uninstall_magisk_title">Pašalinti Magisk</string>
<string name="uninstall_magisk_msg">Visi papildiniai bus išjungti/pašalinti. Root bus panaikintas. Jei duomenys nėra užšifruoti, yra galimybė, kad jie taps užšifruotais..</string>
<string name="update">Atnaujinti %1$s</string>
<!--Module Fragment-->
<string name="no_info_provided">(Nėra informacijos)</string>
<string name="no_modules_found">Modulių nesurasta</string>
<string name="update_file_created">Perkrovus sistemą modulis bus atnaulintas</string>
<string name="remove_file_created">Perkrovus sistemą modulis bus panaikintas</string>
<string name="remove_file_deleted">Perkrovus sistemą modulis nebus panaikintas</string>
<string name="disable_file_created">Perkrovus sistemą modulis bus išjungtas, bet ne panaikintas</string>
<string name="disable_file_removed">Perkrovus sistemą modulis bus įjungtas</string>
<string name="no_modules_found">Papildinių nesurasta</string>
<string name="update_file_created">Perkrovus sistemą papildinys bus atnaujintas</string>
<string name="remove_file_created">Perkrovus sistemą papildinys bus panaikintas</string>
<string name="remove_file_deleted">Perkrovus sistemą papildinys nebus panaikintas</string>
<string name="disable_file_created">Perkrovus sistemą papildinys bus išjungtas, bet ne panaikintas</string>
<string name="disable_file_removed">Perkrovus sistemą papildinys bus įjungtas</string>
<string name="author">Sukūrė %1$s</string>
<string name="reboot_recovery">Perkrauti į Recovery</string>
<string name="reboot_bootloader">Perkrauti į Bootloader</string>
<string name="reboot_download">Perkraukite, į Download režimą</string>
<string name="reboot_download">Perkrauti į Download režimą</string>
<!--Repo Fragment-->
<string name="update_available">Galimas atnaujinimas</string>
@@ -52,15 +52,15 @@
<string name="not_installed">Ne instaliuota</string>
<string name="updated_on">Atnaujinta: %1$s</string>
<string name="sorting_order">Išdėliojimo tvarka</string>
<string name="sort_by_name">Išdėlioti pagal pavadinimą</string>
<string name="sort_by_update">Išdėlioti pagal paskutinį atnaujinimą</string>
<string name="sort_by_name">Išdėlioti pagal pavadinimą (A-Z)</string>
<string name="sort_by_update">Išdėlioti pagal atnaujinimo datą (Naujausi-Seniausi)</string>
<!--Log Fragment-->
<string name="menuSaveLog">Išsauguti surašymus (log)</string>
<string name="menuSaveLog">Išsaugoti surašymus</string>
<string name="menuReload">Iš naujo</string>
<string name="menuClearLog">Išvalyti surašymus (log)</string>
<string name="logs_cleared">Surašymas (log) sėkmingai užrašytas</string>
<string name="log_is_empty">Surašymas yra tuščias</string>
<string name="menuClearLog">Išvalyti surašymus</string>
<string name="logs_cleared">Surašymai pašalinti</string>
<string name="log_is_empty">Surašymų nėra</string>
<string name="logs_save_failed">Nesugebėjome įrašyti surašymų į SD kortelę:</string>
<!--About Activity-->
@@ -68,8 +68,9 @@
<string name="app_changelog">Pakeitimų sąrašas</string>
<string name="translators">Vv2233Bb</string>
<string name="app_version">Versija</string>
<string name="app_source_code">Prisidėkite</string>
<string name="donation">Auka</string>
<string name="donation">Paaukoti</string>
<string name="app_translators">Vertėjai</string>
<string name="support_thread">Mūsų XDA puslapis</string>
@@ -85,9 +86,9 @@
<string name="download_file_error">Atsisiunčiant failą įvyko klaida</string>
<string name="reboot">Perkrauti</string>
<string name="downloading_toast">Atsisiunčiamas %1$s</string>
<string name="magisk_update_title">Naujas Magisk atnaujinimas egzistuoja!</string>
<string name="magisk_update_title">Atsirado nauja Magisk versija!</string>
<string name="settings_reboot_toast">Nustatymų įgalinimui prašome perkrauti telefoną</string>
<string name="release_notes">Šios versijos naujos įpatybės</string>
<string name="release_notes">Pakeitimai</string>
<string name="repo_cache_cleared">Repo failai išvalyti</string>
<string name="safetyNet_hide_notice">Ši programėlė naudoja SafetyNet\nMagiskHide tai automatiškai sutvarko</string>
<string name="process_error">Proceso klaida</string>
@@ -114,7 +115,7 @@
<string name="boot_file_patch_msg">Pasirinkti boot failą .img ar .img.tar formate.</string>
<string name="complete_uninstall">Pilnas pašalinimas</string>
<string name="restore_img">Atstatyti boot failą.</string>
<string name="uninstall_app">Ištrinti programėlę</string>
<string name="uninstall_app">Pašalinti programėlę</string>
<string name="restore_done">Atstatymas įvykdytas!</string>
<string name="restore_fail">Gamyklinis atstatymo failas neegzistuoja!</string>
<string name="uninstall_toast">Magisk Manager bus pašalintas po 5 sekundžių, pašalinus perkraukite telefoną.</string>
@@ -129,24 +130,28 @@
<string name="settings_notification_title">Pranešimai atsiradus atnaujinimui</string>
<string name="settings_notification_summary">Parodyti pranešmus atsiradus naujai versijai</string>
<string name="settings_clear_cache_title">Išvalyti nereikalingus saugyklos failus</string>
<string name="settings_clear_cache_summary">Išvalyti patalpintą informaciją talpykloms internete, priverčia perkrauti inerneto jungtį</string>
<string name="settings_clear_cache_summary">Išvalyti patalpintą informaciją talpykloms internete, priverčia perkrauti interneto jungtį</string>
<string name="settings_hide_manager_title">Paslėpti Magisk Manager</string>
<string name="settings_hide_manager_summary">Perpakuoti Magisk Manager su atsitiktiniu pakuotės pavadinimu</string>
<string name="settings_restore_manager_title">Grąžinti Magisk Manager</string>
<string name="settings_restore_manager_summary">Grąžinti Magisk Manager su orginalia pakuote</string>
<string name="language">Kalba</string>
<string name="system_default">(Sistemos)</string>
<string name="settings_update">Atnaujinimų nustatymai</string>
<string name="settings_check_update_title">Automatiškas atnaujinimų ieškojimas</string>
<string name="settings_check_update_summary">Automatiškai ieškoti Magisk ir Magisk Manager atnaujinimų.</string>
<string name="settings_update_channel_title">Atnaujinimų tipai</string>
<string name="settings_update_stable">Stabilūs</string>
<string name="settings_update_beta">Beta</string>
<string name="settings_update_custom">Pasirinktiniai</string>
<string name="settings_update_custom_msg">Įvesti pasirinktinį URL</string>
<string name="settings_boot_format_title">Boot failo formatas</string>
<string name="settings_boot_format_summary">Pasirinkite boot failo formatą.\nPasirinkite .img įdiegimui per fastboot/download; Pasirinkite .img.tar įdiegimui per ODIN.</string>
<string name="settings_core_only_title">Magisk Pagrindinis režimas</string>
<string name="settings_core_only_summary">Įgalintos bus tik pagrindines funkcijos, visi moduliai bus išjungti. MagiskSU, Magisk Hide ir Sistemos pedejėjai liks įgalinti</string>
<string name="settings_boot_format_summary">Pasirinkti boot failo formatą.\n.img naudojamas įdiegimui per fastboot/download; .img.tar naudojamas įdiegimui per ODIN.</string>
<string name="settings_core_only_title">Pagrindinis Magisk režimas</string>
<string name="settings_core_only_summary">Įgalinti tik pagrindines funkcijos, išjungti visus papildinius. MagiskSU, Magisk Hide ir Sistemos pedejėjai liks įgalinti</string>
<string name="settings_magiskhide_summary">Paslėpti Magisk nuo įvairių susekimų</string>
<string name="settings_hosts_title">Sistemos padejėjai</string>
<string name="settings_hosts_summary">Sistemų padejėjų įgalinimas Adblock programėlėms</string>
<string name="settings_hosts_summary">Įgalinti sistemos padejėjus Adblock programėlėms</string>
<string name="settings_su_app_adb">Programėlėms ir ADB</string>
<string name="settings_su_app">Tik programėlėms</string>
@@ -158,7 +163,7 @@
<string name="settings_su_request_60">60 sekundžių</string>
<string name="superuser_access">Supervartotojo prieiga</string>
<string name="auto_response">Automatinis atsakymas</string>
<string name="request_timeout">Prašymo laikas baigėsi</string>
<string name="request_timeout">Prašymo laikas baigiasi po</string>
<string name="superuser_notification">Supervartotojo pranešimai</string>
<string name="request_timeout_summary">%1$s sekundžių</string>
<string name="settings_su_reauth_title">Pakartotinai patvirtinti po atnaujinimo</string>
@@ -183,7 +188,8 @@
<string name="requester_summary">Root sesijos paveldi jos išprašytojo/s vardų sritį</string>
<string name="isolate_summary">Kiekviena root sesija turi savo izoliuotą vardų sritį</string>
<string name="android_o_not_support">Negalima įrenginiams naudojantiems Android 8.0+</string>
<string name="disable_fingerprint">Jūsų įrenginyje nebuvo surasta pirštų antspaudų arba jūsų įrenginys neturi pirštų antspaudų skaitytuvo</string>
<!--Superuser-->
<string name="su_request_title">Supervartotojo prašymas</string>
<string name="deny_with_str">Atmesti%1$s</string>
@@ -200,15 +206,15 @@
<string name="su_allow_toast">%1$s gavo Supervartotojo teises</string>
<string name="su_deny_toast">%1$s negavo Supervartotojo teisių</string>
<string name="no_apps_found">Nėra surastų programėlių</string>
<string name="su_snack_grant">Supervartotojo teisių buvo %1$s suteikta</string>
<string name="su_snack_deny">Supervartotojo teisių buvo %1$s atmesta</string>
<string name="su_snack_notif_on">Buvo įjungta %1$s pranešimų</string>
<string name="su_snack_notif_off">Buvo išjungta %1$s pranešimų</string>
<string name="su_snack_log_on">%1$s surašymų buvo įjungta</string>
<string name="su_snack_log_off">%1$s surašymų buvo išjungta</string>
<string name="su_snack_grant">%1$s supervartotojo teisių prašymas buvo atsakytas teigiamai</string>
<string name="su_snack_deny">%1$s supervartotojo teisių prašymas buvo atmestas</string>
<string name="su_snack_notif_on">Buvo įjungta %1$s pranešimai</string>
<string name="su_snack_notif_off">Buvo išjungta %1$s pranešimai</string>
<string name="su_snack_log_on">%1$s veiksmų surašymas yra įgalintas</string>
<string name="su_snack_log_off">%1$s veiksmų surašymas yra išjungtas</string>
<string name="su_snack_revoke">%1$s teisių atšaukta</string>
<string name="su_revoke_title">Atšaukti?</string>
<string name="su_revoke_msg">Atšaukti %1$s teisių?</string>
<string name="su_revoke_title">Neleisti?</string>
<string name="su_revoke_msg">Neleisti %1$s naudotis supervartotojo teisėmis?</string>
<string name="toast">Išmesti</string>
<string name="none">Nėra</string>
<string name="auth_fail">Patvirtinimas žlugo</string>

View File

@@ -50,6 +50,10 @@
<string name="update_available">Update beschikbaar</string>
<string name="installed">Geïnstalleerd</string>
<string name="not_installed">Niet geïnstalleerd</string>
<string name="updated_on">Bijgewerkt op: %1$s</string>
<string name="sorting_order">Sorteervolgorde</string>
<string name="sort_by_name">Sorteren op naam</string>
<string name="sort_by_update">Sorteren op laatste update</string>
<!--Log Fragment-->
<string name="menuSaveLog">Opslaan log</string>
@@ -128,9 +132,13 @@
<string name="settings_clear_cache_summary">Wis de gecachte informatie voor online opslagplaatsen. Dit dwingt de app om online te verversen</string>
<string name="settings_hide_manager_title">Magisk Manager verbergen</string>
<string name="settings_hide_manager_summary">Magisk Manager opnieuw inpakken met een willekeurige pakketnaam</string>
<string name="settings_restore_manager_title">Magisk Manager herstellen</string>
<string name="settings_restore_manager_summary">Magisk Manager met oorspronkelijk pakket herstellen</string>
<string name="language">Taal</string>
<string name="system_default">(Systeem standaard)</string>
<string name="settings_update">Instellingen bijwerken</string>
<string name="settings_check_update_title">Updates controleren</string>
<string name="settings_check_update_summary">Periodiek op updates controleren in de achtergrond</string>
<string name="settings_update_channel_title">Update-kanaal</string>
<string name="settings_update_stable">Stabiel</string>
<string name="settings_update_beta">Beta</string>
@@ -159,6 +167,8 @@
<string name="request_timeout_summary">%1$s seconden</string>
<string name="settings_su_reauth_title">Opnieuw verzoeken na bijwerken</string>
<string name="settings_su_reauth_summary">Superuser rechten opnieuw opvragen na bijwerken applicatie</string>
<string name="settings_su_fingerprint_title">Vingerafdruk authenticatie inschakelen</string>
<string name="settings_su_fingerprint_summary">Vingerafdruk gebruiken om superuser verzoeken toe te staan</string>
<string name="multiuser_mode">Multi-gebruiker modus</string>
<string name="settings_owner_only">Alleen apparaateigenaar</string>
@@ -177,6 +187,7 @@
<string name="requester_summary">Rootsessies verkrijgen de verzoeker\'s naamruimte</string>
<string name="isolate_summary">Iedere rootsessie heeft een eigen geïsoleerde naamruimte</string>
<string name="android_o_not_support">Ondersteunt geen Android 8.0+</string>
<string name="disable_fingerprint">Geen vingerafdrukken ingesteld, of geen apparaatondersteuning</string>
<!--Superuser-->
<string name="su_request_title">Superuser verzoek</string>
@@ -205,6 +216,7 @@
<string name="su_revoke_msg">De rechten van %1$s intrekken?</string>
<string name="toast">Toast</string>
<string name="none">Geen</string>
<string name="auth_fail">Authenticatie mislukt</string>
<!--Superuser logs-->
<string name="pid">PID:\u0020</string>

View File

@@ -135,10 +135,14 @@
<string name="settings_clear_cache_summary">Wymusza na aplikacji odświeżenie online repozytorium</string>
<string name="settings_hide_manager_title">Ukryj Magisk Manager</string>
<string name="settings_hide_manager_summary">Przepakowanie Magisk Manager z losową nazwą pakietu</string>
<string name="language">Język</string>
<string name="settings_restore_manager_title">Przywróć Magisk Manager</string>
<string name="settings_restore_manager_summary">Przywróć oryginalną paczkę Magisk Manager</string>
<string name="language">Język</string>
<string name="system_default">(Domyślny Systemu)</string>
<string name="settings_update">Aktualizacja Ustawień</string>
<string name="settings_update_channel_title">Kanał Aktualizacji</string>
<string name="settings_check_update_title">Sprawdź Aktualizację</string>
<string name="settings_check_update_summary">Regularnie sprawdzaj aktualizacje w tle</string>
<string name="settings_update_channel_title">Kanał Aktualizacji</string>
<string name="settings_update_stable">Stabilny</string>
<string name="settings_update_beta">Beta</string>
<string name="settings_update_custom">Własny</string>
@@ -186,7 +190,8 @@
<string name="requester_summary">Sesje Root będzie dziedziczyć prośby i nazwy</string>
<string name="isolate_summary">W każdej sesji root będzie miał własną odosobnioną nazwę</string>
<string name="android_o_not_support">Brak wsparcia dla Androida 8.0+</string>
<string name="disable_fingerprint">Nie ustawiono żadnych odcisków palców lub brak obsługi urządzenia</string>
<!--Superuser-->
<string name="su_request_title">Prośba o dostęp Superusera</string>
<string name="deny_with_str">Odmów%1$s</string>

View File

@@ -1,225 +1,229 @@
<resources>
<!--Welcome Activity-->
<!--Universal-->
<!--Welcome Activity-->
<string name="modules">Módulos</string>
<string name="downloads">Baixar</string>
<string name="superuser">Superusuário</string>
<string name="downloads">Downloads</string>
<string name="superuser">Superusuário</string>
<string name="log">Registro</string>
<string name="settings">Configurações</string>
<string name="settings">Definições</string>
<string name="install">Instalar</string>
<!--Status Fragment-->
<string name="magisk_version_error">Magisk não instalado</string>
<string name="checking_for_updates">Checando por atualizações…</string>
<string name="magisk_update_available">Magisk v%1$s disponível!</string>
<string name="safetyNet_check_text">Pressione para checar o SafetyNet</string>
<string name="checking_safetyNet_status">Verificando status do SafetyNet…</string>
<string name="safetyNet_check_success">SafetyNet verificado</string>
<string name="safetyNet_api_error">SafetyNet erro na API</string>
<string name="safetyNet_network_loss">Conexão com a rede perdida</string>
<string name="magisk_version_error">Magisk não está instalado</string>
<string name="checking_for_updates">Verificando por atualizações…</string>
<string name="magisk_update_available">Magisk v%1$s está disponível!</string>
<string name="invalid_update_channel">Canal de Atualização Inválido</string>
<string name="safetyNet_check_text">Toque para iniciar verificação de SafetyNet</string>
<string name="checking_safetyNet_status">Verificando status de SafetyNet…</string>
<string name="safetyNet_check_success">SafetyNet Verificado Com Sucesso</string>
<string name="safetyNet_api_error">Erro de SafetyNet API</string>
<string name="safetyNet_network_loss">Conexão de rede indisponível</string>
<string name="safetyNet_service_disconnected">O serviço foi morto</string>
<string name="safetyNet_res_invalid">A resposta é inválida</string>
<!--Install Fragment-->
<string name="advanced_settings_title">Configurações avançadas</string>
<string name="keep_force_encryption">Keep force encryption</string>
<string name="keep_dm_verity">Keep AVB 2.0/dm-verity</string>
<string name="current_magisk_title">Versão instalada: %1$s</string>
<string name="install_magisk_title">Última versão: %1$s</string>
<string name="uninstall">Desinstalar</string>
<string name="advanced_settings_title">Definições Avançadas</string>
<string name="keep_force_encryption">Preservar criptografia forçada</string>
<string name="keep_dm_verity">Preservar AVB 2.0/dm-verity</string>
<string name="current_magisk_title">Versão Instalada: %1$s</string>
<string name="install_magisk_title">Última Versão: %1$s</string>
<string name="uninstall">Desinstalar</string>
<string name="uninstall_magisk_title">Desinstalar Magisk</string>
<string name="uninstall_magisk_msg">Todos os modulos magisk será desativado/removido. O root será removido, e possivelmente a encriptação de seus dados se seus dados não foram encriptado.</string>
<string name="uninstall_magisk_msg">Todos os módulos serão desativados/removidos. O root será removido, e potencialmente criptografará seus dados se seus dados não estiverem atualmente criptografados</string>
<string name="update">Atualizar %1$s</string>
<!--Module Fragment-->
<string name="no_info_provided">(Nenhuma informação fornecida)</string>
<string name="no_modules_found">Nenhum módulo encontrado</string>
<string name="update_file_created">Módulo será atualizado na próxima reinicialização</string>
<string name="remove_file_created">Módulo será removido na próxima reinicialização</string>
<string name="remove_file_deleted">Módulo não será removido na próxima reinicialização</string>
<string name="disable_file_created">Módulo será desativado na próxima reinicialização</string>
<string name="disable_file_removed">Módulo será ativado na próxima reinicialização</string>
<string name="update_file_created">O módulo será atualizado na próxima reinicialização</string>
<string name="remove_file_created">O módulo será removido na próxima reinicialização</string>
<string name="remove_file_deleted">O módulo não será removido na próxima reinicialização</string>
<string name="disable_file_created">O módulo será desativado na próxima reinicialização</string>
<string name="disable_file_removed">O módulo será ativado na próxima reinicialização</string>
<string name="author">Criado por %1$s</string>
<string name="reboot_recovery">Reiniciar no Recovery</string>
<string name="reboot_recovery">Reiniciar na Recuperação</string>
<string name="reboot_bootloader">Reiniciar no Bootloader</string>
<string name="reboot_download">Reiniciar no Download</string>
<!--Repo Fragment-->
<string name="update_available">Atualização disponível</string>
<string name="update_available">Atualização Disponível</string>
<string name="installed">Instalado</string>
<string name="not_installed">Não Instalado</string>
<string name="updated_on">Atualizado em: %1$s</string>
<string name="sorting_order">Ordem de classificação</string>
<string name="sort_by_name">Classificar por nome</string>
<string name="sort_by_update">Classificar por última atualização</string>
<string name="updated_on">Atualizado em: %1$s</string>
<string name="sorting_order">Ordem de Ordenação</string>
<string name="sort_by_name">Ordenar por nome</string>
<string name="sort_by_update">Ordenar por última atualização</string>
<!--Log Fragment-->
<string name="menuSaveLog">Salvar registro</string>
<string name="menuReload">Recarregar</string>
<string name="menuClearLog">Limpar registro agora</string>
<string name="logs_cleared">Registro limpado com sucesso</string>
<string name="log_is_empty">Registro está vazio</string>
<string name="logs_save_failed">Não foi possível gravar o registro para o cartão SD:</string>
<string name="logs_cleared">Registro limpo com sucesso</string>
<string name="log_is_empty">O registro está vazio</string>
<string name="logs_save_failed">Não foi possível gravar o registro no cartão SD:</string>
<!--About Activity-->
<string name="about">Sobre</string>
<string name="app_changelog">Registro de Mudanças do App</string>
<string name="translators">Killer7Mod</string>
<string name="app_version">Versão do App</string>
<string name="app_changelog">Registro de mudanças</string>
<string name="translators" />
<string name="app_version">Versão</string>
<string name="app_source_code">Código fonte</string>
<string name="donation">Doação</string>
<string name="app_translators">Tradutores do App</string>
<string name="support_thread">Suporte</string>
<string name="app_translators">Tradutores</string>
<string name="support_thread">Tópico de suporte</string>
<!--Toasts, Dialogs-->
<string name="permissionNotGranted">Este recurso não funcionará sem permissão de escrita do armazenamento externo.</string>
<string name="no_thanks">Não, Obrigado</string>
<string name="yes">Sim</string>
<string name="ok">OK</string>
<string name="permissionNotGranted">Este recurso não funcionará sem permissão para gravar no armazenamento externo.</string>
<string name="no_thanks">Não, obrigado</string>
<string name="yes">Sim</string>
<string name="ok">OK</string>
<string name="close">Fechar</string>
<string name="repo_install_title">Instalar %1$s</string>
<string name="repo_install_msg">Você deseja instalar%1$s ?</string>
<string name="repo_install_msg">Instalar %1$s agora?</string>
<string name="download">Baixar</string>
<string name="download_file_error">Erro ao baixar o arquivo</string>
<string name="download_file_error">Erro ao baixar arquivo</string>
<string name="reboot">Reiniciar</string>
<string name="downloading_toast">Baixando %1$s</string>
<string name="magisk_update_title">Nova atualização do Magisk disponível!</string>
<string name="settings_reboot_toast">Reinicie para aplicar configurações</string>
<string name="release_notes">Notas da atualização</string>
<string name="repo_cache_cleared">Cache do Repo. limpado</string>
<string name="safetyNet_hide_notice">Este aplicativo usa SafetyNet\nJá manipulado pelo MagiskHide por padrão</string>
<string name="process_error">Erro no processo</string>
<string name="internal_storage">O zip foi salvo em:\n[Armazenamento interno]%1$s</string>
<string name="zip_download_title">Baixando</string>
<string name="zip_download_msg">Baixando o arquivo zip (%1$d%%) …</string>
<string name="magisk_update_title">Nova Atualização do Magisk Disponível!</string>
<string name="settings_reboot_toast">Reinicie para aplicar as definições</string>
<string name="release_notes">Notas de lançamento</string>
<string name="repo_cache_cleared">Cache de repositório limpado</string>
<string name="safetyNet_hide_notice">Este app usa SafetyNet\nJá manipulado por MagiskHide por padrão</string>
<string name="process_error">Erro de processo</string>
<string name="internal_storage">O zip está armazenado em:\n[Armazenamento Interno]%1$s</string>
<string name="zip_download_title">Baixando</string>
<string name="zip_download_msg">Baixando arquivo zip (%1$d%%) …</string>
<string name="zip_process_title">Processando</string>
<string name="zip_process_msg">Processando arquivo zip …</string>
<string name="manager_update_title">Nova atualização do Magisk Manager disponível!</string>
<string name="manager_download_install">Pressione para baixar e instalar</string>
<string name="dtbo_patched_title">Patch no DTBO instalado!</string>
<string name="dtbo_patched_reboot">Magisk Manager instalou um patch no dtbo.img, por favor reinicie</string>
<string name="zip_process_msg">Processando arquivo zip …</string>
<string name="manager_update_title">Nova Atualização do Magisk Manager Disponível!</string>
<string name="manager_download_install">Toque para baixar e instalar</string>
<string name="dtbo_patched_title">DTBO foi emendado!</string>
<string name="dtbo_patched_reboot">Magisk Manager emendou dtbo.img, reinicie</string>
<string name="magisk_updates">Atualizações do Magisk</string>
<string name="flashing">Flasheando</string>
<string name="hide_manager_toast">Ocultando Magisk Manager…</string>
<string name="hide_manager_toast2">Isso pode demorar um pouco…</string>
<string name="hide_manager_fail_toast">Falha ao ocultar o Magisk Manager…</string>
<string name="download_zip_only">Baixar somente o zip</string>
<string name="patch_boot_file">Patchear um arquivo Boot Image</string>
<string name="hide_manager_toast2">Isto pode demorar um pouco…</string>
<string name="hide_manager_fail_toast">Ocultar Magisk Manager falhou</string>
<string name="download_zip_only">Baixar Zip Apenas</string>
<string name="patch_boot_file">Emendar Arquivo de Imagem de Inicialização</string>
<string name="direct_install">Instalação Direta (Recomendado)</string>
<string name="install_second_slot">Instalação no segundo Slot (Depois do OTA)</string>
<string name="install_second_slot">Instalar no Segundo Slot (Após OTA)</string>
<string name="select_method">Selecionar Método</string>
<string name="no_boot_file_patch_support">Versão do Magisk escolhida não suporta arquivo de patch boot image</string>
<string name="boot_file_patch_msg">Selecione a stock boot image despejada(dump) no formato .img ou img.tar</string>
<string name="complete_uninstall">Desinstalação Completa</string>
<string name="restore_img">Restaurar Images</string>
<string name="no_boot_file_patch_support">A versão alvo do Magisk não suporta emendamento de imagem de inicialização</string>
<string name="boot_file_patch_msg">Selecione o depósito de imagem de inicialização de stock em formato .img ou .img.tar</string>
<string name="complete_uninstall">Concluir Desinstalação</string>
<string name="restore_img">Restaurar Imagens</string>
<string name="uninstall_app">Desinstalar App</string>
<string name="restore_done">Restauração Completa!</string>
<string name="restore_fail">backup da Stock não existe!</string>
<string name="uninstall_toast">Desinstalando o Magisk Manager em 5 segundos, por favor reinicie manualmente depois</string>
<string name="proprietary_title">Baixar Código do Proprietário</string>
<string name="proprietary_notice">Magisk Manager é FOSS então não contém o código proprietário da API SafetyNet do Google.\n\nVocê permite que o Magisk Manager baixe uma extensão (contém o GoogleApiClient) para verificações SafetyNet?</string>
<string name="su_db_corrupt">O Banco de dados do SU está corrompido, cria novo db</string>
<!--Settings Fragment -->
<string name="restore_done">Restauração concluída!</string>
<string name="restore_fail">O backup da stock não existe!</string>
<string name="uninstall_toast">Desinstalando Magisk Manager em 5 segundos, manualmente reinicie logo após</string>
<string name="proprietary_title">Baixar Código de Propriedade</string>
<string name="proprietary_notice">Magisk Manager é FOSS(Software Livre de Código Aberto), que não contém o código de propriedade de SafetyNet API da Google.\n\nPermitir ao Magisk Manager baixar uma extensão (que contém a GoogleApiClient) para verificação de SafetyNet?</string>
<string name="su_db_corrupt">O banco de dados do SU está corrompido, será recriado novo db</string>
<!--Settings Activity -->
<string name="settings_general_category">Geral</string>
<string name="settings_dark_theme_title">Tema escuro</string>
<string name="settings_dark_theme_summary">Ativa o tema escuro</string>
<string name="settings_notification_title">Notificação de Atualização</string>
<string name="settings_notification_summary">Mostrar notificações de atualização quando a nova versão estiver disponível</string>
<string name="settings_clear_cache_title">Limpar Repo Cache</string>
<string name="settings_clear_cache_summary">Limpe as informações armazenadas em cache para repos. online, forçando o aplicativo a atualizar online</string>
<string name="settings_hide_manager_title">Ocultar Magisk Manager</string>
<string name="settings_hide_manager_summary">Criar um Magisk Manager com o nome do pacote aleatório</string>
<string name="language">Linguagem</string>
<string name="settings_dark_theme_title">Tema Escuro</string>
<string name="settings_dark_theme_summary">Ativar tema escuro</string>
<string name="settings_notification_title">Notificação de Atualização</string>
<string name="settings_notification_summary">Mostrar notificação de atualização quando nova versão estiver disponível</string>
<string name="settings_clear_cache_title">Limpar Cache de Repositório</string>
<string name="settings_clear_cache_summary">Limpar as informações no cache para repositórios onlines, força o app a reatualizar online</string>
<string name="settings_hide_manager_title">Ocultar Magisk Manager</string>
<string name="settings_hide_manager_summary">Reempacotar Magisk Manager com nome de pacote aleatório</string>
<string name="settings_restore_manager_title">Restaurar Magisk Manager</string>
<string name="settings_restore_manager_summary">Restaurar Magisk Manager com pacote original</string>
<string name="language">Idioma</string>
<string name="system_default">(Padrão do Sistema)</string>
<string name="settings_update">Atualizar Configurações</string>
<string name="settings_update_channel_title">Canal de atualizações</string>
<string name="settings_update">Definições de Atualizações</string>
<string name="settings_check_update_title">Verificar Atualizações</string>
<string name="settings_check_update_summary">Verificar atualizações em segundo plano periodicamente</string>
<string name="settings_update_channel_title">Canal de Atualização</string>
<string name="settings_update_stable">Estável</string>
<string name="settings_update_beta">Beta</string>
<string name="settings_update_custom">personalizado</string>
<string name="settings_update_custom_msg">Insira um URL personalizado</string>
<string name="settings_boot_format_title">Formato de Saida do Boot com patch instalado</string>
<string name="settings_boot_format_summary">Selecione o formato de saida do Boot Image com patch instalado.\nSelecione .img para flashear através do fastboot/modo de download; Selecione .img.tar para flashear com o ODIN.</string>
<string name="settings_core_only_title">Magisk modo somente Core</string>
<string name="settings_core_only_summary">Ativar somente recursos principais, todos os módulos não serão carregados. MagiskSU, MagiskHide, e systemless hosts ainda estará ativado</string>
<string name="settings_update_custom">Personalizado</string>
<string name="settings_update_custom_msg">Inserir uma URL personalizada</string>
<string name="settings_boot_format_title">Formato de Saída de Inicialização Emendada</string>
<string name="settings_boot_format_summary">Selecionar formato de saída de imagem de inicialização emendada.\nEscolha .img para flashear através do modo fastboot/download; escolha .img.tar para flashear com ODIN.</string>
<string name="settings_core_only_title">Modo Magisk de Núcleo Apenas</string>
<string name="settings_core_only_summary">Ativar apenas recursos de núcleo. MagiskSU, MagiskHide e hosts systemless ainda serão ativados, mas nenhum módulo será carregado.</string>
<string name="settings_magiskhide_summary">Ocultar Magisk de várias detecções</string>
<string name="settings_hosts_title">Ativar systemless hosts</string>
<string name="settings_hosts_summary">Suporte do systemless para Adblock apps</string>
<string name="settings_hosts_title">Hosts systemless</string>
<string name="settings_hosts_summary">Suporte de hosts systemless para apps de Adblock</string>
<string name="settings_su_app_adb">Aplicativos e ADB</string>
<string name="settings_su_app">Somente Aplicativos</string>
<string name="settings_su_adb">Somente ADB</string>
<string name="settings_su_app_adb">Apps e ADB</string>
<string name="settings_su_app">Apps apenas</string>
<string name="settings_su_adb">ADB apenas</string>
<string name="settings_su_disable">Desativado</string>
<string name="settings_su_request_10">10 segundos</string>
<string name="settings_su_request_20">20 segundos</string>
<string name="settings_su_request_30">30 segundos</string>
<string name="settings_su_request_60">60 segundos</string>
<string name="superuser_access">Acesso de superusuário</string>
<string name="superuser_access">Acesso de Superusuário</string>
<string name="auto_response">Resposta Automática</string>
<string name="request_timeout">Tempo limite de solicitação</string>
<string name="superuser_notification">Notificação do superusuário</string>
<string name="request_timeout">Tempo Limite de Solicitação</string>
<string name="superuser_notification">Notificação de Superusuário</string>
<string name="request_timeout_summary">%1$s segundos</string>
<string name="settings_su_reauth_title">Re-autenticar após a atualização</string>
<string name="settings_su_reauth_summary">Re-autenticar permissões de superusuário após as atualizações de um aplicativo</string>
<string name="settings_su_fingerprint_title">Ativar autenticação de impressão digital</string>
<string name="settings_su_fingerprint_summary">Use o scanner de impressão digital para permitir solicitações de superusuário</string>
<string name="multiuser_mode">Modo Multiusuário</string>
<string name="settings_owner_only">Apenas Proprietário do Dispositivo</string>
<string name="settings_owner_manage">Proprietário do dispositivo gerenciado</string>
<string name="settings_user_independent">Usuário Independente</string>
<string name="owner_only_summary">Somente o proprietário possui acesso de root</string>
<string name="owner_manage_summary">Somente o proprietário pode gerenciar o acesso root e receber paineis de solicitações</string>
<string name="user_indepenent_summary">Cada usuário tem suas próprias regras raiz separadas</string>
<string name="multiuser_hint_owner_request">Um pedido foi enviado ao proprietário do dispositivo. Mude para o proprietário e conceda a permissão</string>
<string name="settings_su_reauth_title">Reautenticar após atualizar</string>
<string name="settings_su_reauth_summary">Reautenticar permissões de superusuário após um app atualizar</string>
<string name="settings_su_fingerprint_title">Ativar Autenticação de Impressão Digital</string>
<string name="settings_su_fingerprint_summary">Usar escaneador de impressão digital para permitir solicitações de superusuário</string>
<string name="multiuser_mode">Modo de Multiusuário</string>
<string name="settings_owner_only">Proprietário do Dispositivo Apenas</string>
<string name="settings_owner_manage">Proprietário do Dispositivo Gerenciado</string>
<string name="settings_user_independent">Usuário Independente</string>
<string name="owner_only_summary">Apenas proprietário tem acesso root</string>
<string name="owner_manage_summary">Apenas proprietário pode gerenciar acesso root e receber expedições de solicitações</string>
<string name="user_indepenent_summary">Cada usuário tem suas próprias regras root separadas</string>
<string name="multiuser_hint_owner_request">Uma solicitação foi enviada ao proprietário do dispositivo. Mude para proprietário e conceda as permissões requeridas</string>
<string name="mount_namespace_mode">Montar Modo de Espaço de Nome</string>
<string name="settings_ns_global">Espaço de Nome Global</string>
<string name="settings_ns_requester">Espaço de Nome Herdado</string>
<string name="settings_ns_isolate">Espaço de Nome Isolado</string>
<string name="global_summary">Todas as sessões root usam montagem de espaço de nome global</string>
<string name="requester_summary">As sessões root herdarão espaço de nome de seu solicitante</string>
<string name="isolate_summary">Cada sessão root terá seu próprio espaço de nome isolado</string>
<string name="android_o_not_support">Não suporta Android 8.0+</string>
<string name="disable_fingerprint">Nenhuma impressão digital foi definida ou dispostivo sem suporte</string>
<string name="mount_namespace_mode">Modo namespace de montagem</string>
<string name="settings_ns_global">Global namespace</string>
<string name="settings_ns_requester">Herdar namespace</string>
<string name="settings_ns_isolate">Isolar namespace</string>
<string name="global_summary">Todas as sessões raiz usam o namespace de montagem global</string>
<string name="requester_summary">As sessões de raiz herdarão o namespace do seu solicitante</string>
<string name="isolate_summary">Cada sessão raiz terá seu próprio namespace isolado</string>
<string name="android_o_not_support">Não suporta Android 8.0+</string>
<!--Superuser-->
<string name="su_request_title">Solicitação de superusuário</string>
<string name="su_request_title">Solicitação de Superusuário</string>
<string name="deny_with_str">Negar%1$s</string>
<string name="deny">Negar</string>
<string name="prompt">Perguntar</string>
<string name="grant">Permitir</string>
<string name="su_warning">Concede acesso total ao seu dispositivo.\nNegue se você não tiver certeza!</string>
<string name="prompt">Expedir</string>
<string name="grant">Conceder</string>
<string name="su_warning">Concede acesso total ao seu dispositivo.\nNegue se você não tem certeza!</string>
<string name="forever">Sempre</string>
<string name="once">Uma vez</string>
<string name="tenmin">10 minutos</string>
<string name="twentymin">20 minutos</string>
<string name="thirtymin">30 minutos</string>
<string name="sixtymin">60 minutos</string>
<string name="su_allow_toast">%1$s foi permitido o acesso de superusuário</string>
<string name="su_deny_toast">%1$s foi negado o acesso de superusuário</string>
<string name="no_apps_found">Não foram encontrados apps</string>
<string name="su_snack_grant">Acesso de superusuário do %1$s está permitido</string>
<string name="su_snack_deny">Acesso de superusuário do %1$s está negado</string>
<string name="su_snack_notif_on">Notificações do %1$s está ativado</string>
<string name="su_snack_notif_off">Notificações do %1$s está desativado</string>
<string name="su_snack_log_on">Registro do %1$s está ativado</string>
<string name="su_snack_log_off">Registro do %1$s está desativado</string>
<string name="su_snack_revoke">%1$s Direitos foi revogados</string>
<string name="once">Uma Vez</string>
<string name="tenmin">10 mins</string>
<string name="twentymin">20 mins</string>
<string name="thirtymin">30 mins</string>
<string name="sixtymin">60 mins</string>
<string name="su_allow_toast">%1$s teve concedido direitos de Superusuário</string>
<string name="su_deny_toast">%1$s teve negado direitos de Superusuário</string>
<string name="no_apps_found">Nenhum app encontrado</string>
<string name="su_snack_grant">Os direitos de Superusuário de %1$s estão concedidos</string>
<string name="su_snack_deny">Os direitos de Superusuário de %1$s estão negados</string>
<string name="su_snack_notif_on">As notificações de %1$s estão ativadas</string>
<string name="su_snack_notif_off">As notificações de %1$s estão desativadas</string>
<string name="su_snack_log_on">A registração de %1$s está ativada</string>
<string name="su_snack_log_off">A registração de %1$s está desativada</string>
<string name="su_snack_revoke">Os direitos de %1$s estão revogados</string>
<string name="su_revoke_title">Revogar?</string>
<string name="su_revoke_msg">Revogar os diretos do %1$s, Confirmar?</string>
<string name="toast">Notificação(Toast)</string>
<string name="none">Nenhum</string>
<string name="auth_fail">Falha na autenticação</string>
<string name="su_revoke_msg">Revogar os direitos de %1$s?</string>
<string name="toast">Torrada</string>
<string name="none">Nenhuma</string>
<string name="auth_fail">Falha de Autenticação</string>
<!--Superuser logs-->
<string name="pid">PID:\u0020</string>
<string name="target_uid">Alvo UID:\u0020</string>
<string name="command">Comando:\u0020</string>
</resources>

View File

@@ -124,9 +124,13 @@
<string name="settings_clear_cache_summary">Ștergeți informațiile memorate în cache, forțează actualizarea aplicației online</string>
<string name="settings_hide_manager_title">Ascundeţi Magisk Manager</string>
<string name="settings_hide_manager_summary">Reîmpachetare Magisk Manager cu nume de pachet aleatoriu</string>
<string name="settings_restore_manager_title">Restabilire Magisk Manager</string>
<string name="settings_restore_manager_summary">Restabilire Magisk Manager cu pachetul original</string>
<string name="language">Limbă</string>
<string name="system_default">(Implicit)</string>
<string name="settings_update">Setări actualizare</string>
<string name="settings_check_update_title">Verificare actualizări</string>
<string name="settings_check_update_summary">Se verifică periodic în fundal dacă există actualizări</string>
<string name="settings_update_channel_title">Canal de actualizare</string>
<string name="settings_update_stable">Stabil</string>
<string name="settings_update_beta">Beta</string>
@@ -155,6 +159,8 @@
<string name="request_timeout_summary">%1$s secunde</string>
<string name="settings_su_reauth_title">Reautentificare după actualizare</string>
<string name="settings_su_reauth_summary">Reautentificare permisiuni pentru superuser după o actualizare a aplicației</string>
<string name="settings_su_fingerprint_title">Activați autentificarea cu amprenta digitală</string>
<string name="settings_su_fingerprint_summary">Utilizați scanerul de amprentă pentru a permite solicitările superuser</string>
<string name="multiuser_mode">Mod Multiutilizator</string>
<string name="settings_owner_only">Numai proprietarul dispozitivului</string>
@@ -173,6 +179,7 @@
<string name="requester_summary">Sesiunile de root vor moșteni spațiul de nume al solicitantului</string>
<string name="isolate_summary">Fiecare sesiune de root va avea propriul spațiu de nume izolat</string>
<string name="android_o_not_support">Nu se acceptă pe Android 8.0+</string>
<string name="disable_fingerprint">Nu au fost setate amprente sau scanerul de apmrentă lipseşte</string>
<!--Superuser-->
<string name="su_request_title">Solicitare Superuser</string>
@@ -201,6 +208,7 @@
<string name="su_revoke_msg">Confirmați revocarea drepturilor pentru %1$s?</string>
<string name="toast">Mesaj</string>
<string name="none">Nimic</string>
<string name="auth_fail">Autentificare eşuată</string>
<!--Superuser logs-->
<string name="pid">PID:\u0020</string>

View File

@@ -16,24 +16,24 @@
<string name="magisk_version_error">Magisk не установлен</string>
<string name="checking_for_updates">Проверка обновлений…</string>
<string name="magisk_update_available">Доступен Magisk v%1$s!</string>
<string name="invalid_update_channel">Неверный канал обновлений</string>
<string name="invalid_update_channel">Некорректный канал обновлений</string>
<string name="safetyNet_check_text">Проверить статус SafetyNet</string>
<string name="checking_safetyNet_status">Проверка статуса SafetyNet…</string>
<string name="safetyNet_check_success">Результат проверки SafetyNet</string>
<string name="safetyNet_api_error">Ошибка SafetyNet API</string>
<string name="safetyNet_network_loss">Нет подключения к сети</string>
<string name="safetyNet_service_disconnected">Служба была остановлена</string>
<string name="safetyNet_res_invalid">Неверный ответ</string>
<string name="safetyNet_res_invalid">Некорректный ответ</string>
<!--Install Fragment-->
<string name="advanced_settings_title">Расширенные настройки</string>
<string name="advanced_settings_title">Расширенные опции</string>
<string name="keep_force_encryption">Сохранить шифрование</string>
<string name="keep_dm_verity">Сохранить AVB 2.0/dm-verity</string>
<string name="current_magisk_title">Установлена версия: %1$s</string>
<string name="install_magisk_title">Последняя версия: %1$s</string>
<string name="uninstall">Удаление</string>
<string name="uninstall_magisk_title">Удаление Magisk</string>
<string name="uninstall_magisk_msg">Все модули будут отключены/удалены. Root-права будут удалены. Данные будут зашифрованы.</string>
<string name="uninstall_magisk_msg">Все модули будут отключены/удалены. Root-права будут удалены. Шифрование будет активировано.</string>
<string name="update">Обновить %1$s</string>
<!--Module Fragment-->
@@ -53,6 +53,10 @@
<string name="update_available">Доступно обновление</string>
<string name="installed">Установлены</string>
<string name="not_installed">Не установлены</string>
<string name="updated_on">Обновлено: %1$s</string>
<string name="sorting_order">Сортировка</string>
<string name="sort_by_name">По имени</string>
<string name="sort_by_update">По дате обновления</string>
<!--Log Fragment-->
<string name="menuSaveLog">Сохранить лог</string>
@@ -65,12 +69,12 @@
<!--About Activity-->
<string name="about">О приложении</string>
<string name="app_changelog">Список изменений</string>
<string name="translators">Displax</string>
<string name="translators">Displax [4PDA]</string>
<string name="app_version">Версия</string>
<string name="app_source_code">Исходный код</string>
<string name="donation">Поддержать проект</string>
<string name="app_translators">Переводчики</string>
<string name="support_thread">Страница поддержки</string>
<string name="support_thread">Домашняя страница</string>
<!--Toasts, Dialogs-->
<string name="permissionNotGranted">Требуется разрешение на запись во внешнее хранилище.</string>
@@ -88,7 +92,7 @@
<string name="settings_reboot_toast">Для применения настроек перезагрузите устройство</string>
<string name="release_notes">О версии</string>
<string name="repo_cache_cleared">Кэш репозитория очищен</string>
<string name="safetyNet_hide_notice">Приложение использует SafetyNet.\nПо умолчанию обработано MagiskHide.</string>
<string name="safetyNet_hide_notice">Приложение использует SafetyNet API.\nПо умолчанию добавлено в MagiskHide.</string>
<string name="process_error">Ошибка обработки</string>
<string name="internal_storage">Расположение архива:\n[Внутреннее Хранилище]%1$s</string>
<string name="zip_download_title">Загрузка</string>
@@ -98,54 +102,58 @@
<string name="manager_update_title">Доступно обновление Magisk Manager!</string>
<string name="manager_download_install">Нажмите для установки</string>
<string name="dtbo_patched_title">DTBO пропатчен!</string>
<string name="dtbo_patched_reboot">Magisk Manager пропатчил dtbo.img. Перезагрузитесь.</string>
<string name="dtbo_patched_reboot">Magisk Manager пропатчил dtbo.img. Перезагрузите устройство.</string>
<string name="magisk_updates">Обновления Magisk</string>
<string name="flashing">Прошивка…</string>
<string name="hide_manager_toast">Скрытие Magisk Manager…</string>
<string name="hide_manager_toast2">Может занять некоторое время…</string>
<string name="hide_manager_fail_toast">Скрытие Magisk Manager неудачно!</string>
<string name="download_zip_only">Только загрузка архива</string>
<string name="patch_boot_file">Пропатчить образ ядра</string>
<string name="direct_install">Прямая установка (рекомендуется)</string>
<string name="install_second_slot">Установка во Второй Слот (после OTA)</string>
<string name="download_zip_only">Загрузка установочного ZIP</string>
<string name="patch_boot_file">Пропатчить образ ядра (boot.img)</string>
<string name="direct_install">Прямая установка (Рекомендуется)</string>
<string name="install_second_slot">Установка во Второй Слот (После OTA)</string>
<string name="select_method">Выбор способа</string>
<string name="no_boot_file_patch_support">Целевая версия Magisk не поддерживает патчинг boot-образов</string>
<string name="boot_file_patch_msg">Выберите файл ядра (boot), .img либо .img.tar формата</string>
<string name="complete_uninstall">Удалить</string>
<string name="restore_img">Восстановить образы</string>
<string name="boot_file_patch_msg">Выберите файл ядра (boot), *.img либо *.img.tar формата</string>
<string name="complete_uninstall">Полное удаление</string>
<string name="restore_img">Восстановить разделы</string>
<string name="uninstall_app">Удалить приложение</string>
<string name="restore_done">Восстановление завершено!</string>
<string name="restore_fail">Резервная копия отсутствует!</string>
<string name="uninstall_toast">Удаление Magisk Manager в течении 5 секунд. Выполните перезагрузку.</string>
<string name="uninstall_toast">Удаление Magisk Manager в течении 5 секунд. Перезагрузите устройство.</string>
<string name="proprietary_title">Загрузка SafetyNet</string>
<string name="proprietary_notice">Magisk Manager — свободно распространяемый продукт, он не содержит собственный код SafetyNet API от Google.\n\nРазрешить Magisk Manager загрузить расширение (содержит GoogleApiClient) для проверки SafetyNet?</string>
<string name="su_db_corrupt">База данных SU повреждена, будет создана новая</string>
<!--Settings Activity -->
<string name="settings_general_category">Основные</string>
<string name="settings_dark_theme_title">Темная тема</string>
<string name="settings_dark_theme_title">Тёмная тема</string>
<string name="settings_dark_theme_summary">Включить темное оформление</string>
<string name="settings_notification_title">Уведомление об обновлении</string>
<string name="settings_notification_summary">Показывать уведомления о выходе новой версии</string>
<string name="settings_clear_cache_title">Очистка кэша репозитория</string>
<string name="settings_clear_cache_summary">Очистить сохранённую информацию о репозиториях. Список будет обновлен принудительно.</string>
<string name="settings_hide_manager_title">Скрыть Magisk Manager</string>
<string name="settings_clear_cache_summary">Очистить сохранённую информацию о репозитории. Будет обновлено принудительно</string>
<string name="settings_hide_manager_title">Скрытие Magisk Manager</string>
<string name="settings_hide_manager_summary">Пересобрать Magisk Manager со случайным именем пакета</string>
<string name="settings_restore_manager_title">Восстановление Magisk Manager</string>
<string name="settings_restore_manager_summary">Восстановить Magisk Manager с оригинальным именем пакета</string>
<string name="language">Язык</string>
<string name="system_default">По умолчанию (системный)</string>
<string name="system_default">По умолчанию (Системный)</string>
<string name="settings_update">Настройки обновления</string>
<string name="settings_check_update_title">Проверка обновлений</string>
<string name="settings_check_update_summary">Периодически проверять обновления в фоне</string>
<string name="settings_update_channel_title">Источник обновлений</string>
<string name="settings_update_stable">Стабильный канал</string>
<string name="settings_update_beta">Beta канал</string>
<string name="settings_update_custom">Сторонний канал</string>
<string name="settings_update_custom_msg">Вставьте ссылку</string>
<string name="settings_boot_format_title">Формат образа ядра</string>
<string name="settings_boot_format_summary">Выберите формат патченого образа ядра.\n.img - для прошивки через fastboot/download режим.\n.img.tar - для прошивки через ODIN.</string>
<string name="settings_core_only_title">Режим Magisk Core</string>
<string name="settings_core_only_summary">Включает возможности только Core уровня, модули не будут загружены. MagiskSU, MagiskHide и внесистемные хосты останутся активными.</string>
<string name="settings_magiskhide_summary">Скрыть Magisk от различных проверок</string>
<string name="settings_update_custom_msg">Укажите ссылку</string>
<string name="settings_boot_format_title">Тип образа ядра</string>
<string name="settings_boot_format_summary">Выберите тип патченого образа ядра:\n*.img - для прошивки через fastboot/download режимы\n*.img.tar - для прошивки через ODIN (Samsung)</string>
<string name="settings_core_only_title">Magisk Core режим</string>
<string name="settings_core_only_summary">Включить только основные (Core) возможности. Модули не будут загружены. MagiskSU, MagiskHide и внесистемные хосты останутся активными</string>
<string name="settings_magiskhide_summary">Скрывать Magisk от различных проверок</string>
<string name="settings_hosts_title">Внесистемные хосты</string>
<string name="settings_hosts_summary">Поддержка внесистемных хостов для приложений блокировки рекламы</string>
<string name="settings_hosts_summary">Поддержка внесистемных хостов для приложений, блокирующих рекламу</string>
<string name="settings_su_app_adb">Приложения и ADB</string>
<string name="settings_su_app">Только приложения</string>
@@ -157,30 +165,33 @@
<string name="settings_su_request_60">60 секунд</string>
<string name="superuser_access">Уровень доступа</string>
<string name="auto_response">Автоматический ответ</string>
<string name="request_timeout">Период запроса</string>
<string name="request_timeout">Ожидание ответа</string>
<string name="superuser_notification">Уведомление Суперпользователя</string>
<string name="request_timeout_summary">%1$s секунд</string>
<string name="settings_su_reauth_title">Повторная аутентификация</string>
<string name="settings_su_reauth_summary">Повторный запрос прав Суперпользователя после обновления приложения</string>
<string name="settings_su_reauth_summary">Повторный запрос прав Суперпользователя после обновления приложений</string>
<string name="settings_su_fingerprint_title">Биометрическая аутентификация</string>
<string name="settings_su_fingerprint_summary">Использовать дактилоскопический сканер для подтверждения запросов Суперпользователя</string>
<string name="multiuser_mode">Многопользовательский режим</string>
<string name="settings_owner_only">Только владелец</string>
<string name="settings_owner_manage">Регулировка владельцем</string>
<string name="settings_user_independent">Независимый пользователь</string>
<string name="settings_user_independent">Правила пользователей</string>
<string name="owner_only_summary">Только владелец имеет Root-доступ</string>
<string name="owner_manage_summary">Только владелец может управлять root-доступом и обрабатывать запросы на предоставление</string>
<string name="user_indepenent_summary">Каждый пользователь имеет свои собственные правила root-доступа</string>
<string name="multiuser_hint_owner_request">Запрос был отправлен владельцу устройства. Пожалуйста, переключитесь на профиль владельца и предоставьте разрешение</string>
<string name="owner_manage_summary">Только владелец может управлять Root-доступом и обрабатывать запросы</string>
<string name="user_indepenent_summary">Каждый пользователь имеет свои собственные правила Root-доступа</string>
<string name="multiuser_hint_owner_request">Запрос отправлен владельцу устройства. Переключитесь на профиль владельца для обработки запроса</string>
<string name="mount_namespace_mode">Режим монтирования пространства имён</string>
<string name="settings_ns_global">Глобальное пространство имён</string>
<string name="settings_ns_requester">Наследуемое пространство имён</string>
<string name="settings_ns_isolate">Изолированное пространство имён</string>
<string name="global_summary">Все сеансы Суперпользователя используют глобальное пространство имён</string>
<string name="requester_summary">Сессии Суперпользователя наследуют пространство имен запрашивающего</string>
<string name="isolate_summary">Каждая сессия Суперпользователя будет иметь собственное изолированное пространство имен</string>
<string name="mount_namespace_mode">Настройка именных пространств</string>
<string name="settings_ns_global">Общее именное пространство</string>
<string name="settings_ns_requester">Наследуемое именное пространство</string>
<string name="settings_ns_isolate">Изолированное именное пространство</string>
<string name="global_summary">Сессии Суперпользователя используют общее именное пространство</string>
<string name="requester_summary">Сессии Суперпользователя наследуют именное пространство запрашивающего</string>
<string name="isolate_summary">Сессии Суперпользователя будут иметь изолированные именные пространства</string>
<string name="android_o_not_support">Не поддерживается в Android 8.0+</string>
<string name="disable_fingerprint">Не поддерживается устройством или не заданы опечатки</string>
<!--Superuser-->
<string name="su_request_title">Запрос прав Суперпользователя</string>
<string name="deny_with_str">Отказать %1$s</string>
@@ -189,7 +200,7 @@
<string name="grant">Предоставить</string>
<string name="su_warning">Предоставить полный доступ к устройству.\nЕсли не уверены, что желаете продолжить, отклоните данное действие!</string>
<string name="forever">Навсегда</string>
<string name="once">Единожды</string>
<string name="once">Сейчас</string>
<string name="tenmin">10 мин.</string>
<string name="twentymin">20 мин.</string>
<string name="thirtymin">30 мин.</string>
@@ -201,13 +212,14 @@
<string name="su_snack_deny">%1$s отказано в правах Суперпользователя</string>
<string name="su_snack_notif_on">Уведомления для %1$s включены</string>
<string name="su_snack_notif_off">Уведомления для %1$s отключены</string>
<string name="su_snack_log_on">История событий для %1$s включена</string>
<string name="su_snack_log_off">История событий для %1$s отключена</string>
<string name="su_snack_revoke">Права для %1$s отозваны</string>
<string name="su_revoke_title">Отозвать?</string>
<string name="su_revoke_msg">Подтвердить отзыв прав для %1$s?</string>
<string name="su_snack_log_on">Логирование для %1$s включено</string>
<string name="su_snack_log_off">Логирование для %1$s отключено</string>
<string name="su_snack_revoke">Настройки для %1$s сброшены</string>
<string name="su_revoke_title">Сброс настроек</string>
<string name="su_revoke_msg">Сбросить настройки для %1$s?</string>
<string name="toast">Всплывающее уведомление</string>
<string name="none">Ничего</string>
<string name="auth_fail">Ошибка аутентификации</string>
<!--Superuser logs-->
<string name="pid">PID:\u0020</string>

View File

@@ -130,10 +130,14 @@
<string name="settings_clear_cache_title">Repo Önbelleğini Temizle</string>
<string name="settings_clear_cache_summary">Çevrimiçi repolar için önbellek bilgilerini temizle, uygulamayı çevrimiçi yenilemeye zorla</string>
<string name="settings_hide_manager_title">Magisk Manager\'ı Gizle</string>
<string name="settings_hide_manager_summary">Rastgele seçilen bir paket adı ile Magisk Manager yeniden paketlenecek</string>
<string name="settings_hide_manager_summary">Rastgele paket adı ile Magisk Manager\'ı yeniden paketle</string>
<string name="settings_restore_manager_title">Magisk Manager\'ı Geri Yükle</string>
<string name="settings_restore_manager_summary">Orijinal paket adı ile Magisk Manager\'ı geri yükle</string>
<string name="language">Dil</string>
<string name="system_default">(Sistem Varsayılanı)</string>
<string name="settings_update">Güncelleme Ayarları</string>
<string name="settings_check_update_title">Güncellemeleri denetle</string>
<string name="settings_check_update_summary">Arka planda düzenli olarak güncellemeleri denetle</string>
<string name="settings_update_channel_title">Güncelleme Kanalı</string>
<string name="settings_update_stable">Kararlı</string>
<string name="settings_update_beta">Beta</string>
@@ -160,8 +164,8 @@
<string name="request_timeout">İstek Zaman Aşımı</string>
<string name="superuser_notification">Yetkili Kullanıcı Bildirimi</string>
<string name="request_timeout_summary">%1$s saniye</string>
<string name="settings_su_reauth_title">Yükseltmeden sonra yeniden kimlik doğrulama</string>
<string name="settings_su_reauth_summary">Uygulama yükseltmeleri sonrasında yetkili kullanıcı izinlerini yeniden doğrulama</string>
<string name="settings_su_reauth_title">Yükseltmeden sonra yeniden kimlik doğrula</string>
<string name="settings_su_reauth_summary">Uygulama yükseltmeleri sonrasında yetkili kullanıcı izinlerini yeniden doğrula</string>
<string name="settings_su_fingerprint_title">Parmak İzi Kimlik Doğrulamayı Etkinleştir</string>
<string name="settings_su_fingerprint_summary">Yetkili kullanıcı isteklerine izin vermek için parmak izi tarayıcısını kullan</string>
@@ -182,6 +186,7 @@
<string name="requester_summary">Kök oturumları, istekte bulunanın ad alanını devralır</string>
<string name="isolate_summary">Her bir kök oturumunun kendi izole ad alanı olacaktır</string>
<string name="android_o_not_support">Android 8.0 ve üzerinde desteklenmiyor</string>
<string name="disable_fingerprint">Parmak izi ayarlanmadı veya cihaz desteği yok</string>
<!--Superuser-->
<string name="su_request_title">Yetkili Kullanıcı İsteği</string>

View File

@@ -51,7 +51,7 @@
<string name="not_installed">Не встановлено</string>
<string name="updated_on">Оновлено: %1$s</string>
<string name="sorting_order">Порядок сортування</string>
<string name="sort_by_name">Сортувати за ім'ям</string>
<string name="sort_by_name">Сортувати за назвою</string>
<string name="sort_by_update">Сортувати за оновленням</string>
<!--Log Fragment-->
@@ -131,9 +131,13 @@
<string name="settings_clear_cache_summary">Очистити збережену інформацію про мережеві репозиторії, змушуючи програму примусово оновлюватися через Інтернет</string>
<string name="settings_hide_manager_title">Приховати Magisk Manager</string>
<string name="settings_hide_manager_summary">Перезібрати Magisk Manager з випадковим іменем пакету</string>
<string name="settings_restore_manager_title">Відновити Magisk Manager</string>
<string name="settings_restore_manager_summary">Відновити Magisk Manager з оригінального пакету</string>
<string name="language">Мова</string>
<string name="system_default">Стандартна (системна)</string>
<string name="settings_update">Оновити налаштування</string>
<string name="settings_check_update_title">Перевіряти оновлення</string>
<string name="settings_check_update_summary">Періодично перевіряти оновлення у фоновому режимі</string>
<string name="settings_update_channel_title">Канал оновлення</string>
<string name="settings_update_stable">Стабільний реліз</string>
<string name="settings_update_beta">Бета реліз</string>
@@ -182,6 +186,7 @@
<string name="requester_summary">Сеанси Суперкористувача наслідують простір імен запитувача</string>
<string name="isolate_summary">Кожнен сеанс Суперкористувача має власний ізольований простір імен</string>
<string name="android_o_not_support">Не підтримує Android 8.0+</string>
<string name="disable_fingerprint">Немає відбитків пальців або пристрій не підтримується</string>
<!--Superuser-->
<string name="su_request_title">Запит прав Суперкористувача</string>

View File

@@ -14,7 +14,7 @@
<string name="checking_for_updates">正在检查更新…</string>
<string name="magisk_update_available">Magisk 可更新到 v%1$s</string>
<string name="invalid_update_channel">无效的更新通道</string>
<string name="safetyNet_check_text">启动 SafetyNet 检查</string>
<string name="safetyNet_check_text">启动 SafetyNet 检查</string>
<string name="checking_safetyNet_status">正在检查 SafetyNet 状态…</string>
<string name="safetyNet_check_success">SafetyNet 检查成功</string>
<string name="safetyNet_api_error">SafetyNet API 错误</string>
@@ -59,7 +59,7 @@
<string name="menuSaveLog">保存日志</string>
<string name="menuReload">刷新</string>
<string name="menuClearLog">清除日志</string>
<string name="logs_cleared">日志已成功清除</string>
<string name="logs_cleared">日志已清除</string>
<string name="log_is_empty">日志为空</string>
<string name="logs_save_failed">无法将日志写入内置存储:</string>
@@ -97,7 +97,7 @@
<string name="zip_process_title">正在处理</string>
<string name="zip_process_msg">正在处理 zip 文件…</string>
<string name="manager_update_title">Magisk Manager 有更新!</string>
<string name="manager_download_install">以下载并安装</string>
<string name="manager_download_install">以下载并安装</string>
<string name="dtbo_patched_title">已修补 DTBO!</string>
<string name="dtbo_patched_reboot">Magisk Manager 为 dtbo 分区进行了修补,请立即重新启动</string>
<string name="magisk_updates">Magisk 更新</string>
@@ -124,17 +124,21 @@
<!--Settings Activity -->
<string name="settings_general_category">常规</string>
<string name="settings_dark_theme_title">色主题</string>
<string name="settings_dark_theme_summary">使用色主题</string>
<string name="settings_dark_theme_title">色主题</string>
<string name="settings_dark_theme_summary">使用色主题</string>
<string name="settings_notification_title">更新通知</string>
<string name="settings_notification_summary">当有新版本时显示更新通知</string>
<string name="settings_clear_cache_title">清除仓库缓存</string>
<string name="settings_clear_cache_summary">清除已缓存的在线仓库信息,强制刷新在线数据</string>
<string name="settings_hide_manager_title">隐藏 Magisk Manager</string>
<string name="settings_hide_manager_summary">用随机包名重新安装 Magisk Manager</string>
<string name="settings_restore_manager_title">还原 Magisk Manager</string>
<string name="settings_restore_manager_summary">用原安装包还原 Magisk Manager</string>
<string name="language">语言</string>
<string name="system_default">(系统默认)</string>
<string name="settings_update">更新设定</string>
<string name="settings_check_update_title">检查更新</string>
<string name="settings_check_update_summary">在后台定期检查更新</string>
<string name="settings_update_channel_title">更新通道</string>
<string name="settings_update_stable">稳定版</string>
<string name="settings_update_beta">测试版</string>
@@ -163,6 +167,8 @@
<string name="request_timeout_summary">%1$s 秒</string>
<string name="settings_su_reauth_title">更新后重新认证</string>
<string name="settings_su_reauth_summary">应用更新后重新认证超级用户权限</string>
<string name="settings_su_fingerprint_title">启用指纹验证</string>
<string name="settings_su_fingerprint_summary">使用指纹识别来允许超级用户请求</string>
<string name="multiuser_mode">多用户模式</string>
<string name="settings_owner_only">仅设备所有者</string>
@@ -181,6 +187,7 @@
<string name="requester_summary">ROOT 会话继承原程序的命名空间</string>
<string name="isolate_summary">每一个 ROOT 会话使用自己独立的命名空间</string>
<string name="android_o_not_support">不支持 Android 8.0+</string>
<string name="disable_fingerprint">没有设置指纹或设备不支持</string>
<!--Superuser-->
<string name="su_request_title">超级用户请求</string>
@@ -209,6 +216,7 @@
<string name="su_revoke_msg">确认撤销 %1$s 的权限?</string>
<string name="toast">消息提示</string>
<string name="none"></string>
<string name="auth_fail">验证失败</string>
<!--Superuser logs-->
<string name="pid">PID:\u0020</string>

View File

@@ -217,5 +217,10 @@
<string name="settings_su_fingerprint_title">啟用指紋認證</string>
<string name="settings_su_fingerprint_summary">用指紋辨識來允許超級用戶權限</string>
<string name="auth_fail">認證失敗</string>
<string name="settings_restore_manager_title">還原 Magisk Manager</string>
<string name="settings_restore_manager_summary">以原安裝包還原 Magisk Manager</string>
<string name="settings_check_update_title">檢查更新</string>
<string name="settings_check_update_summary">在背景定期檢查更新</string>
<string name="disable_fingerprint">沒有指紋加入或是裝置不支援</string>
</resources>

View File

@@ -140,6 +140,8 @@
<string name="language">Language</string>
<string name="system_default">(System Default)</string>
<string name="settings_update">Update Settings</string>
<string name="settings_check_update_title">Check Updates</string>
<string name="settings_check_update_summary">Check updates in the background periodically</string>
<string name="settings_update_channel_title">Update Channel</string>
<string name="settings_update_stable">Stable</string>
<string name="settings_update_beta">Beta</string>
@@ -188,6 +190,7 @@
<string name="requester_summary">Root sessions will inherit its requester\'s namespace</string>
<string name="isolate_summary">Each root session will have its own isolated namespace</string>
<string name="android_o_not_support">Does not support Android 8.0+</string>
<string name="disable_fingerprint">No fingerprints were set or no device support</string>
<!--Superuser-->
<string name="su_request_title">Superuser Request</string>

View File

@@ -32,9 +32,10 @@
android:title="@string/settings_update">
<SwitchPreference
android:key="notification"
android:title="@string/settings_notification_title"
android:summary="@string/settings_notification_summary" />
android:key="check_update"
android:defaultValue="true"
android:title="@string/settings_check_update_title"
android:summary="@string/settings_check_update_summary" />
<ListPreference
android:key="update_channel"