Compare commits
19 Commits
lineage-22
...
lineage-22
Author | SHA1 | Date | |
---|---|---|---|
|
f32205c417 | ||
|
0342bb3121 | ||
|
33d63d627d | ||
|
9918f7ef91 | ||
|
fbdb5570a5 | ||
|
e28d157a8c | ||
|
a9d7673d1d | ||
|
ec85854518 | ||
|
e92031f1ec | ||
|
c9159bf47b | ||
|
5ab3076f91 | ||
|
6fafcc4e7f | ||
|
e670f6e8cd | ||
|
d044ba1dee | ||
|
b551ebc472 | ||
|
d8e73e380c | ||
|
a2e31f1f2d | ||
|
b31dd16806 | ||
|
a07c2fc48e |
@@ -34,7 +34,7 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "org.lineageos.updater"
|
||||
minSdk = 30
|
||||
minSdk = 32
|
||||
targetSdk = 33
|
||||
versionCode = 1
|
||||
versionName = "1.0"
|
||||
@@ -57,12 +57,12 @@ android {
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
sourceCompatibility = JavaVersion.VERSION_11
|
||||
targetCompatibility = JavaVersion.VERSION_11
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
jvmTarget = "11"
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
@@ -81,6 +81,7 @@ android {
|
||||
}
|
||||
}
|
||||
}
|
||||
namespace = "org.lineageos.updater"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2017-2022 The LineageOS Project
|
||||
* Copyright (C) 2017-2025 The LineageOS Project
|
||||
* Copyright (C) 2020-2022 SHIFT GmbH
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@@ -23,13 +23,10 @@ import android.net.Uri;
|
||||
import android.os.ParcelFileDescriptor;
|
||||
import android.util.Log;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.lineageos.updater.controller.UpdaterController;
|
||||
import org.lineageos.updater.controller.UpdaterService;
|
||||
import org.lineageos.updater.misc.StringGenerator;
|
||||
import org.lineageos.updater.misc.Utils;
|
||||
import org.lineageos.updater.model.Update;
|
||||
import org.lineageos.updater.model.UpdateInfo;
|
||||
import org.lineageos.updater.model.UpdateStatus;
|
||||
|
||||
import java.io.File;
|
||||
@@ -41,7 +38,6 @@ import java.io.InputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.text.DateFormat;
|
||||
import java.util.Enumeration;
|
||||
import java.util.List;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipFile;
|
||||
|
||||
|
@@ -31,7 +31,6 @@ import androidx.preference.PreferenceManager;
|
||||
import org.lineageos.updater.misc.BuildInfoUtils;
|
||||
import org.lineageos.updater.misc.Constants;
|
||||
import org.lineageos.updater.misc.StringGenerator;
|
||||
import org.lineageos.updater.misc.Utils;
|
||||
|
||||
import java.text.DateFormat;
|
||||
|
||||
@@ -62,7 +61,7 @@ public class UpdaterReceiver extends BroadcastReceiver {
|
||||
String buildDate = StringGenerator.getDateLocalizedUTC(context,
|
||||
DateFormat.MEDIUM, preferences.getLong(Constants.PREF_INSTALL_NEW_TIMESTAMP, 0));
|
||||
String buildInfo = context.getString(R.string.list_build_version_date,
|
||||
Utils.getDisplayVersion(BuildInfoUtils.getBuildVersion()), buildDate);
|
||||
BuildInfoUtils.getBuildVersion(), buildDate);
|
||||
|
||||
Intent notificationIntent = new Intent(context, UpdatesActivity.class);
|
||||
PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent,
|
||||
|
@@ -17,7 +17,6 @@ package org.lineageos.updater;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.app.ProgressDialog;
|
||||
import android.app.UiModeManager;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
@@ -110,8 +109,7 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
|
||||
});
|
||||
|
||||
private UpdateImporter mUpdateImporter;
|
||||
@SuppressWarnings("deprecation")
|
||||
private ProgressDialog importDialog;
|
||||
private AlertDialog importDialog;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@@ -147,6 +145,12 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
|
||||
} else if (UpdaterController.ACTION_UPDATE_REMOVED.equals(intent.getAction())) {
|
||||
String downloadId = intent.getStringExtra(UpdaterController.EXTRA_DOWNLOAD_ID);
|
||||
mAdapter.removeItem(downloadId);
|
||||
List<UpdateInfo> sortedUpdates =
|
||||
mUpdaterService.getUpdaterController().getUpdates();
|
||||
if (sortedUpdates.isEmpty()) {
|
||||
findViewById(R.id.no_new_updates_view).setVisibility(View.VISIBLE);
|
||||
findViewById(R.id.recycler_view).setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -181,7 +185,7 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
|
||||
|
||||
TextView headerTitle = findViewById(R.id.header_title);
|
||||
headerTitle.setText(getString(R.string.header_title_text,
|
||||
Utils.getDisplayVersion(BuildInfoUtils.getBuildVersion())));
|
||||
BuildInfoUtils.getBuildVersion()));
|
||||
|
||||
updateLastCheckedString();
|
||||
|
||||
@@ -226,6 +230,8 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
|
||||
findViewById(R.id.refresh).setOnClickListener(v -> downloadUpdatesList(true));
|
||||
findViewById(R.id.preferences).setOnClickListener(v -> showPreferencesDialog());
|
||||
}
|
||||
|
||||
maybeShowWelcomeMessage();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -304,14 +310,18 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public void onImportStarted() {
|
||||
if (importDialog != null && importDialog.isShowing()) {
|
||||
importDialog.dismiss();
|
||||
}
|
||||
|
||||
importDialog = ProgressDialog.show(this, getString(R.string.local_update_import),
|
||||
getString(R.string.local_update_import_progress), true, false);
|
||||
importDialog = new AlertDialog.Builder(this)
|
||||
.setTitle(R.string.local_update_import)
|
||||
.setView(R.layout.progress_dialog)
|
||||
.setCancelable(false)
|
||||
.create();
|
||||
|
||||
importDialog.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -657,4 +667,19 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
|
||||
})
|
||||
.show();
|
||||
}
|
||||
|
||||
private void maybeShowWelcomeMessage() {
|
||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
boolean alreadySeen = preferences.getBoolean(Constants.HAS_SEEN_WELCOME_MESSAGE, false);
|
||||
if (alreadySeen) {
|
||||
return;
|
||||
}
|
||||
new AlertDialog.Builder(this)
|
||||
.setTitle(R.string.welcome_title)
|
||||
.setMessage(R.string.welcome_message)
|
||||
.setPositiveButton(R.string.info_dialog_ok, (dialog, which) -> preferences.edit()
|
||||
.putBoolean(Constants.HAS_SEEN_WELCOME_MESSAGE, true)
|
||||
.apply())
|
||||
.show();
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2017-2024 The LineageOS Project
|
||||
* Copyright (C) 2017-2025 The LineageOS Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -15,12 +15,10 @@
|
||||
*/
|
||||
package org.lineageos.updater;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.net.Uri;
|
||||
import android.os.BatteryManager;
|
||||
import android.os.PowerManager;
|
||||
import android.text.SpannableString;
|
||||
@@ -40,8 +38,6 @@ import android.widget.LinearLayout;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
import androidx.activity.result.contract.ActivityResultContracts;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.view.ContextThemeWrapper;
|
||||
@@ -55,7 +51,6 @@ import com.google.android.material.snackbar.Snackbar;
|
||||
|
||||
import org.lineageos.updater.controller.UpdaterController;
|
||||
import org.lineageos.updater.controller.UpdaterService;
|
||||
import org.lineageos.updater.misc.BuildInfoUtils;
|
||||
import org.lineageos.updater.misc.Constants;
|
||||
import org.lineageos.updater.misc.StringGenerator;
|
||||
import org.lineageos.updater.misc.Utils;
|
||||
@@ -280,7 +275,7 @@ public class UpdatesListAdapter extends RecyclerView.Adapter<UpdatesListAdapter.
|
||||
String buildDate = StringGenerator.getDateLocalizedUTC(mActivity,
|
||||
DateFormat.LONG, update.getTimestamp());
|
||||
String buildVersion = mActivity.getString(R.string.list_build_version,
|
||||
Utils.getDisplayVersion(update.getVersion()));
|
||||
update.getVersion());
|
||||
viewHolder.mBuildDate.setText(buildDate);
|
||||
viewHolder.mBuildVersion.setText(buildVersion);
|
||||
viewHolder.mBuildVersion.setCompoundDrawables(null, null, null, null);
|
||||
@@ -607,7 +602,7 @@ public class UpdatesListAdapter extends RecyclerView.Adapter<UpdatesListAdapter.
|
||||
private boolean isBatteryLevelOk() {
|
||||
Intent intent = mActivity.registerReceiver(null,
|
||||
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||
if (!intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false)) {
|
||||
if (intent == null || !intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false)) {
|
||||
return true;
|
||||
}
|
||||
int percent = Math.round(100.f * intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 100) /
|
||||
|
@@ -256,7 +256,6 @@ class ABUpdateInstaller {
|
||||
}
|
||||
|
||||
private void installationDone(boolean needsReboot) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
|
||||
String id = needsReboot ? mDownloadId : null;
|
||||
PreferenceManager.getDefaultSharedPreferences(mContext).edit()
|
||||
.putString(Constants.PREF_NEEDS_REBOOT_ID, id)
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2017-2022 The LineageOS Project
|
||||
* Copyright (C) 2017-2025 The LineageOS Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -522,7 +522,7 @@ public class UpdaterController {
|
||||
}
|
||||
|
||||
public boolean isVerifyingUpdate() {
|
||||
return mVerifyingUpdates.size() > 0;
|
||||
return !mVerifyingUpdates.isEmpty();
|
||||
}
|
||||
|
||||
public boolean isVerifyingUpdate(String downloadId) {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2017-2022 The LineageOS Project
|
||||
* Copyright (C) 2017-2025 The LineageOS Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -38,7 +38,6 @@ import androidx.preference.PreferenceManager;
|
||||
import org.lineageos.updater.R;
|
||||
import org.lineageos.updater.UpdaterReceiver;
|
||||
import org.lineageos.updater.UpdatesActivity;
|
||||
import org.lineageos.updater.misc.BuildInfoUtils;
|
||||
import org.lineageos.updater.misc.Constants;
|
||||
import org.lineageos.updater.misc.StringGenerator;
|
||||
import org.lineageos.updater.misc.Utils;
|
||||
@@ -46,7 +45,6 @@ import org.lineageos.updater.model.Update;
|
||||
import org.lineageos.updater.model.UpdateInfo;
|
||||
import org.lineageos.updater.model.UpdateStatus;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.text.DateFormat;
|
||||
import java.text.NumberFormat;
|
||||
@@ -127,7 +125,7 @@ public class UpdaterService extends Service {
|
||||
} else if (UpdaterController.ACTION_UPDATE_REMOVED.equals(intent.getAction())) {
|
||||
final boolean isLocalUpdate = Update.LOCAL_ID.equals(downloadId);
|
||||
Bundle extras = mNotificationBuilder.getExtras();
|
||||
if (extras != null && !isLocalUpdate && downloadId.equals(
|
||||
if (!isLocalUpdate && downloadId != null && downloadId.equals(
|
||||
extras.getString(UpdaterController.EXTRA_DOWNLOAD_ID))) {
|
||||
mNotificationBuilder.setExtras(null);
|
||||
UpdateInfo update = mUpdaterController.getUpdate(downloadId);
|
||||
|
@@ -39,6 +39,7 @@ public final class Constants {
|
||||
public static final String UNCRYPT_FILE_EXT = ".uncrypt";
|
||||
|
||||
public static final String PROP_AB_DEVICE = "ro.build.ab_update";
|
||||
public static final String PROP_ALLOW_MAJOR_UPGRADES = "lineage.updater.allow_major_upgrades";
|
||||
public static final String PROP_BUILD_DATE = "ro.build.date.utc";
|
||||
public static final String PROP_BUILD_VERSION = "ro.lineage.build.version";
|
||||
public static final String PROP_BUILD_VERSION_INCREMENTAL = "ro.build.version.incremental";
|
||||
@@ -58,4 +59,5 @@ public final class Constants {
|
||||
public static final String UPDATE_RECOVERY_PROPERTY = "persist.vendor.recovery_update";
|
||||
|
||||
public static final String HAS_SEEN_INFO_DIALOG = "has_seen_info_dialog";
|
||||
public static final String HAS_SEEN_WELCOME_MESSAGE = "has_seen_welcome_message";
|
||||
}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2017-2023 The LineageOS Project
|
||||
* Copyright (C) 2017-2025 The LineageOS Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -66,17 +66,6 @@ public class Utils {
|
||||
return new File(context.getString(R.string.download_path));
|
||||
}
|
||||
|
||||
public static File getExportPath(Context context) {
|
||||
File dir = new File(context.getExternalFilesDir(null),
|
||||
context.getString(R.string.export_path));
|
||||
if (!dir.isDirectory()) {
|
||||
if (dir.exists() || !dir.mkdirs()) {
|
||||
throw new RuntimeException("Could not create directory");
|
||||
}
|
||||
}
|
||||
return dir;
|
||||
}
|
||||
|
||||
public static File getCachedUpdateList(Context context) {
|
||||
return new File(context.getCacheDir(), "updates.json");
|
||||
}
|
||||
@@ -112,11 +101,32 @@ public class Utils {
|
||||
return true;
|
||||
}
|
||||
|
||||
private static boolean compareVersions(String a, String b, boolean allowMajorUpgrades) {
|
||||
try {
|
||||
int majorA = Integer.parseInt(a.split("\\.")[0]);
|
||||
int minorA = Integer.parseInt(a.split("\\.")[1]);
|
||||
|
||||
int majorB = Integer.parseInt(b.split("\\.")[0]);
|
||||
int minorB = Integer.parseInt(b.split("\\.")[1]);
|
||||
|
||||
// Return early and allow if we allow major version upgrades
|
||||
return (allowMajorUpgrades && majorA > majorB)
|
||||
|| (majorA == majorB && minorA >= minorB);
|
||||
} catch (ArrayIndexOutOfBoundsException | NumberFormatException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean canInstall(UpdateBaseInfo update) {
|
||||
boolean allowMajorUpgrades = SystemProperties.getBoolean(
|
||||
Constants.PROP_ALLOW_MAJOR_UPGRADES, false);
|
||||
|
||||
return (SystemProperties.getBoolean(Constants.PROP_UPDATER_ALLOW_DOWNGRADING, false) ||
|
||||
update.getTimestamp() > SystemProperties.getLong(Constants.PROP_BUILD_DATE, 0)) &&
|
||||
update.getVersion().equalsIgnoreCase(
|
||||
SystemProperties.get(Constants.PROP_BUILD_VERSION));
|
||||
compareVersions(
|
||||
update.getVersion(),
|
||||
SystemProperties.get(Constants.PROP_BUILD_VERSION),
|
||||
allowMajorUpgrades);
|
||||
}
|
||||
|
||||
public static List<UpdateInfo> parseJson(File file, boolean compatibleOnly)
|
||||
@@ -317,10 +327,11 @@ public class Utils {
|
||||
}
|
||||
|
||||
// Ideally the database is empty when we get here
|
||||
UpdatesDbHelper dbHelper = new UpdatesDbHelper(context);
|
||||
List<String> knownPaths = new ArrayList<>();
|
||||
for (UpdateInfo update : dbHelper.getUpdates()) {
|
||||
knownPaths.add(update.getFile().getAbsolutePath());
|
||||
try (UpdatesDbHelper dbHelper = new UpdatesDbHelper(context)) {
|
||||
for (UpdateInfo update : dbHelper.getUpdates()) {
|
||||
knownPaths.add(update.getFile().getAbsolutePath());
|
||||
}
|
||||
}
|
||||
for (File file : files) {
|
||||
if (!knownPaths.contains(file.getAbsolutePath())) {
|
||||
@@ -413,15 +424,4 @@ public class Utils {
|
||||
public static boolean isRecoveryUpdateExecPresent() {
|
||||
return new File(Constants.UPDATE_RECOVERY_EXEC).exists();
|
||||
}
|
||||
|
||||
public static String getDisplayVersion(String version) {
|
||||
float floatVersion = 0;
|
||||
try {
|
||||
floatVersion = Float.parseFloat(version);
|
||||
} catch (NumberFormatException ignored) {
|
||||
// ignore
|
||||
}
|
||||
// Lineage 20 and up should only be integer values (we don't have minor versions anymore)
|
||||
return (floatVersion >= 20) ? String.valueOf((int)floatVersion) : version;
|
||||
}
|
||||
}
|
||||
|
40
app/src/main/res/layout/progress_dialog.xml
Normal file
40
app/src/main/res/layout/progress_dialog.xml
Normal file
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2025 The LineageOS Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="horizontal"
|
||||
android:padding="24dp">
|
||||
|
||||
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
android:id="@+id/progressBar"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"
|
||||
app:indicatorColor="?android:attr/colorAccent"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginStart="16dp"
|
||||
android:text="@string/local_update_import_progress"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textSize="16sp" />
|
||||
</LinearLayout>
|
@@ -128,4 +128,6 @@
|
||||
<string name="local_update_import_failure">Hebo un fallu al importar l\'anovamientu llocal</string>
|
||||
<string name="local_update_import_install">Instalar</string>
|
||||
<string name="local_update_name">Anovamientu llocal</string>
|
||||
<string name="welcome_title">Afáyate</string>
|
||||
<string name="welcome_message">Decátate que cuando hai múltiples anovamientos disponibles nun ye necesario instalalos unu a unu, siempre pues instalar l\'últimu direutamente y desaniciar los antiguos pa lliberar espaciu d\'almacenamientu.</string>
|
||||
</resources>
|
||||
|
@@ -128,4 +128,6 @@
|
||||
<string name="local_update_import_failure">Yerli güncəlləmə daxilə köçürülmədi</string>
|
||||
<string name="local_update_import_install">Quraşdır</string>
|
||||
<string name="local_update_name">Yerli güncəlləmə</string>
|
||||
<string name="welcome_title">Xoş gəlmisiniz</string>
|
||||
<string name="welcome_message">Lütfən yadda saxlayın ki, bir neçə güncəlləmə mövcud olduqda, bunları tək-tək güncəlləməyə ehtiyac yoxdur. Həmişə birbaşa ən son versiyanı quraşdıra, daha sonra anbar sahəsini boşaltmaq üçün köhnə güncəlləmələri əminliklə silə bilərsiniz.</string>
|
||||
</resources>
|
||||
|
@@ -24,13 +24,13 @@
|
||||
<string name="download_paused_error_notification">Грешка при изтегляне</string>
|
||||
<string name="download_completed_notification">Изтеглянето приключи</string>
|
||||
<string name="download_starting_notification">Започни сваляне</string>
|
||||
<string name="update_failed_notification">Актуализацията прекратена</string>
|
||||
<string name="update_failed_notification">Актуализацията е неуспешна</string>
|
||||
<string name="installation_suspended_notification">Инсталацията е прекратена</string>
|
||||
<string name="new_updates_found_title">Нови актуализации</string>
|
||||
<string name="text_download_speed">%1$s, %2$s/s</string>
|
||||
<string name="pause_button">Пауза</string>
|
||||
<string name="resume_button">Възобнови</string>
|
||||
<string name="suspend_button">Прекратено</string>
|
||||
<string name="suspend_button">Прекрати</string>
|
||||
<string name="installing_update">Инсталиране на пакета за актуализация</string>
|
||||
<string name="installing_update_error">Грешка при инсталиране</string>
|
||||
<string name="installing_update_finished">Актуализацията е инсталирана</string>
|
||||
@@ -42,7 +42,7 @@
|
||||
<string name="reboot">Рестартиране</string>
|
||||
<string name="menu_refresh">Опресняване</string>
|
||||
<string name="menu_preferences">Настройки</string>
|
||||
<string name="menu_auto_updates_check">Автоматична проверка за актуализациите</string>
|
||||
<string name="menu_auto_updates_check">Автоматична проверка за актуализации</string>
|
||||
<string name="menu_auto_updates_check_interval_daily">Ежедневно</string>
|
||||
<string name="menu_auto_updates_check_interval_weekly">Ежеседмично</string>
|
||||
<string name="menu_auto_updates_check_interval_monthly">Ежемесечно</string>
|
||||
@@ -106,4 +106,6 @@
|
||||
<string name="new_updates_channel_title">Нови актуализации</string>
|
||||
<string name="ongoing_channel_title">Текущи изтегляния</string>
|
||||
<string name="update_failed_channel_title">Актуализацията прекратена</string>
|
||||
<string name="welcome_title">Добре дошли</string>
|
||||
<string name="welcome_message">Моля, имайте предвид, че когато са налични множество актуализации, няма нужда да инсталирате всяка една, а само най-скорошната и след това да можете да триете стари актуализации, за да пестите място</string>
|
||||
</resources>
|
||||
|
@@ -128,4 +128,6 @@
|
||||
<string name="local_update_import_failure">No s\'ha pogut importar l\'actualització local</string>
|
||||
<string name="local_update_import_install">Instal·la</string>
|
||||
<string name="local_update_name">Actualització local</string>
|
||||
<string name="welcome_title">Us donem la benvinguda</string>
|
||||
<string name="welcome_message">Tingueu en compte que quan hi ha diverses actualitzacions disponibles, no cal instal·lar actualització a actualització, sempre podeu instal·lar l\'última directament i a continuació, suprimir les actualitzacions antigues de manera segura per alliberar espai.</string>
|
||||
</resources>
|
||||
|
@@ -128,4 +128,6 @@
|
||||
<string name="local_update_import_failure">Failed to import local update</string>
|
||||
<string name="local_update_import_install">Install</string>
|
||||
<string name="local_update_name">Local update</string>
|
||||
<string name="welcome_title">Welcome</string>
|
||||
<string name="welcome_message">Please note that when multiple updates are available, there is no need to go update-by-update, you can always install the latest one directly, and then safely delete old updates to free up storage space.</string>
|
||||
</resources>
|
||||
|
@@ -128,4 +128,6 @@
|
||||
<string name="local_update_import_failure">Failed to import local update</string>
|
||||
<string name="local_update_import_install">Install</string>
|
||||
<string name="local_update_name">Local update</string>
|
||||
<string name="welcome_title">Welcome</string>
|
||||
<string name="welcome_message">Please note that when multiple updates are available, there is no need to go update-by-update, you can always install the latest one directly, and then safely delete old updates to free up storage space.</string>
|
||||
</resources>
|
||||
|
@@ -128,4 +128,6 @@
|
||||
<string name="local_update_import_failure">Failed to import local update</string>
|
||||
<string name="local_update_import_install">Install</string>
|
||||
<string name="local_update_name">Local update</string>
|
||||
<string name="welcome_title">Welcome</string>
|
||||
<string name="welcome_message">Please note that when multiple updates are available, there is no need to go update-by-update, you can always install the latest one directly, and then safely delete old updates to free up storage space.</string>
|
||||
</resources>
|
||||
|
@@ -128,4 +128,6 @@
|
||||
<string name="local_update_import_failure">Failed to import local update</string>
|
||||
<string name="local_update_import_install">Install</string>
|
||||
<string name="local_update_name">Local update</string>
|
||||
<string name="welcome_title">Welcome</string>
|
||||
<string name="welcome_message">Please note that when multiple updates are available, there is no need to go update-by-update, you can always install the latest one directly, and then safely delete old updates to free up storage space.</string>
|
||||
</resources>
|
||||
|
@@ -48,26 +48,26 @@
|
||||
<string name="reboot">Reiniciar</string>
|
||||
<string name="menu_refresh">Actualizar</string>
|
||||
<string name="menu_preferences">Preferencias</string>
|
||||
<string name="menu_auto_updates_check">Comprobación de actualizaciones automática</string>
|
||||
<string name="menu_auto_updates_check">Comprobación automática de actualizaciones</string>
|
||||
<string name="menu_auto_updates_check_interval_daily">Diaria</string>
|
||||
<string name="menu_auto_updates_check_interval_weekly">Semanal</string>
|
||||
<string name="menu_auto_updates_check_interval_monthly">Mensual</string>
|
||||
<string name="menu_auto_updates_check_interval_never">Nunca</string>
|
||||
<string name="menu_auto_delete_updates">Borrar actualizaciones luego de instalar</string>
|
||||
<string name="menu_auto_delete_updates">Borrar las actualizaciones una vez instaladas</string>
|
||||
<string name="menu_delete_update">Borrar</string>
|
||||
<string name="menu_copy_url">Copiar URL</string>
|
||||
<string name="menu_export_update">Exportar actualización</string>
|
||||
<string name="menu_show_changelog">Mostrar registro de cambios</string>
|
||||
<string name="menu_ab_perf_mode">Priorizar el proceso de actualización</string>
|
||||
<string name="menu_update_recovery">Actualizar partición de recuperación (recovery)</string>
|
||||
<string name="toast_forced_update_recovery">Es imposible desactivar en este dispositivo las actualizaciones del Modo de Recuperación («Recovery») de Lineage.</string>
|
||||
<string name="toast_forced_update_recovery">Es imposible desactivar las actualizaciones del modo de recuperación («Recovery») de Lineage en este dispositivo.</string>
|
||||
<string name="snack_updates_found">Se encontraron nuevas actualizaciones</string>
|
||||
<string name="snack_no_updates_found">No se encontraron nuevas actualizaciones</string>
|
||||
<string name="snack_updates_check_failed">Error en la comprobación de actualizaciones. Por favor, verifique la conexión a Internet e inténtalo nuevamente.</string>
|
||||
<string name="snack_updates_check_failed">Error en la comprobación de actualizaciones. Por favor, verifica la conexión a Internet e inténtalo más tarde.</string>
|
||||
<string name="snack_download_failed">Descarga fallida. Compruebe la conexión a Internet e inténtelo nuevamente.</string>
|
||||
<string name="snack_download_verification_failed">La verificación de la actualización falló.</string>
|
||||
<string name="snack_download_verification_failed">Ha fallado la verificación de la actualización.</string>
|
||||
<string name="snack_download_verified">Descarga completada.</string>
|
||||
<string name="snack_update_not_installable">Esta actualización no puede instalarse encima de la versión actual.</string>
|
||||
<string name="snack_update_not_installable">Esta actualización no puede instalarse sobre la versión actual.</string>
|
||||
<string name="header_title_text">LineageOS\n%1$s</string>
|
||||
<string name="header_android_version">Android <xliff:g id="version" example="7.1.2">%1$s</xliff:g></string>
|
||||
<string name="header_last_updates_check">Última comprobación: <xliff:g id="date" example="1 January 1970">%1$s</xliff:g> (<xliff:g id="time" example="01:23">%2$s</xliff:g>)</string>
|
||||
@@ -114,7 +114,7 @@
|
||||
<string name="checkbox_metered_network_warning">No mostrar de nuevo</string>
|
||||
<string name="menu_metered_network_warning">Aviso de consumo de datos</string>
|
||||
<string name="blocked_update_dialog_title">Actualización bloqueada</string>
|
||||
<string name="blocked_update_dialog_message">Esta actualización no puede instalarse usando la aplicación «Actualizador». Lea <xliff:g id="info_url">%1$s</xliff:g> para más información.</string>
|
||||
<string name="blocked_update_dialog_message">Esta actualización no puede instalarse usando la aplicación «Actualizador». Lee <xliff:g id="info_url">%1$s</xliff:g> para más información.</string>
|
||||
<string name="export_channel_title">Exportación finalizada</string>
|
||||
<string name="new_updates_channel_title">Nuevas actualizaciones</string>
|
||||
<string name="ongoing_channel_title">Descargas en curso</string>
|
||||
@@ -128,4 +128,6 @@
|
||||
<string name="local_update_import_failure">Error al importar actualización local</string>
|
||||
<string name="local_update_import_install">Instalar</string>
|
||||
<string name="local_update_name">Actualización local</string>
|
||||
<string name="welcome_title">Te damos la bienvenida</string>
|
||||
<string name="welcome_message">Ten en cuenta que cuando hay varias actualizaciones disponibles, no es necesario actualizar una tras otra, siempre puedes instalar la más reciente directamente y luego eliminar de forma segura las actualizaciones antiguas para liberar espacio de almacenamiento.</string>
|
||||
</resources>
|
||||
|
133
app/src/main/res/values-fa/strings.xml
Normal file
133
app/src/main/res/values-fa/strings.xml
Normal file
@@ -0,0 +1,133 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2017-2024 The LineageOS Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_name">بهروز کننده</string>
|
||||
<string name="display_name">بهروز کننده</string>
|
||||
<string name="verification_failed_notification">تایید با خطا مواجه شد</string>
|
||||
<string name="verifying_download_notification">در حال تایید بهروزرسانی</string>
|
||||
<string name="downloading_notification">در حال بارگیری</string>
|
||||
<string name="download_paused_notification">بارگیری متوقف شد</string>
|
||||
<string name="download_paused_error_notification">خطای بارگیری</string>
|
||||
<string name="download_completed_notification">بارگیری کامل شد</string>
|
||||
<string name="download_starting_notification">در حال آغاز بارگیری</string>
|
||||
<string name="update_failed_notification">بهروز رسانی شکست خورد</string>
|
||||
<string name="installation_suspended_notification">فرآیند نصب متوقف شد</string>
|
||||
<string name="new_updates_found_title">بهروز رسانی جدید</string>
|
||||
<string name="text_download_speed">%1$s، %2$s/ث</string>
|
||||
<string name="pause_button">مکث</string>
|
||||
<string name="resume_button">ادامه</string>
|
||||
<string name="suspend_button">معلق</string>
|
||||
<string name="installing_update">در حال نصب بسته به روز</string>
|
||||
<string name="installing_update_error">خطا در نصب</string>
|
||||
<string name="installing_update_finished">بهروزرسانی نصب شد</string>
|
||||
<string name="finalizing_package">در حال نهایی شدن نصب بسته</string>
|
||||
<string name="preparing_ota_first_boot">آمادهسازی برای روشن شدن اولیه</string>
|
||||
<string name="dialog_prepare_zip_message">آمادهسازی اولیه به روز رسانی</string>
|
||||
<string name="dialog_battery_low_title">باتری کم</string>
|
||||
<string name="dialog_battery_low_message_pct">سطح باتری بسیار کم است، شما نیاز به حداقل <xliff:g id="percent_discharging">%1$d</xliff:g>%% باتری برای ادامه دارید و <xliff:g id="percent_charging">%2$d</xliff:g>%% اگر در حال شارژ است.</string>
|
||||
<string name="dialog_scratch_mounted_message"><![CDATA[ لطفاً دستورات زیر را اجرا کنید و دوباره بهروز رسانی را امتحان کنید:\n
|
||||
• adb root\n
|
||||
• adb enable-verity\n
|
||||
• adb reboot
|
||||
]]></string>
|
||||
<string name="dialog_scratch_mounted_title">با نصب OverlayFS نمی توان بهروز رسانی را نصب کرد</string>
|
||||
<string name="reboot">راهاندازی مجدد</string>
|
||||
<string name="menu_refresh">تازه سازی</string>
|
||||
<string name="menu_preferences">ترجیحات</string>
|
||||
<string name="menu_auto_updates_check">بررسی خودکار نسخه های به روز</string>
|
||||
<string name="menu_auto_updates_check_interval_daily">روزانه</string>
|
||||
<string name="menu_auto_updates_check_interval_weekly">هفتگی</string>
|
||||
<string name="menu_auto_updates_check_interval_monthly">ماهانه</string>
|
||||
<string name="menu_auto_updates_check_interval_never">هرگز</string>
|
||||
<string name="menu_auto_delete_updates">حذف نسخه به روز وقتی نصب شد</string>
|
||||
<string name="menu_delete_update">حذف</string>
|
||||
<string name="menu_copy_url">کپی آدرس</string>
|
||||
<string name="menu_export_update">صادر کردن نسخهی بروز</string>
|
||||
<string name="menu_show_changelog">نمایش تغییرات</string>
|
||||
<string name="menu_ab_perf_mode">به روز رسانی با اولویت بالا</string>
|
||||
<string name="menu_update_recovery">بهروز رسانی ریکاوری</string>
|
||||
<string name="toast_forced_update_recovery">غیرفعال کردن به روزرسانی های ریکاوری Lineage در این دستگاه غیرممکن است.</string>
|
||||
<string name="snack_updates_found">نسخه های جدید یافت شد</string>
|
||||
<string name="snack_no_updates_found">بهروزرسانی جدیدی یافت نشد</string>
|
||||
<string name="snack_updates_check_failed">بررسی نسخه به روز انجام نشد. اتصال اینترنت خود را بررسی و دوباره سعی کنید.</string>
|
||||
<string name="snack_download_failed">بارگیری انجام نشد. اتصال اینترنت خود را بررسی و دوباره تلاش کنید.</string>
|
||||
<string name="snack_download_verification_failed">تأیید بهروزرسانی با خطا روبهرو شد.</string>
|
||||
<string name="snack_download_verified">بارگیری کامل شد.</string>
|
||||
<string name="snack_update_not_installable">این نسخه جدید را نمی توان بر روی نسخه کنونی نصب کرد.</string>
|
||||
<string name="header_title_text">LineageOS\n%1$s</string>
|
||||
<string name="header_android_version">اندروید <xliff:g id="version" example="7.1.2">%1$s</xliff:g></string>
|
||||
<string name="header_last_updates_check">آخرین بررسی: <xliff:g id="date" example="1 January 1970">%1$s</xliff:g> (<xliff:g id="time" example="01:23">%2$s</xliff:g>)</string>
|
||||
<string name="list_build_version">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g></string>
|
||||
<string name="list_build_version_date">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g> - <xliff:g id="date" example="July 11, 2017">%2$s</xliff:g></string>
|
||||
<string name="list_download_progress_newer"><xliff:g id="filesize_without_unit" example="12.2">%1$s</xliff:g> از <xliff:g id="filesize_without_unit" example="310 MB">%2$s</xliff:g></string>
|
||||
<string name="list_download_progress_eta_newer"><xliff:g id="filesize_without_unit" example="12.2">%1$s</xliff:g> از <xliff:g id="filesize_without_unit" example="310 MB">%2$s</xliff:g> (<xliff:g id="eta" example="3 minutes left">%3$s</xliff:g>)</string>
|
||||
<string name="list_verifying_update">در حال تایید بهروزرسانی</string>
|
||||
<string name="list_no_updates">هیچ بهروز رسانی جدیدی پیدا نشد. برای بررسی دستی بهروز رسانیها، از دکمهٔ تازهسازی استفاده کنید.</string>
|
||||
<string name="action_download">بارگیری</string>
|
||||
<string name="action_pause">مکث</string>
|
||||
<string name="action_resume">ادامه</string>
|
||||
<string name="action_install">نصب</string>
|
||||
<string name="action_info">اطلاعات</string>
|
||||
<string name="action_delete">حذف</string>
|
||||
<string name="action_cancel">لغو</string>
|
||||
<string name="confirm_delete_dialog_title">حذف فایل</string>
|
||||
<string name="confirm_delete_dialog_message">آیا فایل نسخه به روز حذف شود؟</string>
|
||||
<string name="apply_update_dialog_title">انجام بهروزرسانی</string>
|
||||
<string name="apply_update_dialog_message">شما در حال نصب <xliff:g id="update_name">%1$s</xliff:g> هستید.\n\nاگر <xliff:g id="ok">%2$s</xliff را فشار دهید: g>، دستگاه برای نصب بهروزرسانی، خود را در حالت بازیابی مجدد راهاندازی میکند.\n\nتوجه: این ویژگی به یک بازیابی سازگار نیاز دارد یا بهروزرسانیها باید به صورت دستی نصب شوند.</string>
|
||||
<string name="apply_update_dialog_message_ab">شما در حال نصب <xliff:g id="update_name">%1$s</xliff:g> هستید.\n\nاگر <xliff:g id="ok">%2$s</xliff را فشار دهید: g>، دستگاه شروع به نصب در پسزمینه میکند.\n\nپس از تکمیل، از شما خواسته میشود راهاندازی مجدد کنید.</string>
|
||||
<string name="cancel_installation_dialog_message">لغو نصب میکنید؟</string>
|
||||
<string name="label_download_url">نشانی بارگیری</string>
|
||||
<string name="toast_download_url_copied">نشانی رونوشت شد</string>
|
||||
<string name="dialog_export_title">صادر کردن نسخه بهروز</string>
|
||||
<string name="notification_export_success">نسخه بهروز صادر شد</string>
|
||||
<string name="notification_export_fail">خطا در صادر کردن</string>
|
||||
<string name="toast_already_exporting">قبلا بهروزرسانی صادر شده</string>
|
||||
<string name="toast_export_started">صادرات آغاز شد</string>
|
||||
<plurals name="eta_seconds">
|
||||
<item quantity="one">۱ ثانیه مانده</item>
|
||||
<item quantity="other"><xliff:g id="count">%d</xliff:g> ثانیه مانده</item>
|
||||
</plurals>
|
||||
<plurals name="eta_minutes">
|
||||
<item quantity="one">1 دقیقه مانده است</item>
|
||||
<item quantity="other"><xliff:g id="count">%d</xliff:g> دقیقه مانده</item>
|
||||
</plurals>
|
||||
<plurals name="eta_hours">
|
||||
<item quantity="one">۱ ساعت مانده</item>
|
||||
<item quantity="other"><xliff:g id="count">%d</xliff:g> ساعت مانده</item>
|
||||
</plurals>
|
||||
<string name="update_over_metered_network_title">هشدار</string>
|
||||
<string name="update_over_metered_network_message">شما در حال بارگیری یک بسته بروز رسانی بر روی یک شبکه محدود شده یا سیم کارت هستید که احتمالا ممکن است باعث مصرف داده زیاد می شود. آیا می خواهید ادامه بدهید؟</string>
|
||||
<string name="checkbox_metered_network_warning">دوباره نشان داده نشود</string>
|
||||
<string name="menu_metered_network_warning">هشدار شبکه محدود شده</string>
|
||||
<string name="blocked_update_dialog_title">بروز رسانی مسدود شد</string>
|
||||
<string name="blocked_update_dialog_message">این بهروزرسانی با استفاده از برنامه بروز کننده قابل نصب نیست. لطفاً برای اطلاعات بیشتر <xliff:g id="info_url">%1$s</xliff:g> را بخوانید.</string>
|
||||
<string name="export_channel_title">تکمیل صادرات</string>
|
||||
<string name="new_updates_channel_title">بهروزرسانیهای تازه</string>
|
||||
<string name="ongoing_channel_title">بارگیری های جاری</string>
|
||||
<string name="update_failed_channel_title">بهروز رسانی شکست خورد</string>
|
||||
<string name="info_dialog_title">آیا میدانستید؟</string>
|
||||
<string name="info_dialog_message">به روز رسانی های LineageOS بسته های نصب کامل هستند. این بدان معناست که همیشه میتوانید فقط آخرین بهروزرسانی را نصب کنید، حتی اگر برخی از آنها را در این بین رد کرده باشید!</string>
|
||||
<string name="info_dialog_ok">از اطلاعات شما سپاسگذاریم!</string>
|
||||
<string name="local_update_import">بهروزرسانی داخلی</string>
|
||||
<string name="local_update_import_progress">وارد کردن بهروزرسانی محلی\u2026</string>
|
||||
<string name="local_update_import_success">%1$s وارد شد. آیا مایل به نصب هستید؟</string>
|
||||
<string name="local_update_import_failure">بهروزرسانی داخلی با شکست مواجه شد</string>
|
||||
<string name="local_update_import_install">نصب</string>
|
||||
<string name="local_update_name">بهروزرسانی داخلی</string>
|
||||
<string name="welcome_title">خوش آمدید</string>
|
||||
<string name="welcome_message">لطفاً توجه داشته باشید که وقتی چندین بهروزرسانی موجود است، نیازی به نصب تکبهتک آنها نیست. شما میتوانید بهطور مستقیم جدیدترین بهروزرسانی را نصب کنید و سپس با خیال راحت، بهروزرسانیهای قدیمیتر را حذف کنید تا فضای ذخیرهسازی آزاد شود.</string>
|
||||
</resources>
|
@@ -128,4 +128,6 @@
|
||||
<string name="local_update_import_failure">Importazion inzornament locâl falide</string>
|
||||
<string name="local_update_import_install">Instale</string>
|
||||
<string name="local_update_name">Inzornament locâl</string>
|
||||
<string name="welcome_title">Benvignûts</string>
|
||||
<string name="welcome_message">Fâs câs che cuant che a son disponibii plui inzornaments, no covente inzornâ in progression l\'un dal un, tu puedis simpri instalâ daurman l\'ultin e dopo eliminâ in sigurece i inzornaments vieris par liberâ spazi di archiviazion.</string>
|
||||
</resources>
|
||||
|
@@ -137,4 +137,6 @@
|
||||
<string name="local_update_import_failure">Theip ar iompórtáil an nuashonrú áitiúil</string>
|
||||
<string name="local_update_import_install">Suiteáil</string>
|
||||
<string name="local_update_name">Nuashonrú áitiúil</string>
|
||||
<string name="welcome_title">Fáilte</string>
|
||||
<string name="welcome_message">Tabhair faoi deara le do thoil, nuair a bhíonn nuashonruithe iolracha ar fáil, níl aon ghá le nuashonrú ar nuashonrú, is féidir leat an ceann is déanaí a shuiteáil go díreach i gcónaí, agus ansin sean-nuashonruithe a scriosadh go sábháilte chun spás stórála a shaoradh.</string>
|
||||
</resources>
|
||||
|
@@ -129,4 +129,6 @@ illetve, ha éppen tölt, akkor még <xliff:g id="percent_charging">%2$d</xliff:
|
||||
<string name="local_update_import_failure">Nem sikerült importálni a helyi frissítést</string>
|
||||
<string name="local_update_import_install">Telepítés</string>
|
||||
<string name="local_update_name">Helyi frissítés</string>
|
||||
<string name="welcome_title">Üdvözöljük</string>
|
||||
<string name="welcome_message">Vegye figyelembe, hogy ha több frissítés is elérhető, nem szükséges mindet telepítenie, csak kizárólag a legfrissebbet, majd biztonságosan törölheti a régi frissítéseket, hogy tárhelyet szabadítson fel.</string>
|
||||
</resources>
|
||||
|
@@ -128,4 +128,6 @@
|
||||
<string name="local_update_import_failure">Importazione aggiornamento locale fallita</string>
|
||||
<string name="local_update_import_install">Installa</string>
|
||||
<string name="local_update_name">Aggiornamento locale</string>
|
||||
<string name="welcome_title">Benvenuto</string>
|
||||
<string name="welcome_message">Quando sono disponibili più aggiornamenti, non c\'è bisogno di installarli tutti: è sempre possibile installare direttamente quello più recente, e quindi eliminare in modo sicuro i vecchi aggiornamenti per liberare spazio di archiviazione.</string>
|
||||
</resources>
|
||||
|
@@ -125,4 +125,6 @@
|
||||
<string name="local_update_import_failure">ローカルアップデートのインポートに失敗しました</string>
|
||||
<string name="local_update_import_install">インストール</string>
|
||||
<string name="local_update_name">ローカルアップデート</string>
|
||||
<string name="welcome_title">ようこそ</string>
|
||||
<string name="welcome_message">複数のアップデートが利用可能な場合、順番にアップデートする必要はありません。 古いアップデートは削除してストレージ容量を空けて、最新のアップデートだけをインストールしてください。</string>
|
||||
</resources>
|
||||
|
@@ -125,4 +125,6 @@
|
||||
<string name="local_update_import_failure">로컬 업데이트를 가져오지 못했습니다.</string>
|
||||
<string name="local_update_import_install">설치</string>
|
||||
<string name="local_update_name">로컬 업데이트</string>
|
||||
<string name="welcome_title">환영합니다</string>
|
||||
<string name="welcome_message">여러 버전의 업데이트가 있을 때, 모든 업데이트를 하나하나 설치할 필요는 없습니다. 가장 마지막 업데이트만 설치한 다음 오래된 업데이트 파일은 삭제하여 저장소 공간을 확보할 수 있습니다.</string>
|
||||
</resources>
|
||||
|
@@ -134,4 +134,6 @@
|
||||
<string name="local_update_import_failure">Nie udało się zaimportować aktualizacji lokalnej</string>
|
||||
<string name="local_update_import_install">Zainstaluj</string>
|
||||
<string name="local_update_name">Aktualizacja lokalna</string>
|
||||
<string name="welcome_title">Witaj</string>
|
||||
<string name="welcome_message">Pamiętaj, że gdy dostępne są wielokrotne aktualizacje, nie ma potrzeby aktualizować po aktualizacji, zawsze możesz zainstalować najnowszą wersję bezpośrednio, a następnie bezpiecznie usuwać stare aktualizacje, aby zwolnić miejsce w pamięci.</string>
|
||||
</resources>
|
||||
|
@@ -19,17 +19,17 @@
|
||||
<string name="display_name">Atualizador</string>
|
||||
<string name="verification_failed_notification">Falha na verificação</string>
|
||||
<string name="verifying_download_notification">Verificando atualização</string>
|
||||
<string name="downloading_notification">Baixando</string>
|
||||
<string name="downloading_notification">Download</string>
|
||||
<string name="download_paused_notification">Download pausado</string>
|
||||
<string name="download_paused_error_notification">Erro ao baixar</string>
|
||||
<string name="download_completed_notification">Download concluído</string>
|
||||
<string name="download_starting_notification">Iniciando download</string>
|
||||
<string name="update_failed_notification">Falha ao atualizar</string>
|
||||
<string name="update_failed_notification">Falha na atualização</string>
|
||||
<string name="installation_suspended_notification">Instalação suspensa</string>
|
||||
<string name="new_updates_found_title">Novas atualizações</string>
|
||||
<string name="text_download_speed">%1$s, %2$s/s</string>
|
||||
<string name="pause_button">Pausar</string>
|
||||
<string name="resume_button">Continuar</string>
|
||||
<string name="resume_button">Retomar</string>
|
||||
<string name="suspend_button">Suspender</string>
|
||||
<string name="installing_update">Instalando o pacote de atualização</string>
|
||||
<string name="installing_update_error">Erro de instalação</string>
|
||||
@@ -38,7 +38,7 @@
|
||||
<string name="preparing_ota_first_boot">Preparando-se para a primeira inicialização</string>
|
||||
<string name="dialog_prepare_zip_message">Preparação preliminar de atualização</string>
|
||||
<string name="dialog_battery_low_title">Bateria fraca</string>
|
||||
<string name="dialog_battery_low_message_pct">O nível da bateria está muito baixo, precisando de, pelo menos, <xliff:g id="percent_discharging">%1$d</xliff:g>%% de bateria para continuar, ou <xliff:g id="percent_charging">%2$d</xliff:g>%% se estiver carregando.</string>
|
||||
<string name="dialog_battery_low_message_pct">O nível da bateria está muito baixo, é preciso de pelo menos <xliff:g id="percent_discharging">%1$d</xliff:g>%% de bateria para continuar, ou <xliff:g id="percent_charging">%2$d</xliff:g>%% se estiver carregando.</string>
|
||||
<string name="dialog_scratch_mounted_message"><![CDATA[ Execute os seguintes comandos e tente atualizar novamente:\n
|
||||
• adb root\n
|
||||
• adb enable-verity\n
|
||||
@@ -48,29 +48,29 @@
|
||||
<string name="reboot">Reiniciar</string>
|
||||
<string name="menu_refresh">Atualizar</string>
|
||||
<string name="menu_preferences">Preferências</string>
|
||||
<string name="menu_auto_updates_check">Autoverificar por atualizações</string>
|
||||
<string name="menu_auto_updates_check">Automaticamente buscar atualizações</string>
|
||||
<string name="menu_auto_updates_check_interval_daily">Diariamente</string>
|
||||
<string name="menu_auto_updates_check_interval_weekly">Semanalmente</string>
|
||||
<string name="menu_auto_updates_check_interval_monthly">Mensalmente</string>
|
||||
<string name="menu_auto_updates_check_interval_never">Nunca</string>
|
||||
<string name="menu_auto_delete_updates">Excluir pacotes instalados</string>
|
||||
<string name="menu_auto_delete_updates">Excluir pacotes já instalados</string>
|
||||
<string name="menu_delete_update">Excluir</string>
|
||||
<string name="menu_copy_url">Copiar URL</string>
|
||||
<string name="menu_export_update">Exportar atualização</string>
|
||||
<string name="menu_show_changelog">Mostrar alterações</string>
|
||||
<string name="menu_ab_perf_mode">Priorizar o processo de atualização</string>
|
||||
<string name="menu_update_recovery">Atualizar a recuperação</string>
|
||||
<string name="menu_update_recovery">Atualizar recuperação</string>
|
||||
<string name="toast_forced_update_recovery">Não é possível desativar as atualizações do Lineage Recovery neste dispositivo.</string>
|
||||
<string name="snack_updates_found">Nova atualização disponível</string>
|
||||
<string name="snack_updates_found">Novas atualizações disponíveis</string>
|
||||
<string name="snack_no_updates_found">Não foram encontradas novas atualizações</string>
|
||||
<string name="snack_updates_check_failed">Falha ao procurar por atualizações. Verifique sua conexão com a internet e tente novamente.</string>
|
||||
<string name="snack_updates_check_failed">Falha ao buscar atualizações. Verifique sua conexão com a internet e tente novamente.</string>
|
||||
<string name="snack_download_failed">Falha ao baixar a atualização. Verifique sua conexão com a internet e tente novamente.</string>
|
||||
<string name="snack_download_verification_failed">Falha na verificação da atualização.</string>
|
||||
<string name="snack_download_verified">Download concluído.</string>
|
||||
<string name="snack_update_not_installable">Esta atualização não pode ser instalada por cima da versão atual.</string>
|
||||
<string name="header_title_text">LineageOS\n%1$s</string>
|
||||
<string name="header_android_version">Android <xliff:g id="version" example="7.1.2">%1$s</xliff:g></string>
|
||||
<string name="header_last_updates_check">Última verificação: <xliff:g id="date" example="1 January 1970">%1$s</xliff:g> às <xliff:g id="time" example="01:23">%2$s</xliff:g></string>
|
||||
<string name="header_last_updates_check">Última busca: <xliff:g id="date" example="1 January 1970">%1$s</xliff:g> às <xliff:g id="time" example="01:23">%2$s</xliff:g></string>
|
||||
<string name="list_build_version">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g></string>
|
||||
<string name="list_build_version_date">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g> - <xliff:g id="date" example="July 11, 2017">%2$s</xliff:g></string>
|
||||
<string name="list_download_progress_newer"><xliff:g id="filesize_without_unit" example="12.2">%1$s</xliff:g> de <xliff:g id="filesize_without_unit" example="310 MB">%2$s</xliff:g></string>
|
||||
@@ -79,7 +79,7 @@
|
||||
<string name="list_no_updates">Não foram encontradas novas atualizações. Use o botão Atualizar para buscar por novas atualizações manualmente.</string>
|
||||
<string name="action_download">Baixar</string>
|
||||
<string name="action_pause">Pausar</string>
|
||||
<string name="action_resume">Continuar</string>
|
||||
<string name="action_resume">Retomar</string>
|
||||
<string name="action_install">Instalar</string>
|
||||
<string name="action_info">Informações</string>
|
||||
<string name="action_delete">Excluir</string>
|
||||
@@ -90,8 +90,8 @@
|
||||
<string name="apply_update_dialog_message">Você está prestes a instalar <xliff:g id="update_name">%1$s</xliff:g>.\n\nSe você pressionar <xliff:g id="ok">%2$s</xliff:g>, o dispositivo será reiniciado no modo de recuperação para instalar a atualização.\n\nObservação: Esse recurso requer uma recuperação compatível ou as atualizações precisarão ser instaladas manualmente.</string>
|
||||
<string name="apply_update_dialog_message_ab">Você está prestes a instalar <xliff:g id="update_name">%1$s</xliff:g>.\n\nSe você pressionar <xliff:g id="ok">%2$s</xliff:g>, a instalação do dispositivo começará em segundo plano.\n\nDepois de concluído, você será solicitado a reiniciar o dispositivo.</string>
|
||||
<string name="cancel_installation_dialog_message">Deseja cancelar a instalação?</string>
|
||||
<string name="label_download_url">URL de Download</string>
|
||||
<string name="toast_download_url_copied">URL copiado</string>
|
||||
<string name="label_download_url">URL de download </string>
|
||||
<string name="toast_download_url_copied">URL copiada</string>
|
||||
<string name="dialog_export_title">Exportando atualização</string>
|
||||
<string name="notification_export_success">Atualização exportada</string>
|
||||
<string name="notification_export_fail">Falha ao exportar</string>
|
||||
@@ -109,23 +109,25 @@
|
||||
<item quantity="one">1 hora restante</item>
|
||||
<item quantity="other"><xliff:g id="count">%d</xliff:g> horas restantes</item>
|
||||
</plurals>
|
||||
<string name="update_over_metered_network_title">Aviso</string>
|
||||
<string name="update_over_metered_network_message">Você está prestes a baixar um pacote de atualização usando os dados móveis, o que provavelmente causará um alto consumo de dados. Deseja continuar?</string>
|
||||
<string name="update_over_metered_network_title">Alerta</string>
|
||||
<string name="update_over_metered_network_message">Você está prestes a baixar um pacote de atualização em uma rede medida, o que provavelmente causará um alto consumo de dados. Deseja continuar?</string>
|
||||
<string name="checkbox_metered_network_warning">Não mostrar novamente</string>
|
||||
<string name="menu_metered_network_warning">Aviso de rede limitada</string>
|
||||
<string name="menu_metered_network_warning">Alerta de rede limitada</string>
|
||||
<string name="blocked_update_dialog_title">Atualização bloqueada</string>
|
||||
<string name="blocked_update_dialog_message">Esta atualização não pode ser instalada pelo Atualizador. Leia <xliff:g id="info_url">%1$s</xliff:g> para obter mais informações.</string>
|
||||
<string name="blocked_update_dialog_message">Esta atualização não pode ser instalada pelo app Atualizador. Leia <xliff:g id="info_url">%1$s</xliff:g> para mais informações.</string>
|
||||
<string name="export_channel_title">Exportação concluída</string>
|
||||
<string name="new_updates_channel_title">Novas atualizações</string>
|
||||
<string name="ongoing_channel_title">Downloads em andamento</string>
|
||||
<string name="update_failed_channel_title">Falha ao atualizar</string>
|
||||
<string name="info_dialog_title">Você sabia?</string>
|
||||
<string name="info_dialog_message">As atualizações do LineageOS são pacotes de instalação completos. Isso significa que você sempre pode instalar apenas a atualização mais recente, mesmo que você tenha ignorado versões anteriores!</string>
|
||||
<string name="info_dialog_ok">Agradecemos o seu comentário!</string>
|
||||
<string name="info_dialog_ok">Obrigado pela dica!</string>
|
||||
<string name="local_update_import">Atualização local</string>
|
||||
<string name="local_update_import_progress">Importando atualização local\u2026</string>
|
||||
<string name="local_update_import_success">%1$s foi importado. Você quer instalá-lo?</string>
|
||||
<string name="local_update_import_failure">Falha ao importar a atualização local</string>
|
||||
<string name="local_update_import_install">Instalar</string>
|
||||
<string name="local_update_name">Atualização local</string>
|
||||
<string name="welcome_title">Boas vindas</string>
|
||||
<string name="welcome_message">Observe que quando há várias atualizações disponíveis, não há necessidade de instalar todas, você sempre pode instalar a mais recente e então excluir atualizações antigas para liberar espaço de armazenamento.</string>
|
||||
</resources>
|
||||
|
@@ -39,6 +39,12 @@
|
||||
<string name="dialog_prepare_zip_message">Preparação preliminar de atualização</string>
|
||||
<string name="dialog_battery_low_title">Bateria fraca</string>
|
||||
<string name="dialog_battery_low_message_pct">O nível da bateria está demasiado baixo. Precisa de, pelo menos, <xliff:g id="percent_discharging">%1$d</xliff:g>%% de bateria para continuar, <xliff:g id="percent_charging">%2$d</xliff:g>%% se estiver a carregar.</string>
|
||||
<string name="dialog_scratch_mounted_message"><![CDATA[ Por favor, execute os seguintes comandos e tente novamente a atualização:\n
|
||||
• adb root\n
|
||||
• adb enable-verity\n
|
||||
• adb reboot
|
||||
]]></string>
|
||||
<string name="dialog_scratch_mounted_title">Não é possível instalar a atualização com OverlayFS montado</string>
|
||||
<string name="reboot">Reiniciar</string>
|
||||
<string name="menu_refresh">Atualizar</string>
|
||||
<string name="menu_preferences">Preferências</string>
|
||||
@@ -104,7 +110,9 @@
|
||||
<item quantity="other"><xliff:g id="count">%d</xliff:g> horas restantes</item>
|
||||
</plurals>
|
||||
<string name="update_over_metered_network_title">Aviso</string>
|
||||
<string name="update_over_metered_network_message">Está prestes a transferir uma atualização através de uma rede de acesso limitado, o que provavelmente irá resultar num elevado consumo de dados. Pretende continuar?</string>
|
||||
<string name="checkbox_metered_network_warning">Não mostrar novamente</string>
|
||||
<string name="menu_metered_network_warning">Aviso de rede de acesso limitado</string>
|
||||
<string name="blocked_update_dialog_title">Atualização bloqueada</string>
|
||||
<string name="blocked_update_dialog_message">Esta atualização não pode ser instalada usando a aplicação do atualizador. Por favor, leia <xliff:g id="info_url">%1$s </xliff:g> para mais informações.</string>
|
||||
<string name="export_channel_title">Conclusão da exportação</string>
|
||||
@@ -114,4 +122,12 @@
|
||||
<string name="info_dialog_title">Sabias que?</string>
|
||||
<string name="info_dialog_message">As atualizações do LineageOS são pacotes de instalação completa. Isso significa que podes instalar apenas a última atualização, mesmo que tenhas ignorado alguns deles!</string>
|
||||
<string name="info_dialog_ok">Obrigado pela informação!</string>
|
||||
<string name="local_update_import">Atualização local</string>
|
||||
<string name="local_update_import_progress">A importar a atualização local\u2026</string>
|
||||
<string name="local_update_import_success">%1$s foi importada. Pretende instalar?</string>
|
||||
<string name="local_update_import_failure">Falha ao importar a atualização local</string>
|
||||
<string name="local_update_import_install">Instalar</string>
|
||||
<string name="local_update_name">Atualização local</string>
|
||||
<string name="welcome_title">Bem-vindo</string>
|
||||
<string name="welcome_message">Note que, quando há várias atualizações disponíveis, não há necessidade de instalá-las uma a uma. Pode sempre instalar a mais recente e eliminar as atualizações antigas para libertar espaço de armazenamento.</string>
|
||||
</resources>
|
||||
|
@@ -131,4 +131,6 @@
|
||||
<string name="local_update_import_failure">Eroare la importarea actualizării locale</string>
|
||||
<string name="local_update_import_install">Instalați</string>
|
||||
<string name="local_update_name">Actualizare locală</string>
|
||||
<string name="welcome_title">Bun venit</string>
|
||||
<string name="welcome_message">Vă rugăm să rețineți că, atunci când sunt disponibile mai multe actualizări, nu este nevoie să treceți prin fiecare dintre ele, ci puteți instala întotdeauna cea mai recentă în mod direct și apoi să ștergeți în siguranță actualizările vechi pentru a elibera spațiul de stocare.</string>
|
||||
</resources>
|
||||
|
@@ -134,4 +134,6 @@
|
||||
<string name="local_update_import_failure">Не удалось импортировать локальное обновление</string>
|
||||
<string name="local_update_import_install">Установить</string>
|
||||
<string name="local_update_name">Локальное обновление</string>
|
||||
<string name="welcome_title">Добро пожаловать!</string>
|
||||
<string name="welcome_message">Пожалуйста, обратите внимание, что при наличии нескольких обновлений нет необходимости переходить от одного обновления к другому. Вы всегда можете установить последнее, а затем безопасно удалить старые обновления, чтобы освободить место.</string>
|
||||
</resources>
|
||||
|
@@ -134,4 +134,6 @@
|
||||
<string name="local_update_import_failure">Uvoz lokalne posodobitve je spodletel</string>
|
||||
<string name="local_update_import_install">Namesti</string>
|
||||
<string name="local_update_name">Lokalna posodobitev</string>
|
||||
<string name="welcome_title">Dobrodošli</string>
|
||||
<string name="welcome_message">Vedite, da, ko je na voljo več posodobitev, ni potrebno namestiti vsake, vedno lahko neposredno namestite zadnjo in nato varno izbrišete stare posodobitve, da sprostite prostor na pomnilniku.</string>
|
||||
</resources>
|
||||
|
@@ -15,6 +15,8 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_name">Uppdaterare</string>
|
||||
<string name="display_name">Uppdaterare</string>
|
||||
<string name="verification_failed_notification">Verifieringen misslyckades</string>
|
||||
<string name="verifying_download_notification">Verifierar uppdateringen</string>
|
||||
<string name="downloading_notification">Laddar ner</string>
|
||||
@@ -22,6 +24,7 @@
|
||||
<string name="download_paused_error_notification">Nedladdningsfel</string>
|
||||
<string name="download_completed_notification">Nedladdning slutförd</string>
|
||||
<string name="download_starting_notification">Påbörjar nedladdning</string>
|
||||
<string name="update_failed_notification">Uppdateringen misslyckades</string>
|
||||
<string name="new_updates_found_title">Nya uppdateringar</string>
|
||||
<string name="text_download_speed">%1$s, %2$s/s</string>
|
||||
<string name="pause_button">Pausa</string>
|
||||
@@ -32,6 +35,7 @@
|
||||
<string name="dialog_battery_low_title">Låg batterinivå</string>
|
||||
<string name="reboot">Starta om</string>
|
||||
<string name="menu_refresh">Uppdatera</string>
|
||||
<string name="menu_preferences">Egenskaper</string>
|
||||
<string name="menu_auto_updates_check">Sök efter uppdateringar automatiskt</string>
|
||||
<string name="menu_auto_updates_check_interval_daily">En gång om dagen</string>
|
||||
<string name="menu_auto_updates_check_interval_weekly">En gång i veckan</string>
|
||||
@@ -67,10 +71,23 @@
|
||||
<string name="notification_export_success">Uppdatering exporterad</string>
|
||||
<string name="notification_export_fail">Exporteringsfel</string>
|
||||
<string name="toast_export_started">Exportering startad</string>
|
||||
<plurals name="eta_seconds">
|
||||
<item quantity="one">1 sekund kvar</item>
|
||||
<item quantity="other"><xliff:g id="count">%d</xliff:g> sekunder kvar</item>
|
||||
</plurals>
|
||||
<plurals name="eta_minutes">
|
||||
<item quantity="one">1 minut kvar</item>
|
||||
<item quantity="other"><xliff:g id="count">%d</xliff:g> minuter kvar</item>
|
||||
</plurals>
|
||||
<plurals name="eta_hours">
|
||||
<item quantity="one">1 timme kvar</item>
|
||||
<item quantity="other"><xliff:g id="count">%d</xliff:g> timmar kvar</item>
|
||||
</plurals>
|
||||
<string name="update_over_metered_network_title">Varning</string>
|
||||
<string name="update_over_metered_network_message">Du är på väg att ladda ner en uppdatering över mobilnätet vilket troligtvis kommer att orsaka hög dataanvändning. Vill du fortsätta?</string>
|
||||
<string name="checkbox_metered_network_warning">Visa inte igen</string>
|
||||
<string name="menu_metered_network_warning">Mobildatavarning</string>
|
||||
<string name="blocked_update_dialog_title">Uppdateringen blockerades</string>
|
||||
<string name="export_channel_title">Export slutförd</string>
|
||||
<string name="new_updates_channel_title">Nya uppdateringar</string>
|
||||
<string name="ongoing_channel_title">Pågående nedladdningar</string>
|
||||
|
133
app/src/main/res/values-ta/strings.xml
Normal file
133
app/src/main/res/values-ta/strings.xml
Normal file
@@ -0,0 +1,133 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2017-2024 The LineageOS Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_name">இற்றைநர்</string>
|
||||
<string name="display_name">இற்றைநர்</string>
|
||||
<string name="verification_failed_notification">சரிபார்த்தல் தோல்வியுற்றது</string>
|
||||
<string name="verifying_download_notification">இற்றையைச் சரிபார்க்கிறது</string>
|
||||
<string name="downloading_notification">பதிவிறக்குகிறது</string>
|
||||
<string name="download_paused_notification">பதிவிறக்கம் இடைநிறுத்தப்பட்டது</string>
|
||||
<string name="download_paused_error_notification">பதிவிறக்கப் பிழை</string>
|
||||
<string name="download_completed_notification">பதிவிறக்கம் முடிவுற்றது</string>
|
||||
<string name="download_starting_notification">பதிவிறக்கம் தொடங்குகிறது</string>
|
||||
<string name="update_failed_notification">இற்றை தோல்வியுற்றது</string>
|
||||
<string name="installation_suspended_notification">நிறுவல் இடைநீக்கப்பட்டது</string>
|
||||
<string name="new_updates_found_title">புதிய இற்றைகள்</string>
|
||||
<string name="text_download_speed">%1$s, %2$s/s</string>
|
||||
<string name="pause_button">இடைநிறுத்துக</string>
|
||||
<string name="resume_button">மீண்டுந்தொடர்க</string>
|
||||
<string name="suspend_button">இடைநீக்குக</string>
|
||||
<string name="installing_update">இற்றைத் தொகுப்பு நிறுவுகிறது</string>
|
||||
<string name="installing_update_error">நிறுவு பிழை</string>
|
||||
<string name="installing_update_finished">இற்றை நிறுவப்பட்டது</string>
|
||||
<string name="finalizing_package">தொகுப்பு நிறுவலை இறுதிப்படுத்துகிறது</string>
|
||||
<string name="preparing_ota_first_boot">முதற்தொடக்கத்திற்கு ஏற்படுத்துகிறது</string>
|
||||
<string name="dialog_prepare_zip_message">முதற்நிலை இற்றை ஏற்படுத்துதல்</string>
|
||||
<string name="dialog_battery_low_title">குறைந்த மின்கலம்</string>
|
||||
<string name="dialog_battery_low_message_pct">மின்கல நிலை மிகக்குறைவு; தொடர குறைந்தது <xliff:g id="percent_discharging">%1$d</xliff:g>%% மின்கலமாவது தேவை, மின்னூட்டலெனில், <xliff:g id="percent_charging">%2$d</xliff:g>%% மின்கலம் தேவை.</string>
|
||||
<string name="dialog_scratch_mounted_message"><![CDATA[ பின்வரும் கட்டளைகளை இயக்கிய அப்புறம், இற்றையை மீண்டும் முயலவும்:\n
|
||||
• adb root\n
|
||||
• adb enable-verity\n
|
||||
• adb reboot
|
||||
]]></string>
|
||||
<string name="dialog_scratch_mounted_title">OverlayFS ஏற்றப்பட்ட இற்றையை நிறுவ முடியாது</string>
|
||||
<string name="reboot">மறு இயக்கம்</string>
|
||||
<string name="menu_refresh">புதுக்குக</string>
|
||||
<string name="menu_preferences">முன்விருப்பம்</string>
|
||||
<string name="menu_auto_updates_check">தன்னியக்க இற்றைச் சரிபார்ப்பு</string>
|
||||
<string name="menu_auto_updates_check_interval_daily">நாள் ஒரு முறை</string>
|
||||
<string name="menu_auto_updates_check_interval_weekly">கிழமை ஒரு முறை</string>
|
||||
<string name="menu_auto_updates_check_interval_monthly">திங்கள் ஒரு முறை</string>
|
||||
<string name="menu_auto_updates_check_interval_never">என்றுமில்லை</string>
|
||||
<string name="menu_auto_delete_updates">நிறுவப்பட்டபோது இற்றைகளை நீக்குக</string>
|
||||
<string name="menu_delete_update">நீக்குக</string>
|
||||
<string name="menu_copy_url">உரலியை நகலெடுக்க</string>
|
||||
<string name="menu_export_update">இற்றையை ஏற்றுமதி செய்க</string>
|
||||
<string name="menu_show_changelog">மாற்றுக்குறிப்பைக் காட்டுக</string>
|
||||
<string name="menu_ab_perf_mode">இற்றைச் செயற்முறையை முன்னுரிமைப்படுத்துக</string>
|
||||
<string name="menu_update_recovery">மீட்டெடுப்பை இற்றைப்படுத்துக</string>
|
||||
<string name="toast_forced_update_recovery">Lineage மீட்டெடுப்பு இற்றைகளை முடக்குவது, இக்கருவியில் இயலாது.</string>
|
||||
<string name="snack_updates_found">புதிய இற்றைகள் கிடைத்தன</string>
|
||||
<string name="snack_no_updates_found">புதிய இற்றைகள் எவையும் கிடைக்கவில்லை</string>
|
||||
<string name="snack_updates_check_failed">இற்றைச் சோதனை தோல்வியுற்றது; உங்கள் இணைய இணைப்பைச் சரிபார்த்த பிறகு, மீண்டும் முயற்சி செய்யவும்.</string>
|
||||
<string name="snack_download_failed">பதிவிறக்கம் தோல்வியுற்றது; உங்கள் இணைய இணைப்பைச் சரிபார்த்த பிறகு, மீண்டும் முயற்சி செய்யவும்.</string>
|
||||
<string name="snack_download_verification_failed">இற்றை சரிபார்ப்பு தோல்வியுற்றது.</string>
|
||||
<string name="snack_download_verified">பதிவிறக்கம் முடிவுற்றது.</string>
|
||||
<string name="snack_update_not_installable">தற்போதைய கட்டமைப்பின் மீது, இந்த இற்றையை நிறுவ முடியாது.</string>
|
||||
<string name="header_title_text">LineageOS\n%1$s</string>
|
||||
<string name="header_android_version">Android <xliff:g id="version" example="7.1.2">%1$s</xliff:g></string>
|
||||
<string name="header_last_updates_check">கடைசியாகச் சரிபார்க்கப்பட்டது: <xliff:g id="date" example="1 January 1970">%1$s</xliff:g> (<xliff:g id="time" example="01:23">%2$s</xliff:g>)</string>
|
||||
<string name="list_build_version">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g></string>
|
||||
<string name="list_build_version_date">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g> - <xliff:g id="date" example="July 11, 2017">%2$s</xliff:g></string>
|
||||
<string name="list_download_progress_newer"><xliff:g id="filesize_without_unit" example="310 MB">%2$s</xliff:g> இல் <xliff:g id="filesize_without_unit" example="12.2">%1$s</xliff:g></string>
|
||||
<string name="list_download_progress_eta_newer"><xliff:g id="filesize_without_unit" example="310 MB">%2$s</xliff:g> இல் <xliff:g id="filesize_without_unit" example="12.2">%1$s</xliff:g> (<xliff:g id="eta" example="3 minutes left">%3$s</xliff:g>)</string>
|
||||
<string name="list_verifying_update">இற்றையைச் சரிபார்க்கிறது</string>
|
||||
<string name="list_no_updates">புதிய இற்றைகள் எவையும் கிடைக்கவில்லை; அவற்றைக் கைமுறையாகச் சரிபார்க்க, புதுப்பிப்பு விசையைப் பயன்படுத்துக.</string>
|
||||
<string name="action_download">பதிவிறக்குக</string>
|
||||
<string name="action_pause">இடைநிறுத்துக</string>
|
||||
<string name="action_resume">மீண்டுந்தொடர்க</string>
|
||||
<string name="action_install">நிறுவுக</string>
|
||||
<string name="action_info">செய்தி</string>
|
||||
<string name="action_delete">அழிக்க</string>
|
||||
<string name="action_cancel">விலக்குக</string>
|
||||
<string name="confirm_delete_dialog_title">கோப்பை நீக்குக</string>
|
||||
<string name="confirm_delete_dialog_message">தேர்ந்தெடுக்கப்பட்ட இற்றைக் கோப்பை நீக்கவா?</string>
|
||||
<string name="apply_update_dialog_title">இற்றையைச் செயற்படுத்துக</string>
|
||||
<string name="apply_update_dialog_message"> <xliff:g id="update_name">%1$s</xliff:g>, என்பதை நீங்கள் நிறுவ உள்ளீர்; \n\nநீங்கள் <xliff:g id="ok">%2$s</xliff:g> என்பதை அழுத்தினால், இற்றையை நிறுவ கருவியானது தானாகவே மீட்டெடுப்பு முறையில் மறுதொடங்கும்.\n\nகுறிப்பு: இப்பண்புக்கூறுக்கு இணக்கமான மீட்டெடுப்பு தேவை; இல்லையெனில், இற்றைகளை கைமுறையாக நிறுவ வேண்டும்.</string>
|
||||
<string name="apply_update_dialog_message_ab"><xliff:g id="update_name">%1$s</xliff:g>, என்பதை நீங்கள் நிறுவ உள்ளீர்; \n\nநீங்கள் <xliff:g id="ok">%2$s</xliff:g> என்பதை அழுத்தினால், பின்னணியில் கருவியானது நிறுவலைத் தொடங்கும்.\n\nமுடிந்ததும், மறு இயக்கம் செய்யும்படித் தூண்டப்படுவீர்.</string>
|
||||
<string name="cancel_installation_dialog_message">நிறுவலை விலக்கவா?</string>
|
||||
<string name="label_download_url">பதிவிறக்க உரலி</string>
|
||||
<string name="toast_download_url_copied">உரலி நகலெடுக்கப்பட்டது</string>
|
||||
<string name="dialog_export_title">இற்றை ஏற்றுமதி செய்தல்</string>
|
||||
<string name="notification_export_success">இற்றை ஏற்றுமதி செய்யப்பட்டது</string>
|
||||
<string name="notification_export_fail">ஏற்றுமதிப் பிழை</string>
|
||||
<string name="toast_already_exporting">ஏற்கெனவே, ஒர் இற்றையை ஏற்றுமதி செய்கிறது</string>
|
||||
<string name="toast_export_started">ஏற்றுமதி தொடங்கியது</string>
|
||||
<plurals name="eta_seconds">
|
||||
<item quantity="one">இன்னும் ஒரு நொடி</item>
|
||||
<item quantity="other">இன்னும் <xliff:g id="count">%d</xliff:g> நொடி</item>
|
||||
</plurals>
|
||||
<plurals name="eta_minutes">
|
||||
<item quantity="one">இன்னும் ஒரு நுணுத்தம்</item>
|
||||
<item quantity="other">இன்னும் <xliff:g id="count">%d</xliff:g> நுணுத்தம்</item>
|
||||
</plurals>
|
||||
<plurals name="eta_hours">
|
||||
<item quantity="one">இன்னும் ஒரு மணிநேரம்</item>
|
||||
<item quantity="other">இன்னும் <xliff:g id="count">%d</xliff:g> மணிநேரம்</item>
|
||||
</plurals>
|
||||
<string name="update_over_metered_network_title">எச்சரிக்கை</string>
|
||||
<string name="update_over_metered_network_message">வரம்பிட்ட பிணையத்தில் இற்றைத் தொகுப்பைப் பதிவிறக்க உள்ளீர்; இஃது உயர்ந்த தரவுப் பயன்பாட்டை ஏற்படுத்தக்கூடும்; நீங்கள் தொடர விரும்புகிறீரா?</string>
|
||||
<string name="checkbox_metered_network_warning">மீண்டும் காட்ட வேண்டாம்</string>
|
||||
<string name="menu_metered_network_warning">வரம்பிட்ட பிணைய எச்சரிக்கை</string>
|
||||
<string name="blocked_update_dialog_title">இற்றை தடுக்கப்பட்டது</string>
|
||||
<string name="blocked_update_dialog_message">இற்றைநர் செயலியைப் பயன்படுத்தி இவ்விற்றையை நிறுவ முடியாது. மேலும், தெரிவிப்புக்கு <xliff:g id="info_url">%1$s</xliff:g> இதைப் படிக்கவும்.</string>
|
||||
<string name="export_channel_title">ஏற்றுமதி நிறைவுறல்</string>
|
||||
<string name="new_updates_channel_title">புதிய இற்றைகள்</string>
|
||||
<string name="ongoing_channel_title">நடப்புப் பதிவிறக்கங்கள்</string>
|
||||
<string name="update_failed_channel_title">இற்றை தோல்வியுற்றது</string>
|
||||
<string name="info_dialog_title">நீங்கள், அறிந்தீரா?</string>
|
||||
<string name="info_dialog_message">LineageOS இற்றைகள் முழு நிறுவல் தொகுப்புகளாகும். அஃதாவது, நீங்கள் இடையில் சிலவற்றைத் தவிர்த்தாலும், எப்போதும் அண்மை இற்றையை மட்டுமே நிறுவ முடியும்!</string>
|
||||
<string name="info_dialog_ok">தெரிவித்தலுக்கு நன்றி!</string>
|
||||
<string name="local_update_import">உற்றிட இற்றை</string>
|
||||
<string name="local_update_import_progress">உற்றிட இற்றையை இறக்குதல் \u2026</string>
|
||||
<string name="local_update_import_success">%1$s என்பது இறக்கப்பட்டது; அதை நிறுவ வேண்டுமா?</string>
|
||||
<string name="local_update_import_failure">உற்றிட இற்றை இறக்கல் தோல்வியுற்றது</string>
|
||||
<string name="local_update_import_install">நிறுவுக</string>
|
||||
<string name="local_update_name">உற்றிட இற்றை</string>
|
||||
<string name="welcome_title">நல்வரவு</string>
|
||||
<string name="welcome_message">இற்றைகள் பல கிடைக்கும்போது, ஒவ்வொன்றாகச் செல்ல வேண்டியதில்லை என்பதை நினைவில் கொள்ளவும், நீர் எப்போதும் மிகப்பிந்தியதை நேரடியாக நிறுவலாம், பிறகு சேமிப்பிடத்தை விடுவிக்கப் பழைய இற்றைகளைப் பாதுகாப்பாக நீக்கலாம்.</string>
|
||||
</resources>
|
@@ -125,4 +125,6 @@
|
||||
<string name="local_update_import_failure">Không nhập được bản cập nhật cục bộ</string>
|
||||
<string name="local_update_import_install">Cài đặt</string>
|
||||
<string name="local_update_name">Cập nhật cục bộ</string>
|
||||
<string name="welcome_title">Chào mừng</string>
|
||||
<string name="welcome_message">Xin lưu ý rằng khi có nhiều bản cập nhật khả dụng, bạn không cần phải cập nhật từng bản một. Bạn có thể cài đặt trực tiếp bản cập nhật mới nhất rồi xóa an toàn các bản cập nhật cũ hơn để giải phóng dung lượng lưu trữ.</string>
|
||||
</resources>
|
||||
|
@@ -125,4 +125,6 @@
|
||||
<string name="local_update_import_failure">导入本地更新失败</string>
|
||||
<string name="local_update_import_install">安装</string>
|
||||
<string name="local_update_name">本地更新</string>
|
||||
<string name="welcome_title">欢迎</string>
|
||||
<string name="welcome_message">请注意,当有多个更新可用时,无需逐个更新,可以直接安装最新的更新,然后安全地删除旧的更新以释放存储空间。</string>
|
||||
</resources>
|
||||
|
@@ -9,5 +9,4 @@
|
||||
<color name="tv_card_background">#222222</color>
|
||||
|
||||
<color name="inverted">#212121</color>
|
||||
<color name="ic_background">#333333</color>
|
||||
</resources>
|
||||
|
@@ -173,4 +173,7 @@
|
||||
<string name="local_update_import_failure">Failed to import local update</string>
|
||||
<string name="local_update_import_install">Install</string>
|
||||
<string name="local_update_name">Local update</string>
|
||||
|
||||
<string name="welcome_title">Welcome</string>
|
||||
<string name="welcome_message">Please note that when multiple updates are available, there is no need to go update-by-update, you can always install the latest one directly, and then safely delete old updates to free up storage space.</string>
|
||||
</resources>
|
||||
|
@@ -19,15 +19,6 @@
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.ActionBar" />
|
||||
|
||||
<style name="TextAppearanceInverted" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
|
||||
<item name="android:textColor">@color/inverted</item>
|
||||
</style>
|
||||
<style name="TextAppearanceTransparent" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
|
||||
<item name="android:textColor">@android:color/transparent</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.PopupMenuOverlapAnchor">
|
||||
<item name="android:overlapAnchor">true</item>
|
||||
<item name="android:dropDownVerticalOffset">8dp</item>
|
||||
|
@@ -1,7 +1,7 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
plugins {
|
||||
id("com.android.application") version "7.4.1" apply false
|
||||
id("com.android.library") version "7.4.1" apply false
|
||||
id("com.android.application") version "8.7.3" apply false
|
||||
id("com.android.library") version "8.7.3" apply false
|
||||
id("org.jetbrains.kotlin.android") version "1.7.10" apply false
|
||||
}
|
||||
|
||||
|
@@ -21,3 +21,5 @@ kotlin.code.style=official
|
||||
# resources declared in the library itself and none from the library's dependencies,
|
||||
# thereby reducing the size of the R class for that library
|
||||
android.nonTransitiveRClass=true
|
||||
android.defaults.buildfeatures.buildconfig=true
|
||||
android.nonFinalResIds=false
|
||||
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,5 +1,7 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
297
gradlew
vendored
297
gradlew
vendored
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env sh
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# Copyright 2015 the original author or authors.
|
||||
# Copyright © 2015-2021 the original authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -15,69 +15,104 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
#
|
||||
# Gradle start up script for POSIX generated by Gradle.
|
||||
#
|
||||
# Important for running:
|
||||
#
|
||||
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||
# noncompliant, but you have some other compliant shell such as ksh or
|
||||
# bash, then to run this script, type that shell name before the whole
|
||||
# command line, like:
|
||||
#
|
||||
# ksh Gradle
|
||||
#
|
||||
# Busybox and similar reduced shells will NOT work, because this script
|
||||
# requires all of these POSIX shell features:
|
||||
# * functions;
|
||||
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||
# * compound commands having a testable exit status, especially «case»;
|
||||
# * various built-in commands including «command», «set», and «ulimit».
|
||||
#
|
||||
# Important for patching:
|
||||
#
|
||||
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||
#
|
||||
# The "traditional" practice of packing multiple parameters into a
|
||||
# space-separated string is a well documented source of bugs and security
|
||||
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||
# options in "$@", and eventually passing that to Java.
|
||||
#
|
||||
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||
# see the in-line comments for details.
|
||||
#
|
||||
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||
# Darwin, MinGW, and NonStop.
|
||||
#
|
||||
# (3) This script is generated from the Groovy template
|
||||
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# within the Gradle project.
|
||||
#
|
||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
app_path=$0
|
||||
|
||||
# Need this for daisy-chained symlinks.
|
||||
while
|
||||
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||
[ -h "$app_path" ]
|
||||
do
|
||||
ls=$( ls -ld "$app_path" )
|
||||
link=${ls#*' -> '}
|
||||
case $link in #(
|
||||
/*) app_path=$link ;; #(
|
||||
*) app_path=$APP_HOME$link ;;
|
||||
esac
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
# This is normally unused
|
||||
# shellcheck disable=SC2034
|
||||
APP_BASE_NAME=${0##*/}
|
||||
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
|
||||
' "$PWD" ) || exit
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
MAX_FD=maximum
|
||||
|
||||
warn () {
|
||||
echo "$*"
|
||||
}
|
||||
} >&2
|
||||
|
||||
die () {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
} >&2
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
nonstop=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
NONSTOP* )
|
||||
nonstop=true
|
||||
;;
|
||||
case "$( uname )" in #(
|
||||
CYGWIN* ) cygwin=true ;; #(
|
||||
Darwin* ) darwin=true ;; #(
|
||||
MSYS* | MINGW* ) msys=true ;; #(
|
||||
NONSTOP* ) nonstop=true ;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
@@ -87,9 +122,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
JAVACMD=$JAVA_HOME/bin/java
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
@@ -98,88 +133,120 @@ Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
JAVACMD=java
|
||||
if ! command -v java >/dev/null 2>&1
|
||||
then
|
||||
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
case $i in
|
||||
0) set -- ;;
|
||||
1) set -- "$args0" ;;
|
||||
2) set -- "$args0" "$args1" ;;
|
||||
3) set -- "$args0" "$args1" "$args2" ;;
|
||||
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||
case $MAX_FD in #(
|
||||
max*)
|
||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC2039,SC3045
|
||||
MAX_FD=$( ulimit -H -n ) ||
|
||||
warn "Could not query maximum file descriptor limit"
|
||||
esac
|
||||
case $MAX_FD in #(
|
||||
'' | soft) :;; #(
|
||||
*)
|
||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC2039,SC3045
|
||||
ulimit -n "$MAX_FD" ||
|
||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||
esac
|
||||
fi
|
||||
|
||||
# Escape application args
|
||||
save () {
|
||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
APP_ARGS=`save "$@"`
|
||||
# Collect all arguments for the java command, stacking in reverse order:
|
||||
# * args from the command line
|
||||
# * the main class name
|
||||
# * -classpath
|
||||
# * -D...appname settings
|
||||
# * --module-path (only if needed)
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if "$cygwin" || "$msys" ; then
|
||||
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||
|
||||
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
for arg do
|
||||
if
|
||||
case $arg in #(
|
||||
-*) false ;; # don't mess with options #(
|
||||
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||
[ -e "$t" ] ;; #(
|
||||
*) false ;;
|
||||
esac
|
||||
then
|
||||
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||
fi
|
||||
# Roll the args list around exactly as many times as the number of
|
||||
# args, so each arg winds up back in the position where it started, but
|
||||
# possibly modified.
|
||||
#
|
||||
# NB: a `for` loop captures its iteration list before it begins, so
|
||||
# changing the positional parameters here affects neither the number of
|
||||
# iterations, nor the values presented in `arg`.
|
||||
shift # remove old arg
|
||||
set -- "$@" "$arg" # push replacement arg
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Collect all arguments for the java command:
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||
# and any embedded shellness will be escaped.
|
||||
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||
# treated as '${Hostname}' itself on the command line.
|
||||
|
||||
set -- \
|
||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||
-classpath "$CLASSPATH" \
|
||||
org.gradle.wrapper.GradleWrapperMain \
|
||||
"$@"
|
||||
|
||||
# Stop when "xargs" is not available.
|
||||
if ! command -v xargs >/dev/null 2>&1
|
||||
then
|
||||
die "xargs is not available"
|
||||
fi
|
||||
|
||||
# Use "xargs" to parse quoted args.
|
||||
#
|
||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||
#
|
||||
# In Bash we could simply go:
|
||||
#
|
||||
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||
# set -- "${ARGS[@]}" "$@"
|
||||
#
|
||||
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||
# character that might be a shell metacharacter, then use eval to reverse
|
||||
# that process (while maintaining the separation between arguments), and wrap
|
||||
# the whole thing up as a single "set" statement.
|
||||
#
|
||||
# This will of course break if any of these variables contains a newline or
|
||||
# an unmatched quote.
|
||||
#
|
||||
|
||||
eval "set -- $(
|
||||
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||
xargs -n1 |
|
||||
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||
tr '\n' ' '
|
||||
)" '"$@"'
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
|
37
gradlew.bat
vendored
37
gradlew.bat
vendored
@@ -13,8 +13,10 @@
|
||||
@rem See the License for the specific language governing permissions and
|
||||
@rem limitations under the License.
|
||||
@rem
|
||||
@rem SPDX-License-Identifier: Apache-2.0
|
||||
@rem
|
||||
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@if "%DEBUG%"=="" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@@ -25,7 +27,8 @@
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
if "%DIRNAME%"=="" set DIRNAME=.
|
||||
@rem This is normally unused
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@@ -40,13 +43,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto execute
|
||||
if %ERRORLEVEL% equ 0 goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
echo. 1>&2
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
|
||||
echo. 1>&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||
echo location of your Java installation. 1>&2
|
||||
|
||||
goto fail
|
||||
|
||||
@@ -56,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
echo. 1>&2
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
|
||||
echo. 1>&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||
echo location of your Java installation. 1>&2
|
||||
|
||||
goto fail
|
||||
|
||||
@@ -75,13 +78,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
set EXIT_CODE=%ERRORLEVEL%
|
||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||
exit /b %EXIT_CODE%
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
Reference in New Issue
Block a user