Merge branch 'wire-up-signer-field' into 'master'

wire up Apk.signer field and use it for compatibility checks

See merge request fdroid/fdroidclient!1090
This commit is contained in:
Hans-Christoph Steiner 2023-01-21 22:37:30 +00:00
commit 441beb1251
84 changed files with 403 additions and 327 deletions

View File

@ -443,9 +443,14 @@ public final class Utils {
* Get the standard, lowercase SHA-256 fingerprint used to represent an
* APK or JAR signing key. <b>NOTE</b>: this does not handle signers that
* have multiple X.509 signing certificates.
* <p>
* Calling the X.509 signing certificate the "signature" is incorrect, e.g.
* {@link PackageInfo#signatures} or {@link android.content.pm.Signature}.
* The Android docs about APK signatures call this the "signer".
*
* @see org.fdroid.fdroid.data.Apk#sig
* @see org.fdroid.fdroid.data.Apk#signer
* @see PackageInfo#signatures
* @see <a href="https://source.android.com/docs/security/features/apksigning/v2">APK Signature Scheme v2</a>
*/
@Nullable
public static String getPackageSigner(PackageInfo info) {

View File

@ -102,7 +102,7 @@ public class Apk implements Comparable<Apk>, Parcelable {
*
* @see <a href="https://source.android.com/security/apksigning/v3#apk-signature-scheme-v3-block"><tt>signer</tt> in APK Signature Scheme v3</a>
*/
public String sig;
public String signer;
/**
* Can be null when created with {@link #Apk(PackageInfo)}
@ -176,7 +176,7 @@ public class Apk implements Comparable<Apk>, Parcelable {
nativecode = v.getNativeCode().toArray(new String[0]);
repoId = v.getRepoId();
SignerV2 signer = v.getManifest().getSigner();
sig = signer == null ? null : signer.getSha256().get(0);
this.signer = signer == null ? null : signer.getSha256().get(0);
size = v.getFile().getSize() == null ? 0 : v.getFile().getSize();
srcname = v.getSrc() == null ? null : v.getSrc().getName();
versionName = manifest.getVersionName();
@ -318,7 +318,7 @@ public class Apk implements Comparable<Apk>, Parcelable {
dest.writeStringArray(this.requestedPermissions);
dest.writeStringArray(this.features);
dest.writeStringArray(this.nativecode);
dest.writeString(this.sig);
dest.writeString(this.signer);
dest.writeByte(this.compatible ? (byte) 1 : (byte) 0);
dest.writeString(this.apkFile != null ? this.apkFile.serialize() : null);
dest.writeSerializable(this.installedFile);
@ -347,7 +347,7 @@ public class Apk implements Comparable<Apk>, Parcelable {
this.requestedPermissions = in.createStringArray();
this.features = in.createStringArray();
this.nativecode = in.createStringArray();
this.sig = in.readString();
this.signer = in.readString();
this.compatible = in.readByte() != 0;
this.apkFile = FileV1.deserialize(in.readString());
this.installedFile = (SanitizedFile) in.readSerializable();

View File

@ -84,7 +84,7 @@ public class App implements Comparable<App>, Parcelable {
*/
public boolean compatible;
public Apk installedApk; // might be null if not installed
public String installedSig;
public String installedSigner;
public int installedVersionCode;
public String installedVersionName;
public org.fdroid.database.AppPrefs prefs;
@ -276,7 +276,7 @@ public class App implements Comparable<App>, Parcelable {
public void setInstalled(@Nullable PackageInfo packageInfo) {
installedVersionCode = packageInfo == null ? 0 : packageInfo.versionCode;
installedVersionName = packageInfo == null ? null : packageInfo.versionName;
installedSig = packageInfo == null ? null : Utils.getPackageSigner(packageInfo);
installedSigner = packageInfo == null ? null : Utils.getPackageSigner(packageInfo);
}
/**
@ -288,7 +288,7 @@ public class App implements Comparable<App>, Parcelable {
this.prefs = appPrefs;
for (Apk apk: apks) {
boolean apkIsInstalled = (apk.versionCode == installedVersionCode &&
TextUtils.equals(apk.sig, installedSig)) || (!apk.isApk() && apk.isMediaInstalled(context));
TextUtils.equals(apk.signer, installedSigner)) || (!apk.isApk() && apk.isMediaInstalled(context));
if (apkIsInstalled) {
installedApk = apk;
installedVersionCode = (int) apk.versionCode;
@ -539,25 +539,26 @@ public class App implements Comparable<App>, Parcelable {
/**
* Finds the APK we suggest to install.
*
* @param apks a list of APKs sorted by version code (highest first).
* @param releaseChannel the key of the release channel to be considered.
* @return The Apk we suggest to install or null, if we didn't find any.
*/
@Nullable
public Apk findSuggestedApk(List<Apk> apks, String releaseChannel) {
final String mostAppropriateSignature = getMostAppropriateSignature();
final String mostAppropriateSigner = getMostAppropriateSigner();
Apk apk = null;
for (Apk a : apks) {
// only consider compatible APKs
if (!a.compatible) continue;
// if we have a signature, but it doesn't match, don't use this APK
if (mostAppropriateSignature != null && !a.sig.equals(mostAppropriateSignature)) continue;
// if we have a signer, but it doesn't match, don't use this APK
if (mostAppropriateSigner != null && !a.signer.equals(mostAppropriateSigner)) continue;
// stable release channel is always allowed, otherwise must include given channel
final String stable = Apk.RELEASE_CHANNEL_STABLE;
boolean isReleaseChannelAllowed = stable.equals(releaseChannel) ?
a.releaseChannels.contains(stable) :
a.releaseChannels.contains(stable) || a.releaseChannels.contains(releaseChannel);
// if the signature matches and we want the highest version code, take this as list is sorted.
// if signer matches and we want the highest version code, take this as list is sorted
if (isReleaseChannelAllowed) {
apk = a;
break;
@ -752,7 +753,7 @@ public class App implements Comparable<App>, Parcelable {
dest.writeString(this.installedVersionName);
dest.writeInt(this.installedVersionCode);
dest.writeParcelable(this.installedApk, flags);
dest.writeString(this.installedSig);
dest.writeString(this.installedSigner);
}
protected App(Parcel in) {
@ -802,7 +803,7 @@ public class App implements Comparable<App>, Parcelable {
this.installedVersionName = in.readString();
this.installedVersionCode = in.readInt();
this.installedApk = in.readParcelable(Apk.class.getClassLoader());
this.installedSig = in.readString();
this.installedSigner = in.readString();
}
public static final Parcelable.Creator<App> CREATOR = new Parcelable.Creator<App>() {
@ -818,19 +819,20 @@ public class App implements Comparable<App>, Parcelable {
};
/**
* Choose the signature which we should encourage the user to install.
* Usually, we want the {@link #preferredSigner} rather than any random signature.
* However, if the app is installed, then we override this and instead want to only encourage
* the user to try and install versions with that signature (because thats all the OS will let
* them do).
* Choose the APK Signing Certificate aka "signer" which we should
* encourage the user to install. Usually, we want the
* {@link #preferredSigner} rather than any random signer. However, if the
* package is installed, then we override this and instead want to only
* encourage the user to try and install versions with that signer (because
* that is all the OS will let them do).
* <p>
* Will return null for any {@link App} which represents media (instead of an apk) and thus
* doesn't have a signer.
*/
@Nullable
public String getMostAppropriateSignature() {
if (!TextUtils.isEmpty(installedSig)) {
return installedSig;
public String getMostAppropriateSigner() {
if (!TextUtils.isEmpty(installedSigner)) {
return installedSigner;
} else if (!TextUtils.isEmpty(preferredSigner)) {
return preferredSigner;
}

View File

@ -403,8 +403,8 @@ public class AppDetailsActivity extends AppCompatActivity
alert.show();
return;
}
if (app.installedSig != null && apk.sig != null
&& !apk.sig.equals(app.installedSig)) {
if (app.installedSigner != null && apk.signer != null
&& !apk.signer.equals(app.installedSigner)) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.SignatureMismatch).setPositiveButton(
R.string.ok,
@ -632,7 +632,7 @@ public class AppDetailsActivity extends AppCompatActivity
case Installer.ACTION_UNINSTALL_COMPLETE:
adapter.clearProgress();
if (app != null) {
app.installedSig = null;
app.installedSigner = null;
app.installedVersionCode = 0;
app.installedVersionName = null;
onAppChanged(app);

View File

@ -113,7 +113,7 @@ public class AppDetailsRecyclerViewAdapter
private RecyclerView recyclerView;
private final List<Object> items = new ArrayList<>();
private final List<Apk> versions = new ArrayList<>();
private final List<Apk> compatibleVersionsDifferentSig = new ArrayList<>();
private final List<Apk> compatibleVersionsDifferentSigner = new ArrayList<>();
private boolean showVersions;
private HeaderViewHolder headerView;
@ -138,16 +138,17 @@ public class AppDetailsRecyclerViewAdapter
versions.clear();
// Get versions
compatibleVersionsDifferentSig.clear();
compatibleVersionsDifferentSigner.clear();
addInstalledApkIfExists(apks);
boolean showIncompatibleVersions = Preferences.get().showIncompatibleVersions();
for (final Apk apk : apks) {
boolean allowByCompatibility = apk.compatible || showIncompatibleVersions;
String installedSig = app.installedSig;
boolean allowBySig = installedSig == null || showIncompatibleVersions || TextUtils.equals(installedSig, apk.sig);
String installedSigner = app.installedSigner;
boolean allowBySigner = installedSigner == null
|| showIncompatibleVersions || TextUtils.equals(installedSigner, apk.signer);
if (allowByCompatibility) {
compatibleVersionsDifferentSig.add(apk);
if (allowBySig) {
compatibleVersionsDifferentSigner.add(apk);
if (allowBySigner) {
versions.add(apk);
if (!versionsExpandTracker.containsKey(apk.getApkPath())) {
versionsExpandTracker.put(apk.getApkPath(), false);
@ -178,9 +179,9 @@ public class AppDetailsRecyclerViewAdapter
Apk installedApk = app.getInstalledApk(context, apks);
// These conditions should be enough to determine if the installedApk
// is a generated dummy or a proper APK containing data from a repository.
if (installedApk != null && installedApk.added == null && installedApk.sig == null) {
if (installedApk != null && installedApk.added == null && installedApk.signer == null) {
installedApk.compatible = true;
installedApk.sig = app.installedSig;
installedApk.signer = app.installedSigner;
installedApk.maxSdkVersion = -1;
apks.add(installedApk);
}
@ -890,8 +891,8 @@ public class AppDetailsRecyclerViewAdapter
@Override
public void bindModel() {
Context context = headerView.getContext();
if (hasCompatibleApksDifferentSigs()) {
headerView.setText(context.getString(R.string.app_details__no_versions__no_compatible_signatures));
if (hasCompatibleApksDifferentSigners()) {
headerView.setText(context.getString(R.string.app_details__no_versions__no_compatible_signers));
} else {
headerView.setText(context.getString(R.string.app_details__no_versions__none_compatible_with_device));
}
@ -910,9 +911,9 @@ public class AppDetailsRecyclerViewAdapter
String message;
String title;
if (hasCompatibleApksDifferentSigs()) {
title = context.getString(R.string.app_details__no_versions__no_compatible_signatures);
message = context.getString(R.string.app_details__no_versions__explain_incompatible_signatures) +
if (hasCompatibleApksDifferentSigners()) {
title = context.getString(R.string.app_details__no_versions__no_compatible_signers);
message = context.getString(R.string.app_details__no_versions__explain_incompatible_signers) +
"\n\n" + showIncompatible;
} else {
title = context.getString(R.string.app_details__no_versions__none_compatible_with_device);
@ -934,8 +935,8 @@ public class AppDetailsRecyclerViewAdapter
.show();
}
private boolean hasCompatibleApksDifferentSigs() {
return compatibleVersionsDifferentSig.size() > 0;
private boolean hasCompatibleApksDifferentSigners() {
return compatibleVersionsDifferentSigner.size() > 0;
}
}
@ -1102,7 +1103,7 @@ public class AppDetailsRecyclerViewAdapter
boolean isAppInstalled = app.isInstalled(context);
boolean isApkInstalled = apk.versionCode == app.installedVersionCode &&
TextUtils.equals(apk.sig, app.installedSig);
TextUtils.equals(apk.signer, app.installedSigner);
boolean isApkSuggested = apk.equals(suggestedApk);
boolean isApkDownloading = callbacks.isAppDownloading() && downloadedApk != null &&
downloadedApk.compareTo(apk) == 0 &&
@ -1241,10 +1242,9 @@ public class AppDetailsRecyclerViewAdapter
TextUtils.join(", ", apk.incompatibleReasons));
} else {
Objects.requireNonNull(app);
boolean mismatchedSig = app.installedSig != null
&& !TextUtils.equals(app.installedSig, apk.sig);
if (mismatchedSig) {
return context.getString(R.string.app_details__incompatible_mismatched_signature);
if (app.installedSigner != null
&& !TextUtils.equals(app.installedSigner, apk.signer)) {
return context.getString(R.string.app_details__incompatible_mismatched_signers);
}
}
return null;

View File

@ -392,7 +392,7 @@
<string name="install_history">Installasie geskiedenis</string>
<string name="install_history_summary">Wys die private joernaal van alle instellasies en verwyderings</string>
<string name="send_version_and_uuid">Stuur weergawe en UUID na servers</string>
<string name="app_details__incompatible_mismatched_signature">Verskillende kenmerkwaarde as geïnstalleerde weergawe</string>
<string name="app_details__incompatible_mismatched_signers">Verskillende kenmerkwaarde as geïnstalleerde weergawe</string>
<string name="app_details__no_versions__show_incompat_versions">Om onversoenbare weergawes in elk geval te wys, aktiveer die \"%1$s\" instelling.</string>
<string name="disabled">Gedeaktiveer</string>
<string name="allow">Laat toe</string>
@ -502,9 +502,9 @@
<string name="app_repository">Bewaarplek: %1$s</string>
<string name="app_suggested">Voorgestel</string>
<string name="about_forum">Ondersteuningsforum</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Die geïnstalleerde weergawe is nie versoenbaar met enige beskikbare weergawes nie. As u die app deïnstalleer, kan u versoenbare weergawes sien en installeer. Dit kom dikwels voor by programme wat via Google Play of ander bronne geïnstalleer word, as dit deur \'n ander sertifikaat onderteken word.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Die geïnstalleerde weergawe is nie versoenbaar met enige beskikbare weergawes nie. As u die app deïnstalleer, kan u versoenbare weergawes sien en installeer. Dit kom dikwels voor by programme wat via Google Play of ander bronne geïnstalleer word, as dit deur \'n ander sertifikaat onderteken word.</string>
<string name="app_details__no_versions__none_compatible_with_device">Geen weergawes versoenbaar met die toestel nie</string>
<string name="app_details__no_versions__no_compatible_signatures">Geen weergawes met versoenbare handtekening nie</string>
<string name="app_details__no_versions__no_compatible_signers">Geen weergawes met versoenbare handtekening nie</string>
<string name="over_wifi">Oor Wi-Fi</string>
<string name="send_fdroid_metrics_report">Stuur %s Statistieke Verslag</string>
<string name="menu_show_install_history">Wys instelasie geskiedenis</string>

View File

@ -346,11 +346,11 @@
</plurals>
<string name="force_old_index">تطبيق صيغة الأرشفة القديمة بالقوة</string>
<string name="force_old_index_summary">في حالة وجود أخطاء أو مشاكل في التوافق، استخدم أرشفة تطبيق XML</string>
<string name="app_details__incompatible_mismatched_signature">توقيع مختلف عن التطبيق المُثبت</string>
<string name="app_details__incompatible_mismatched_signers">توقيع مختلف عن التطبيق المُثبت</string>
<string name="app_details__no_versions__show_incompat_versions">لكي تُظهر النسخ الغير متكاملة أيضاً، فعل الإعداد \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">لا نسخ مع توقعيات متوافقة</string>
<string name="app_details__no_versions__no_compatible_signers">لا نسخ مع توقعيات متوافقة</string>
<string name="app_details__no_versions__none_compatible_with_device">لا نسخ متكاملة مع الجهاز</string>
<string name="app_details__no_versions__explain_incompatible_signatures">النسخة المُثبتة غير متوافقة مع أي نسخة متوفرة. إلغاء ثبيت التطبيق سوف يمكنك من رؤية وتثبيت النسخ المتكاملة. هذا يحدث عادةً حينما يتم تثبيت التطبيق من خلال متجر جوجل بلاي أو أي مصدر أخر, إذا تم توقيعها بتوقيع مختلف.</string>
<string name="app_details__no_versions__explain_incompatible_signers">النسخة المُثبتة غير متوافقة مع أي نسخة متوفرة. إلغاء ثبيت التطبيق سوف يمكنك من رؤية وتثبيت النسخ المتكاملة. هذا يحدث عادةً حينما يتم تثبيت التطبيق من خلال متجر جوجل بلاي أو أي مصدر أخر, إذا تم توقيعها بتوقيع مختلف.</string>
<string name="app_permission_storage">أف-درويد يحتاج لإذن التخزين لكي يثبت هذا. من فضلك إسمح بذلك في الشاشة التالية لكي تُكمل مع التثبيت.</string>
<string name="app_list__dismiss_app_update">التحديث تم تجاهله</string>
<string name="app_list__dismiss_vulnerable_app">تخطي الحساسية</string>

View File

@ -371,11 +371,11 @@
<string name="status_inserting_x_apps">Guardando los detalles de les aplicaciones (%1$d/%2$d) de: %3$s</string>
<string name="app_installed_media">File installed to %s</string>
<string name="app_permission_storage">F-Droid needs the storage permission to install this to storage. Please allow it on the next screen to proceed with installation.</string>
<string name="app_details__incompatible_mismatched_signature">Different signature to installed version</string>
<string name="app_details__incompatible_mismatched_signers">Different signature to installed version</string>
<string name="app_details__no_versions__show_incompat_versions">To show incompatible versions here anyway, enable the \"%1$s\" setting.</string>
<string name="app_details__no_versions__no_compatible_signatures">No versions with compatible signature</string>
<string name="app_details__no_versions__no_compatible_signers">No versions with compatible signature</string>
<string name="app_details__no_versions__none_compatible_with_device">No versions compatible with device</string>
<string name="app_details__no_versions__explain_incompatible_signatures">La versión instalada nun ye compatible con nenguna versión disponible. La desinstalación de l\'aplicación va permitite ver ya instalar les versiones compatibles. Esto ocurre davezu coles aplicaciones instales per Google Play u otros oríxenes, si tán firmaes con un certificáu estremáu.</string>
<string name="app_details__no_versions__explain_incompatible_signers">La versión instalada nun ye compatible con nenguna versión disponible. La desinstalación de l\'aplicación va permitite ver ya instalar les versiones compatibles. Esto ocurre davezu coles aplicaciones instales per Google Play u otros oríxenes, si tán firmaes con un certificáu estremáu.</string>
<string name="app_list__dismiss_app_update">Update ignored</string>
<string name="app_list__dismiss_vulnerable_app">Vulnerability ignored</string>
<string name="app_list__dismiss_downloading_app">Download canceled</string>

View File

@ -395,11 +395,11 @@
<string name="status_inserting_x_apps">Захаванне падрабязнасцяў (%1$d/%2$d) з %3$s</string>
<string name="app_installed_media">Файл усталяваны ў %s</string>
<string name="app_permission_storage">F-Droid патрабуецца дазвол на ўсталёўку гэтага ў сховішча. Калі ласка, дайце дазвол на наступным экране для працягу ўсталёўкі.</string>
<string name="app_details__incompatible_mismatched_signature">Подпіс адрозніваецца ад подпіса ўсталяванай версіі</string>
<string name="app_details__incompatible_mismatched_signers">Подпіс адрозніваецца ад подпіса ўсталяванай версіі</string>
<string name="app_details__no_versions__show_incompat_versions">Каб заўсёды паказваць несумяшчальныя версіі, ўключыце параметр «%1$s».</string>
<string name="app_details__no_versions__no_compatible_signatures">Версіі з сумяшчальным подпісам адсутнічаюць</string>
<string name="app_details__no_versions__no_compatible_signers">Версіі з сумяшчальным подпісам адсутнічаюць</string>
<string name="app_details__no_versions__none_compatible_with_device">Версіі, сумяшчальныя з прыладай, адсутнічаюць</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Усталяваная версія несумяшчальная з даступнымі версіямі. Выдаленне праграмы дазволіць убачыць і ўсталяваць сумяшчальныя версіі. Гэта часта адбываецца з праграмамі, што ўсталёўваюцца праз Google Play ці іншыя крыніцы і падпісваюцца рознымі сертыфікатамі.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Усталяваная версія несумяшчальная з даступнымі версіямі. Выдаленне праграмы дазволіць убачыць і ўсталяваць сумяшчальныя версіі. Гэта часта адбываецца з праграмамі, што ўсталёўваюцца праз Google Play ці іншыя крыніцы і падпісваюцца рознымі сертыфікатамі.</string>
<string name="empty_search_available_app_list">Няма супадзенняў сярод даступных праграм.</string>
<string name="app_list__dismiss_app_update">Абнаўленне ігнаруецца</string>
<string name="app_list__dismiss_vulnerable_app">Уразлівасць ігнаруецца</string>

View File

@ -372,8 +372,8 @@
<item quantity="other">+%1$d повече…</item>
</plurals>
<string name="force_old_index">Принудителен стар формат на индексиране</string>
<string name="app_details__incompatible_mismatched_signature">Различен подпис от инсталираното издание</string>
<string name="app_details__no_versions__no_compatible_signatures">Няма издания със съвместим подпис</string>
<string name="app_details__incompatible_mismatched_signers">Различен подпис от инсталираното издание</string>
<string name="app_details__no_versions__no_compatible_signers">Няма издания със съвместим подпис</string>
<string name="app_details__no_versions__none_compatible_with_device">Няма издания съвместими с устройството</string>
<string name="app_details__no_versions__show_incompat_versions">За да се показват и несъвместимите издания включете настройката „%1$s“.</string>
<string name="app_list_download_ready">Изтeглено и готово за инсталиране</string>
@ -427,7 +427,7 @@
<string name="hiding_calculator">Калкулатор</string>
<string name="hiding_dialog_title">Скрий %s Сега</string>
<string name="use_bluetooth">Използване Bluetooth</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Инсталираната версия не е съвместима, с които и да е други версии на разположение. Деинсталиране на апликацията ще Ви позволи да видите и инсталирате съвместими версии. Това често се случва с апликации инсталирани чрез Google Play или от други източници, ако те са подписани с различен сертификат.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Инсталираната версия не е съвместима, с които и да е други версии на разположение. Деинсталиране на апликацията ще Ви позволи да видите и инсталирате съвместими версии. Това често се случва с апликации инсталирани чрез Google Play или от други източници, ако те са подписани с различен сертификат.</string>
<string name="app_list__dismiss_app_update">Обновлението е пренебрегнато</string>
<string name="app_list__dismiss_vulnerable_app">Уязвимостта е пренебрегната</string>
<string name="panic_exit_title">Излизане от приложението</string>

View File

@ -121,7 +121,7 @@
<string name="login_password">পাসওয়ার্ড</string>
<string name="login_name">নাম</string>
<string name="app_details_donate_prompt">%2$s, %1$s বানিয়েছে। তাদেরকে এক কাপ কফি কিনে দাও!</string>
<string name="app_details__incompatible_mismatched_signature">এটার স্বাক্ষর ইন্সটলকৃত সংস্করণ থেকে আলাদা</string>
<string name="app_details__incompatible_mismatched_signers">এটার স্বাক্ষর ইন্সটলকৃত সংস্করণ থেকে আলাদা</string>
<string name="app_details_donate_prompt_unknown_author">ডেভলপারকে %1$s দামের কফি কিনে দিন!</string>
<string name="no_such_app">এ জাতীয় কোনও অ্যাপ পাওয়া যায় নি।</string>
<string name="repo_error_empty_username">ব্যবহারকারীর নাম খালি, যাচাইকরণপত্র পরিবর্তন হয়নি</string>
@ -333,9 +333,9 @@
<string name="about_source">উৎস কোড</string>
<string name="about_forum">সহায়তা সভা</string>
<string name="about_title">এফ-ড্রয়েড সম্পর্কে</string>
<string name="app_details__no_versions__explain_incompatible_signatures">ইন্সটলকৃত সংস্করণ অন্য কোনো সংস্করণের সাথে অসামঞ্জস্যপূর্ণ। এই অ্যাপ মুছলে তোমাকে অন্যান্য সামঞ্জস্যপূর্ণ সংস্করণ দেখতে ও ইন্সটল করতে দিবে। গুগল প্লে বা অন্য জায়গা থেকে অ্যাপ ইন্সটল করলে বেশিরভাগ সময় এমন হয়, বিশেষত অন্য অনুমতিপত্র দিয়ে স্বাক্ষর করা হলে।</string>
<string name="app_details__no_versions__explain_incompatible_signers">ইন্সটলকৃত সংস্করণ অন্য কোনো সংস্করণের সাথে অসামঞ্জস্যপূর্ণ। এই অ্যাপ মুছলে তোমাকে অন্যান্য সামঞ্জস্যপূর্ণ সংস্করণ দেখতে ও ইন্সটল করতে দিবে। গুগল প্লে বা অন্য জায়গা থেকে অ্যাপ ইন্সটল করলে বেশিরভাগ সময় এমন হয়, বিশেষত অন্য অনুমতিপত্র দিয়ে স্বাক্ষর করা হলে।</string>
<string name="app_details__no_versions__none_compatible_with_device">এই যন্ত্রের সাথে সামঞ্জস্যপূর্ণ কোনো সংস্করণ নেই</string>
<string name="app_details__no_versions__no_compatible_signatures">এই স্বাক্ষরের সাথে সামঞ্জস্যপূর্ণ কোনো সংস্করণ নেই</string>
<string name="app_details__no_versions__no_compatible_signers">এই স্বাক্ষরের সাথে সামঞ্জস্যপূর্ণ কোনো সংস্করণ নেই</string>
<string name="app_details__no_versions__show_incompat_versions">তবুও সামঞ্জস্যপূর্ণ সংস্করণ দেখাতে, %1$s পছন্দ সক্রিয় করো।</string>
<string name="app_details">অ্যাপের বিবরণ</string>
<string name="toast_metrics_in_install_history">ইন্সটল ইতিহাস পাঠকে %s পরিসংখ্যান প্রতিবেদন পড়া যায়</string>

View File

@ -332,8 +332,8 @@
</plurals>
<string name="installed_app__updates_ignored_for_suggested_version">%1$s সংস্করণের জন্য হালনাগাদ উপেক্ষাকৃত</string>
<string name="app_details__no_versions__none_compatible_with_device">এই যন্ত্রের সাথে সামঞ্জস্যপূর্ণ কোনো সংস্করণ নেই</string>
<string name="app_details__no_versions__no_compatible_signatures">এই স্বাক্ষরের সাথে সামঞ্জস্যপূর্ণ কোনো সংস্করণ নেই</string>
<string name="app_details__incompatible_mismatched_signature">ইন্সটলকৃত সংস্করণ থেকে আলাদা স্বাক্ষর</string>
<string name="app_details__no_versions__no_compatible_signers">এই স্বাক্ষরের সাথে সামঞ্জস্যপূর্ণ কোনো সংস্করণ নেই</string>
<string name="app_details__incompatible_mismatched_signers">ইন্সটলকৃত সংস্করণ থেকে আলাদা স্বাক্ষর</string>
<string name="repo_error_empty_username">খালি নাম, যাচাইকরণ তথ্য পাল্টানো হয়নি</string>
<string name="send_fdroid_metrics_report">%s পরিসংখ্যান প্রতিবেদন পাঠাও</string>
<plurals name="details_last_update_years">
@ -395,7 +395,7 @@
<string name="empty_installed_app_list">কোনো অ্যাপ ইন্সটল করা নেই।
\n
\nতোমার কাছে অন্যান্য অ্যাপ আছে, কিন্তু সেগুলো এফ-ড্রয়েডের না। ভাণ্ডারগুলোর হালনাগাদের প্রয়োজনীয়তা এর কারণ হতে পারে অথবা ভাণ্ডারগুলোতে আসলেই হয়তো তোমার অ্যাপগুলো নেই।</string>
<string name="app_details__no_versions__explain_incompatible_signatures">ইন্সটলকৃত সংস্করণ অন্য কোনো সংস্করণের সাথে অসামঞ্জস্যপূর্ণ। এই অ্যাপ মুছলে তোমাকে অন্যান্য সামঞ্জস্যপূর্ণ সংস্করণ দেখতে ও ইন্সটল করতে দিবে। গুগল প্লে বা অন্য জায়গা থেকে অ্যাপ ইন্সটল করলে বেশিরভাগ সময় এমন হয়, বিশেষত অন্য অনুমতিপত্র দিয়ে স্বাক্ষর করা হলে।</string>
<string name="app_details__no_versions__explain_incompatible_signers">ইন্সটলকৃত সংস্করণ অন্য কোনো সংস্করণের সাথে অসামঞ্জস্যপূর্ণ। এই অ্যাপ মুছলে তোমাকে অন্যান্য সামঞ্জস্যপূর্ণ সংস্করণ দেখতে ও ইন্সটল করতে দিবে। গুগল প্লে বা অন্য জায়গা থেকে অ্যাপ ইন্সটল করলে বেশিরভাগ সময় এমন হয়, বিশেষত অন্য অনুমতিপত্র দিয়ে স্বাক্ষর করা হলে।</string>
<string name="interval_2w">প্রতি ২ সপ্তাহে হালনাগাদ আছে কিনা দেখো</string>
<string name="interval_12h">প্রতি ১২ ঘণ্টায় হালনাগাদ আছে কিনা দেখো</string>
<string name="interval_4h">প্রতি ঘণ্টায় হালনাগাদ আছে কিনা দেখো</string>

View File

@ -359,11 +359,11 @@
<string name="theme_light">དཀར་མདངས།</string>
<string name="theme_dark">ནག་པོ།</string>
<string name="tts_category_name">སྡེ་ཚན་%1$s</string>
<string name="app_details__incompatible_mismatched_signature">སྒྲིག་བཅུག་བྱེད་པའི་ཐོན་རིམ་འདི་མིང་རྟགས་མཐུན་མ་སོང་།</string>
<string name="app_details__incompatible_mismatched_signers">སྒྲིག་བཅུག་བྱེད་པའི་ཐོན་རིམ་འདི་མིང་རྟགས་མཐུན་མ་སོང་།</string>
<string name="app_details__no_versions__show_incompat_versions">འདིར་ཐོན་རིམ་མི་མཐུན་པ་རྣམས་སྟོན་དགོས་ན། \"%1$s\" སྒྲིག་བཀོད་འདི་སྒོ་ཕྱེད།</string>
<string name="app_details__no_versions__no_compatible_signatures">མིང་རྟགས་མཐུན་པའི་ཐོན་རིམ་མིན་འདུག</string>
<string name="app_details__no_versions__no_compatible_signers">མིང་རྟགས་མཐུན་པའི་ཐོན་རིམ་མིན་འདུག</string>
<string name="app_details__no_versions__none_compatible_with_device">ཡོ་བྱད་འདི་དང་མཐུན་པའི་ཐོན་རིམ་མིན་འདུག</string>
<string name="app_details__no_versions__explain_incompatible_signatures">སྒྲིག་བཅུག་བྱེད་པའི་ཐོན་རིམ་འདི་ཡོད་བཞིན་པའི་ཐོན་རིམ་གང་དང་ཡང་མཐུན་གྱི་མིན་འདུག སོང་ཙང་ཕྱིར་སྟོན་བྱས་པའི་ཐོན་རིམ་འདིས་མཐུན་པའི་ཐོན་རིམ་རྣམས་སྒྲིག་བཅུག་བྱེད་པ་དང་ལྟ་ཐུབ། འདི་ནི་གུ་གྷལ་མཉེན་ཆས་གསོག་ཉར་ཁང་དང་ཡན་ན་འབྱུང་ཁུངས་གཞན་དག་རྒྱུད་དེ་སྒྲིག་བཅུག་བྱས་པའི་མཉེན་ཆས་རིགས་ལ་ཆོག་མཆན་ལག་ཁྱེར་གྱི་མིང་རྟགས་གཞན་དག་གིས་བཀོད་ཚེ་དཀའ་ངལ་དེའི་རིགས་ཡང་སེ་ཕྲད་ཀྱི་ཡོད།</string>
<string name="app_details__no_versions__explain_incompatible_signers">སྒྲིག་བཅུག་བྱེད་པའི་ཐོན་རིམ་འདི་ཡོད་བཞིན་པའི་ཐོན་རིམ་གང་དང་ཡང་མཐུན་གྱི་མིན་འདུག སོང་ཙང་ཕྱིར་སྟོན་བྱས་པའི་ཐོན་རིམ་འདིས་མཐུན་པའི་ཐོན་རིམ་རྣམས་སྒྲིག་བཅུག་བྱེད་པ་དང་ལྟ་ཐུབ། འདི་ནི་གུ་གྷལ་མཉེན་ཆས་གསོག་ཉར་ཁང་དང་ཡན་ན་འབྱུང་ཁུངས་གཞན་དག་རྒྱུད་དེ་སྒྲིག་བཅུག་བྱས་པའི་མཉེན་ཆས་རིགས་ལ་ཆོག་མཆན་ལག་ཁྱེར་གྱི་མིང་རྟགས་གཞན་དག་གིས་བཀོད་ཚེ་དཀའ་ངལ་དེའི་རིགས་ཡང་སེ་ཕྲད་ཀྱི་ཡོད།</string>
<string name="empty_search_available_app_list">འདི་དང་མཐུན་པའི་མཉེན་ཆས་རྙེད་མ་སོང་།</string>
<string name="app_list__dismiss_app_update">ཡ་ལན་མ་བྱས་པའི་གསར་བསྒྱུར།</string>
<string name="app_list__dismiss_vulnerable_app">ཡ་ལན་མ་བྱས་པའི་ཉེན་ཁ།</string>

View File

@ -378,11 +378,11 @@
<string name="download_404">No s\'ha trobat l\'arxiu sol·licitat.</string>
<string name="force_old_index">Força el format d\'índex antic</string>
<string name="force_old_index_summary">En cas d\'errors o problemes de compatibilitat, utilitzeu l\'índex d\'aplicació XML</string>
<string name="app_details__incompatible_mismatched_signature">Signatura diferent de la versió instal·lada</string>
<string name="app_details__incompatible_mismatched_signers">Signatura diferent de la versió instal·lada</string>
<string name="app_details__no_versions__show_incompat_versions">Per mostrar igualment versions no compatibles, habiliteu «%1$s» a les opcions.</string>
<string name="app_details__no_versions__no_compatible_signatures">No hi ha cap versió amb signatura compatible</string>
<string name="app_details__no_versions__no_compatible_signers">No hi ha cap versió amb signatura compatible</string>
<string name="app_details__no_versions__none_compatible_with_device">No hi ha cap versió compatible amb el dispositiu</string>
<string name="app_details__no_versions__explain_incompatible_signatures">La versió instal·lada no és compatible amb cap versió disponible. Desinstal·leu la versió actual i podreu instal·lar versions compatibles. Això succeeix amb versions del Google Play o altres fonts que tenen un certificat i signatura diferent.</string>
<string name="app_details__no_versions__explain_incompatible_signers">La versió instal·lada no és compatible amb cap versió disponible. Desinstal·leu la versió actual i podreu instal·lar versions compatibles. Això succeeix amb versions del Google Play o altres fonts que tenen un certificat i signatura diferent.</string>
<string name="app_installed_media">Fitxer instal·lat a %s</string>
<string name="app_permission_storage">F-Droid necessita permisos d\'emmagatzematge per instal·lar. Doneu permisos a la pantalla següent per procedir amb la instal·lació.</string>
<string name="app_list_download_ready">S\'ha baixat i ja es pot instal·lar</string>

View File

@ -319,11 +319,11 @@
<string name="by_author_format">od %s</string>
<string name="force_old_index">vynutit původní formát rejstříku</string>
<string name="force_old_index_summary">V případě chyb nebo problémů s kompatibilitou, použít XML rejstřík aplikací</string>
<string name="app_details__incompatible_mismatched_signature">Rozdílný podpis oproti nainstalované verzi</string>
<string name="app_details__incompatible_mismatched_signers">Rozdílný podpis oproti nainstalované verzi</string>
<string name="app_details__no_versions__show_incompat_versions">Pro zobrazení nekompatibilních verzí i tak, zapněte v nastavení „%1$s“.</string>
<string name="app_details__no_versions__no_compatible_signatures">Není k dispozici žádná veze s kompatibilním podpisem</string>
<string name="app_details__no_versions__no_compatible_signers">Není k dispozici žádná veze s kompatibilním podpisem</string>
<string name="app_details__no_versions__none_compatible_with_device">Není k dispozici verze kompatibilní s tímto zařízením</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Nainstalovaná verze není kompatibilní s žádnou dostupnou verzí. Odinstalace aplikace vám umožní zobrazit a nainstalovat kompatibilní verzi. K tomuto dochází často u aplikací nainstalovaných prostřednictvím služby Google Play a dalších zdrojů, pokud jsou podepsány odlišným certifikátem.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Nainstalovaná verze není kompatibilní s žádnou dostupnou verzí. Odinstalace aplikace vám umožní zobrazit a nainstalovat kompatibilní verzi. K tomuto dochází často u aplikací nainstalovaných prostřednictvím služby Google Play a dalších zdrojů, pokud jsou podepsány odlišným certifikátem.</string>
<string name="app__tts__cancel_download">Zrušit stahování</string>
<string name="app_installed_media">Soubor nainstalován do %s</string>
<string name="app_permission_storage">Pro instalaci tohoto do úložiště potřebuje F-Droid oprávnění. Umožněte to na následující obrazovce a instalace bude moci pokračovat.</string>

View File

@ -73,7 +73,7 @@
<string name="no_such_app">Ni chanfuwyd y fath ap.</string>
<string name="app_details_donate_prompt_unknown_author">Prynu paned i ddatblygwyr %1$s!</string>
<string name="app_details_donate_prompt">Crëwyd %1$s gan %2$s. Pryna paned iddyn nhw!</string>
<string name="app_details__incompatible_mismatched_signature">Llofnod gwahanol i\'r fersiwn a osodwyd</string>
<string name="app_details__incompatible_mismatched_signers">Llofnod gwahanol i\'r fersiwn a osodwyd</string>
<string name="about_title">Ynghylch F-Droid</string>
<string name="about_version">Fersiwn</string>
<string name="about_site">Gwefan</string>
@ -422,9 +422,9 @@
<string name="system_installer_on">Defnyddio\'r Estyniad Breintiedig i osod, diweddaru a thynnu pecynnau</string>
<string name="scan_removable_storage_summary">Edrych am ystorfeydd pecynnau ar storfeydd gellir eu tynnu, megis cof bach USB a chardiau SD</string>
<string name="app_details__no_versions__show_incompat_versions">I ddangos fersiynau anghydnaws yma beth bynnag, galluoga\'r gosodiad \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Dim fersiynau gyda llofnod cydnaws</string>
<string name="app_details__no_versions__no_compatible_signers">Dim fersiynau gyda llofnod cydnaws</string>
<string name="app_details__no_versions__none_compatible_with_device">Dim fersiynau yn gydnaws â\'r ddyfais</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Dyw\'r fersiwn wedi\'i gosod ddim yn gydnaws ag unrhyw fersiynau ar gael. Bydd dadosod yr ap yn dy alluogi i weld a gosod fersiynau cydnaws. Mae hyn yn aml yn digwydd gydag apiau a osodwyd o Google Play neu ffynonellau eraill am y\'i llofnodwyd gyda thystysgrif wahanol.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Dyw\'r fersiwn wedi\'i gosod ddim yn gydnaws ag unrhyw fersiynau ar gael. Bydd dadosod yr ap yn dy alluogi i weld a gosod fersiynau cydnaws. Mae hyn yn aml yn digwydd gydag apiau a osodwyd o Google Play neu ffynonellau eraill am y\'i llofnodwyd gyda thystysgrif wahanol.</string>
<string name="about_forum">Fforwm cymorth</string>
<string name="about_source">Cod gwreiddiol</string>
<string name="about_license">Trwydded</string>

View File

@ -365,9 +365,9 @@
</plurals>
<string name="force_old_index">Gennemtving gammelt indeksformat</string>
<string name="force_old_index_summary">Hvis der er fejl eller problemer med kompatibilitet, så brug XML-app-indekset</string>
<string name="app_details__incompatible_mismatched_signature">Anden signatur end installeret version</string>
<string name="app_details__incompatible_mismatched_signers">Anden signatur end installeret version</string>
<string name="app_details__no_versions__show_incompat_versions">Aktiver indstillingen \"%1$s\", hvis du alligevel vil se uforenelige versioner her.</string>
<string name="app_details__no_versions__no_compatible_signatures">Ingen versioner med kompatibel signatur</string>
<string name="app_details__no_versions__no_compatible_signers">Ingen versioner med kompatibel signatur</string>
<string name="app_details__no_versions__none_compatible_with_device">Ingen versioner, der er kompatibel med enheden</string>
<string name="app_installed_media">Fil installeret til %s</string>
<string name="app_permission_storage">F-Droid skal have adgang til lagring for at installere til dette lagermedium. Tillad det på den næste skærm for at fortsætte installationen.</string>
@ -445,7 +445,7 @@
<string name="panic_hide_warning_title">Husk hvordan der gendannes</string>
<string name="nearby_splash__read_external_storage">Søg på SD-kortet efter depoter og spejle.</string>
<string name="repo_exists_and_enabled">%1$s er allerede opsat og aktiveret.</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Den installerede version er ikke kompatibel med nogen af de tilgængelige versioner. Hvis du afinstallerer appen kan du se og installere kompatible versioner. Dette sker ofte med apps installeret via Google Play eller andre kilder, hvis de er signeret med et andet certifikat.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Den installerede version er ikke kompatibel med nogen af de tilgængelige versioner. Hvis du afinstallerer appen kan du se og installere kompatible versioner. Dette sker ofte med apps installeret via Google Play eller andre kilder, hvis de er signeret med et andet certifikat.</string>
<string name="repo_exists_enable">%1$s er allerede opsat, bekræft at den skal gen-aktiveres.</string>
<string name="panic_app_dialog_message">Er du sikker på, at du vil tillade %1$s at trigge destruktive panikknaphandlinger\?</string>
<string name="hiding_dialog_message">Er du sikker på, at du vil fjerne %1$s fra startskærmen\? Genvejen kan kun genoprettes ved at taste \"%2$d\" i den falske app %3$s.</string>

View File

@ -383,11 +383,11 @@
<string name="app_installed_media">Datei wurde nach %s installiert</string>
<string name="app_permission_storage">F-Droid benötigt Zugriffsrechte auf den Speicher, um es dort zu installieren. Bitte beim nächsten Bildschirm bestätigen, um mit der Installation fortzufahren.</string>
<string name="status_inserting_x_apps">App-Details (%1$d/%2$d) von %3$s speichern</string>
<string name="app_details__incompatible_mismatched_signature">Abweichende Signatur zur installierten Version</string>
<string name="app_details__incompatible_mismatched_signers">Abweichende Signatur zur installierten Version</string>
<string name="app_details__no_versions__show_incompat_versions">Um hier in jedem Fall inkompatible Versionen anzuzeigen, aktivieren Sie die Einstellung »%1$s«.</string>
<string name="app_details__no_versions__no_compatible_signatures">Keine Versionen mit kompatibler Signatur</string>
<string name="app_details__no_versions__no_compatible_signers">Keine Versionen mit kompatibler Signatur</string>
<string name="app_details__no_versions__none_compatible_with_device">Keine mit dem Gerät kompatiblen Versionen</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Die installierte Version ist mit keiner der vorhandenen Versionen kompatibel. Eine Deinstallation der App ermöglicht Ihnen, kompatible Versionen anzusehen und zu installieren. Dies tritt häufig bei Apps auf, die über Google Play oder andere Quellen installiert wurden, da sie mit einem anderen Zertifikat signiert sind.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Die installierte Version ist mit keiner der vorhandenen Versionen kompatibel. Eine Deinstallation der App ermöglicht Ihnen, kompatible Versionen anzusehen und zu installieren. Dies tritt häufig bei Apps auf, die über Google Play oder andere Quellen installiert wurden, da sie mit einem anderen Zertifikat signiert sind.</string>
<string name="app_list__dismiss_app_update">Aktualisierung ignoriert</string>
<string name="app_list__dismiss_vulnerable_app">Sicherheitslücke ignoriert</string>
<string name="app_list__dismiss_downloading_app">Herunterladen abgebrochen</string>

View File

@ -332,11 +332,11 @@
<string name="force_old_index_summary">Σε περίπτωση που υπάρχουν σφάλματα ή ασυμβατότητες, χρήση του ευρετηρίου εφαρμογών XML</string>
<string name="app_details_donate_prompt_unknown_author">Κεράστε στους προγραμματιστές του %1$s ένα καφέ!</string>
<string name="app_details_donate_prompt">Το %1$s αναπτύσσεται από το %2$s. Κεράστε τους ένα καφέ!</string>
<string name="app_details__incompatible_mismatched_signature">Διαφορετική υπογραφή από την εγκατεστημένη έκδοση</string>
<string name="app_details__incompatible_mismatched_signers">Διαφορετική υπογραφή από την εγκατεστημένη έκδοση</string>
<string name="app_details__no_versions__show_incompat_versions">Για εμφάνιση ασύμβατων εκδόσεων εδώ, ενεργοποιήστε την \"%1$s\" επιλογή.</string>
<string name="app_details__no_versions__no_compatible_signatures">Δεν υπάρχουν εκδόσεις με συμβατή υπογραφή</string>
<string name="app_details__no_versions__no_compatible_signers">Δεν υπάρχουν εκδόσεις με συμβατή υπογραφή</string>
<string name="app_details__no_versions__none_compatible_with_device">Δεν υπάρχουν συμβατές εκδόσεις με τη συσκευή</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Η εγκατεστημένη έκδοση δεν είναι συμβατή με τις διαθέσιμες εκδόσεις. Απεγκαθιστώντας την εφαρμογή θα δείτε τις συμβατές εκδόσεις. Αυτό συμβαίνει όταν η εγκατάσταση έγινε από το Play Store ή άλλη πηγή με διαφορετικό πιστοποιητικό.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Η εγκατεστημένη έκδοση δεν είναι συμβατή με τις διαθέσιμες εκδόσεις. Απεγκαθιστώντας την εφαρμογή θα δείτε τις συμβατές εκδόσεις. Αυτό συμβαίνει όταν η εγκατάσταση έγινε από το Play Store ή άλλη πηγή με διαφορετικό πιστοποιητικό.</string>
<string name="app_installed_media">Το εγκαταστάθηκε στο %s</string>
<string name="app_permission_storage">Το F-Droid χρειάζεται άδεια για τον χώρο αποθήκευσης για να εγκαταστήσει αυτό. Παρακαλώ επιτρέψτε την άδεια στην επόμενη οθόνη για να προχωρήσει η εγκατάσταση.</string>
<string name="app_list_download_ready">Έγινε η λήψη, έτοιμο για εγκατάσταση</string>

View File

@ -371,11 +371,11 @@
<string name="about_forum">Support forum</string>
<string name="about_site">Website</string>
<string name="about_version">Version</string>
<string name="app_details__no_versions__explain_incompatible_signatures">The installed version is not compatible with any available versions. Uninstalling the app will enable you to view and install compatible versions. This often occurs with apps installed via Google Play or other sources, if they are signed by a different certificate.</string>
<string name="app_details__no_versions__explain_incompatible_signers">The installed version is not compatible with any available versions. Uninstalling the app will enable you to view and install compatible versions. This often occurs with apps installed via Google Play or other sources, if they are signed by a different certificate.</string>
<string name="app_details__no_versions__none_compatible_with_device">No versions compatible with device</string>
<string name="app_details__no_versions__no_compatible_signatures">No versions with compatible signature</string>
<string name="app_details__no_versions__no_compatible_signers">No versions with compatible signature</string>
<string name="app_details__no_versions__show_incompat_versions">To show incompatible versions here anyway, enable the %1$s setting.</string>
<string name="app_details__incompatible_mismatched_signature">Different signature to installed version</string>
<string name="app_details__incompatible_mismatched_signers">Different signature to installed version</string>
<string name="app_details_donate_prompt">%1$s is created by %2$s. Buy them a coffee!</string>
<string name="app_details_donate_prompt_unknown_author">Buy the developers of %1$s a coffee!</string>
<string name="no_such_app">No such app found.</string>

View File

@ -386,11 +386,11 @@
<string name="status_inserting_x_apps">Konservado de aplikaĵaj detaloj (%1$d/%2$d) el %3$s</string>
<string name="app_installed_media">Dosiero instalita al %s</string>
<string name="app_permission_storage">FDroid bezonas aliron al konservejo por instali ĝin tien. Permesu tion ĉi sur la sekva ekrano por pluigi instaladon.</string>
<string name="app_details__incompatible_mismatched_signature">Alia subskribo ol instalita versio</string>
<string name="app_details__incompatible_mismatched_signers">Alia subskribo ol instalita versio</string>
<string name="app_details__no_versions__show_incompat_versions">Por montri nekongruajn versiojn tie ĉe malgraŭ tio, enŝaltu la agordon “%1$s”.</string>
<string name="app_details__no_versions__no_compatible_signatures">Neniu versio kun kongrua subskribo</string>
<string name="app_details__no_versions__no_compatible_signers">Neniu versio kun kongrua subskribo</string>
<string name="app_details__no_versions__none_compatible_with_device">Neniu versio kongrua kun la aparato</string>
<string name="app_details__no_versions__explain_incompatible_signatures">La instalita versio ne kongruas kun ĉiuj disponeblaj versioj. Malinstalado de aplikaĵo ebligos al vi vidigi kaj instali kongruajn versiojn. Tio ĉi ofte okazas ĉe aplikaĵoj instalitaj el Google Play aŭ aliaj fontoj, se ili estas subskribitaj per alia atestilo.</string>
<string name="app_details__no_versions__explain_incompatible_signers">La instalita versio ne kongruas kun ĉiuj disponeblaj versioj. Malinstalado de aplikaĵo ebligos al vi vidigi kaj instali kongruajn versiojn. Tio ĉi ofte okazas ĉe aplikaĵoj instalitaj el Google Play aŭ aliaj fontoj, se ili estas subskribitaj per alia atestilo.</string>
<string name="app_list__dismiss_app_update">Ĝisdatigo ignorata</string>
<string name="app_list__dismiss_vulnerable_app">Sekurec-fliko ignorata</string>
<string name="app_list__dismiss_downloading_app">Elŝuto nuligita</string>

View File

@ -55,11 +55,11 @@
<string name="no_such_app">No se encontró tal aplicación.</string>
<string name="app_details_donate_prompt_unknown_author">¡Comprá un café para los desarrolladores de %1$s!</string>
<string name="app_details_donate_prompt">%1$s es hecho por %2$s. ¡Comprales un café!</string>
<string name="app_details__incompatible_mismatched_signature">Firma distinta a la versión instalada</string>
<string name="app_details__incompatible_mismatched_signers">Firma distinta a la versión instalada</string>
<string name="app_details__no_versions__show_incompat_versions">Para mostrar versiones incompatibles acá de todas formas, habilitá el ajuste \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">No hay versiones con una firma compatible</string>
<string name="app_details__no_versions__no_compatible_signers">No hay versiones con una firma compatible</string>
<string name="app_details__no_versions__none_compatible_with_device">No hay versiones compatibles con este dispositivo</string>
<string name="app_details__no_versions__explain_incompatible_signatures">La versión instalada no es compatible con ninguna versión disponible. Desinstalando la aplicación te va a permitir ver e instalar versiones compatibles. Esto ocurre frecuentemente con aplicaciones instaladas desde Google Play u otros orígenes, si son firmadas con un certificado diferente.</string>
<string name="app_details__no_versions__explain_incompatible_signers">La versión instalada no es compatible con ninguna versión disponible. Desinstalando la aplicación te va a permitir ver e instalar versiones compatibles. Esto ocurre frecuentemente con aplicaciones instaladas desde Google Play u otros orígenes, si son firmadas con un certificado diferente.</string>
<string name="about_title">Acerca de F-Droid</string>
<string name="about_version">Versión</string>
<string name="about_site">Sitio web</string>

View File

@ -219,11 +219,11 @@
<string name="keep_install_history_summary">Guardar un registro de todas las instalaciones y desinstalaciones de F-Droid</string>
<string name="no_such_app">No se ha encontrado dicha aplicación.</string>
<string name="swap_scan_qr">Código QR</string>
<string name="app_details__no_versions__explain_incompatible_signatures">La versión instalada no es compatible con ninguna de las versiones disponibles. Desinstalar la aplicación te permitirá ver e instalar las versiones compatibles. Esto suele ocurrir con las apps instaladas a través de Google Play u otras fuentes, si están firmadas por un certificado diferente.</string>
<string name="app_details__no_versions__explain_incompatible_signers">La versión instalada no es compatible con ninguna de las versiones disponibles. Desinstalar la aplicación te permitirá ver e instalar las versiones compatibles. Esto suele ocurrir con las apps instaladas a través de Google Play u otras fuentes, si están firmadas por un certificado diferente.</string>
<string name="app_details__no_versions__none_compatible_with_device">No hay versiones compatibles con el dispositivo</string>
<string name="app_details__no_versions__no_compatible_signatures">No hay versiones con firma compatible</string>
<string name="app_details__no_versions__no_compatible_signers">No hay versiones con firma compatible</string>
<string name="app_details__no_versions__show_incompat_versions">Para mostrar aquí las versiones incompatibles de todos modos, active el ajuste \"%1$s\".</string>
<string name="app_details__incompatible_mismatched_signature">La firma es distinta a la de la versión instalada</string>
<string name="app_details__incompatible_mismatched_signers">La firma es distinta a la de la versión instalada</string>
<string name="app_details_donate_prompt">%1$s es creado por %2$s. ¡Invítalos a un café!</string>
<string name="app_details_donate_prompt_unknown_author">¡Cómprale un café a los desarrolladores de %1$s!</string>
<string name="toast_metrics_in_install_history">El informe de la métrica %s se puede ver en el visor del historial de instalación</string>

View File

@ -394,11 +394,11 @@
<string name="status_inserting_x_apps">Guardando detalles de la aplicación (%1$d/%2$d) desde %3$s</string>
<string name="app_installed_media">Archivo instalado en %s</string>
<string name="app_permission_storage">F-Droid necesita permiso para instalar esto en su almacenamiento. Por favor, permita en la siguiente pantalla que se continúe con la instalación.</string>
<string name="app_details__incompatible_mismatched_signature">La firma no coincide con la de la versión instalada</string>
<string name="app_details__incompatible_mismatched_signers">La firma no coincide con la de la versión instalada</string>
<string name="app_details__no_versions__show_incompat_versions">Para mostrar versiones incompatibles aquí de todos modos, habilita la opción \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">No hay versiones con una firma compatible</string>
<string name="app_details__no_versions__no_compatible_signers">No hay versiones con una firma compatible</string>
<string name="app_details__no_versions__none_compatible_with_device">No hay versiones compatibles con el dispositivo</string>
<string name="app_details__no_versions__explain_incompatible_signatures">La versión instalada no es compatible con ninguna de las versiones disponibles. Desinstalar la aplicación le permitirá ver e instalar las versiones compatibles. Esto ocurre a menudo con aplicaciones instaladas a través de Google Play o de otras fuentes, que pueden haberse firmado con un certificado diferente.</string>
<string name="app_details__no_versions__explain_incompatible_signers">La versión instalada no es compatible con ninguna de las versiones disponibles. Desinstalar la aplicación le permitirá ver e instalar las versiones compatibles. Esto ocurre a menudo con aplicaciones instaladas a través de Google Play o de otras fuentes, que pueden haberse firmado con un certificado diferente.</string>
<string name="app_list__dismiss_app_update">Actualización ignorada</string>
<string name="app_list__dismiss_vulnerable_app">Vulnerabilidad ignorada</string>
<string name="app_list__dismiss_downloading_app">Descarga cancelada</string>

View File

@ -295,11 +295,11 @@
<string name="update_auto_install_summary">Laadi alla ja värskenda rakendusi taustal ning kuva teavitus</string>
<string name="app_details_donate_prompt_unknown_author">Osta %1$s arendajatele kohvi!</string>
<string name="app_details_donate_prompt">%1$s loojad on %2$s. Osta neile kohvi!</string>
<string name="app_details__incompatible_mismatched_signature">Signatuur erineb paigaldatud versiooni omast</string>
<string name="app_details__incompatible_mismatched_signers">Signatuur erineb paigaldatud versiooni omast</string>
<string name="app_details__no_versions__show_incompat_versions">Mitteühilduvate versioonide siin kuvamiseks lülita sisse \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Ühilduvate signatuuridega versioone ei ole</string>
<string name="app_details__no_versions__no_compatible_signers">Ühilduvate signatuuridega versioone ei ole</string>
<string name="app_details__no_versions__none_compatible_with_device">Seadmega ühilduvaid versioone ei ole</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Paigaldatud versioon ei ühildu mitte ühegi kättesaadava versiooniga. Rakenduse eemaldamine lubab sul vaadata ja paigaldada ühilduvaid versioone. Seda juhtub tihti rakendustega, mis on paigaldatud Google Playst või teistest allikatest, kui nad on signeeritud erineva sertifikaadiga.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Paigaldatud versioon ei ühildu mitte ühegi kättesaadava versiooniga. Rakenduse eemaldamine lubab sul vaadata ja paigaldada ühilduvaid versioone. Seda juhtub tihti rakendustega, mis on paigaldatud Google Playst või teistest allikatest, kui nad on signeeritud erineva sertifikaadiga.</string>
<string name="app_version_x_available">Versioon %1$s on saadaval</string>
<string name="app_version_x_installed">Versioon %1$s</string>
<string name="app_recommended_version_installed">Versioon %1$s (soovitatav)</string>

View File

@ -394,11 +394,11 @@
<string name="status_inserting_x_apps">Aplikazioaren xehetasunak gordetzen (%1$d/%2$d) %3$s(e)tik</string>
<string name="app_installed_media">Fitxategia hemen instalatu da: %s</string>
<string name="app_permission_storage">F-droidek biltegira sarbidea behar du hau bertan instalatzeko. Eman baimena hurrengo pantailan instalazioarekin jarraitzeko.</string>
<string name="app_details__incompatible_mismatched_signature">Instalatutako bertsioaren sinadura desberdina da</string>
<string name="app_details__incompatible_mismatched_signers">Instalatutako bertsioaren sinadura desberdina da</string>
<string name="app_details__no_versions__show_incompat_versions">Edonola ere bertsio ez bateragarriak erakusteko, gaitu \"%1$s\" ezarpena.</string>
<string name="app_details__no_versions__no_compatible_signatures">Ez dago bateragarria den sinadura duen bertsiorik</string>
<string name="app_details__no_versions__no_compatible_signers">Ez dago bateragarria den sinadura duen bertsiorik</string>
<string name="app_details__no_versions__none_compatible_with_device">Ez dago gailuarekin bateragarria den bertsiorik</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Instalatutako bertsioa ez da bateragarria eskuragarri duden bertsioekin. Aplikazioa desinstalatzeak bertsio bateragarriak ikusi eta instalatzea ahalbidetuko dizu. Hau Gogle Play edo beste iturrietatik instalatutako aplikazioekin gertatu ohi da, ziurtagiri desberdin batekin sinatu direlako.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Instalatutako bertsioa ez da bateragarria eskuragarri duden bertsioekin. Aplikazioa desinstalatzeak bertsio bateragarriak ikusi eta instalatzea ahalbidetuko dizu. Hau Gogle Play edo beste iturrietatik instalatutako aplikazioekin gertatu ohi da, ziurtagiri desberdin batekin sinatu direlako.</string>
<string name="app_list__dismiss_app_update">Eguneraketa ezikusia</string>
<string name="app_list__dismiss_vulnerable_app">Ahultasun ezikusia</string>
<string name="app_list__dismiss_downloading_app">Deskarga utzita</string>

View File

@ -373,11 +373,11 @@
<string name="app_installed_media">پرونده در %s نصب شد</string>
<string name="app_permission_storage">اف‌دروید برای نصب روی ذخیره‌ساز، نیاز به اجازهٔ ذخیره‌سازی دارد. لطفاً برای ادامهٔ نصب، این اجازه را در صفحهٔ بعدی بدهید.</string>
<string name="status_inserting_x_apps">ذخیره کردن جزییات کاره (%1$d/%2$d) از %3$s</string>
<string name="app_details__incompatible_mismatched_signature">امضای متفاوت با نگارشِ نصب‌شده</string>
<string name="app_details__incompatible_mismatched_signers">امضای متفاوت با نگارشِ نصب‌شده</string>
<string name="app_details__no_versions__show_incompat_versions">برای نمایش نگارش‌های ناسازگار، تنظیمات «%1$s» را به کار بیندازید.</string>
<string name="app_details__no_versions__no_compatible_signatures">هیچ نگارشی با امضای سازگار وجود ندارد</string>
<string name="app_details__no_versions__no_compatible_signers">هیچ نگارشی با امضای سازگار وجود ندارد</string>
<string name="app_details__no_versions__none_compatible_with_device">هیچ نگارش سازگار با افزاره‌ای وجود ندارد</string>
<string name="app_details__no_versions__explain_incompatible_signatures">نگارش نصب‌شده با هیچ نگارش موجودی سازگار نیست. حذف نصب کاره، شما را قادر به مشاهده و نصب نگارش‌های سازگار می‌کند. این مشکل اغلب با کاره‌های نصب‌شده از گوگل‌پلی یا دیگر منابعی رخ می‌دهد که با گواهی‌نامهٔ متفاوتی امضا شده‌اند.</string>
<string name="app_details__no_versions__explain_incompatible_signers">نگارش نصب‌شده با هیچ نگارش موجودی سازگار نیست. حذف نصب کاره، شما را قادر به مشاهده و نصب نگارش‌های سازگار می‌کند. این مشکل اغلب با کاره‌های نصب‌شده از گوگل‌پلی یا دیگر منابعی رخ می‌دهد که با گواهی‌نامهٔ متفاوتی امضا شده‌اند.</string>
<string name="app_list__dismiss_app_update">از به‌روز رسانی چشم‌پوشی شد</string>
<string name="app_list__dismiss_vulnerable_app">از آسیب‌پذیری چشم‌پوشی</string>
<string name="app_list__dismiss_downloading_app">بارگیری لغو شد</string>

View File

@ -351,9 +351,9 @@
<string name="over_network_always_summary">Käytä aina tätä yhteyttä, kun se on saatavilla</string>
<string name="over_network_on_demand_summary">Käytä tätä yhteyttä vain, kun klikkaan \'Lataa\'</string>
<string name="over_network_never_summary">Älä koskaan lataa mitään käyttäen tätä yhteyttä</string>
<string name="app_details__no_versions__no_compatible_signatures">Ei versioita joilla yhteensopiva allekirjoitus</string>
<string name="app_details__no_versions__no_compatible_signers">Ei versioita joilla yhteensopiva allekirjoitus</string>
<string name="app_details__no_versions__none_compatible_with_device">Ei versioita jotka ovat yhteensopivia laitteen kanssa</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Asennettu versio ei ole yhteensopiva yhdenkään saatavilla olevan version kanssa. Poistamalla seovelluksen voit selata ja asentaa yhteensopivan version. Näin käy usein Google Playstä tai muista lähteistä asennettujen sovellusten kohdalla, mikäli ne on allekirjoitettu eri sertifikaatilla.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Asennettu versio ei ole yhteensopiva yhdenkään saatavilla olevan version kanssa. Poistamalla seovelluksen voit selata ja asentaa yhteensopivan version. Näin käy usein Google Playstä tai muista lähteistä asennettujen sovellusten kohdalla, mikäli ne on allekirjoitettu eri sertifikaatilla.</string>
<string name="app__tts__cancel_download">Peruuta lataus</string>
<string name="app_installed_media">Tiedosto asennettu polkuun %s</string>
<string name="app_permission_storage">F-Droid tarvitsee tämän asentamiseen oikeuden tallennustilaan. Ole hyvä ja myönnä oikeus seuraavassa ruudussa jatkaaksesi asennusta.</string>
@ -435,7 +435,7 @@
<item quantity="one">Päivitetty %1$d vuosi sitten</item>
<item quantity="other">Päivitetty %1$d vuotta sitten</item>
</plurals>
<string name="app_details__incompatible_mismatched_signature">Poikkeava allekirjoitus asennettuun versioon nähden</string>
<string name="app_details__incompatible_mismatched_signers">Poikkeava allekirjoitus asennettuun versioon nähden</string>
<string name="app_details__no_versions__show_incompat_versions">Nähdäksesi yhteensopimattomatkin versiot, käytä \"%1$s\" asetusta.</string>
<string name="prompt_to_send_crash_reports">Pyydä lähettämään kaatumisraportteja</string>
<string name="prompt_to_send_crash_reports_summary">Kerää tietoja kaatumisista ja pyydä lähettämään ne kehittäjälle</string>

View File

@ -45,7 +45,7 @@
<string name="login_password">Password</string>
<string name="repo_edit_credentials">Palitan ang password</string>
<string name="app_details_donate_prompt">Ginawa ni/ng %2$s ang %1$s. Bilhan mo sila ng kape!</string>
<string name="app_details__incompatible_mismatched_signature">Magkaibang pirma sa naka-install na bersyon</string>
<string name="app_details__incompatible_mismatched_signers">Magkaibang pirma sa naka-install na bersyon</string>
<string name="about_title">Tungkol sa F-Droid</string>
<string name="other">Karagdagan</string>
<string name="over_data">Gamit data</string>
@ -53,7 +53,7 @@
<string name="repo_error_empty_username">Blangkong username, di nagbago ang credentials</string>
<string name="no_such_app">Walang nakitang app.</string>
<string name="app_details__no_versions__show_incompat_versions">Para ipakita pa rin ang mga di-compatible na bersyon dito, buksan ang \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Walang bersyon na may compatible na pirma</string>
<string name="app_details__no_versions__no_compatible_signers">Walang bersyon na may compatible na pirma</string>
<string name="about_version">Bersyon</string>
<string name="about_site">Website</string>
<string name="about_forum">Forum ng suporta</string>
@ -196,7 +196,7 @@
<string name="system_installer_on">Gamitin ang Dugtong ng Pribilehiyo para mag-install, mag-update, at magtanggal ng mga package</string>
<string name="app_details__no_versions__none_compatible_with_device">Walang bersyong compatible sa device</string>
<string name="has_disallow_install_unknown_sources_globally">Ipinagbabawal ng device admin ang pag-install mula sa mga di-kilalang source, kasama doon ang mga bagong repo</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Di-compatible ang naka-install na bersyon sa kahit anong mga bersyon na meron. Kapag binura mo ang naturang app, makikita mo at mai-install ang mga compatible na bersyon. Madalas itong mangyari sa mga app na na-install gamit ang Google Play o sa ibang mga source, kung pirmado sila ng ibang certificate.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Di-compatible ang naka-install na bersyon sa kahit anong mga bersyon na meron. Kapag binura mo ang naturang app, makikita mo at mai-install ang mga compatible na bersyon. Madalas itong mangyari sa mga app na na-install gamit ang Google Play o sa ibang mga source, kung pirmado sila ng ibang certificate.</string>
<string name="send_installed_apps">Ibahagi ang mga naka-install na app</string>
<string name="app_repository">Repositoryo: %1$s</string>
<string name="app_size">Laki: %1$s</string>

View File

@ -389,10 +389,10 @@
<string name="app_installed_media">Fichier installé sur %s</string>
<string name="app_permission_storage">F-droid requiert l\'accès au stockage pour effectuer l\'installation. Veuillez accorder cette autorisation sur l\'écran suivant afin de poursuivre l\'installation.</string>
<string name="app_details__no_versions__none_compatible_with_device">Aucune version compatible avec votre appareil</string>
<string name="app_details__incompatible_mismatched_signature">La signature diffère de la version déjà installée</string>
<string name="app_details__incompatible_mismatched_signers">La signature diffère de la version déjà installée</string>
<string name="app_details__no_versions__show_incompat_versions">Pour tout de même afficher ici les versions incompatibles, activez la préférence « %1$s».</string>
<string name="app_details__no_versions__no_compatible_signatures">Aucune version ne possède une signature compatible</string>
<string name="app_details__no_versions__explain_incompatible_signatures">La version installée n\'est compatible avec aucune des versions disponibles. Désinstaller cette application vous permettra de consulter et installer les versions compatibles. Ce problème est fréquent avec les applications installées depuis Google Play ou d\'autres sources, si elles sont signées à l\'aide d\'un certificat différent.</string>
<string name="app_details__no_versions__no_compatible_signers">Aucune version ne possède une signature compatible</string>
<string name="app_details__no_versions__explain_incompatible_signers">La version installée n\'est compatible avec aucune des versions disponibles. Désinstaller cette application vous permettra de consulter et installer les versions compatibles. Ce problème est fréquent avec les applications installées depuis Google Play ou d\'autres sources, si elles sont signées à l\'aide d\'un certificat différent.</string>
<string name="app_list__dismiss_app_update">Mise à jour ignorée</string>
<string name="app_list__dismiss_vulnerable_app">Vulnérabilité ignorée</string>
<string name="app_list__dismiss_downloading_app">Téléchargement annulé</string>

View File

@ -246,7 +246,7 @@
<string name="app_inst_known_source">Ynstallearre (fan %s)</string>
<string name="app_details__no_versions__none_compatible_with_device">Gjin ferzjes dy kompatibel binne mei dit apparaat</string>
<string name="app_incompatible">Net kompatibel</string>
<string name="app_details__incompatible_mismatched_signature">Ûndertekening wykt ôf fan de ynstallearre ferzje</string>
<string name="app_details__incompatible_mismatched_signers">Ûndertekening wykt ôf fan de ynstallearre ferzje</string>
<string name="login_title">Ferifikaasje nedich</string>
<string name="no_such_app">Gjin app mei dy namme fûn.</string>
<string name="repo_error_empty_username">Brûkersnamme is leech, brûkersgegevens binne net feroare</string>
@ -272,6 +272,6 @@
<string name="install_history_and_metrics">Ynstallaasje skiednis en gegevens</string>
<string name="choose_bt_send">Ferstjoeringsmetoade foar Bluetooth Selektearje</string>
<string name="bluetooth_activity_not_found">Gjin ferstjoeringsmetoade foar Bluetooth fûn, selektearje der ien!</string>
<string name="app_details__no_versions__no_compatible_signatures">Gjin ferzjes mei komptabele ûndertekening</string>
<string name="app_details__no_versions__no_compatible_signers">Gjin ferzjes mei komptabele ûndertekening</string>
<string name="app_details__no_versions__show_incompat_versions">Om hjir dochs ynkompatibele ferzjes sjen te litten, set de \"%1$s\" ynstelling op wier.</string>
</resources>

View File

@ -229,11 +229,11 @@
<string name="about_site">Làrach-lìn</string>
<string name="about_version">Tionndadh</string>
<string name="about_title">Mu F-Droid</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Chan eil an tionndadh stàlaichte co-chòrdail le tionndadh sam bith a tha ri fhaighinn. Ma dhì-stàlaicheas tu an aplacaid, s urrainn dhut tionndaidhean co-chòrdail a shealltainn s a stàladh. Tachraidh seo gu tric le aplacaidean a chaidh a stàladh o Google Play no tùs eile ma chaidh an soidhneadh le teisteanas eile.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Chan eil an tionndadh stàlaichte co-chòrdail le tionndadh sam bith a tha ri fhaighinn. Ma dhì-stàlaicheas tu an aplacaid, s urrainn dhut tionndaidhean co-chòrdail a shealltainn s a stàladh. Tachraidh seo gu tric le aplacaidean a chaidh a stàladh o Google Play no tùs eile ma chaidh an soidhneadh le teisteanas eile.</string>
<string name="app_details__no_versions__none_compatible_with_device">Chan eil tionndadh ann a tha co-chòrdail leis an uidheam</string>
<string name="app_details__no_versions__no_compatible_signatures">Chan eil tionndadh le soidhneadh co-chòrdail ann</string>
<string name="app_details__no_versions__no_compatible_signers">Chan eil tionndadh le soidhneadh co-chòrdail ann</string>
<string name="app_details__no_versions__show_incompat_versions">Airson na tionndaidhean nach eil co-chòrdail a shealltainn an-seo co-dhiù, cuir an comas an roghainn “%1$s”.</string>
<string name="app_details__incompatible_mismatched_signature">Tha an soidhneadh diofraichte on tionndadh stàlaichte</string>
<string name="app_details__incompatible_mismatched_signers">Tha an soidhneadh diofraichte on tionndadh stàlaichte</string>
<string name="app_details_donate_prompt">Chaidh %1$s a chruthachadh le %2$s. Ceannaich cupan cofaidh dhaibh!</string>
<string name="app_details_donate_prompt_unknown_author">Ceannaich cupan cofaidh do luchd-leasachaidh %1$s!</string>
<string name="no_such_app">Cha deach aplacaid dhen leithid a lorg.</string>

View File

@ -262,9 +262,9 @@
<string name="repo_error_empty_username">Nome de usuario baleiro, non se mudaron as credenciais</string>
<string name="app_details_donate_prompt_unknown_author">Convida a un café ós desenvolvedores do %1$s!</string>
<string name="app_details_donate_prompt">%1$s foi creado por %2$s. Págalles un café!</string>
<string name="app_details__incompatible_mismatched_signature">A sinatura non coincide ca da versión instalada</string>
<string name="app_details__incompatible_mismatched_signers">A sinatura non coincide ca da versión instalada</string>
<string name="app_details__no_versions__show_incompat_versions">Para amosar versións incompatíbeis aquí de todos xeitos, activa a opción \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Non hai versións con sinatura compatíbel</string>
<string name="app_details__no_versions__no_compatible_signers">Non hai versións con sinatura compatíbel</string>
<string name="app_details__no_versions__none_compatible_with_device">Non hai versión compatíbeis co dispositivo</string>
<string name="about_license">Licenza</string>
<string name="app_version_x_available">Versión %1$s dispoñíbel</string>
@ -366,7 +366,7 @@
<item quantity="one">Actualizado hai %1$d día</item>
<item quantity="other">Actualizado hai %1$d días</item>
</plurals>
<string name="app_details__no_versions__explain_incompatible_signatures">A versión instalada non é compatíbel con ningunha das versións dispoñíbeis. Desinstalar a aplicación permitirache ollar e instalar as versións compatíbeis. Isto acontece acotío con aplicacións instaladas através da Google Play ou outras fontes, se foron asinadas cun certificado diferente.</string>
<string name="app_details__no_versions__explain_incompatible_signers">A versión instalada non é compatíbel con ningunha das versións dispoñíbeis. Desinstalar a aplicación permitirache ollar e instalar as versións compatíbeis. Isto acontece acotío con aplicacións instaladas através da Google Play ou outras fontes, se foron asinadas cun certificado diferente.</string>
<string name="app_permission_storage">O F-Droid precisa permiso para acceder ó almacenamento. Por favor concede ese permiso na seguinte pantalla para proseguer ca instalación.</string>
<string name="latest__empty_state__never_updated">Unha vez que a listaxe de aplicacións estiver actualizada, as aplicacións máis recentes serán amosadas aquí</string>
<string name="latest__empty_state__no_enabled_repos">Unha vez que habilites e actualices un repositorio, as aplicacións máis recentes serán amosadas aquí</string>

View File

@ -398,11 +398,11 @@
<string name="status_inserting_x_apps">פרטי היישומון נשמרים (%1$d/%2$d) מתוך %3$s</string>
<string name="app_installed_media">הקובץ הותקן אל %s</string>
<string name="app_permission_storage">ל־F-Droid נדרשת הרשאה לגשת לאחסון כדי להתקין זאת לאחסון. נא להרשות זאת במסך הבא כדי להמשיך בהתקנה.</string>
<string name="app_details__incompatible_mismatched_signature">חתימה שונה מהגרסה המותקנת</string>
<string name="app_details__incompatible_mismatched_signers">חתימה שונה מהגרסה המותקנת</string>
<string name="app_details__no_versions__show_incompat_versions">כדי להציג את הגרסה נטולת התמיכה להלן בכל מקרה, יש להפעיל את ההגדרה „%1$s“.</string>
<string name="app_details__no_versions__no_compatible_signatures">אין גרסאות עם חתימה תואמת</string>
<string name="app_details__no_versions__no_compatible_signers">אין גרסאות עם חתימה תואמת</string>
<string name="app_details__no_versions__none_compatible_with_device">אין גרסאות תואמות להתקן זה</string>
<string name="app_details__no_versions__explain_incompatible_signatures">הגרסה המותקנת אינה תואמת לכל הגרסאות הנתמכות. הסרת היישומון תאפשר לך לצפות ולהתקין גרסאות תואמות. מצב זה קורה לרוב עם יישומונים שמותקנים דרך Google Play או מקורות אחרים, אם היישומונים נחתמו עם אישור אחר.</string>
<string name="app_details__no_versions__explain_incompatible_signers">הגרסה המותקנת אינה תואמת לכל הגרסאות הנתמכות. הסרת היישומון תאפשר לך לצפות ולהתקין גרסאות תואמות. מצב זה קורה לרוב עם יישומונים שמותקנים דרך Google Play או מקורות אחרים, אם היישומונים נחתמו עם אישור אחר.</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">מצאנו חולשה אצל %1$s. אנו ממליצים להסיר את היישומון הזה מיידית.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">מצאנו חולשה אצל %1$s. אנו ממליצים לעדכן את היישומון הזה לגרסה החדשה ביותר מיידית.</string>
<string name="updates__app_with_known_vulnerability__ignore">התעלמות</string>

View File

@ -288,11 +288,11 @@
<string name="status_inserting_x_apps">एप्लिकेशन विवरण सहेजना (%1$d /%2$d) %3$s से</string>
<string name="app_installed_media">%s पर फ़ाइल स्थापित की गई</string>
<string name="app_permission_storage">F-Droid को स्टोरेज में इसे इंस्टॉल करने के लिए स्टोरेज अनुमति की आवश्यकता होती है। कृपया इसे अगली स्क्रीन पर संस्थापन के साथ आगे बढ़ने दें।</string>
<string name="app_details__incompatible_mismatched_signature">स्थापित संस्करण के लिए अलग हस्ताक्षर</string>
<string name="app_details__incompatible_mismatched_signers">स्थापित संस्करण के लिए अलग हस्ताक्षर</string>
<string name="app_details__no_versions__show_incompat_versions">वैसे भी असंगत संस्करण दिखाने के लिए, \"%1$s\" सेटिंग सक्षम करें।</string>
<string name="app_details__no_versions__no_compatible_signatures">संगत हस्ताक्षर के साथ कोई संस्करण नहीं</string>
<string name="app_details__no_versions__no_compatible_signers">संगत हस्ताक्षर के साथ कोई संस्करण नहीं</string>
<string name="app_details__no_versions__none_compatible_with_device">डिवाइस के साथ संगत कोई संस्करण नहीं</string>
<string name="app_details__no_versions__explain_incompatible_signatures">स्थापित संस्करण किसी भी उपलब्ध संस्करण के साथ संगत नहीं है। एप्लिकेशन को अनइंस्टॉल करने से आप संगत संस्करण देख और इंस्टॉल कर पाएंगे। यह अक्सर Google Play या अन्य स्रोतों के माध्यम से इंस्टॉल किए गए एप्लिकेशन के साथ होता है, अगर वे एक अलग प्रमाण पत्र द्वारा हस्ताक्षरित हैं।</string>
<string name="app_details__no_versions__explain_incompatible_signers">स्थापित संस्करण किसी भी उपलब्ध संस्करण के साथ संगत नहीं है। एप्लिकेशन को अनइंस्टॉल करने से आप संगत संस्करण देख और इंस्टॉल कर पाएंगे। यह अक्सर Google Play या अन्य स्रोतों के माध्यम से इंस्टॉल किए गए एप्लिकेशन के साथ होता है, अगर वे एक अलग प्रमाण पत्र द्वारा हस्ताक्षरित हैं।</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">हमें%1$s के साथ भेद्यता मिली। हम इस ऐप को तुरंत अनइंस्टॉल करने की सलाह देते हैं।</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">हमें%1$s के साथ भेद्यता मिली। हम तुरंत नवीनतम संस्करण को अपडेट करने की सलाह देते हैं।</string>
<string name="updates__app_with_known_vulnerability__ignore">नज़रअंदाज़ करना</string>

View File

@ -295,8 +295,8 @@
<string name="hide_all_notifications_summary">Ne prikazuj radnje u statusnoj traci i ploči s obavijestima.</string>
<string name="send_install_history">Šalji povijest instalacija</string>
<string name="install_history">Povijest instalacija</string>
<string name="app_details__incompatible_mismatched_signature">Različit potpis u odnosu na instaliranu verziju</string>
<string name="app_details__no_versions__no_compatible_signatures">Nema verzija s kompatibilnim potpisom</string>
<string name="app_details__incompatible_mismatched_signers">Različit potpis u odnosu na instaliranu verziju</string>
<string name="app_details__no_versions__no_compatible_signers">Nema verzija s kompatibilnim potpisom</string>
<string name="app_details__no_versions__none_compatible_with_device">Nema verzija kompatibilnih s uređajem</string>
<string name="about_forum">Forum podrške</string>
<string name="app_suggested">Predloženo</string>
@ -484,7 +484,7 @@
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Pronašli smo sigurnosnu prijetnju u %1$s. Preporučujemo da odmah ažurirate ovu aplikaciju na najnoviju verziju.</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">Pronašli smo sigurnosnu prijetnju u %1$s. Preporučujemo da odmah deinstalirate ovu aplikaciju.</string>
<string name="app_permission_storage">F-Droid zahtjeva dopuštenje pristupa pohrani kako bi ovo instalirao u pohranu uređaja. Dopustite pristup pohrani na sljedećem zaslonu kako biste nastavili s instalacijom.</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Instalirana verzija nije kompatibilna s nijednom dostupnom verzijom. Deinstaliranje aplikacije omogućiti će vam pregled i instaliranje kompatibilnih verzija. Ovo se često događa s aplikacijama instaliranim putem Google Play ili drugih izvora, ako su potpisane drugim certifikatom.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Instalirana verzija nije kompatibilna s nijednom dostupnom verzijom. Deinstaliranje aplikacije omogućiti će vam pregled i instaliranje kompatibilnih verzija. Ovo se često događa s aplikacijama instaliranim putem Google Play ili drugih izvora, ako su potpisane drugim certifikatom.</string>
<string name="app_details__no_versions__show_incompat_versions">Za prikaz nekompatibilnih verzija omogućite postavku \"%1$s\".</string>
<string name="scan_removable_storage_summary">Traži repozitorije paketa na prijenosnoj pohrani kao što su SD kartice i USB pohrana</string>
<string name="theme_follow_system">Slijedi sustav</string>

View File

@ -262,9 +262,9 @@
<string name="force_old_index_summary">Abban az esetben, ha hibák vagy kompatibilitási problémák vannak, használja az XML alkalmazás indexet</string>
<string name="app_details_donate_prompt_unknown_author">Vegyen egy kávét a(z) %1$s fejlesztőinek!</string>
<string name="app_details__no_versions__show_incompat_versions">Az inkompatibilis verziók megjelenítéséhez engedélyezze az „%1$s” beállítást.</string>
<string name="app_details__no_versions__no_compatible_signatures">Nem található kompatibilis aláírással rendelkező verzió</string>
<string name="app_details__no_versions__no_compatible_signers">Nem található kompatibilis aláírással rendelkező verzió</string>
<string name="app_details__no_versions__none_compatible_with_device">Nem található az eszközével kompatibilis verzió</string>
<string name="app_details__no_versions__explain_incompatible_signatures">A telepített verzió nem kompatibilis egyetlen elérhető verzióval sem. Az alkalmazás törlése lehetőséget ad a kompatibilis verziók megtekintésére, és telepítésére. Ez gyakran olyan alkalmazásoknál fordul elő, amik a Google Play áruházból, vagy egyéb forrásból lettek telepítve, és egy másik tanúsítvánnyal vannak aláírva.</string>
<string name="app_details__no_versions__explain_incompatible_signers">A telepített verzió nem kompatibilis egyetlen elérhető verzióval sem. Az alkalmazás törlése lehetőséget ad a kompatibilis verziók megtekintésére, és telepítésére. Ez gyakran olyan alkalmazásoknál fordul elő, amik a Google Play áruházból, vagy egyéb forrásból lettek telepítve, és egy másik tanúsítvánnyal vannak aláírva.</string>
<string name="app_permission_storage">Az F-Droidnak tárhely engedéllyel kell rendelkeznie, hogy erre a tárhelyre telepíthessen. A telepítés folytatásához engedélyezze a következő képernyőn.</string>
<string name="app_list_download_ready">Letöltve, készen áll a telepítésre</string>
<string name="app_list__dismiss_app_update">Frissítés figyelmen kívül hagyva</string>
@ -298,7 +298,7 @@
<string name="by_author_format">Készítette: %s</string>
<string name="force_old_index">Régi indexformátum kényszerítése</string>
<string name="app_details_donate_prompt">A(z) %1$s alkalmazást %2$s készítette. Vegyen nekik egy kávét!</string>
<string name="app_details__incompatible_mismatched_signature">A telepített verziótól eltérő aláírás</string>
<string name="app_details__incompatible_mismatched_signers">A telepített verziótól eltérő aláírás</string>
<string name="app_version_x_available">%1$s verzió elérhető</string>
<string name="app_version_x_installed">%1$s verzió</string>
<string name="app_recommended_version_installed">%1$s verzió (ajánlott)</string>

View File

@ -370,10 +370,10 @@
<string name="app_list__dismiss_app_update">Pembaruan diabaikan</string>
<string name="app_list__dismiss_downloading_app">Pengunduhan dibatalkan</string>
<string name="updates__app_with_known_vulnerability__ignore">Abaikan</string>
<string name="app_details__incompatible_mismatched_signature">Tanda tangan berbeda dengan versi yang terpasang</string>
<string name="app_details__no_versions__no_compatible_signatures">Tidak ada versi dengan tanda tangan yang cocok</string>
<string name="app_details__incompatible_mismatched_signers">Tanda tangan berbeda dengan versi yang terpasang</string>
<string name="app_details__no_versions__no_compatible_signers">Tidak ada versi dengan tanda tangan yang cocok</string>
<string name="app_details__no_versions__none_compatible_with_device">Tidak ada versi yang kompatibel dengan perangkat ini</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Versi yang terpasang tidak kompatibel dengan semua versi yang tersedia. Menghapus aplikasi akan memungkinkan Anda melihat dan memasang versi yang kompatibel. Ini biasanya terjadi pada aplikasi yang terinstal melalui Google Play atau sumber lain, jika aplikasi tersebut ditandatangani dengan sertifikat berbeda.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Versi yang terpasang tidak kompatibel dengan semua versi yang tersedia. Menghapus aplikasi akan memungkinkan Anda melihat dan memasang versi yang kompatibel. Ini biasanya terjadi pada aplikasi yang terinstal melalui Google Play atau sumber lain, jika aplikasi tersebut ditandatangani dengan sertifikat berbeda.</string>
<string name="app_list__dismiss_vulnerable_app">Kerentanan diabaikan</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">Kami menemukan celah keamanan dengan %1$s. Kami sarankan menghapus aplikasi ini segera.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Kami menemukan celah keamanan dengan %1$s. Kami sarankan untuk segera memperbarui aplikasi ke versi terbaru.</string>

View File

@ -395,11 +395,11 @@
</plurals>
<string name="force_old_index">Þvinga gamla yfirlitssniðið</string>
<string name="force_old_index_summary">Ef um er að ræða galla eða vandamál með samhæfni, má nota XML-yfirlitsvísi forritsins</string>
<string name="app_details__incompatible_mismatched_signature">Undirritun er önnur en á uppsettri útgáfu</string>
<string name="app_details__incompatible_mismatched_signers">Undirritun er önnur en á uppsettri útgáfu</string>
<string name="app_details__no_versions__show_incompat_versions">Til að birta hér samt ósamhæfðar útgáfur, virkjaðu þá \"%1$s\" stillinguna.</string>
<string name="app_details__no_versions__no_compatible_signatures">Engin útgáfa með samhæfða undirritun</string>
<string name="app_details__no_versions__no_compatible_signers">Engin útgáfa með samhæfða undirritun</string>
<string name="app_details__no_versions__none_compatible_with_device">Engar útgáfur samhæfanlegar við tækið</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Uppsetta útgáfan er ekki samhæfð við neinar tiltækar útgáfur. Ef þú hendir forritinu út, geturðu skoðað og sett upp samhæfða útgáfu. Þetta gerist oft með forrit sem sett eru upp í gegnum Google Play eða aðrar slíkar leiðir, ef forritin eru undirrituð með mismunandi skilríkjum.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Uppsetta útgáfan er ekki samhæfð við neinar tiltækar útgáfur. Ef þú hendir forritinu út, geturðu skoðað og sett upp samhæfða útgáfu. Þetta gerist oft með forrit sem sett eru upp í gegnum Google Play eða aðrar slíkar leiðir, ef forritin eru undirrituð með mismunandi skilríkjum.</string>
<string name="app_installed_media">Skrá sett upp í %s</string>
<string name="app_permission_storage">F-Droid þarf aðgang að gagnageymslum til að geta sett þetta upp í geymsluminni. Þú ættir að heimila þetta á næsta skjá til þess að halda áfram með uppsetninguna.</string>
<string name="app_list_download_ready">Þegar sótt, tilbúið til uppsetningar</string>

View File

@ -397,11 +397,11 @@
<string name="app_installed_media">File installato in %s</string>
<string name="status_inserting_x_apps">Salvataggio dettagli app (%1$d/%2$d) da %3$s</string>
<string name="app_permission_storage">F-Droid ha bisogno dell\'autorizzazione di archiviazione per installare questo nella memoria. Per favore abilitala nella prossima schermata per procedere con l\'installazione.</string>
<string name="app_details__incompatible_mismatched_signature">La firma non coincide con quella della versione installata</string>
<string name="app_details__incompatible_mismatched_signers">La firma non coincide con quella della versione installata</string>
<string name="app_details__no_versions__show_incompat_versions">Per mostrare comunque le versioni incompatibili, abilita l\'impostazione \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Nessuna versione con una firma compatibile</string>
<string name="app_details__no_versions__no_compatible_signers">Nessuna versione con una firma compatibile</string>
<string name="app_details__no_versions__none_compatible_with_device">Nessuna versione compatibile con il dispositivo</string>
<string name="app_details__no_versions__explain_incompatible_signatures">La versione installata non è compatibile con nessuna versione disponibile. Disinstallare l\'applicazione ti permetterà di visualizzare ed installare le versioni compatibili. Questo accade spesso con applicazioni installate da Google Play o da altre sorgenti se firmate con un certificato differente.</string>
<string name="app_details__no_versions__explain_incompatible_signers">La versione installata non è compatibile con nessuna versione disponibile. Disinstallare l\'applicazione ti permetterà di visualizzare ed installare le versioni compatibili. Questo accade spesso con applicazioni installate da Google Play o da altre sorgenti se firmate con un certificato differente.</string>
<string name="app_list__dismiss_app_update">Aggiornamento ignorato</string>
<string name="app_list__dismiss_vulnerable_app">Vulnerabilità ignorata</string>
<string name="app_list__dismiss_downloading_app">Download annullato</string>

View File

@ -363,11 +363,11 @@
<string name="app_installed_media">%sにファイルをインストールしました</string>
<string name="app_permission_storage">F-Droidがストレージにインストールするためにはストレージの権限が必要です。インストールを続行するには次の画面で許可してください。</string>
<string name="status_inserting_x_apps">%3$sよりアプリの詳細(%1$d/%2$d)を保存中</string>
<string name="app_details__incompatible_mismatched_signature">インストールされたバージョンと署名が異なります</string>
<string name="app_details__incompatible_mismatched_signers">インストールされたバージョンと署名が異なります</string>
<string name="app_details__no_versions__show_incompat_versions">ここに互換性のないバージョンを表示するには、「%1$s」設定を有効にします。</string>
<string name="app_details__no_versions__no_compatible_signatures">互換性のある署名のバージョンがありません</string>
<string name="app_details__no_versions__no_compatible_signers">互換性のある署名のバージョンがありません</string>
<string name="app_details__no_versions__none_compatible_with_device">端末と互換性のあるバージョンがありません</string>
<string name="app_details__no_versions__explain_incompatible_signatures">インストールされているバージョンは、利用可能なバージョンと互換性がありません。アプリをアンインストールすると、互換性のあるバージョンを表示したりインストールすることができます。これは多くの場合、Google Playやその他のソースからインストールされたアプリが、別の証明書で署名されている場合に発生します。</string>
<string name="app_details__no_versions__explain_incompatible_signers">インストールされているバージョンは、利用可能なバージョンと互換性がありません。アプリをアンインストールすると、互換性のあるバージョンを表示したりインストールすることができます。これは多くの場合、Google Playやその他のソースからインストールされたアプリが、別の証明書で署名されている場合に発生します。</string>
<string name="app_list__dismiss_app_update">アップデートを無視しました</string>
<string name="app_list__dismiss_vulnerable_app">脆弱性を無視しました</string>
<string name="app_list__dismiss_downloading_app">ダウンロードをキャンセルしました</string>

View File

@ -192,11 +192,11 @@
<string name="app_list_download_ready">ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗಿದೆ, ಸ್ಥಾಪಿಸಲು ಸಿದ್ಧವಾಗಿದೆ</string>
<string name="app_installed_media">ಫೈಲ್ ಅನ್ನು %s ಗೆ ಸ್ಥಾಪಿಸಲಾಗಿದೆ</string>
<string name="app_permission_storage">ಇದನ್ನು ಶೇಖರಣೆಗೆ ಸ್ಥಾಪಿಸಲು ಎಫ್-ಡ್ರಾಯಿಡ್‌ಗೆ ಶೇಖರಣಾ ಅನುಮತಿ ಅಗತ್ಯವಿದೆ. ಅನುಸ್ಥಾಪನೆಯೊಂದಿಗೆ ಮುಂದುವರಿಯಲು ದಯವಿಟ್ಟು ಮುಂದಿನ ಪರದೆಯಲ್ಲಿ ಅದನ್ನು ಅನುಮತಿಸಿ.</string>
<string name="app_details__incompatible_mismatched_signature">ಸ್ಥಾಪಿಸಲಾದ ಆವೃತ್ತಿಗೆ ವಿಭಿನ್ನ ಸಹಿ</string>
<string name="app_details__incompatible_mismatched_signers">ಸ್ಥಾಪಿಸಲಾದ ಆವೃತ್ತಿಗೆ ವಿಭಿನ್ನ ಸಹಿ</string>
<string name="app_details__no_versions__show_incompat_versions">ಹೇಗಾದರೂ ಹೊಂದಾಣಿಕೆಯಾಗದ ಆವೃತ್ತಿಗಳನ್ನು ಇಲ್ಲಿ ತೋರಿಸಲು, \"%1$s\" ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ.</string>
<string name="app_details__no_versions__no_compatible_signatures">ಹೊಂದಾಣಿಕೆಯ ಸಹಿಯೊಂದಿಗೆ ಯಾವುದೇ ಆವೃತ್ತಿಗಳಿಲ್ಲ</string>
<string name="app_details__no_versions__no_compatible_signers">ಹೊಂದಾಣಿಕೆಯ ಸಹಿಯೊಂದಿಗೆ ಯಾವುದೇ ಆವೃತ್ತಿಗಳಿಲ್ಲ</string>
<string name="app_details__no_versions__none_compatible_with_device">ಯಾವುದೇ ಆವೃತ್ತಿಗಳು ಸಾಧನದೊಂದಿಗೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ</string>
<string name="app_details__no_versions__explain_incompatible_signatures">ಸ್ಥಾಪಿಸಲಾದ ಆವೃತ್ತಿಯು ಲಭ್ಯವಿರುವ ಯಾವುದೇ ಆವೃತ್ತಿಗಳೊಂದಿಗೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ. ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅಸ್ಥಾಪಿಸುವುದರಿಂದ ಹೊಂದಾಣಿಕೆಯ ಆವೃತ್ತಿಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಮತ್ತು ಸ್ಥಾಪಿಸಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಗೂಗಲ್ ಪ್ಲೇ ಅಥವಾ ಇತರ ಮೂಲಗಳ ಮೂಲಕ ಸ್ಥಾಪಿಸಲಾದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಬೇರೆ ಪ್ರಮಾಣಪತ್ರದಿಂದ ಸಹಿ ಮಾಡಿದ್ದರೆ ಇದು ಹೆಚ್ಚಾಗಿ ಸಂಭವಿಸುತ್ತದೆ.</string>
<string name="app_details__no_versions__explain_incompatible_signers">ಸ್ಥಾಪಿಸಲಾದ ಆವೃತ್ತಿಯು ಲಭ್ಯವಿರುವ ಯಾವುದೇ ಆವೃತ್ತಿಗಳೊಂದಿಗೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ. ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅಸ್ಥಾಪಿಸುವುದರಿಂದ ಹೊಂದಾಣಿಕೆಯ ಆವೃತ್ತಿಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಮತ್ತು ಸ್ಥಾಪಿಸಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಗೂಗಲ್ ಪ್ಲೇ ಅಥವಾ ಇತರ ಮೂಲಗಳ ಮೂಲಕ ಸ್ಥಾಪಿಸಲಾದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಬೇರೆ ಪ್ರಮಾಣಪತ್ರದಿಂದ ಸಹಿ ಮಾಡಿದ್ದರೆ ಇದು ಹೆಚ್ಚಾಗಿ ಸಂಭವಿಸುತ್ತದೆ.</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">%1$s ನೊಂದಿಗೆ ದುರ್ಬಲತೆಯನ್ನು ನಾವು ಕಂಡುಕೊಂಡಿದ್ದೇವೆ. ಈ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ತಕ್ಷಣ ಅಸ್ಥಾಪಿಸಲು ನಾವು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">%1$s ನೊಂದಿಗೆ ದುರ್ಬಲತೆಯನ್ನು ನಾವು ಕಂಡುಕೊಂಡಿದ್ದೇವೆ. ಹೊಸ ಆವೃತ್ತಿಗೆ ತಕ್ಷಣ ನವೀಕರಿಸಲು ನಾವು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ.</string>
<string name="updates__app_with_known_vulnerability__ignore">ನಿರ್ಲಕ್ಷಿಸಿ</string>

View File

@ -283,8 +283,8 @@
<string name="update_auto_install_summary">사용자에게 알리고, 백그라운드에서 업데이트 앱을 다운로드 및 설치합니다</string>
<string name="app_details_donate_prompt_unknown_author">%1$s의 개발자에게 후원해주세요!</string>
<string name="app_details_donate_prompt">%1$s 앱은 %2$s님이 만들었습니다. 그들에게 후원해주세요!</string>
<string name="app_details__incompatible_mismatched_signature">설치된 버전의 서명과 다름</string>
<string name="app_details__no_versions__no_compatible_signatures">호환되는 서명으로 된 버전이 없습니다</string>
<string name="app_details__incompatible_mismatched_signers">설치된 버전의 서명과 다름</string>
<string name="app_details__no_versions__no_compatible_signers">호환되는 서명으로 된 버전이 없습니다</string>
<string name="app_details__no_versions__none_compatible_with_device">기기와 호환되는 버전이 없습니다</string>
<string name="app_version_x_available">버전 %1$s 사용 가능</string>
<string name="app_version_x_installed">버전 %1$s</string>
@ -368,7 +368,7 @@
<item quantity="other">%1$d년 전에 업데이트됨</item>
</plurals>
<string name="app_details__no_versions__show_incompat_versions">어쨌든 여기에 호환되지 않는 버전을 보여주려면, \"%1$s\" 설정을 활성화하세요.</string>
<string name="app_details__no_versions__explain_incompatible_signatures">설치된 버전은 모든 사용 가능한 버전과 호환되지 않습니다. 앱을 제거하는 것은 호환되는 버전을 보고 설치할 수 있도록 합니다. 이는 때때로, 앱들이 다른 인증서으로 서명되어 있다면, Google Play 또는 다른 출처를 통해 설치된 앱에서 발생합니다.</string>
<string name="app_details__no_versions__explain_incompatible_signers">설치된 버전은 모든 사용 가능한 버전과 호환되지 않습니다. 앱을 제거하는 것은 호환되는 버전을 보고 설치할 수 있도록 합니다. 이는 때때로, 앱들이 다른 인증서으로 서명되어 있다면, Google Play 또는 다른 출처를 통해 설치된 앱에서 발생합니다.</string>
<string name="app_permission_storage">F-Droid는 이것을 저장공간에 설치하려면 저장공간 권한이 필요합니다. 설치를 계속하려면 다음 화면에서 그것을 허용해주세요.</string>
<string name="app_list__dismiss_vulnerable_app">취약점이 무시됨</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">우리는 %1$s으로 취약점을 찾았습니다. 우리는 즉시 이 앱을 제거할 것을 권장합니다.</string>

View File

@ -233,7 +233,7 @@
<string name="menu_ignore_all">Nepaisyti visų atnaujinimų</string>
<string name="menu_ignore_this">Nepaisyti šio atnaujinimo</string>
<string name="menu_issues">Klaidos</string>
<string name="app_details__no_versions__no_compatible_signatures">Nėra versijų su suderinamu parašu</string>
<string name="app_details__no_versions__no_compatible_signers">Nėra versijų su suderinamu parašu</string>
<string name="app_permission_storage">F-Droid reikia leidimo diegti į pasirinktą saugyklą. Norėdami tęsti leiskite tai kitame pasirinkimo lange.</string>
<string name="send_installed_apps_csv">Programėlės, kurias F-Droid įdiegė kaip CSV failą</string>
<string name="bluetooth_activity_not_found">Nerasta Bluetooth siuntimo metodų, pasirinkite metodą!</string>
@ -345,7 +345,7 @@
<string name="local_repo_https_on">Vietinei repozitorijai naudoti šifruotą HTTPS:// ryšį</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Programėlėje %1$s rastas pažeidžiamumas. Rekomenduojame nedelsiant šią programėlę atnaujinti.</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">Programėlėje %1$s rastas pažeidžiamumas. Rekomenduojame nedelsiant šią programėlę pašalinti.</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Įdiegta versija nėra suderinama su jokia prieinama versija. Pašalinę programėlę, galėsite matyti ir įsidiegti suderinamas versijas. Taip dažnai nutinka su programėlėmis, kurios buvo įdiegtos per „Google Play“ arba iš kitų šaltinių, kuomet jos būna pasirašytos kitokiu liudijimu.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Įdiegta versija nėra suderinama su jokia prieinama versija. Pašalinę programėlę, galėsite matyti ir įsidiegti suderinamas versijas. Taip dažnai nutinka su programėlėmis, kurios buvo įdiegtos per „Google Play“ arba iš kitų šaltinių, kuomet jos būna pasirašytos kitokiu liudijimu.</string>
<string name="send_history_csv">%s įdiegimų istoriją kaip CSV failą</string>
<string name="scan_removable_storage_summary">Ieškoti paketų saugyklų keičiamosiose laikmenose, tokiose kaip SD kortelės ar USB atmintukai</string>
<string name="proxy_port_summary">Jūsų įgaliotojo serverio prievado numeris (pvz., 8118)</string>
@ -424,7 +424,7 @@
<string name="panic_apps_to_uninstall">Programėlės, kurios bus išdiegtos ir visi jų duomenys pašalinti</string>
<string name="panic_will_be_wiped">Bus išdiegti ir visi duomenys pašalinti</string>
<string name="panic_settings_summary">Veiksmai, kurie turėtų būti įvykdyti nelaimės atveju</string>
<string name="app_details__incompatible_mismatched_signature">Skiriasi parašas nuo įdiegtos versijos</string>
<string name="app_details__incompatible_mismatched_signers">Skiriasi parašas nuo įdiegtos versijos</string>
<string name="send_version_and_uuid_summary">Pridėti šios programėlės versiją ir atsitiktinai sugeneruotą ID parsisiunčiant, pakeitimas suveikia restartavus programėlę.</string>
<string name="open_qr_code_scanner">Atidaryti QR kodo skenavimą</string>
<string name="swap_scan_qr">QR kodas</string>

View File

@ -160,11 +160,11 @@
<string name="over_network_always_summary">Vienmēr izmantot šo savienojumu, kad tas ir pieejams</string>
<string name="over_network_on_demand_summary">Izmantot tikai šo savienojumu, kad es nospiežu lai lejupielādētu</string>
<string name="over_network_never_summary">Nekad nelejupielādēt jebko izmantojot šo savienojumu</string>
<string name="app_details__incompatible_mismatched_signature">Cits paraksts nekā ieinstelētajai versijai</string>
<string name="app_details__incompatible_mismatched_signers">Cits paraksts nekā ieinstelētajai versijai</string>
<string name="app_details__no_versions__show_incompat_versions">Lai uzrādītu nesaderīgu versiju tik un tā, iespējoiet \"%1$s\" iestatījumu.</string>
<string name="app_details__no_versions__no_compatible_signatures">Nav versiju ar saderīgu parakstu</string>
<string name="app_details__no_versions__no_compatible_signers">Nav versiju ar saderīgu parakstu</string>
<string name="app_details__no_versions__none_compatible_with_device">Nav versiju saderīga ar šo ierīci</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Ieinstelētā versija nav saderīga ar jebkuru pieejamu versiju. Atinstalējot aplikāciju ļaus jums apskatīt un ieinstalēt saderīgu versiju. Šīs parasti notiek ar aplikācijām, kuras tika ieinstalētas izmantojot Google Play veikalu vai no kāda cita avota, ja tie ir tikuši parakstīti ar citu sertifikātu.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Ieinstelētā versija nav saderīga ar jebkuru pieejamu versiju. Atinstalējot aplikāciju ļaus jums apskatīt un ieinstalēt saderīgu versiju. Šīs parasti notiek ar aplikācijām, kuras tika ieinstalētas izmantojot Google Play veikalu vai no kāda cita avota, ja tie ir tikuši parakstīti ar citu sertifikātu.</string>
<string name="about_forum">Atbalsta forums</string>
<string name="app_suggested">Ieteiktie</string>
<string name="app_permission_storage">F-Droid ir nepieciešams krātuves piekļuve lai ieinstalētu šo uz krātuves. Lūdzu atļaut to nākamējā paziņojumā lai varētu turpināt ar lejupielādi.</string>

View File

@ -379,11 +379,11 @@
<string name="app_installed_media">ഫയൽ %s ൽ പതിപ്പിച്ചു</string>
<string name="app_permission_storage">സ്റ്റോറേജിലേക്കു ഇൻസ്റ്റാൾ ചെയ്യുന്നതിന് എഫ് -ഡ്രോയിഡിന് സ്റ്റോറേജ് അനുമതി ആവശ്യമാണ്. അത് അടുത്ത സ്‌ക്രീനിൽ അനുവദിച്ച ശേഷം ഇൻസ്റ്റാൾ തുടരൂ.</string>
<string name="empty_search_available_app_list">യോജ്യമായ ആപ്പ്ളിക്കേഷൻ ലഭ്യമല്ല.</string>
<string name="app_details__incompatible_mismatched_signature">ഉള്ള വേർഷന്റേതുമായി വ്യത്യാസമുള്ള സിഗ്നേച്ചർ</string>
<string name="app_details__incompatible_mismatched_signers">ഉള്ള വേർഷന്റേതുമായി വ്യത്യാസമുള്ള സിഗ്നേച്ചർ</string>
<string name="app_details__no_versions__show_incompat_versions">പൊരുത്തപ്പെടാത്ത പതിപ്പുകളും എന്തായാലും കാണുന്നതിനായി \"%1$s\" ക്രമീകരിക്കുക.</string>
<string name="app_details__no_versions__no_compatible_signatures">സിഗ്നേച്ചർ പൊരുത്തപ്പെടുന്ന പതിപ്പുകൾ ഇല്ല</string>
<string name="app_details__no_versions__no_compatible_signers">സിഗ്നേച്ചർ പൊരുത്തപ്പെടുന്ന പതിപ്പുകൾ ഇല്ല</string>
<string name="app_details__no_versions__none_compatible_with_device">ഉപകരണത്തിന് യോജിക്കുന്ന പതിപ്പുകൾ ഇല്ല</string>
<string name="app_details__no_versions__explain_incompatible_signatures">ഉള്ള പതിപ്പും(വേർഷൻ) ലഭ്യമായ പതിപ്പുകളും പൊരുത്തപ്പെടില്ല. ആപ്പ് അൺഇൻസ്റ്റാൾ ചെയ്തു കളഞ്ഞാൽ യോജ്യമായ പതിപ്പുകൾ കാണാം. വ്യത്യാസപ്പെട്ട സർട്ടിഫിക്കേറ്റ് ഉള്ള ആപ്പ് ഗൂഗിൾ പ്ലേ വഴിയോ മറ്റു മാർഗങ്ങളിലോ ഇൻസ്റ്റാൾ ചെയ്താൽ ഇതു സംഭവിക്കാം.</string>
<string name="app_details__no_versions__explain_incompatible_signers">ഉള്ള പതിപ്പും(വേർഷൻ) ലഭ്യമായ പതിപ്പുകളും പൊരുത്തപ്പെടില്ല. ആപ്പ് അൺഇൻസ്റ്റാൾ ചെയ്തു കളഞ്ഞാൽ യോജ്യമായ പതിപ്പുകൾ കാണാം. വ്യത്യാസപ്പെട്ട സർട്ടിഫിക്കേറ്റ് ഉള്ള ആപ്പ് ഗൂഗിൾ പ്ലേ വഴിയോ മറ്റു മാർഗങ്ങളിലോ ഇൻസ്റ്റാൾ ചെയ്താൽ ഇതു സംഭവിക്കാം.</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">%1$s ൽ ഞങ്ങൾ ഒരു സുരക്ഷാ ദൗർബല്യം കണ്ടെത്തി. ഇത് ഉടൻ തന്നെ ഒഴിവാക്കാൻ നിർദ്ദേശിക്കുന്നു.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">%1$s ൽ ഞങ്ങൾ ഒരു സുരക്ഷാ ദൗർബല്യം കണ്ടെത്തി. ഉടൻ തന്നെ അതിന്റെ ഏറ്റവും പുതിയ പതിപ്പിലേക്കു മാറാൻ ആവശ്യപ്പെടുന്നു.</string>
<string name="updates__app_with_known_vulnerability__ignore">അവഗണിക്കുക</string>

View File

@ -384,11 +384,11 @@
<string name="about_forum">Дэмжлэгийн форум</string>
<string name="about_site">Вэбсайт</string>
<string name="about_version">Хувилбар</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Суулгасан хувилбар нь аль ч хувилбартай тохирохгүй байна. Програмыг устгаснаар тохирох хувилбаруудыг үзэх, суулгах боломжтой болно. Энэ нь ихэвчлэн өөр гэрчилгээгээр гарын үсэг зурсан тохиолдолд Google Play эсвэл бусад эх сурвалжаар суулгасан програмуудад тохиолддог.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Суулгасан хувилбар нь аль ч хувилбартай тохирохгүй байна. Програмыг устгаснаар тохирох хувилбаруудыг үзэх, суулгах боломжтой болно. Энэ нь ихэвчлэн өөр гэрчилгээгээр гарын үсэг зурсан тохиолдолд Google Play эсвэл бусад эх сурвалжаар суулгасан програмуудад тохиолддог.</string>
<string name="app_details__no_versions__none_compatible_with_device">Төхөөрөмжтэй тохирох хувилбар алга</string>
<string name="app_details__no_versions__no_compatible_signatures">Тохирох гарын үсэг бүхий хувилбар байхгүй</string>
<string name="app_details__no_versions__no_compatible_signers">Тохирох гарын үсэг бүхий хувилбар байхгүй</string>
<string name="app_details__no_versions__show_incompat_versions">Таарахгүй хувилбаруудыг энд харуулахын тулд \"%1$s\" тохиргоог идэвхжүүлээрэй.</string>
<string name="app_details__incompatible_mismatched_signature">Суулгасан хувилбарт өөр гарын үсэг</string>
<string name="app_details__incompatible_mismatched_signers">Суулгасан хувилбарт өөр гарын үсэг</string>
<string name="app_details_donate_prompt">%1$s нь %2$s бүтээсэн. Тэдэнд кофе худалдаж аваарай!</string>
<string name="app_details_donate_prompt_unknown_author">%1$s кофе үйлдвэрлэгчдийг худалдаж аваарай!</string>
<string name="no_such_app">Ийм програм олдсонгүй.</string>

View File

@ -91,11 +91,11 @@
<string name="about_forum">सहाय्यता</string>
<string name="about_site">संकेतस्थळ</string>
<string name="about_version">आवृत्ती</string>
<string name="app_details__no_versions__explain_incompatible_signatures">स्थापना झालेली आवृत्ती उपलब्ध असणाऱ्या कोणत्याही आवृत्तीशी संगत नाही. अँपची अस्थापना केल्यास तुम्ही संगत आवृत्या पाहू तसेच स्थापित देखील करू शकता. गुगल प्ले द्वारे अथवा अन्य इतर ठिकाणाहून स्थापित केलेले अँप्स जर अन्य प्रमाणित हस्ताक्षर असल्यास हे बहुतांशी पाहावयास मिळते.</string>
<string name="app_details__no_versions__explain_incompatible_signers">स्थापना झालेली आवृत्ती उपलब्ध असणाऱ्या कोणत्याही आवृत्तीशी संगत नाही. अँपची अस्थापना केल्यास तुम्ही संगत आवृत्या पाहू तसेच स्थापित देखील करू शकता. गुगल प्ले द्वारे अथवा अन्य इतर ठिकाणाहून स्थापित केलेले अँप्स जर अन्य प्रमाणित हस्ताक्षर असल्यास हे बहुतांशी पाहावयास मिळते.</string>
<string name="app_details__no_versions__none_compatible_with_device">यंत्रासाठी एकही आवृत्ती उपलब्ध नाही</string>
<string name="app_details__no_versions__show_incompat_versions">विसंगत आवृत्ती देखील दाखवण्यासाठी, \"%1$s\" सेटिंग सक्षम .</string>
<string name="app_details__no_versions__no_compatible_signatures">हस्ताक्षरीत असणारी एकही अनुकूल आवृत्ती</string>
<string name="app_details__incompatible_mismatched_signature">स्थापित आवृत्तीसाठी वेगळे हस्ताक्षर</string>
<string name="app_details__no_versions__no_compatible_signers">हस्ताक्षरीत असणारी एकही अनुकूल आवृत्ती</string>
<string name="app_details__incompatible_mismatched_signers">स्थापित आवृत्तीसाठी वेगळे हस्ताक्षर</string>
<string name="app_details_donate_prompt">%1$s,%2$sद्वारे विकसित करण्यात . त्यांच्यासाठी एक कॉफी खरीदी करा!</string>
<string name="app_details_donate_prompt_unknown_author">%1$s च्या विकासकांसाठी एक कॉफी खरेदी करा!</string>
<string name="update_auto_install">स्वयंचलितरीत्या अद्यापनाची स्थापना</string>

View File

@ -387,11 +387,11 @@
<string name="app_list_download_ready">Nedlastet, klar til installasjon</string>
<string name="download_404">Den etterspurte fila ble ikke funnet.</string>
<string name="status_inserting_x_apps">Lagrer programdetaljer (%1$d/%2$d) fra %3$s</string>
<string name="app_details__incompatible_mismatched_signature">Forskjellig signatur enn installert versjon</string>
<string name="app_details__incompatible_mismatched_signers">Forskjellig signatur enn installert versjon</string>
<string name="app_details__no_versions__show_incompat_versions">For å vise ukompatible versjoner her uansett, skru på \"%1$s\"-innstillingen.</string>
<string name="app_details__no_versions__no_compatible_signatures">Ingen versjoner med kompatibel signatur</string>
<string name="app_details__no_versions__no_compatible_signers">Ingen versjoner med kompatibel signatur</string>
<string name="app_details__no_versions__none_compatible_with_device">Ingen versjoner kompatible med enhet</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Den installerte versjonen er ikke kompatibel med noen tilgjengelig versjoner. Å avinstallere programmet vil la deg vise og installere kompatible versjoner. Dette skjer ofte når programmer er installert via Google Play eller fra andre kilder, hvis de er signert med et annet sertifikat.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Den installerte versjonen er ikke kompatibel med noen tilgjengelig versjoner. Å avinstallere programmet vil la deg vise og installere kompatible versjoner. Dette skjer ofte når programmer er installert via Google Play eller fra andre kilder, hvis de er signert med et annet sertifikat.</string>
<string name="app_list__dismiss_app_update">Oppdatering oversett</string>
<string name="app_list__dismiss_vulnerable_app">Sårbarhet ignorert</string>
<string name="app_list__dismiss_downloading_app">Nedlasting avbrutt</string>

View File

@ -102,11 +102,11 @@
<string name="no_such_app">Er is geen dergelijke app gevonden.</string>
<string name="app_details_donate_prompt_unknown_author">Schenk de ontwikkelaars van %1$s een kopje koffie!</string>
<string name="app_details_donate_prompt">%1$s is gemaakt door %2$s. Schenk ze een kopje koffie!</string>
<string name="app_details__incompatible_mismatched_signature">Ondertekening verschilt van geïnstalleerde versie</string>
<string name="app_details__incompatible_mismatched_signers">Ondertekening verschilt van geïnstalleerde versie</string>
<string name="app_details__no_versions__show_incompat_versions">Schakel de instelling \"%1$s\" in om incompatibele versies hier toch weer te geven.</string>
<string name="app_details__no_versions__no_compatible_signatures">Er zijn geen versies met een compatibele ondertekening beschikbaar</string>
<string name="app_details__no_versions__no_compatible_signers">Er zijn geen versies met een compatibele ondertekening beschikbaar</string>
<string name="app_details__no_versions__none_compatible_with_device">Er zijn met dit apparaat geen versies compatibel</string>
<string name="app_details__no_versions__explain_incompatible_signatures">De geïnstalleerde versie is niet compatibel met de beschikbare versies. Door de app te verwijderen zullen compatibele versies worden weergegeven, waarna u ze kan installeren. Dit gebeurt vaak met apps die geïnstalleerd zijn via Google Play of andere bronnen, als ze met een ander certificaat zijn ondertekend.</string>
<string name="app_details__no_versions__explain_incompatible_signers">De geïnstalleerde versie is niet compatibel met de beschikbare versies. Door de app te verwijderen zullen compatibele versies worden weergegeven, waarna u ze kan installeren. Dit gebeurt vaak met apps die geïnstalleerd zijn via Google Play of andere bronnen, als ze met een ander certificaat zijn ondertekend.</string>
<string name="about_version">Versie</string>
<string name="about_site">Website</string>
<string name="about_source">Broncode</string>

View File

@ -379,11 +379,11 @@
<string name="app_installed_media">Bestand geïnstalleerd op %s</string>
<string name="app_permission_storage">F-Droid heeft opslagtoestemming nodig om dit op de opslagruimte te installeren. Geef deze toestemming op het volgende scherm om de installatie verder te zetten.</string>
<string name="status_inserting_x_apps">Appgegevens van %3$s worden opgeslagen (%1$d/%2$d)</string>
<string name="app_details__incompatible_mismatched_signature">Ondertekening verschilt van geïnstalleerde versie</string>
<string name="app_details__incompatible_mismatched_signers">Ondertekening verschilt van geïnstalleerde versie</string>
<string name="app_details__no_versions__show_incompat_versions">Schakel de instelling \"%1$s\" in om incompatibele versies hier toch weer te geven.</string>
<string name="app_details__no_versions__no_compatible_signatures">Er zijn geen versies met een compatibele ondertekening</string>
<string name="app_details__no_versions__no_compatible_signers">Er zijn geen versies met een compatibele ondertekening</string>
<string name="app_details__no_versions__none_compatible_with_device">Er zijn met dit apparaat geen versies compatibel</string>
<string name="app_details__no_versions__explain_incompatible_signatures">De geïnstalleerde versie is niet compatibel met de beschikbare versies. Door de app te verwijderen zullen compatibele versies worden weergegeven, waarna je ze kan installeren. Dit gebeurt vaak wanneer uw apps installeert via Google Play of andere bronnen, en deze door een ander certificaat zijn ondertekend.</string>
<string name="app_details__no_versions__explain_incompatible_signers">De geïnstalleerde versie is niet compatibel met de beschikbare versies. Door de app te verwijderen zullen compatibele versies worden weergegeven, waarna je ze kan installeren. Dit gebeurt vaak wanneer uw apps installeert via Google Play of andere bronnen, en deze door een ander certificaat zijn ondertekend.</string>
<string name="app_list__dismiss_app_update">Update genegeerd</string>
<string name="app_list__dismiss_vulnerable_app">Kwetsbaarheid genegeerd</string>
<string name="app_list__dismiss_downloading_app">Download geannuleerd</string>

View File

@ -120,11 +120,11 @@
<string name="no_such_app">Fann ikkje app.</string>
<string name="app_details_donate_prompt_unknown_author">Spander ein kaffi på utviklarane av %1$s!</string>
<string name="app_details_donate_prompt">%1$s er laga av %2$s. Spander ein kaffi på dei!</string>
<string name="app_details__incompatible_mismatched_signature">Ulik signatur enn i installert versjon</string>
<string name="app_details__incompatible_mismatched_signers">Ulik signatur enn i installert versjon</string>
<string name="app_details__no_versions__show_incompat_versions">Viss du likevel vil visa inkompatible versjonar her, slå på innstillinga «%1$s».</string>
<string name="app_details__no_versions__no_compatible_signatures">Ingen versjonar med kompatibel signatur</string>
<string name="app_details__no_versions__no_compatible_signers">Ingen versjonar med kompatibel signatur</string>
<string name="app_details__no_versions__none_compatible_with_device">Ingen versjonar som er kompatible med eininga</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Den installerte versjonen er ikkje kompatibel med nokon tilgjengeleg versjon. Viss du avinstallerer appen, kan du visa og installera kompatible versjonar. Dette problemet skjer ofte med appar som er installerte via Google Play eller andre kjelder og som er signerte med eit anna sertifikat.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Den installerte versjonen er ikkje kompatibel med nokon tilgjengeleg versjon. Viss du avinstallerer appen, kan du visa og installera kompatible versjonar. Dette problemet skjer ofte med appar som er installerte via Google Play eller andre kjelder og som er signerte med eit anna sertifikat.</string>
<string name="about_version">Versjon</string>
<string name="about_site">Heimeside</string>
<string name="about_forum">Brukarforum</string>

View File

@ -392,11 +392,11 @@
<string name="status_inserting_x_apps">Zapisywanie szczegółów aplikacji (%1$d/%2$d) z %3$s</string>
<string name="app_installed_media">Plik zainstalowany w %s</string>
<string name="app_permission_storage">F-Droid potrzebuje uprawnienia dostępu do pamięci, aby zainstalować to w pamięci. Zezwól na to na następnym ekranie, aby kontynuować instalację.</string>
<string name="app_details__incompatible_mismatched_signature">Inny podpis niż zainstalowanej wersji</string>
<string name="app_details__incompatible_mismatched_signers">Inny podpis niż zainstalowanej wersji</string>
<string name="app_details__no_versions__show_incompat_versions">Aby mimo to pokazać niezgodne wersje, włącz opcję „%1$s” w ustawieniach.</string>
<string name="app_details__no_versions__no_compatible_signatures">Brak wersji ze zgodnym podpisem</string>
<string name="app_details__no_versions__no_compatible_signers">Brak wersji ze zgodnym podpisem</string>
<string name="app_details__no_versions__none_compatible_with_device">Brak wersji zgodnych z urządzeniem</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Zainstalowana wersja nie jest zgodna z żadną dostępną wersją. Odinstalowanie aplikacji umożliwi podgląd i zainstalowanie zgodnych wersji. Dzieje się tak często w przypadku aplikacji zainstalowanych przez Google Play lub inne źródła, jeśli są one podpisane innym certyfikatem.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Zainstalowana wersja nie jest zgodna z żadną dostępną wersją. Odinstalowanie aplikacji umożliwi podgląd i zainstalowanie zgodnych wersji. Dzieje się tak często w przypadku aplikacji zainstalowanych przez Google Play lub inne źródła, jeśli są one podpisane innym certyfikatem.</string>
<string name="app_list__dismiss_app_update">Zignorowano aktualizację</string>
<string name="app_list__dismiss_vulnerable_app">Zignorowano podatność</string>
<string name="app_list__dismiss_downloading_app">Anulowano pobieranie</string>

View File

@ -399,11 +399,11 @@
<string name="app_permission_storage">O F-Droid precisa da permissão de armazenamento para instalar isso no armazenamento. Por favor, permita-o na próxima tela para prosseguir com a instalação.</string>
<string name="app_list_download_ready">Baixado, pronto para instalar</string>
<string name="status_inserting_x_apps">Salvando detalhes do aplicativo (%1$d/%2$d) de %3$s</string>
<string name="app_details__incompatible_mismatched_signature">Assinatura diferente para versão instalada</string>
<string name="app_details__incompatible_mismatched_signers">Assinatura diferente para versão instalada</string>
<string name="app_details__no_versions__show_incompat_versions">Para mostrar versões incompatíveis aqui mesmo assim, ative a configuração \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Sem versões com assinatura compatível</string>
<string name="app_details__no_versions__no_compatible_signers">Sem versões com assinatura compatível</string>
<string name="app_details__no_versions__none_compatible_with_device">Sem versões compatíveis para o dispositivo</string>
<string name="app_details__no_versions__explain_incompatible_signatures">A versão instalada não é compatível com nenhuma versão disponível. Desinstalar o aplicativo permitirá que você veja e instale versões compatíveis. Isto frequentemente ocorre com aplicativos instalados via Google Play ou outras fontes, caso eles estejam assinados por um certificado diferente.</string>
<string name="app_details__no_versions__explain_incompatible_signers">A versão instalada não é compatível com nenhuma versão disponível. Desinstalar o aplicativo permitirá que você veja e instale versões compatíveis. Isto frequentemente ocorre com aplicativos instalados via Google Play ou outras fontes, caso eles estejam assinados por um certificado diferente.</string>
<string name="app_list__dismiss_app_update">Atualização ignorada</string>
<string name="app_list__dismiss_vulnerable_app">Vulnerabilidade ignorada</string>
<string name="app_list__dismiss_downloading_app">Download cancelado</string>

View File

@ -376,11 +376,11 @@
<string name="app_permission_storage">F-Droid necessita de aceder ao armazenamento. Por favor conceda essa permissão no próximo ecrã para continuar com a instalação.</string>
<string name="app_list_download_ready">Descarregada e pronta para instalar</string>
<string name="status_inserting_x_apps">A guardar detalhes da aplicação (%1$d/%2$d) de %3$s</string>
<string name="app_details__incompatible_mismatched_signature">Assinatura diferente da versão instalada</string>
<string name="app_details__incompatible_mismatched_signers">Assinatura diferente da versão instalada</string>
<string name="app_details__no_versions__show_incompat_versions">Para ainda assim mostrar versões incompatíveis, ative a opção \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Não existem versões com uma assinatura compatível</string>
<string name="app_details__no_versions__no_compatible_signers">Não existem versões com uma assinatura compatível</string>
<string name="app_details__no_versions__none_compatible_with_device">Não existem versões compatíveis com o aparelho</string>
<string name="app_details__no_versions__explain_incompatible_signatures">A versão instalada não é compatível com as versões disponíveis. Desinstalar a app permite-o ver e instalar as versões compatíveis. Normalmente, isto ocorre se instalar apps através da Google Play ou de outras fontes, caso tenham sido assinadas com um certificado distinto.</string>
<string name="app_details__no_versions__explain_incompatible_signers">A versão instalada não é compatível com as versões disponíveis. Desinstalar a app permite-o ver e instalar as versões compatíveis. Normalmente, isto ocorre se instalar apps através da Google Play ou de outras fontes, caso tenham sido assinadas com um certificado distinto.</string>
<string name="app_list__dismiss_app_update">Atualização ignorada</string>
<string name="app_list__dismiss_vulnerable_app">Vulnerabilidade ignorada</string>
<string name="app_list__dismiss_downloading_app">Descarga cancelada</string>

View File

@ -120,11 +120,11 @@
<string name="no_such_app">Aplicação não encontrada.</string>
<string name="app_details_donate_prompt_unknown_author">Pague um café aos programadores de %1$s!</string>
<string name="app_details_donate_prompt">%1$s foi criado por %2$s. Pode oferecer um café!</string>
<string name="app_details__incompatible_mismatched_signature">Assinatura diferente da versão instalada</string>
<string name="app_details__incompatible_mismatched_signers">Assinatura diferente da versão instalada</string>
<string name="app_details__no_versions__show_incompat_versions">Para ainda assim mostrar versões incompatíveis, ative a opção \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Não existem versões com uma assinatura compatível</string>
<string name="app_details__no_versions__no_compatible_signers">Não existem versões com uma assinatura compatível</string>
<string name="app_details__no_versions__none_compatible_with_device">Não existem versões compatíveis com o aparelho</string>
<string name="app_details__no_versions__explain_incompatible_signatures">A versão instalada não é compatível com as versões disponíveis. Desinstalar a app permite-o ver e instalar as versões compatíveis. Normalmente, isto ocorre se instalar apps através da Google Play ou de outras fontes, caso tenham sido assinadas com um certificado distinto.</string>
<string name="app_details__no_versions__explain_incompatible_signers">A versão instalada não é compatível com as versões disponíveis. Desinstalar a app permite-o ver e instalar as versões compatíveis. Normalmente, isto ocorre se instalar apps através da Google Play ou de outras fontes, caso tenham sido assinadas com um certificado distinto.</string>
<string name="about_version">Versão</string>
<string name="about_site">Site</string>
<string name="about_forum">Fórum de suporte</string>

View File

@ -378,11 +378,11 @@
<string name="swap_scan_or_type_url">O persoană trebuie să scaneze codul sau să introducă URL-ul celuilalt într-un browser.</string>
<string name="swap_qr_isnt_for_swap">Codul QR scanat nu arată ca un cod de schimb.</string>
<string name="swap_connection_misc_error">Eroare produsă în timpul conectării la dispozitiv, nu se poate face schimbul!</string>
<string name="app_details__incompatible_mismatched_signature">Semnătură diferită de versiunea instalată</string>
<string name="app_details__incompatible_mismatched_signers">Semnătură diferită de versiunea instalată</string>
<string name="app_details__no_versions__show_incompat_versions">Pentru a afișa aici și versiunile incompatibile, activați setarea \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Nici o versiune nu are o semnătură compatibilă</string>
<string name="app_details__no_versions__no_compatible_signers">Nici o versiune nu are o semnătură compatibilă</string>
<string name="app_details__no_versions__none_compatible_with_device">Nici o versiune compatibilă cu dispozitivul</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Versiunea instalată nu este compatibilă cu nici o versiune disponibilă. Dezinstalând aplicația veți putea vedea și instala versiuni compatibile. Aceasta se întâmplă de obicei aplicațiilor instalate din Google Play sau alte surse, dacă sunt semnate cu un alt certificat.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Versiunea instalată nu este compatibilă cu nici o versiune disponibilă. Dezinstalând aplicația veți putea vedea și instala versiuni compatibile. Aceasta se întâmplă de obicei aplicațiilor instalate din Google Play sau alte surse, dacă sunt semnate cu un alt certificat.</string>
<string name="app_list__dismiss_app_update">Actualizare ignorată</string>
<string name="app_list__dismiss_vulnerable_app">Vulnerabilitate ignorată</string>
<string name="app_list__dismiss_downloading_app">Descărcare anulată</string>

View File

@ -395,11 +395,11 @@
<string name="status_inserting_x_apps">Сохранение данных приложений (%1$d/%2$d) из %3$s</string>
<string name="app_installed_media">Файл установлен в %s</string>
<string name="app_permission_storage">Для установки в хранилище F-Droid необходимо соответствующее разрешение. Его можно предоставить на следующем экране.</string>
<string name="app_details__incompatible_mismatched_signature">У установленной версии другая подпись</string>
<string name="app_details__incompatible_mismatched_signers">У установленной версии другая подпись</string>
<string name="app_details__no_versions__show_incompat_versions">Чтобы показать несовместимые версии включите параметр \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Нет версий с совместимой подписью</string>
<string name="app_details__no_versions__no_compatible_signers">Нет версий с совместимой подписью</string>
<string name="app_details__no_versions__none_compatible_with_device">Нет версий, совместимых с устройством</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Установленная версия не совместима ни с одной из доступных версий. Удаление приложения позволит вам просмотреть и установить совместимые версии. Это часто происходит с приложениями, установленными из Google Play или других источников, если они подписаны другим сертификатом.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Установленная версия не совместима ни с одной из доступных версий. Удаление приложения позволит вам просмотреть и установить совместимые версии. Это часто происходит с приложениями, установленными из Google Play или других источников, если они подписаны другим сертификатом.</string>
<string name="app_list__dismiss_app_update">Обновление игнорируется</string>
<string name="app_list__dismiss_vulnerable_app">Уязвимость игнорируется</string>
<string name="app_list__dismiss_downloading_app">Загрузка отменена</string>

View File

@ -401,11 +401,11 @@
<string name="app_installed_media">Documentu installadu in %s</string>
<string name="app_permission_storage">F-Droid tenet bisòngiu de unu permissu pro installare custu in sa memòria. Pro praghere dae·liu in s\'ischermu chi benit pro sighire cun s\'installatzione.</string>
<string name="status_inserting_x_apps">Sarvende sas minujas de sas aplicatziones (%1$d/%2$d) dae %3$s</string>
<string name="app_details__incompatible_mismatched_signature">Firma diversa dae sa versione installada</string>
<string name="app_details__incompatible_mismatched_signers">Firma diversa dae sa versione installada</string>
<string name="app_details__no_versions__show_incompat_versions">Pro ammustrare su matessi sas versiones non cumpatìbiles inoghe abìlita s\'impostatzione \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Peruna versione cun una firma cumpatìbile</string>
<string name="app_details__no_versions__no_compatible_signers">Peruna versione cun una firma cumpatìbile</string>
<string name="app_details__no_versions__none_compatible_with_device">Peruna versione cumpatìbile cun su dispositivu</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Sa versione installada no est cumpatìbile cun sas versiones disponìbiles. Disinstallende s\'aplicatzione t\'at a permìtere de bìdere e installare versiones cumpatìbiles. Custu acontessit, a s\'ispissu, cun aplicatziones installadas pro mèdiu de Google Play o àteras mitzas, si sunt firmadas cun unu tzertificadu diferente.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Sa versione installada no est cumpatìbile cun sas versiones disponìbiles. Disinstallende s\'aplicatzione t\'at a permìtere de bìdere e installare versiones cumpatìbiles. Custu acontessit, a s\'ispissu, cun aplicatziones installadas pro mèdiu de Google Play o àteras mitzas, si sunt firmadas cun unu tzertificadu diferente.</string>
<string name="app_list__dismiss_app_update">Agiornamentu ignoradu</string>
<string name="app_list__dismiss_vulnerable_app">Vulnerabilidade ignorada</string>
<string name="app_list__dismiss_downloading_app">Iscantzellamentu annulladu</string>

View File

@ -395,11 +395,11 @@
<item quantity="few">+%1$d ďaľšie…</item>
<item quantity="other">+%1$d ďaľších…</item>
</plurals>
<string name="app_details__incompatible_mismatched_signature">Digitálny podpis nesedí s nainštalovanou verziou</string>
<string name="app_details__incompatible_mismatched_signers">Digitálny podpis nesedí s nainštalovanou verziou</string>
<string name="app_details__no_versions__show_incompat_versions">Ak chcete aj tak zobraziť nekompatibilné verzie, zapnite nastavenie \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Žiadne verzie s kompatibilným podpisom</string>
<string name="app_details__no_versions__no_compatible_signers">Žiadne verzie s kompatibilným podpisom</string>
<string name="app_details__no_versions__none_compatible_with_device">Žiadne verzie kompatibilné so zariadením</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Nainštalovaná verzia nie je kompatibilná s dostupnými verziami. Odinštalovaním súčasnej verzie aplikácie budete môcť zobraziť a nainštalovať nové kompatibilné verzie. Toto sa často vyskytuje pri aplikáciách nainštalovaných prostredníctvom služby Google Play alebo iných zdrojov, ak sú podpísané iným certifikátom.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Nainštalovaná verzia nie je kompatibilná s dostupnými verziami. Odinštalovaním súčasnej verzie aplikácie budete môcť zobraziť a nainštalovať nové kompatibilné verzie. Toto sa často vyskytuje pri aplikáciách nainštalovaných prostredníctvom služby Google Play alebo iných zdrojov, ak sú podpísané iným certifikátom.</string>
<string name="app_installed_media">Súbor bol nainštalovaný na %s</string>
<string name="app_permission_storage">F-Droid potrebuje povolenie na ukladanie na inštaláciu do úložiska. Pre pokračovanie v inštalácií potvrďte povolenie na ďalšej obrazovke.</string>
<string name="app_list_download_ready">Stiahnuté, pripravené na inštaláciu</string>

View File

@ -126,9 +126,9 @@
<string name="no_such_app">Nobena aplikacija s tem imenom ni bila najdena.</string>
<string name="app_details_donate_prompt_unknown_author">Kupite razvijalcem od %1$s kavo!</string>
<string name="app_details_donate_prompt">%1$s je bila ustvarjeno od %2$s. Kupi jim kavo!</string>
<string name="app_details__incompatible_mismatched_signature">Različna overitev nameščenih verzij</string>
<string name="app_details__incompatible_mismatched_signers">Različna overitev nameščenih verzij</string>
<string name="app_details__no_versions__show_incompat_versions">Če želite vseeno pokazati nekompatibilne verzije, omogočite v nastavitvah možnost \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Nobena verzija ni kompatibilna z overitvijo</string>
<string name="app_details__no_versions__no_compatible_signers">Nobena verzija ni kompatibilna z overitvijo</string>
<string name="app_details__no_versions__none_compatible_with_device">Nobena verzija ni kompatibilna z napravo</string>
<string name="about_source">Izvorna koda</string>
<string name="about_license">Licenca</string>
@ -498,7 +498,7 @@
<item quantity="other">Preglej vse %1$d aplikacije v %2$s kategoriji</item>
</plurals>
<string name="nearby_splash__both_parties_need_fdroid">Obe strani potrebujeta %1$s za uporabo funkcije Blizu.</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Nameščena različica ni kompatibilna s katerokoli razpoložljivo različico. Odstranitev aplikacije bo omogočila, da pregledate in namestite kompatibilne različice. To se pogosto zgodi z aplikacijami, nameščenimi preko Google Play ali ostalih virov, če so podpisane z drugim certifikatom.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Nameščena različica ni kompatibilna s katerokoli razpoložljivo različico. Odstranitev aplikacije bo omogočila, da pregledate in namestite kompatibilne različice. To se pogosto zgodi z aplikacijami, nameščenimi preko Google Play ali ostalih virov, če so podpisane z drugim certifikatom.</string>
<string name="prompt_to_send_crash_reports">Vprašaj za pošiljanje poročil o zrušitvah</string>
<string name="swap_toast_using_path">Uporaba %1$s</string>
<string name="swap_toast_not_removable_storage">Ta izbira se ne ujema s katerokoli od odstranljivih pomnilniških medijev, poskusi znova!</string>

View File

@ -119,11 +119,11 @@
<string name="no_such_app">Su gjet aplikacion i tillë.</string>
<string name="app_details_donate_prompt_unknown_author">Qerasini zhvilluesit e %1$s një kafe!</string>
<string name="app_details_donate_prompt">%1$s është krijuar nga %2$s. Qerasini një kafe!</string>
<string name="app_details__incompatible_mismatched_signature">Nënshkrim i ndryshëm te versioni i instaluar</string>
<string name="app_details__incompatible_mismatched_signers">Nënshkrim i ndryshëm te versioni i instaluar</string>
<string name="app_details__no_versions__show_incompat_versions">Për të shfaqur këtu versione të papërputhshëm, sido që të jetë, aktivizoni rregullimin \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Ska versione me nënshkrim të përputhshëm</string>
<string name="app_details__no_versions__no_compatible_signers">Ska versione me nënshkrim të përputhshëm</string>
<string name="app_details__no_versions__none_compatible_with_device">Ska versione të përputhshëm me pajisjen</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Versioni i instaluar sështë i përputhshëm me ndonjë version të gatshëm. Çinstalimi i aplikacionit do tju bëjë të mundur të shihni dhe instaloni versione të përputhshëm. Kjo shpesh ndodh me aplikacione të instaluar përmes Google Play ose burime të tjera, nëse janë të nënshkruar me një dëshmi tjetër.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Versioni i instaluar sështë i përputhshëm me ndonjë version të gatshëm. Çinstalimi i aplikacionit do tju bëjë të mundur të shihni dhe instaloni versione të përputhshëm. Kjo shpesh ndodh me aplikacione të instaluar përmes Google Play ose burime të tjera, nëse janë të nënshkruar me një dëshmi tjetër.</string>
<string name="about_site">Sajt</string>
<string name="app_installed">I instaluar</string>
<string name="app_not_installed">Jo i instaluar</string>

View File

@ -408,8 +408,8 @@
<string name="over_network_always_summary">Увек користи ову везу, ако је доступна</string>
<string name="over_network_on_demand_summary">Користи ову везу само за преузимање</string>
<string name="over_network_never_summary">Никада не преузимај са ове везе</string>
<string name="app_details__incompatible_mismatched_signature">Инсталирана верзија има други потпис</string>
<string name="app_details__no_versions__no_compatible_signatures">Нема верзија са компатибилним потписом</string>
<string name="app_details__incompatible_mismatched_signers">Инсталирана верзија има други потпис</string>
<string name="app_details__no_versions__no_compatible_signers">Нема верзија са компатибилним потписом</string>
<string name="app_details__no_versions__none_compatible_with_device">Нема верзија које су компатибилне са уређајем</string>
<string name="sort_search">Сортирај претрагу</string>
<string name="menu_open">Отвори</string>
@ -418,7 +418,7 @@
<string name="repo_exists_and_enabled">Репозиторијум %1$s је већ подешен и омогућен.</string>
<string name="repo_delete_to_overwrite">Прво избришите %1$s да бисте додали репозиторијум са другим кључем.</string>
<string name="app_details__no_versions__show_incompat_versions">Да бисте приказали некомпатибилне верзије, омогућите опцију „%1$s”.</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Инсталирана верзија није компатибилна ни са једном доступном верзијом. Ако деинсталирате апликацију, моћи ћете да погледате и инсталирате компатибилне верзије. Ово се често дешава са апликацијама инсталираним преко Google Play-а или из других извора, ако су потписане другим сертификатом.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Инсталирана верзија није компатибилна ни са једном доступном верзијом. Ако деинсталирате апликацију, моћи ћете да погледате и инсталирате компатибилне верзије. Ово се често дешава са апликацијама инсталираним преко Google Play-а или из других извора, ако су потписане другим сертификатом.</string>
<string name="privacy">Приватност</string>
<string name="preventScreenshots_title">Спречи снимке екрана</string>
<string name="preventScreenshots_summary">Блокира прављење снимака екрана и сакрива садржај апликације из недавних апликација</string>

View File

@ -375,11 +375,11 @@
<string name="app_permission_storage">F-Droid behöver lagringstillstånd för att installera detta till lagring. Vänligen tillåt det på nästa skärm för att fortsätta med installationen.</string>
<string name="app_list_download_ready">Hämtad, redo att installeras</string>
<string name="status_inserting_x_apps">Sparar appdetaljer (%1$d/%2$d) från %3$s</string>
<string name="app_details__incompatible_mismatched_signature">Olika signaturer till installerad version</string>
<string name="app_details__incompatible_mismatched_signers">Olika signaturer till installerad version</string>
<string name="app_details__no_versions__show_incompat_versions">För att visa inkompatibla versioner här ändå, aktivera inställningen \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Inga versioner med kompatibel signatur</string>
<string name="app_details__no_versions__no_compatible_signers">Inga versioner med kompatibel signatur</string>
<string name="app_details__no_versions__none_compatible_with_device">Inga versioner är kompatibla med enheten</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Den installerade versionen är inte kompatibel med några tillgängliga versioner. Om du avinstallerar appen kan du visa och installera kompatibla versioner. Det här händer ofta med appar installerade via Google Play eller andra källor, om de är signerade med ett annat certifikat.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Den installerade versionen är inte kompatibel med några tillgängliga versioner. Om du avinstallerar appen kan du visa och installera kompatibla versioner. Det här händer ofta med appar installerade via Google Play eller andra källor, om de är signerade med ett annat certifikat.</string>
<string name="app_list__dismiss_app_update">Uppdatering ignorerad</string>
<string name="app_list__dismiss_vulnerable_app">Sårbarhet ignorerad</string>
<string name="app_list__dismiss_downloading_app">Hämtning avbruten</string>

View File

@ -332,10 +332,10 @@
<string name="app_incompatible">ஒவ்வாதது</string>
<string name="app_suggested">பரிந்துரைக்கப்படுகிறது</string>
<string name="about_forum">ஆதரவு மன்றம்</string>
<string name="app_details__no_versions__explain_incompatible_signatures">நிறுவப்பட்ட பதிப்பு கிடைக்கக்கூடிய எப்பதிப்புகளுடனும் ஒவ்வாது. செயலியை நிறுவல் நீக்குவது ஒவ்வும் பதிப்புகளைக் காணவும் நிறுவவும் உதவும். வேறு சான்றிதழால் ஒப்பமிடப்பட்டால், Google Play அல்லது பிற மூலங்கள் வழியாக நிறுவப்பட்ட செயலிகளுடன் இது பெரும்பாலும் நிகழ்கிறது.</string>
<string name="app_details__no_versions__explain_incompatible_signers">நிறுவப்பட்ட பதிப்பு கிடைக்கக்கூடிய எப்பதிப்புகளுடனும் ஒவ்வாது. செயலியை நிறுவல் நீக்குவது ஒவ்வும் பதிப்புகளைக் காணவும் நிறுவவும் உதவும். வேறு சான்றிதழால் ஒப்பமிடப்பட்டால், Google Play அல்லது பிற மூலங்கள் வழியாக நிறுவப்பட்ட செயலிகளுடன் இது பெரும்பாலும் நிகழ்கிறது.</string>
<string name="app_details__no_versions__none_compatible_with_device">சாதனத்துடன் ஒவ்வும் பதிப்புகளில்லை</string>
<string name="app_details__no_versions__no_compatible_signatures">ஒவ்வும் ஒப்பத்துடன் பதிப்புகளில்லை</string>
<string name="app_details__incompatible_mismatched_signature">நிறுவப்பட்ட பதிப்புக்கு வேறு ஒப்பம்</string>
<string name="app_details__no_versions__no_compatible_signers">ஒவ்வும் ஒப்பத்துடன் பதிப்புகளில்லை</string>
<string name="app_details__incompatible_mismatched_signers">நிறுவப்பட்ட பதிப்புக்கு வேறு ஒப்பம்</string>
<string name="scan_removable_storage_title">நீக்கக்கூடிய சேமிப்பிடத்தை வருடு</string>
<string name="local_repo_https_on">உள்ளக களஞ்சியத்திற்கு மறைகுறியாக்கப்பட்ட HTTPS:// இணைப்பைப் பயன்படுத்து</string>
<string name="local_repo_name">உங்கள் உள்ளக களஞ்சியத்தின் பெயர்</string>

View File

@ -340,13 +340,13 @@
<string name="scan_removable_storage_summary">SD కార్డులు మరియు USB థంబ్ డ్రైవ్‌లు వంటి తొలగించగల నిల్వపై ప్యాకేజీ రెపోల కోసం చూడండి</string>
<string name="repo_error_empty_username">ఖాళీ వినియోగదారు పేరు, ఆధారాలు మార్చబడలేదు</string>
<string name="app_details_donate_prompt_unknown_author">%1$s కాఫీ డెవలపర్‌లను కొనండి!</string>
<string name="app_details__incompatible_mismatched_signature">వ్యవస్థాపించిన సంస్కరణకు భిన్నమైన సంతకం</string>
<string name="app_details__incompatible_mismatched_signers">వ్యవస్థాపించిన సంస్కరణకు భిన్నమైన సంతకం</string>
<string name="app_details__no_versions__show_incompat_versions">ఏమైనప్పటికీ ఇక్కడ అనుకూలత లేని సంస్కరణలను చూపించడానికి, \"%1$s\" సెట్టింగ్‌ను ప్రారంభించండి.</string>
<string name="app_details__no_versions__explain_incompatible_signatures">వ్యవస్థాపించిన సంస్కరణ అందుబాటులో ఉన్న ఏ సంస్కరణలతోనూ అనుకూలంగా లేదు. అనువర్తనాన్ని అన్‌ఇన్‌స్టాల్ చేయడం వలన అనుకూల సంస్కరణలను వీక్షించడానికి మరియు ఇన్‌స్టాల్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఇది తరచుగా Google Play ద్వారా ఇన్‌స్టాల్ చేయబడిన అనువర్తనాలతో సంభవిస్తుంది.</string>
<string name="app_details__no_versions__explain_incompatible_signers">వ్యవస్థాపించిన సంస్కరణ అందుబాటులో ఉన్న ఏ సంస్కరణలతోనూ అనుకూలంగా లేదు. అనువర్తనాన్ని అన్‌ఇన్‌స్టాల్ చేయడం వలన అనుకూల సంస్కరణలను వీక్షించడానికి మరియు ఇన్‌స్టాల్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఇది తరచుగా Google Play ద్వారా ఇన్‌స్టాల్ చేయబడిన అనువర్తనాలతో సంభవిస్తుంది.</string>
<string name="app_permission_storage">దీన్ని నిల్వ చేయడానికి ఇన్‌స్టాల్ చేయడానికి F-Droid కి నిల్వ అనుమతి అవసరం. సంస్థాపనతో కొనసాగడానికి దయచేసి తదుపరి స్క్రీన్‌లో దీన్ని అనుమతించండి.</string>
<string name="send_installed_apps">ఇన్‌స్టాల్ చేసిన అనువర్తనాలను భాగస్వామ్యం చేయండి</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">మేము%1$s తో హానిని కనుగొన్నాము. ఈ అనువర్తనాన్ని వెంటనే అన్‌ఇన్‌స్టాల్ చేయాలని మేము సిఫార్సు చేస్తున్నాము.</string>
<string name="app_details__no_versions__no_compatible_signatures">అనుకూల సంతకంతో సంస్కరణలు లేవు</string>
<string name="app_details__no_versions__no_compatible_signers">అనుకూల సంతకంతో సంస్కరణలు లేవు</string>
<string name="app_details__no_versions__none_compatible_with_device">పరికరంతో అనుకూలమైన సంస్కరణలు లేవు</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">మేము%1$s తో హానిని కనుగొన్నాము. సరికొత్త సంస్కరణకు వెంటనే నవీకరించమని మేము సిఫార్సు చేస్తున్నాము.</string>
<plurals name="updates__download_updates_for_apps">

View File

@ -346,10 +346,10 @@
<string name="app_new">ใหม่</string>
<string name="app_suggested">แนะนำ</string>
<string name="about_forum">ฟอรัมการสนับสนุน</string>
<string name="app_details__no_versions__explain_incompatible_signatures">รุ่นที่ติดตั้งเข้ากันไม่ได้กับรุ่นที่มีอยู่ การถอนการติดตั้งแอปจะช่วยให้คุณสามารถดูและติดตั้งรุ่นที่เข้ากันได้ สิ่งนี้มักเกิดขึ้นกับแอปที่ติดตั้งผ่าน Google Play หรือแหล่งที่มาอื่น ๆ หากมีการลงนามโดยใบรับรองอื่น</string>
<string name="app_details__no_versions__explain_incompatible_signers">รุ่นที่ติดตั้งเข้ากันไม่ได้กับรุ่นที่มีอยู่ การถอนการติดตั้งแอปจะช่วยให้คุณสามารถดูและติดตั้งรุ่นที่เข้ากันได้ สิ่งนี้มักเกิดขึ้นกับแอปที่ติดตั้งผ่าน Google Play หรือแหล่งที่มาอื่น ๆ หากมีการลงนามโดยใบรับรองอื่น</string>
<string name="app_details__no_versions__none_compatible_with_device">ไม่มีรุ่นที่เข้ากันได้กับอุปกรณ์</string>
<string name="app_details__no_versions__no_compatible_signatures">ไม่มีรุ่นที่มีลายเซ็นที่เข้ากันได้</string>
<string name="app_details__incompatible_mismatched_signature">ลายเซ็นแตกต่างไปจากเวอร์ชันที่ถูกติดตั้ง</string>
<string name="app_details__no_versions__no_compatible_signers">ไม่มีรุ่นที่มีลายเซ็นที่เข้ากันได้</string>
<string name="app_details__incompatible_mismatched_signers">ลายเซ็นแตกต่างไปจากเวอร์ชันที่ถูกติดตั้ง</string>
<string name="app_details_donate_prompt">%1$s ถูกสร้างโดย %2$s ซื้อกาแฟให้พวกเขาได้นะ!</string>
<string name="app_details_donate_prompt_unknown_author">ซื้อกาแฟให้นักพัฒนาแอป %1$s!</string>
<string name="scan_removable_storage_summary">มองหาเเพ็กเกจเเหล่งเเอพบนหน่วยวามจำที่ถอดออกได้ อย่าง SD Cards เเละ ยูเอสบีทรัมป์ไดร์ฟ</string>

View File

@ -373,11 +373,11 @@
<string name="status_inserting_x_apps">Uygulama ayrıntıları kaydediliyor (%1$d/%2$d) kaynak %3$s</string>
<string name="app_installed_media">Dosya %s konumuna yüklendi</string>
<string name="app_permission_storage">F-Droid bunu depolaya yüklemek için depolama iznine ihtiyaç duyuyor. Yüklemeye devam etmek için lütfen bir sonraki ekranda izin verin.</string>
<string name="app_details__incompatible_mismatched_signature">Yüklü sürümden farklı imza</string>
<string name="app_details__incompatible_mismatched_signers">Yüklü sürümden farklı imza</string>
<string name="app_details__no_versions__show_incompat_versions">Uyumsuz sürümleri burada yine de göstermek için, \"%1$s\" ayarını etkinleştirin.</string>
<string name="app_details__no_versions__no_compatible_signatures">Uyumlu imzaya sahip sürüm yok</string>
<string name="app_details__no_versions__no_compatible_signers">Uyumlu imzaya sahip sürüm yok</string>
<string name="app_details__no_versions__none_compatible_with_device">Cihazla uyumlu sürüm yok</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Yüklü sürüm hiçbir kullanılabilir sürümle uyumlu değil. Uygulamayı kaldırmak, uyumlu sürümleri görüntüleyip kurmanızı sağlayacaktır. Bu genellikle, Google Play veya diğer kaynaklar aracılığıyla yüklenmiş uygulamalarda farklı bir sertifika ile imzalandığında oluşur.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Yüklü sürüm hiçbir kullanılabilir sürümle uyumlu değil. Uygulamayı kaldırmak, uyumlu sürümleri görüntüleyip kurmanızı sağlayacaktır. Bu genellikle, Google Play veya diğer kaynaklar aracılığıyla yüklenmiş uygulamalarda farklı bir sertifika ile imzalandığında oluşur.</string>
<string name="app_list__dismiss_app_update">Güncelleme yok sayıldı</string>
<string name="app_list__dismiss_vulnerable_app">Güvenlik açığı yok sayıldı</string>
<string name="app_list__dismiss_downloading_app">İndirme iptal edildi</string>

View File

@ -386,11 +386,11 @@
<item quantity="many">Оновлено %1$d років тому</item>
<item quantity="other">Оновлено %1$d років тому</item>
</plurals>
<string name="app_details__incompatible_mismatched_signature">Різний підпис до встановленої версії</string>
<string name="app_details__incompatible_mismatched_signers">Різний підпис до встановленої версії</string>
<string name="app_details__no_versions__show_incompat_versions">Щоб усе одно показувати тут несумісні версії, увімкніть параметр \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Немає версій із сумісним підписом</string>
<string name="app_details__no_versions__no_compatible_signers">Немає версій із сумісним підписом</string>
<string name="app_details__no_versions__none_compatible_with_device">Немає сумісних із пристроєм версій</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Установлена версія несумісна з будь-якими доступними версіями. Якщо видалити застосунок, ви зможете переглядати та встановлювати сумісні версії. Це часто трапляється з застосунками, встановленими через Google Play або з інших джерел, якщо вони підписані іншим сертифікатом.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Установлена версія несумісна з будь-якими доступними версіями. Якщо видалити застосунок, ви зможете переглядати та встановлювати сумісні версії. Це часто трапляється з застосунками, встановленими через Google Play або з інших джерел, якщо вони підписані іншим сертифікатом.</string>
<string name="app_installed_media">Файл встановлено в %s</string>
<string name="app_permission_storage">F-Droid потребує дозволу на доступ до сховища для встановлення. Будь ласка, надайте дозвіл на наступному екрані, щоб продовжити встановлення.</string>
<string name="app_list_download_ready">Завантажено, готовий до встановлення</string>

View File

@ -145,19 +145,19 @@
<string name="scan_removable_storage_toast">%s کو اسکین کیا جا رہا ہے…</string>
<string name="toast_metrics_in_install_history">%s میٹرک رپورٹ انسٹال ہسٹری ویوور میں دیکھنے کے قابل ہے۔</string>
<string name="app_details__no_versions__show_incompat_versions">ویسے بھی غیر مطابقت پذیر ورژن دکھانے کے لیے ، \"%1$s\" ترتیب کو فعال کریں۔</string>
<string name="app_details__incompatible_mismatched_signature">انسٹال ورژن پر مختلف دستخط</string>
<string name="app_details__incompatible_mismatched_signers">انسٹال ورژن پر مختلف دستخط</string>
<string name="app_details_donate_prompt">%1$s کو%2$s نے بنایا ہے۔ انہیں کافی خریدیں!</string>
<string name="send_to_fdroid_metrics">استعمال کا ڈیٹا بھیجیں۔</string>
<string name="menu_show_install_history">انسٹال کی تاریخ دکھائیں۔</string>
<string name="main_menu__updates">تازہ ترین</string>
<string name="about_site">ویب سائٹ</string>
<string name="about_version">ورژن</string>
<string name="app_details__no_versions__explain_incompatible_signatures">نصب شدہ ورژن کسی بھی دستیاب ورژن کے ساتھ مطابقت نہیں رکھتا۔ ایپ کو انسٹال کرنے سے آپ مطابقت پذیر ورژن دیکھنے اور انسٹال کرنے کے قابل ہوجائیں گے۔ یہ اکثر گوگل پلے یا دیگر ذرائع کے ذریعے نصب کردہ ایپس کے ساتھ ہوتا ہے ، اگر ان پر کسی مختلف سرٹیفکیٹ سے دستخط ہوتے ہیں۔</string>
<string name="app_details__no_versions__explain_incompatible_signers">نصب شدہ ورژن کسی بھی دستیاب ورژن کے ساتھ مطابقت نہیں رکھتا۔ ایپ کو انسٹال کرنے سے آپ مطابقت پذیر ورژن دیکھنے اور انسٹال کرنے کے قابل ہوجائیں گے۔ یہ اکثر گوگل پلے یا دیگر ذرائع کے ذریعے نصب کردہ ایپس کے ساتھ ہوتا ہے ، اگر ان پر کسی مختلف سرٹیفکیٹ سے دستخط ہوتے ہیں۔</string>
<string name="send_to_fdroid_metrics_summary">ایف ڈروڈ میٹرکس کو ہفتہ وار گمنام ڈیٹا بھیجتا ہے (انسٹال ہسٹری کی ضرورت ہوتی ہے)</string>
<string name="local_repo_name_summary">آپ کے مقامی ریپو کا اشتہاری عنوان:%s۔</string>
<string name="about_license">‎لائسنس</string>
<string name="app_suggested">تجویز کردہ</string>
<string name="app_details__no_versions__no_compatible_signatures">ہم آہنگ دستخط کے ساتھ کوئی ورژن نہیں</string>
<string name="app_details__no_versions__no_compatible_signers">ہم آہنگ دستخط کے ساتھ کوئی ورژن نہیں</string>
<string name="app_not_installed">انسٹال نہیں</string>
<string name="app_installed">انسٹال</string>
<string name="app_new">نئی</string>

View File

@ -277,11 +277,11 @@
<string name="update_auto_install_summary">Tải và cập nhật ứng dụng trong nền và hiển thị thông báo</string>
<string name="app_details_donate_prompt_unknown_author">Hãy mua một ly cà phê cho nhà phát triển ứng dụng %1$s!</string>
<string name="app_details_donate_prompt">%1$s được %2$s tạo ra. Hãy mua một ly cà phê cho họ!</string>
<string name="app_details__incompatible_mismatched_signature">Chữ kí ứng dụng khác với phiên bản đã cài đặt</string>
<string name="app_details__incompatible_mismatched_signers">Chữ kí ứng dụng khác với phiên bản đã cài đặt</string>
<string name="app_details__no_versions__show_incompat_versions">Để hiển thị cả những phiên bản không tương tích, hãy bật tuỳ chọn \"%1$s\".</string>
<string name="app_details__no_versions__no_compatible_signatures">Không phiên bản nào có chữ kí tương thích</string>
<string name="app_details__no_versions__no_compatible_signers">Không phiên bản nào có chữ kí tương thích</string>
<string name="app_details__no_versions__none_compatible_with_device">Không phiên bản nào tương thích với thiết bị</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Phiên bản đã cài đặt không tương thích với bất kì phiên bản nào ở đây. Việc gỡ bỏ ứng dụng này sẽ giúp bạn xem và cài đặt các phiên bản tương thích. Trường hợp này hay xảy ra với các ứng dụng cài từ Cửa hàng Play hoặc các nguồn khác nếu ứng dụng được kí bởi chứng chỉ khác.</string>
<string name="app_details__no_versions__explain_incompatible_signers">Phiên bản đã cài đặt không tương thích với bất kì phiên bản nào ở đây. Việc gỡ bỏ ứng dụng này sẽ giúp bạn xem và cài đặt các phiên bản tương thích. Trường hợp này hay xảy ra với các ứng dụng cài từ Cửa hàng Play hoặc các nguồn khác nếu ứng dụng được kí bởi chứng chỉ khác.</string>
<string name="app_version_x_available">Đã có phiên bản %1$s</string>
<string name="app_version_x_installed">Phiên bản %1$s</string>
<string name="app_recommended_version_installed">Phiên bản %1$s (Khuyên dùng)</string>

View File

@ -40,7 +40,7 @@
<string name="no_such_app">搵唔到呢個 app。</string>
<string name="app_details_donate_prompt_unknown_author">請 %1$s 嘅開發人員歎返杯咖啡啦!</string>
<string name="app_details_donate_prompt">%1$s 源自 %2$s 創造。不如請佢哋歎返杯咖啡啦!</string>
<string name="app_details__incompatible_mismatched_signature">簽署同安裝咗嘅版本唔同</string>
<string name="app_details__incompatible_mismatched_signers">簽署同安裝咗嘅版本唔同</string>
<string name="app_details__no_versions__show_incompat_versions">若要喺呢度照顯示唔兼容嘅版本,請啟用「%1$s」設定。</string>
<string name="app_details__no_versions__none_compatible_with_device">冇同部機兼容嘅版本</string>
<string name="about_version">版本</string>
@ -169,8 +169,8 @@
<string name="over_data">用數據</string>
<string name="repo_edit_credentials">更改密碼</string>
<string name="notify_on">出咗更新嘅時候顯示通知</string>
<string name="app_details__no_versions__no_compatible_signatures">冇簽署兼容嘅版本</string>
<string name="app_details__no_versions__explain_incompatible_signatures">安裝咗嘅版本同提供嘅版本無一兼容。解除安裝個 app 可以等您睇到同安裝兼容嘅版本。噉情形通常係個 app 經由 Google Play 或其他來源安裝,而佢哋係用唔同嘅憑證簽署。</string>
<string name="app_details__no_versions__no_compatible_signers">冇簽署兼容嘅版本</string>
<string name="app_details__no_versions__explain_incompatible_signers">安裝咗嘅版本同提供嘅版本無一兼容。解除安裝個 app 可以等您睇到同安裝兼容嘅版本。噉情形通常係個 app 經由 Google Play 或其他來源安裝,而佢哋係用唔同嘅憑證簽署。</string>
<string name="menu_license">版權協議:%s</string>
<string name="menu_source">原始碼</string>
<string name="main_menu__updates">進度</string>

View File

@ -359,11 +359,11 @@
<string name="app_permission_storage">F-Droid 需要存储权限以安装到存储。请在下一个界面允许此权限以继续进行安装。</string>
<string name="app_list_download_ready">已下载,安装准备就绪</string>
<string name="status_inserting_x_apps">正在从 %3$s 保存应用的详细信息 (%1$d/%2$d)</string>
<string name="app_details__incompatible_mismatched_signature">与已安装版本签名不符</string>
<string name="app_details__incompatible_mismatched_signers">与已安装版本签名不符</string>
<string name="app_details__no_versions__show_incompat_versions">若要在这里显示不兼容的版本,请启用“%1$s”设置。</string>
<string name="app_details__no_versions__no_compatible_signatures">没有具有兼容签名的版本</string>
<string name="app_details__no_versions__no_compatible_signers">没有具有兼容签名的版本</string>
<string name="app_details__no_versions__none_compatible_with_device">没有与设备兼容的版本</string>
<string name="app_details__no_versions__explain_incompatible_signatures">已安装的版本与可用的任何版本都不兼容。卸载该应用将使你可以查看和安装兼容的版本。这种情况常发生在通过 Google Play 或其他存储库安装的应用上,它们可能经由不同的证书签名。</string>
<string name="app_details__no_versions__explain_incompatible_signers">已安装的版本与可用的任何版本都不兼容。卸载该应用将使你可以查看和安装兼容的版本。这种情况常发生在通过 Google Play 或其他存储库安装的应用上,它们可能经由不同的证书签名。</string>
<string name="app_list__dismiss_app_update">已忽略更新</string>
<string name="app_list__dismiss_vulnerable_app">已忽略漏洞</string>
<string name="app_list__dismiss_downloading_app">已取消下载</string>

View File

@ -363,11 +363,11 @@
<plurals name="notification_summary_more">
<item quantity="other">還有 %1$d 則通知…</item>
</plurals>
<string name="app_details__incompatible_mismatched_signature">簽署與已安裝的版本不相符</string>
<string name="app_details__incompatible_mismatched_signers">簽署與已安裝的版本不相符</string>
<string name="app_details__no_versions__show_incompat_versions">如要在此顯示不相容的版本,請啟用「%1$s」的設定。</string>
<string name="app_details__no_versions__no_compatible_signatures">沒有含相容簽署的版本</string>
<string name="app_details__no_versions__no_compatible_signers">沒有含相容簽署的版本</string>
<string name="app_details__no_versions__none_compatible_with_device">沒有與裝置相容的版本</string>
<string name="app_details__no_versions__explain_incompatible_signatures">已安裝的程式版本與可供安裝的版本並不相容。卸載現有的應用程式將讓您檢視及安裝相容的版本。此問題通常出現於透過 Google Play 或其他途徑安裝,並使用不同認證的應用程式。</string>
<string name="app_details__no_versions__explain_incompatible_signers">已安裝的程式版本與可供安裝的版本並不相容。卸載現有的應用程式將讓您檢視及安裝相容的版本。此問題通常出現於透過 Google Play 或其他途徑安裝,並使用不同認證的應用程式。</string>
<string name="disabled">已停用</string>
<string name="allow">允許</string>
<string name="scan_removable_storage_title">掃描可移動存儲</string>

View File

@ -365,11 +365,11 @@
<string name="app_installed_media">檔案已安裝至 %s</string>
<string name="app_permission_storage">F-Droid 需要檔案存取權以將其安裝到裝置。請在下一個畫面允許以便繼續安裝。</string>
<string name="status_inserting_x_apps">正從 %3$s 儲存應用程式的詳細資訊 (%1$d/%2$d)</string>
<string name="app_details__incompatible_mismatched_signature">與已安裝版本的簽章不符</string>
<string name="app_details__incompatible_mismatched_signers">與已安裝版本的簽章不符</string>
<string name="app_details__no_versions__show_incompat_versions">若要在這裡顯示不相容的版本,請啟用「%1$s」設定。</string>
<string name="app_details__no_versions__no_compatible_signatures">沒有相容簽章的版本</string>
<string name="app_details__no_versions__no_compatible_signers">沒有相容簽章的版本</string>
<string name="app_details__no_versions__none_compatible_with_device">沒有與裝置相容的版本</string>
<string name="app_details__no_versions__explain_incompatible_signatures">已安裝的版本不相容於任何可用的版本。解除安裝該應用程式,將使您能夠查看和安裝相容的版本。這通常是透過 Google Play 或其它來源安裝的應用程式,如果它們是由不同的證書簽署時才會發生。</string>
<string name="app_details__no_versions__explain_incompatible_signers">已安裝的版本不相容於任何可用的版本。解除安裝該應用程式,將使您能夠查看和安裝相容的版本。這通常是透過 Google Play 或其它來源安裝的應用程式,如果它們是由不同的證書簽署時才會發生。</string>
<string name="app_list__dismiss_app_update">已忽略更新</string>
<string name="app_list__dismiss_vulnerable_app">已忽略漏洞</string>
<string name="app_list__dismiss_downloading_app">已取消下載</string>

View File

@ -93,11 +93,11 @@
<string name="app_details_donate_prompt_unknown_author">Buy the developers of %1$s a coffee!</string>
<string name="app_details_donate_prompt">%1$s is created by %2$s. Buy them a coffee!</string>
<string name="app_details__incompatible_mismatched_signature">Different signature to installed version</string>
<string name="app_details__incompatible_mismatched_signers">Different signer to installed version</string>
<string name="app_details__no_versions__show_incompat_versions">To show incompatible versions here anyway, enable the \"%1$s\" setting.</string>
<string name="app_details__no_versions__no_compatible_signatures">No versions with compatible signature</string>
<string name="app_details__no_versions__no_compatible_signers">No versions with compatible signer</string>
<string name="app_details__no_versions__none_compatible_with_device">No versions compatible with device</string>
<string name="app_details__no_versions__explain_incompatible_signatures">The installed version is not compatible with any available versions. Uninstalling the app will enable you to view and install compatible versions.
<string name="app_details__no_versions__explain_incompatible_signers">The installed version is not compatible with any available versions. Uninstalling the app will enable you to view and install compatible versions.
This often occurs with apps installed via Google Play or other sources, if they are signed by a different certificate.</string>

View File

@ -1,5 +1,8 @@
package org.fdroid.fdroid;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.fdroid.fdroid.data.Apk;
import org.fdroid.fdroid.data.App;
import org.fdroid.index.v2.FileV1;
@ -9,44 +12,24 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.NoSuchAlgorithmException;
import java.util.Collections;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
public class TestUtils {
@SuppressWarnings("unused")
private static final String TAG = "TestUtils"; // NOPMD
/**
* This is the F-Droid signature used to sign the AdAway binaries used for the multiRepo.*.jar
* repos used by some tests.
* These signers are used to sign the Bitcoin Wallet in f-droid.org/repo.
*/
private static final String FDROID_CERT = "3082033c30820224a00302010202044e9c4ba6300d06092a864886f70d01010505003060310b300906035504061302554b310c300a060355040813034f5247310c300a060355040713034f524731133011060355040a130a6664726f69642e6f7267310f300d060355040b13064644726f6964310f300d060355040313064644726f6964301e170d3131313031373135333731305a170d3339303330343135333731305a3060310b300906035504061302554b310c300a060355040813034f5247310c300a060355040713034f524731133011060355040a130a6664726f69642e6f7267310f300d060355040b13064644726f6964310f300d060355040313064644726f696430820122300d06092a864886f70d01010105000382010f003082010a0282010100981b0aac96f1c66be3c21e773327ee8c4d3b18c75c548243f4cfedbe8ef0d3c6cc1b3b7b094ddd39cdf71d034ef2cd2d1e7bdca458801b04a531cbe7106a3575151375cb32177b017f81cc508f981a1809d0a417c6f3d59ddfa876c3d91874b1d59e08eaf757da13fb82f7e6f7340abc56f0ab672f02e957d446585931388b1affb6f43a16efc7f060df9c8da17c86899b19495114cc5939decd521e172b48e68c6ec03bc58776acd6a52fd61fd839d2a404df25ae79c2ccec2d9a07c9a1751c341e5e9b706b8e713bec2149e16f5ca15a1d6fe67d52ebb210995ee03d9416118fa9434f65ffe6d43dddfe3e2b0c54b94ea8e5a1031ed41856cd369da41dc6790203010001300d06092a864886f70d0101050500038201010080951aa68b5a2c7ac464b66078afd4826df96e2c10b612a441036e43aa923bfa55f26c61b5d94c2132877a3801c2394328f70b322f6308dbea6ed4f0f4897d73d13af9498277f60685239acd8922275544334d295b07245ef0ec924e1c35e8004d8d268d97c957078149cc5635f8977ce432a56278a03664a45a6be51319b0b5f3e27b2372ae859215e3f3d0f5c8b86d1a42f742abe4d224870d419600966e46d83ce41df04e315353f334378f0f994732a6c05d351b1bea66efc62471762d0f752d379966e8293fc5fe4150665427b0f3fb3a1b64c3b75128abadc02c3efa44c06e2d22ba8f1c3f4b782ac2da0d56307173093fde31215d26ab05714a12d696"; // NOCHECKSTYLE LineLength
private static final String UPSTREAM_CERT = "308204e1308202c9a0030201020204483450fa300d06092a864886f70d01010b050030213110300e060355040b1307462d44726f6964310d300b06035504031304736f7661301e170d3136303832333133333131365a170d3434303130393133333131365a30213110300e060355040b1307462d44726f6964310d300b06035504031304736f766130820222300d06092a864886f70d01010105000382020f003082020a0282020100dfdcd120f3ab224999dddf4ea33ea588d295e4d7130bef48c143e9d76e5c0e0e9e5d45e64208e35feebc79a83f08939dd6a343b7d1e2179930a105a1249ccd36d88ff3feffc6e4dc53dae0163a7876dd45ecc1ddb0adf5099aa56c1a84b52affcd45d0711ffa4de864f35ac0333ebe61ea8673eeda35a88f6af678cc4d0f80b089338ac8f2a8279a64195c611d19445cab3fd1a020afed9bd739bb95142fb2c00a8f847db5ef3325c814f8eb741bacf86ed3907bfe6e4564d2de5895df0c263824e0b75407589bae2d3a4666c13b92102d8781a8ee9bb4a5a1a78c4a9c21efdaf5584da42e84418b28f5a81d0456a3dc5b420991801e6b21e38c99bbe018a5b2d690894a114bc860d35601416aa4dc52216aff8a288d4775cddf8b72d45fd2f87303a8e9c0d67e442530be28eaf139894337266e0b33d57f949256ab32083bcc545bc18a83c9ab8247c12aea037e2b68dee31c734cb1f04f241d3b94caa3a2b258ffaf8e6eae9fbbe029a934dc0a0859c5f120334812693a1c09352340a39f2a678dbc1afa2a978bfee43afefcb7e224a58af2f3d647e5745db59061236b8af6fcfd93b3602f9e456978534f3a7851e800071bf56da80401c81d91c45f82568373af0576b1cc5eef9b85654124b6319770be3cdba3fbebe3715e8918fb6c8966624f3d0e815effac3d2ee06dd34ab9c693218b2c7c06ba99d6b74d4f17b8c3cb0203010001a321301f301d0603551d0e04160414d62bee9f3798509546acc62eb1de14b08b954d4f300d06092a864886f70d01010b05000382020100743f7c5692085895f9d1fffad390fb4202c15f123ed094df259185960fd6dadf66cb19851070f180297bba4e6996a4434616573b375cfee94fee73a4505a7ec29136b7e6c22e6436290e3686fe4379d4e3140ec6a08e70cfd3ed5b634a5eb5136efaaabf5f38e0432d3d79568a556970b8cfba2972f5d23a3856d8a981b9e9bbbbb88f35e708bde9cbc5f681cbd974085b9da28911296fe2579fa64bbe9fa0b93475a7a8db051080b0c5fade0d1c018e7858cd4cbe95145b0620e2f632cbe0f8af9cbf22e2fdaa72245ae31b0877b07181cc69dd2df74454251d8de58d25e76354abe7eb690f22e59b08795a8f2c98c578e0599503d9085927634072c82c9f82abd50fd12b8fd1a9d1954eb5cc0b4cfb5796b5aaec0356643b4a65a368442d92ef94edd3ac6a2b7fe3571b8cf9f462729228aab023ef9183f73792f5379633ccac51079177d604c6bc1873ada6f07d8da6d68c897e88a5fa5d63fdb8df820f46090e0716e7562dd3c140ba279a65b996f60addb0abe29d4bf2f5abe89480771d492307b926d91f02f341b2148502903c43d40f3c6c86a811d060711f0698b384acdcc0add44eb54e42962d3d041accc715afd49407715adc09350cb55e8d9281a3b0b6b5fcd91726eede9b7c8b13afdebb2c2b377629595f1096ba62fb14946dbac5f3c5f0b4e5b712e7acc7dcf6c46cdc5e6d6dfdeee55a0c92c2d70f080ac6"; // NOCHECKSTYLE LineLength
public static final String FDROID_SIG;
public static final String UPSTREAM_SIG;
static {
// Some code requires the full certificate (e.g. when we mock PackageInfo to give to the
// installed app provider), while others requires the hashed certificate (e.g. inserting
// into the apk provider directly, without the need to mock anything).
try {
FDROID_SIG = new Hasher("MD5", FDROID_CERT.getBytes()).getHash();
UPSTREAM_SIG = new Hasher("MD5", UPSTREAM_CERT.getBytes()).getHash();
} catch (NoSuchAlgorithmException e) {
throw new IllegalStateException(e);
}
}
public static final String FDROID_SIGNER = "bcb4b93636bb10c7ddaf61aa9604ff795dfdb05fad4d9412b335682f0b612e32";
public static final String UPSTREAM_SIGNER = "58dcd8a0edf2a590683ba022d22a8dca5659aabf4728741a5c07af738d53db38";
public static Apk getApk(int versionCode) {
return getApk(versionCode, "signature", null);
}
public static Apk getApk(int versionCode, String signature, String releaseChannel) {
public static Apk getApk(int versionCode, String signer, String releaseChannel) {
Apk apk = new Apk();
apk.repoAddress = "http://www.example.com/fdroid/repo";
apk.canonicalRepoAddress = "http://www.example.com/fdroid/repo";
@ -57,7 +40,7 @@ public class TestUtils {
apk.apkFile = new FileV1("Test Apk", "hash", null, null);
apk.size = 10000;
apk.compatible = true;
apk.sig = signature;
apk.signer = signer;
apk.releaseChannels = releaseChannel == null ?
null : Collections.singletonList(releaseChannel);
return apk;

View File

@ -1,10 +1,19 @@
package org.fdroid.fdroid;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static vendored.org.apache.commons.codec.digest.MessageDigestAlgorithms.SHA_256;
import android.content.Context;
import android.content.res.Resources;
import android.text.format.DateUtils;
import androidx.test.core.app.ApplicationProvider;
import org.fdroid.fdroid.views.AppDetailsRecyclerViewAdapter;
import org.junit.Before;
import org.junit.Test;
@ -14,15 +23,6 @@ import org.robolectric.RobolectricTestRunner;
import java.io.File;
import java.io.IOException;
import androidx.test.core.app.ApplicationProvider;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static vendored.org.apache.commons.codec.digest.MessageDigestAlgorithms.SHA_256;
/**
* @see <a href="https://gitlab.com/fdroid/fdroidclient/-/merge_requests/1089#note_822501322">forced to vendor Apache Commons Codec</a>
*/

View File

@ -37,10 +37,10 @@ public class SuggestedVersionTest {
public void singleRepoSingleSig() {
App singleApp = TestUtils.getApp();
singleApp.installedVersionCode = 1;
singleApp.installedSig = TestUtils.FDROID_SIG;
Apk apk1 = TestUtils.getApk(1, TestUtils.FDROID_SIG, Apk.RELEASE_CHANNEL_STABLE);
Apk apk2 = TestUtils.getApk(2, TestUtils.FDROID_SIG, Apk.RELEASE_CHANNEL_STABLE);
Apk apk3 = TestUtils.getApk(3, TestUtils.FDROID_SIG, Apk.RELEASE_CHANNEL_BETA);
singleApp.installedSigner = TestUtils.FDROID_SIGNER;
Apk apk1 = TestUtils.getApk(1, TestUtils.FDROID_SIGNER, Apk.RELEASE_CHANNEL_STABLE);
Apk apk2 = TestUtils.getApk(2, TestUtils.FDROID_SIGNER, Apk.RELEASE_CHANNEL_STABLE);
Apk apk3 = TestUtils.getApk(3, TestUtils.FDROID_SIGNER, Apk.RELEASE_CHANNEL_BETA);
List<Apk> apks = new ArrayList<>();
apks.add(apk3);
apks.add(apk2);
@ -53,15 +53,15 @@ public class SuggestedVersionTest {
}
@Test
public void singleRepoMultiSig() {
public void singleRepoMultiSigner() {
App singleApp = TestUtils.getApp();
singleApp.installedVersionCode = 0;
Apk apk1 = TestUtils.getApk(1, TestUtils.FDROID_SIG, Apk.RELEASE_CHANNEL_STABLE);
Apk apk2 = TestUtils.getApk(2, TestUtils.FDROID_SIG, Apk.RELEASE_CHANNEL_STABLE);
Apk apk3 = TestUtils.getApk(3, TestUtils.FDROID_SIG, Apk.RELEASE_CHANNEL_STABLE);
Apk apk4 = TestUtils.getApk(4, TestUtils.UPSTREAM_SIG, Apk.RELEASE_CHANNEL_STABLE);
Apk apk5 = TestUtils.getApk(5, TestUtils.UPSTREAM_SIG, Apk.RELEASE_CHANNEL_BETA);
Apk apk1 = TestUtils.getApk(1, TestUtils.FDROID_SIGNER, Apk.RELEASE_CHANNEL_STABLE);
Apk apk2 = TestUtils.getApk(2, TestUtils.FDROID_SIGNER, Apk.RELEASE_CHANNEL_STABLE);
Apk apk3 = TestUtils.getApk(3, TestUtils.FDROID_SIGNER, Apk.RELEASE_CHANNEL_STABLE);
Apk apk4 = TestUtils.getApk(4, TestUtils.UPSTREAM_SIGNER, Apk.RELEASE_CHANNEL_STABLE);
Apk apk5 = TestUtils.getApk(5, TestUtils.UPSTREAM_SIGNER, Apk.RELEASE_CHANNEL_BETA);
List<Apk> apks = new ArrayList<>();
apks.add(apk5);
apks.add(apk4);
@ -75,13 +75,13 @@ public class SuggestedVersionTest {
// Now install v1 with the f-droid signature. In response, we should only suggest
// apps with that sig in the future. That is, version 4 from upstream is not considered.
singleApp.installedSig = TestUtils.FDROID_SIG;
singleApp.installedSigner = TestUtils.FDROID_SIGNER;
singleApp.installedVersionCode = 1;
assertSuggested(singleApp, apks, 3, Apk.RELEASE_CHANNEL_STABLE);
// This adds the "suggestedVersionCode" version of the app, but signed by f-droid.
Apk apk4f = TestUtils.getApk(4, TestUtils.FDROID_SIG, Apk.RELEASE_CHANNEL_STABLE);
Apk apk5f = TestUtils.getApk(5, TestUtils.FDROID_SIG, Apk.RELEASE_CHANNEL_BETA);
Apk apk4f = TestUtils.getApk(4, TestUtils.FDROID_SIGNER, Apk.RELEASE_CHANNEL_STABLE);
Apk apk5f = TestUtils.getApk(5, TestUtils.FDROID_SIGNER, Apk.RELEASE_CHANNEL_BETA);
apks.clear();
apks.add(apk5);
apks.add(apk5f);
@ -106,10 +106,10 @@ public class SuggestedVersionTest {
public void testIncompatibleWithBeta() {
App singleApp = TestUtils.getApp();
singleApp.installedVersionCode = 1;
singleApp.installedSig = TestUtils.FDROID_SIG;
Apk apk1 = TestUtils.getApk(1, TestUtils.FDROID_SIG, Apk.RELEASE_CHANNEL_STABLE);
Apk apk2 = TestUtils.getApk(2, TestUtils.FDROID_SIG, Apk.RELEASE_CHANNEL_STABLE);
Apk apk3 = TestUtils.getApk(3, TestUtils.FDROID_SIG, Apk.RELEASE_CHANNEL_STABLE);
singleApp.installedSigner = TestUtils.FDROID_SIGNER;
Apk apk1 = TestUtils.getApk(1, TestUtils.FDROID_SIGNER, Apk.RELEASE_CHANNEL_STABLE);
Apk apk2 = TestUtils.getApk(2, TestUtils.FDROID_SIGNER, Apk.RELEASE_CHANNEL_STABLE);
Apk apk3 = TestUtils.getApk(3, TestUtils.FDROID_SIGNER, Apk.RELEASE_CHANNEL_STABLE);
apk3.compatible = false;
List<Apk> apks = new ArrayList<>();
apks.add(apk3);
@ -122,8 +122,8 @@ public class SuggestedVersionTest {
* Checks that the app exists, that its suggested version code is correct, and that the apk which is "suggested"
* has the correct signature.
* <p>
* If {@param installedSig} is null then {@param installedVersion} is ignored and the signature of the suggested
* apk is not checked.
* If {@param installedSigner} is null then {@param installedVersion} is
* ignored and the signature of the suggested APK is not checked.
*/
public void assertSuggested(App app, List<Apk> apks, int suggestedVersion,
String releaseChannel, boolean hasUpdates) {
@ -131,8 +131,8 @@ public class SuggestedVersionTest {
assertNotNull(suggestedApk);
assertEquals("Suggested version on App", suggestedVersion, suggestedApk.versionCode);
if (app.installedSig != null) {
assertEquals("Installed signature on Apk", app.installedSig, suggestedApk.sig);
if (app.installedSigner != null) {
assertEquals("Installed signature on Apk", app.installedSigner, suggestedApk.signer);
}
assertTrue(app.canAndWantToUpdate(suggestedApk));
AppPrefs appPrefs = new AppPrefs(app.packageName, 0, Collections.singletonList(releaseChannel));

View File

@ -3,7 +3,7 @@ package org.fdroid
import android.content.pm.PackageInfo
import android.content.pm.PackageManager.GET_SIGNING_CERTIFICATES
import androidx.core.content.pm.PackageInfoCompat
import org.fdroid.index.IndexUtils.getPackageSignature
import org.fdroid.index.IndexUtils.getPackageSigner
import org.fdroid.index.v2.PackageVersion
public interface PackagePreference {
@ -39,7 +39,7 @@ public class UpdateChecker(
allowedSignersGetter = {
// always gives us the oldest signer, even if they rotated certs by now
@Suppress("DEPRECATION")
packageInfo.signatures.map { getPackageSignature(it.toByteArray()) }.toSet()
packageInfo.signatures.map { getPackageSigner(it.toByteArray()) }.toSet()
},
installedVersionCode = PackageInfoCompat.getLongVersionCode(packageInfo),
allowedReleaseChannels = releaseChannels,
@ -94,7 +94,7 @@ public class UpdateChecker(
includeKnownVulnerabilities: Boolean = false,
preferencesGetter: (() -> PackagePreference?)? = null,
): T? {
// getting signatures is rather expensive, so we only do that when there's update candidates
// getting signers is rather expensive, so we only do that when there's update candidates
val allowedSigners by lazy { allowedSignersGetter?.let { it() } }
versions.iterator().forEach versions@{ version ->
// if the installed version has a known vulnerability, we return it as well
@ -120,7 +120,7 @@ public class UpdateChecker(
if (!hasAllowedReleaseChannel) return@versions
// check if this version's signer is allowed
val versionSigners = version.signer?.sha256?.toSet()
// F-Droid allows versions without signature 🤦, allow those and if no allowed signers
// F-Droid allows versions without a signer entry, allow those and if no allowed signers
if (versionSigners != null && allowedSigners != null) {
if (versionSigners.intersect(allowedSigners!!).isEmpty()) return@versions
}

View File

@ -8,8 +8,37 @@ public object IndexUtils {
return sha256(certificate.decodeHex()).toHex()
}
public fun getPackageSignature(signatureBytes: ByteArray): String {
return sha256(signatureBytes).toHex()
/**
* Get the standard, lowercase SHA-256 fingerprint used to represent an
* APK or JAR signing key. **NOTE**: this does not handle signers that
* have multiple X.509 signing certificates.
* <p>
* Calling the X.509 signing certificate the "signature" is incorrect, e.g.
* [android.content.pm.PackageInfo.signatures] or [android.content.pm.Signature].
* The Android docs about APK signatures call this the "signer".
*
* @see org.fdroid.fdroid.data.Apk#signer
* @see android.content.pm.PackageInfo#signatures
* @see <a href="https://source.android.com/docs/security/features/apksigning/v2">APK Signature Scheme v2</a>
*/
public fun getPackageSigner(signerBytes: ByteArray): String {
return sha256(signerBytes).toHex()
}
/**
* Get the fingerprint used to represent an APK signing key in F-Droid.
* This is a custom fingerprint algorithm that was kind of accidentally
* created. It is now here only for backwards compatibility. It should
* only ever be used for writing the `sig` value out to
* `index-v1.json`.
*
* @see getPackageSigner
* @see org.fdroid.fdroid.Utils.getPackageSigner
* @see org.fdroid.fdroid.data.Apk
*/
@Deprecated("Only here for backwards compatibility when writing out index-v1.json")
public fun getsig(signerBytes: ByteArray): String {
return md5(signerBytes.toHex().encodeToByteArray()).toHex()
}
internal fun String.decodeHex(): ByteArray {
@ -32,4 +61,15 @@ public object IndexUtils {
messageDigest.update(bytes)
return messageDigest.digest()
}
@Deprecated("Only here for backwards compatibility when writing out index-v1.json")
internal fun md5(bytes: ByteArray): ByteArray {
val messageDigest: MessageDigest = try {
MessageDigest.getInstance("MD5")
} catch (e: NoSuchAlgorithmException) {
throw AssertionError(e)
}
messageDigest.update(bytes)
return messageDigest.digest()
}
}

View File

@ -10,7 +10,8 @@ import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.json.encodeToStream
import org.fdroid.index.IndexCreator
import org.fdroid.index.IndexParser
import org.fdroid.index.IndexUtils.getPackageSignature
import org.fdroid.index.IndexUtils.getPackageSigner
import org.fdroid.index.IndexUtils.getsig
import java.io.File
import java.io.IOException
@ -82,7 +83,8 @@ public class IndexV1Creator(
val apk = copyApkToRepo(packageInfo)
val hash = hashFile(apk)
val apkName = apk.name
val signer = getPackageSignature(packageInfo.signatures[0].toByteArray())
val sig = getsig(packageInfo.signatures[0].toByteArray())
val signer = getPackageSigner(packageInfo.signatures[0].toByteArray())
return PackageV1(
packageName = packageInfo.packageName,
versionCode = PackageInfoCompat.getLongVersionCode(packageInfo),
@ -92,7 +94,7 @@ public class IndexV1Creator(
apkName = apkName,
hash = hash,
hashType = "sha256",
sig = signer, // should be some custom MD5/hex thing, but it works without...
sig = sig,
signer = signer,
size = File(packageInfo.applicationInfo.publicSourceDir).length(),
minSdkVersion = if (SDK_INT >= 24) packageInfo.applicationInfo.minSdkVersion else null,

View File

@ -12,7 +12,7 @@ internal class UpdateCheckerTest {
private val updateChecker = UpdateChecker { true }
private val signer = "9f9261f0b911c60f8db722f5d430a9e9d557a3f8078ce43e1c07522ef41efedb"
private val signatureV2 = SignerV2(listOf(signer))
private val signerV2 = SignerV2(listOf(signer))
private val betaChannels = listOf(RELEASE_CHANNEL_BETA)
private val version1 = Version(1)
private val version2 = Version(2)
@ -102,7 +102,7 @@ internal class UpdateCheckerTest {
@Test
fun multipleSignersNotSupported() {
val version = version3.copy(signer = signatureV2.copy(hasMultipleSigners = true))
val version = version3.copy(signer = signerV2.copy(hasMultipleSigners = true))
val versions = listOf(version)
assertNull(updateChecker.getUpdate(versions))
}
@ -110,9 +110,9 @@ internal class UpdateCheckerTest {
@Test
fun onlyAllowedSignersGetIncluded() {
val version3 = version3.copy(signer = SignerV2(listOf("foo", "bar")))
val version2 = version2.copy(signer = signatureV2)
val version2 = version2.copy(signer = signerV2)
val versions = listOf(version3, version2, version1)
val v2Set = signatureV2.sha256.toMutableSet()
val v2Set = signerV2.sha256.toMutableSet()
// 3 gets returned if at least one of its signers are allowed, or all are allowed
assertEquals(version3, updateChecker.getUpdate(versions, { setOf("foo") }))
assertEquals(version3, updateChecker.getUpdate(versions, { setOf("bar") }))
@ -123,9 +123,9 @@ internal class UpdateCheckerTest {
// 2 gets returned if at least one of its signers are allowed
assertEquals(version2, updateChecker.getUpdate(versions, { v2Set }))
assertEquals(version2, updateChecker.getUpdate(versions, { v2Set + "foo bar" }))
// empty set means no signatures are allowed, only works for apps without signature
// empty set means no signers are allowed, only works for packages without "signer"
assertEquals(version1, updateChecker.getUpdate(versions, { emptySet() }))
// apps without signature get through everything
// packages without "signer" entries get through everything
assertEquals(version1, updateChecker.getUpdate(versions, { setOf("no version") }))
// if no matching sig can be found, no version gets returned
assertNull(updateChecker.getUpdate(listOf(version3, version2), { setOf("no version") }))

View File

@ -0,0 +1,44 @@
package org.fdroid.index
import org.fdroid.index.IndexUtils.getsig
import org.fdroid.index.IndexUtils.md5
import org.fdroid.index.IndexUtils.toHex
import org.junit.Test
import kotlin.test.assertEquals
internal class IndexUtilsTest {
/**
* Test the replacement for the ancient fingerprint algorithm.
*
* @see org.fdroid.fdroid.data.Apk.sig
* @see org.fdroid.fdroid.Utils.getsig
*/
@Deprecated("Only here for backwards compatibility when writing out index-v1.json")
@Test
fun testGetsig() {
/*
* I don't fully understand the loop used here. I've copied it verbatim
* from getsig.java bundled with FDroidServer. I *believe* it is taking
* the raw byte encoding of the certificate & converting it to a byte
* array of the hex representation of the original certificate byte
* array. This is then MD5 sum'd. It's a really bad way to be doing this
* if I'm right... If I'm not right, I really don't know! see lines
* 67->75 in getsig.java bundled with Fdroidserver
*/
for (length in intArrayOf(256, 345, 1233, 4032, 12092)) {
val rawCertBytes = ByteArray(length)
java.util.Random().nextBytes(rawCertBytes)
val fdroidSig = ByteArray(rawCertBytes.size * 2)
for (j in rawCertBytes.indices) {
val v = rawCertBytes[j].toInt()
var d = ((v shr 4) and 0x000F).toByte() // Java: int d = (v >> 4) & 0xF;
fdroidSig[j * 2] = (if (d >= 10) 'a'.code + d - 10 else '0'.code + d).toByte()
d = (v and 0x000F).toByte() // Java: d = v & 0xF
fdroidSig[j * 2 + 1] = (if (d >= 10) 'a'.code + d - 10 else '0'.code + d).toByte()
}
val sig = md5(fdroidSig).toHex()
assertEquals(sig, getsig(rawCertBytes))
assertEquals(sig, md5(rawCertBytes.toHex().toByteArray()).toHex())
}
}
}