Merge branch 'master' into new-swap

This commit is contained in:
Peter Serwylo 2015-09-02 16:54:09 +10:00
commit f635df8502
102 changed files with 2678 additions and 761 deletions

3
.gitignore vendored
View File

@ -45,6 +45,3 @@ out
# Imported libs
extern/*/libs/
extern/*/*/libs/
# We don't use proguard anywhere
proguard-project.txt

22
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,22 @@
before_script:
- apt-get -q update -y
- echo " == Installing required packages"
- apt-get -q install -y wget tar unzip lib32stdc++6 lib32z1
- echo " == Installing OpenJDK 7"
- apt-get -q install -y openjdk-7-jdk
- echo " == Installing the Android SDK"
- wget -q -O android-sdk.tgz https://dl.google.com/android/android-sdk_r24.3.4-linux.tgz
- tar -x -z -f android-sdk.tgz
- mv android-sdk-linux android-sdk
- export ANDROID_HOME=$PWD/android-sdk
- export PATH="$ANDROID_HOME/tools:$PATH"
- echo " == Installing Android SDK components"
- echo y | android -s update sdk --no-ui -a -t platform-tools,tools,build-tools-23.0.0,android-22,extra-android-m2repository
- echo " == Installing Gradle"
- wget -q -O gradle.zip https://services.gradle.org/distributions/gradle-2.4-bin.zip
- unzip -q gradle.zip
- export PATH="$PWD/gradle-2.4/bin:$PATH"
build:
script:
- gradle build

View File

@ -1,3 +1,39 @@
### 0.96 (2015-09-??)
* Move the repo index update to a notification
* Handle apk downloads without a dialog
* Don't let users try to uninstall system apps that haven't been updated
* Disable prompt to install F-Droid as a privileged app until it's more stable
* Various bugfixes in the process that installs F-Droid as a privileged app
* Fix crash when updating from an older release if using the "Light with dark
ActionBar" theme
* Re-add SuperUser third-party permission to the manifest since some systems
require it
* Fix privileged installer confirmation screen issues on Android 2.X/3.X/4.X
* Fix a few crashes, including package receivers and NFC actions
* Translation updates
### 0.95.1 (2015-08-10)
* Disable prompt to install F-Droid into system until it's more stable
* Fix crash when updating from an older release if using the "Light with dark
ActionBar" theme
* Re-add SuperUser third-party permission to the manifest since some systems
require it
* Fix privileged installer confirmation screen crash on Android < 3.0
### 0.95 (2015-08-04)
* Start porting UI to Material Design, including a new launcher icon

38
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,38 @@
Contributing
============
Reporting issues
----------------
Remember to include:
* Android version
* Device model
* F-Droid version
* Steps to reproduce the issue
* Logcat - see [instructions](https://f-droid.org/wiki/page/Getting_logcat_messages_after_crash)
Style
-----
We follow the [Google Java style](https://google-styleguide.googlecode.com/svn/trunk/javaguide.html).
To summarize it:
* Four space indentation
* UTF-8 source files
* Exactly one top-level class per file
* No wildcard imports
* One statement per line
* K&R spacings with braces and parenthesis
* Commented fallthroughs
* Braces are always used after if, for and while
The current code base doesn't follow it entirely, but new code should follow
it.
Debugging
---------
To get all the logcat messages by F-Droid, you can run:
adb logcat | grep `adb shell ps | grep org.fdroid.fdroid | cut -c10-15`

View File

@ -3,14 +3,14 @@
xmlns:tools="http://schemas.android.com/tools"
package="org.fdroid.fdroid"
android:installLocation="auto"
android:versionCode="95050"
android:versionName="0.95"
android:versionCode="96006"
android:versionName="0.96-alpha6"
>
<uses-sdk
tools:overrideLibrary="org.thoughtcrime.ssl.pinning"
android:minSdkVersion="8"
android:targetSdkVersion="21"
android:targetSdkVersion="22"
/>
<supports-screens
@ -57,6 +57,11 @@
<uses-permission android:name="android.permission.DELETE_PACKAGES"
tools:ignore="ProtectedPermissions"/>
<!-- Indicate that F-Droid may request root access (introduced by Koush's Superuser app)
This permission is deprecated, but necessary for some old superuser
apps to actually grant superuser access to F-Droid. -->
<uses-permission android:name="android.permission.ACCESS_SUPERUSER"/>
<application
android:name="FDroidApp"
android:icon="@drawable/ic_launcher"

View File

@ -16,22 +16,21 @@ if ( !hasProperty( 'sourceDeps' ) ) {
dependencies {
compile 'com.android.support:support-v4:22.1.0',
'com.android.support:appcompat-v7:22.1.0',
'com.android.support:support-annotations:22.1.0',
compile 'com.android.support:support-v4:22.2.1'
compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.android.support:support-annotations:22.2.1'
'cc.mvdan.accesspoint:library:0.1.1',
'org.thoughtcrime.ssl.pinning:AndroidPinning:1.0.0',
'com.nostra13.universalimageloader:universal-image-loader:1.9.4',
'com.google.zxing:core:3.2.0',
'eu.chainfire:libsuperuser:1.0.0.201504231659',
compile 'org.thoughtcrime.ssl.pinning:AndroidPinning:1.0.0'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.4'
compile 'com.google.zxing:core:3.2.0'
compile 'eu.chainfire:libsuperuser:1.0.0.201504231659'
compile 'cc.mvdan.accesspoint:library:0.1.1'
// We use a slightly modified spongycastle, see
// openkeychain/spongycastle with some changes on top of 1.51.0.0
'com.madgag.spongycastle:pkix:1.51.0.0',
'com.madgag.spongycastle:prov:1.51.0.0',
'com.madgag.spongycastle:core:1.51.0.0'
compile 'com.madgag.spongycastle:pkix:1.51.0.0'
compile 'com.madgag.spongycastle:prov:1.51.0.0'
compile 'com.madgag.spongycastle:core:1.51.0.0'
// Upstream doesn't have a binary on mavenCentral/jcenter yet:
// https://github.com/kolavar/android-support-v4-preferencefragment/issues/13
@ -41,10 +40,12 @@ if ( !hasProperty( 'sourceDeps' ) ) {
// yet (seems to be a little unsupported as of late), so not using mavenCentral/jcenter.
compile(name: 'nanohttpd-2.1.0')
// Upstream doesn't have a binary on mavenCentral.
// Upstream doesn't have a binary on mavenCentral. Looks discontinued.
compile(name: 'zipsigner')
// Project semi-abandoned, 3.4.1 is from 2011 and we use trunk from 2013
// TODO: active again and 3.4.2 now released, switch when available in jcenter:
// https://github.com/openhab/jmdns/issues/6
compile(name: 'jmdns')
androidTestCompile 'commons-io:commons-io:2.2'
@ -70,21 +71,9 @@ if ( !hasProperty( 'sourceDeps' ) ) {
exclude module: 'support-v4'
}
// Until the android team updates the gradle plugin version from 0.10.0 to
// a newer version, we can't build this from source with our gradle version
// of 1.0.0. They use API's which have been moved in the newer plugin.
// So yes, this is a little annoying that our "source dependencies" include
// a bunch of binaries from jcenter - but the ant build file (which is the
// one used to build F-Droid which is distributed on https://f-droid.org
// builds these from source - well - not support-v4).
//
// If the android team gets the build script working with the newer plugin,
// then you can find the relevant portions of the ../build.gradle file that
// include magic required to make it work at around about the v0.78 git tag.
// They have since been removed to clean up the build file.
compile 'com.android.support:support-v4:22.1.0',
'com.android.support:appcompat-v7:22.1.0',
'com.android.support:support-annotations:22.1.0'
compile 'com.android.support:support-v4:22.2.1',
'com.android.support:appcompat-v7:22.1.1',
'com.android.support:support-annotations:22.2.1'
androidTestCompile 'commons-io:commons-io:2.2'
}
@ -127,8 +116,8 @@ task binaryDeps(type: Copy, dependsOn: ':F-Droid:prepareReleaseDependencies') {
}
android {
compileSdkVersion 21
buildToolsVersion '22.0.1'
compileSdkVersion 22
buildToolsVersion '23.0.0'
sourceSets {
main {
@ -154,15 +143,15 @@ android {
}
buildTypes {
release {
minifyEnabled false
all {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
buildTypes {
debug {
debuggable true
}
}
}
compileOptions {
compileOptions.encoding = "UTF-8"
@ -176,17 +165,14 @@ android {
checkReleaseBuilds false
abortOnError false
htmlReport true
xmlReport false
textReport false
// Our translations are crowd-sourced
disable 'MissingTranslation'
}
// Enable all Android lint warnings
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:all"
}
}
}
// This person took the example code below from another blogpost online, however

37
F-Droid/proguard-rules.pro vendored Normal file
View File

@ -0,0 +1,37 @@
-dontobfuscate
-dontoptimize
-keepattributes SourceFile,LineNumberTable,Exceptions
-keep class org.fdroid.fdroid.** {*;}
-dontskipnonpubliclibraryclassmembers
-dontwarn android.test.**
-dontwarn com.android.support.test.**
-dontwarn javax.naming.**
-dontnote android.support.**
-dontnote **ILicensingService
# These libraries are known to break if minification is enabled on them. They
# use reflection to instantiate classes, for example. If the keep flags are
# removed, proguard will strip classes which are required, which may result in
# crashes.
-keep class kellinwood.** {*;}
-keep class javax.jmdns.** {*;}
-keep class org.spongycastle.** {*;}
-keep class eu.chainfire.** {*;}
# This keeps class members used for SystemInstaller IPC.
# Reference: https://gitlab.com/fdroid/fdroidclient/issues/79
-keepclassmembers class * implements android.os.IInterface {
public *;
}
# Samsung Android 4.2 bug
# https://code.google.com/p/android/issues/detail?id=78377
-keepnames class !android.support.v7.internal.view.menu.**, ** {*;}
-keep public class android.support.v7.widget.** {*;}
-keep public class android.support.v7.internal.widget.** {*;}
-keep public class * extends android.support.v4.view.ActionProvider {
public <init>(android.content.Context);
}

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!--
Defines the layout of a single permission item.
-->
<view class="org.fdroid.fdroid.installer.AppSecurityPermissions$PermissionItemView"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="?android:attr/selectableItemBackground">
<ImageView
android:id="@+id/perm_icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="8dp"
android:scaleType="fitCenter" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="?android:attr/dividerVertical" />
<TextView
android:id="@+id/perm_name"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textSize="16sp"
android:layout_marginStart="8dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|left" />
</view>

View File

@ -0,0 +1,149 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!--
Defines the layout of the splash screen that displays the security
settings required for an application and requests the confirmation of the
user before it is installed.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/install_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/install_confirm"
android:textAppearance="?android:attr/textAppearanceMedium"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="4dip" />
<ImageView
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="?android:attr/dividerHorizontal"
android:visibility="gone" />
<FrameLayout
android:id="@+id/filler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:visibility="gone">
</FrameLayout>
<TabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<HorizontalScrollView android:id="@+id/tabscontainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/tab_unselected_holo"
android:fillViewport="true"
android:scrollbars="none">
<FrameLayout android:layout_width="match_parent"
android:layout_height="wrap_content">
<TabWidget
android:id="@android:id/tabs"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</FrameLayout>
</HorizontalScrollView>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0"/>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
</TabHost>
<!-- OK confirm and cancel buttons. -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:divider="?android:attr/dividerHorizontal"
android:showDividers="beginning">
<LinearLayout
style="?android:attr/buttonBarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:measureWithLargestChild="true">
<LinearLayout android:id="@+id/leftSpacer"
android:layout_weight="0.25"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone" />
<Button android:id="@+id/cancel_button"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layout_weight="1"
android:text="@string/cancel"
android:maxLines="2"
style="?android:attr/buttonBarButtonStyle" />
<Button android:id="@+id/ok_button"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_weight="1"
android:text="@string/next"
android:maxLines="2"
android:filterTouchesWhenObscured="true"
style="?android:attr/buttonBarButtonStyle" />
<LinearLayout android:id="@+id/rightSpacer"
android:layout_width="0dip"
android:layout_weight="0.25"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

View File

@ -133,6 +133,7 @@
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_below="@id/progress_bar"
android:visibility="gone"
android:textSize="12sp"/>
<TextView
android:id="@+id/progress_percentage"
@ -141,6 +142,7 @@
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_below="@id/progress_bar"
android:visibility="gone"
android:textSize="12sp"/>
</RelativeLayout>
<ImageButton

View File

@ -22,8 +22,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="?android:attr/selectableItemBackground">
android:orientation="horizontal">
<ImageView
android:id="@+id/perm_icon"
@ -35,8 +34,7 @@
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="?android:attr/dividerVertical" />
android:layout_height="match_parent" />
<TextView
android:id="@+id/perm_name"

View File

@ -32,7 +32,7 @@ installation screens
android:layout_width="32dip"
android:layout_height="32dip"
android:layout_marginStart="8dip"
android:background="@color/transparent"
android:background="@android:color/transparent"
android:layout_alignParentStart="true"
android:gravity="start"
android:scaleType="centerCrop"/>

View File

@ -42,7 +42,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="?android:attr/dividerHorizontal"
android:visibility="gone" />
<FrameLayout

View File

@ -55,7 +55,7 @@
android:gravity="center"
android:textAlignment="center"
android:text="@string/swap_intro"
android:textColor="@color/white"
android:textColor="@android:color/white"
android:textSize="18sp"
tools:ignore="UnusedAttribute" />

View File

@ -7,6 +7,11 @@
android:icon="@drawable/ic_search_white"
android:title="@string/menu_search"
app:showAsAction="always"/>
<item
android:id="@+id/action_update_repo"
android:icon="@drawable/ic_refresh_white"
android:title="@string/menu_update_repo"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/action_swap"
android:title="@string/swap"
@ -21,11 +26,6 @@
android:icon="@drawable/ic_bluetooth_white"
android:title="@string/menu_send_apk_bt"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/action_update_repo"
android:icon="@drawable/ic_refresh_white"
android:title="@string/menu_update_repo"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_settings_white"

View File

@ -3,4 +3,85 @@
<string name="searchres_oneapp">عثر على تطبيق واحد يوافق \'%s\':</string>
<string name="searchres_noapps">لم يعثر على أي تطبيق يوافق \'%s\'</string>
<string name="version">الإصدار</string>
<string name="edit">تحرير</string>
<string name="delete">حذف</string>
<string name="updates">التحديثات</string>
<string name="local_repo_name">إسم مستودعك المحلي</string>
<string name="search_results">نتائج البحث</string>
<string name="app_details">تفاصيل التطبيق</string>
<string name="about_site">الموقع الإلكتروني:</string>
<string name="about_mail">البريد الإلكتروني:</string>
<string name="about_version">الإصدار:</string>
<string name="inst">مثبت</string>
<string name="not_inst">غير مثبت</string>
<string name="inst_known_source">مثبت (من s%)</string>
<string name="inst_unknown_source">مثبت ( من مصدر غير معروف)</string>
<string name="ok">موافق</string>
<string name="yes">نعم</string>
<string name="no">لا</string>
<string name="repo_add_title">إضافة مستودع جديد</string>
<string name="repo_add_add">إضافة</string>
<string name="cancel">إلغاء</string>
<string name="enable">تمكين</string>
<string name="add_key">إضافة مفتاح</string>
<string name="repo_update_title">تحديث المستودعات</string>
<string name="tab_noninstalled">متواجد</string>
<string name="tab_updates">التحديثات</string>
<string name="process_wait_title">من فضلك إنتظر</string>
<string name="choose_bt_send">إختيار البلوتوث كطريقة إرسال</string>
<string name="send_via_bluetooth">إرسال بواسطة البلوتوث</string>
<string name="repo_add_url">عنوان المستودع</string>
<string name="repo_add_fingerprint">البصمة (إختياري)</string>
<string name="repo_exists">هذا المستودع موجود بالفعل!</string>
<string name="menu_update_repo">تحديث المستودعات</string>
<string name="menu_manage">المستودعات</string>
<string name="menu_preferences">التفضيلات</string>
<string name="menu_about">حول</string>
<string name="menu_search">بحث</string>
<string name="menu_rem_repo">إزالة المستودع</string>
<string name="menu_launch">تشغيل</string>
<string name="menu_share">مشاركة</string>
<string name="menu_install">تثبيت</string>
<string name="menu_uninstall">إلغاء التثبيت</string>
<string name="menu_ignore_all">تجاهل كل التحديثات</string>
<string name="menu_ignore_this">تجاهل هذا التحديث</string>
<string name="menu_source">الشفرة المصدرية</string>
<string name="menu_donate">التبرع</string>
<string name="category_all">الكل</string>
<string name="category_whatsnew">مالجديد</string>
<string name="local_repo">مستودع محلي</string>
<string name="updating">يتم التحديث…</string>
<string name="update_repo">تحديث المستودع</string>
<string name="deleting_repo">يتم حذف المستودع الحالي…</string>
<string name="fingerprint">البصمة:</string>
<string name="enable_wifi">تمكين الإتصال اللاسلكي</string>
<string name="enabling_wifi">يتم تمكين الإتصال اللاسلكي…</string>
<string name="qr_code">كود QR</string>
<string name="next">التالي</string>
<string name="skip">تخطي</string>
<string name="theme">السمة</string>
<string name="unsigned">غير موقعة</string>
<string name="unverified">غير متحقق</string>
<string name="repo_url">المسار</string>
<string name="repo_num_apps">عدد التطبيقات</string>
<string name="repo_description">الوصف</string>
<string name="repo_last_update">آخر تحديث</string>
<string name="repo_update">تحديث</string>
<string name="repo_name">الإسم</string>
<string name="unknown">غير معروف</string>
<string name="repo_confirm_delete_title">حذف المستودع</string>
<string name="app_icon">أيقونة التطبيق</string>
<string name="repo_icon">أيقونة المستودع</string>
<string name="Development">التطوير</string>
<string name="Games">الألعاب</string>
<string name="Internet">الانترنت</string>
<string name="Multimedia">الوسائط المتعددة</string>
<string name="News">الأخبار</string>
<string name="Office">المكتب</string>
<string name="Phone_SMS">الهاتف و الرسائل</string>
<string name="Reading">القراءة</string>
<string name="Science_Education">العلوم و التعليم</string>
<string name="Security">الأمان</string>
<string name="System">النظام</string>
<string name="update_all">تحديث الكل</string>
</resources>

View File

@ -0,0 +1,251 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="searchres_napps">Alcontráronse %1$d aplicaciones que concasen con \'%2$s\':</string>
<string name="searchres_oneapp">Alcontróse una aplicación que concasa con \'%s\':</string>
<string name="searchres_noapps">Nun s\'alcontraron aplicaciones que concasen con \'%s\'</string>
<string name="SignatureMismatch">La versión nueva ta roblada con una clave diferente. Pa instalar la versión nueva, tien de desinstalase primero la vieya. Por favor, failo ya inténtalo de nueves. (Decátate que la desinstalación desaniciará cualesquier datu internu atroxáu pola aplicación)</string>
<string name="installIncompatible">Paez qu\'esti paquete nun ye compatible col to preséu. ¿Quies intentar instalalu de toes toes?</string>
<string name="installDowngrade">Tas intentando baxar de versión esta aplicación. Eso quiciabes faiga que l\'aplicación furrule mal o incluso, pierdas los tos datos. ¿Quies intentalo y baxala de versión de toes toes?</string>
<string name="version">Versión</string>
<string name="edit">Editar</string>
<string name="delete">Desaniciar</string>
<string name="enable_nfc_send">Habilitar unviu per NFC…</string>
<string name="cache_downloaded">Caché d\'aplicaciones</string>
<string name="cache_downloaded_on">Caltién na tarxeta SD les apk baxaes</string>
<string name="updates">Anovamientos</string>
<string name="other">Otru</string>
<string name="last_update_check">Escanéu caberu del repositoriu: %s</string>
<string name="never">enxamás</string>
<string name="update_interval">Intervalu automáticu d\'anovaminetu</string>
<string name="update_interval_zero">Nun anovar automáticamente\'l llistáu d\'aplicaciones</string>
<string name="automatic_scan_wifi">Namái na wifi</string>
<string name="automatic_scan_wifi_on">Anueva automáticamente les llistes d\'aplicaciones namái na wifi</string>
<string name="notify">Notificar</string>
<string name="notify_on">Notifica cuando hai anovamientos disponibles</string>
<string name="update_history">Anovar historia</string>
<string name="update_history_summ">Díes pa considerar a les aplicaciones nueves o recientes: %s</string>
<string name="system_installer">Instalación usando los permisos del sistema</string>
<string name="system_installer_on">Usa los permisos del sistema pa instalar, anovar y desaniciar paquetes</string>
<string name="local_repo_name">Nome del to repositoriu llocal</string>
<string name="local_repo_name_summary">El títulu alvertíu del to repositoriu llocal: %s</string>
<string name="local_repo_https">Usar conexón privada</string>
<string name="local_repo_https_on">Usar conexón HTTPS:// cifrada pal to repositoriu llocal</string>
<string name="search_results">Resultaos de gueta</string>
<string name="app_details">Detalles d\'aplicación</string>
<string name="no_such_app">Nun s\'alcontraon aplicaciones</string>
<string name="about_title">Tocante a F-Droid</string>
<string name="about_desc">Basáu orixinalmente n\'Aptoide.
Llanzáu baxo la llicencia GNU GPLv3.</string>
<string name="about_site">Sitiu web:</string>
<string name="about_mail">Corréu:</string>
<string name="about_version">Versión:</string>
<string name="about_website">Sitiu web</string>
<string name="no_repo">¡Nun tienes configuráu dengún repositoriu!
Un repositoriu ye una fonte d\'aplicaciones. P\'amestar ún, primi\'l botón MENÚ agora ya introduz la URL.
La direición del repositoriu paezse como a esto: https://f-droid.org/repo</string>
<string name="inst">Instaláu</string>
<string name="not_inst">Non instaláu</string>
<string name="inst_known_source">Instaláu (dende %s)</string>
<string name="inst_unknown_source">Instaláu (dende fonte desconocida)</string>
<string name="added_on">Amestáu\'l %s</string>
<string name="ok">Aceutar</string>
<string name="yes"></string>
<string name="no">Non</string>
<string name="repo_add_title">Amestar un repositoriu nuevu</string>
<string name="repo_add_add">Amestar</string>
<string name="cancel">Encaboxar</string>
<string name="enable">Habilitar</string>
<string name="add_key">Amestar clave</string>
<string name="overwrite">Sobrescribir</string>
<string name="repo_update_title">Anovar repositorios</string>
<string name="tab_noninstalled">Disponible</string>
<string name="tab_updates">Anovamientos</string>
<string name="one_update_available">Un anovamientu disponible.</string>
<string name="many_updates_available">%d anovamientos disponibles.</string>
<string name="fdroid_updates_available">Anovamientos de F-Droid disponibles</string>
<string name="process_wait_title">Espera por favor</string>
<string name="process_update_msg">Anovando\'l llistáu d\'aplicaciones…</string>
<string name="download_server">Consiguiendo\'l formulariu d\'applicaciones</string>
<string name="nfc_is_not_enabled">¡El NFC nun ta habilitáu!</string>
<string name="go_to_nfc_settings">Dir a los axustes de NFC…</string>
<string name="bluetooth_activity_not_found">¡Nun hai dengún métodu d\'unviu per Bluetooth, escueyi ún!</string>
<string name="choose_bt_send">Escoyer métodu d\'unviu per Bluetooth</string>
<string name="send_via_bluetooth">Unviar pente Bluetooth</string>
<string name="repo_add_url">Direición del repositoriu</string>
<string name="repo_add_fingerprint">Buelga (opcional)</string>
<string name="repo_exists">¡Yá esiste esti repositoriu!</string>
<string name="repo_exists_add_fingerprint">Yá ta configuráu esti repositoriu, esto amestará la información de la clave nueva.</string>
<string name="repo_exists_enable">Yá ta configuráu esti respositoriu, confirma que quies rehabilitalu.</string>
<string name="repo_exists_and_enabled">¡Yá ta configuráu y habilitáu\'l repositoriu d\'entrada!</string>
<string name="repo_delete_to_overwrite">¡Primero tienes de desaniciar esti repositoriu enantes que pueas amestar otru con una clave diferente!</string>
<string name="malformed_repo_uri">Inorando l\'URI del repositoriu mal formáu: %s</string>
<string name="repo_alrt">Camudó\'l llistáu de los repositorios usaos.
¿Quies anovalos?</string>
<string name="menu_update_repo">Anovar repositorios</string>
<string name="menu_manage">Repositorios</string>
<string name="menu_send_apk_bt">Bluetooth FDroid.apk…</string>
<string name="menu_preferences">Preferencies</string>
<string name="menu_about">Tocante a</string>
<string name="menu_search">Guetar</string>
<string name="menu_add_repo">Repostoriu nuevu</string>
<string name="menu_rem_repo">Desaniciar repositoriu</string>
<string name="menu_launch">Executar</string>
<string name="menu_share">Compartir</string>
<string name="menu_install">Instalar</string>
<string name="menu_uninstall">Desinstalar</string>
<string name="menu_ignore_all">Inorar tolos anovamientos</string>
<string name="menu_ignore_this">Inorar esti anovamientu</string>
<string name="menu_website">Sitiu web</string>
<string name="menu_issues">Torgues</string>
<string name="menu_source">Códigu fonte</string>
<string name="menu_upgrade">Anovar</string>
<string name="menu_donate">Donar</string>
<string name="details_installed">Versión %s instalada</string>
<string name="details_notinstalled">Non instaláu</string>
<string name="corrupt_download">Ta toyíu\'l ficheru baxáu</string>
<string name="download_cancelled">Descarga encaboxada</string>
<string name="antiadslist">Esta aplicación contien publicidá</string>
<string name="antitracklist">Esta aplicación rastrexa ya informa de la to actividá</string>
<string name="antinonfreeadlist">Esta aplicación da puxu a amiestos non llibres</string>
<string name="antinonfreenetlist">Esta aplicación da puxu a servicios de rede non llibres</string>
<string name="antinonfreedeplist">Esta aplicación ta arreyada a otres aplicaciones non llibres</string>
<string name="antiupstreamnonfreelist">El códigu fonte principal nun ye llibre dafechu</string>
<string name="display">Amosar</string>
<string name="expert">Espertu</string>
<string name="expert_on">Amosar información estra y habilitar axustes estra</string>
<string name="search_hint">Guetar aplicaciones</string>
<string name="appcompatibility">Compatibilidá d\'aplicación</string>
<string name="show_incompat_versions">Versiones incompatibles</string>
<string name="show_incompat_versions_on">Amosar versiones d\'aplicaciones incompatibles col preséu</string>
<string name="rooted">Root</string>
<string name="rooted_on">Nun escurecer les aplicaciones que rican privilexos root</string>
<string name="ignoreTouch">Inorar pantalla táutil</string>
<string name="ignoreTouch_on">Incluyir siempres aplicaciones que rican pantalla táutil</string>
<string name="category_all">Too</string>
<string name="category_whatsnew">Qué hai nuevo</string>
<string name="category_recentlyupdated">Anovao apocayá</string>
<string name="local_repo">Repositoriu llocal</string>
<string name="local_repo_running">F-Doid ta tresnáu pa intercambiar</string>
<string name="waiting_for_ipaddress">esperando pola direición IP…</string>
<string name="setup_repo">Configurar repositoriu llocal</string>
<string name="touch_to_configure_local_repo">Toca pa ver los detalles y almitir a otros intercambiar les tos aplicaciones.</string>
<string name="touch_to_turn_on_local_repo">Toca p\'activar el to repositoriu llocal.</string>
<string name="touch_to_turn_off_local_repo">Toca pa desactivar el to repositoriu llocal.</string>
<string name="updating">Anovando…</string>
<string name="update_repo">Anovar reposotoriu</string>
<string name="deleting_repo">Desaniciando\'l repositoriu llocal</string>
<string name="adding_apks_format">Amestando %s al repositoriu…</string>
<string name="writing_index_jar">Escribiendo\'l ficheru d\'índiz robláu (index.jar)…</string>
<string name="failed_to_create_index">¡Fallu al crear l\'índiz del repositoriu!</string>
<string name="linking_apks">Enllazando APKs nel repositoriu…</string>
<string name="copying_icons">Copiando iconos d\'aplicaciones al repositoriu…</string>
<string name="no_applications_found">Nun s\'alcontraron aplicaciones</string>
<string name="icon">iconu</string>
<string name="fingerprint">Buelga:</string>
<string name="wifi_network">Rede WiFi:</string>
<string name="sharing_uri">URL de compartición:</string>
<string name="enable_wifi">Habilitar WiFi</string>
<string name="enabling_wifi">Habilitando\'l WiFi…</string>
<string name="same_wifi_instructions">Pa coneutar a los preseos d\'otra xente, asegúrate qu\'entrambos preseos tán na mesma rede WiFi. Dempués escribi la URL d\'enriba o escania esti códigu QR:</string>
<string name="qr_code">Códigu QR</string>
<string name="next">Siguiente</string>
<string name="skip">Saltar</string>
<string name="qr_content_description">Códigu QR de la URL del repositoriu</string>
<string name="qr_wizard_wifi_network_instructions">Escania esti códigu QR pa coneutar a la mesma rede WiFi d\'esti preséu.</string>
<string name="qr_wizard_download_instructions">Escania esti códigu QR pa coneutar al sitiu web p\'aniciase.</string>
<string name="send_fdroid_via_wifi">Unviar FDroid pente WiFi…</string>
<string name="proxy">Proxy</string>
<string name="enable_proxy_title">Habilitar proxy HTTP</string>
<string name="enable_proxy_summary">Configurar el proxy HTTP pa toles peticiones de rede</string>
<string name="proxy_host">Agospiu de proxy</string>
<string name="proxy_host_summary">Configura\'l nome d\'agospiu del to proxy (exem. 127.0.0.1)</string>
<string name="proxy_port">Puertu del proxy</string>
<string name="proxy_port_summary">Configura\'l númberu de puertu del to proxy (exem. 8118)</string>
<string name="status_download">Baxando
%2$s / %3$s (%4$d%%) dende
%1$s</string>
<string name="status_connecting_to_repo">Coneutándose a
%1$s</string>
<string name="status_checking_compatibility">Comprobando la compatibilidá d\'aplicaciones col to preséu…</string>
<string name="status_inserting">Guardando los detalles de les aplicaciones (%1$d%%)</string>
<string name="repos_unchanged">Dengún repositoriu tien anovamientos de paquetes</string>
<string name="all_other_repos_fine">Tolos otros repositorios nun crearon fallos.</string>
<string name="global_error_updating_repos">Fallu nel anovamientu:</string>
<string name="no_permissions">Nun s\'usaron permisos.</string>
<string name="permissions_for_long">Permisos pa la versión %s</string>
<string name="no_handler_app">Nun tienes denguna aplicación disponible que puea remanar %s</string>
<string name="compactlayout">Distribución compauta</string>
<string name="compactlayout_on">Amosar iconos a un tamañu más pequeñu</string>
<string name="theme">Tema</string>
<string name="unsigned">Non robáu</string>
<string name="unverified">Non verificáu</string>
<string name="repo_url">URL</string>
<string name="repo_num_apps">Númberu d\'aplicaciones</string>
<string name="repo_fingerprint">Buelga de la clave de robláu del repositoriu (SHA-256)</string>
<string name="repo_description">Descripción</string>
<string name="repo_last_update">Anovamientu caberu</string>
<string name="repo_update">Anovar</string>
<string name="repo_name">Nome</string>
<string name="unsigned_description">Esto quier dicir que nun pudo verificase\'l llistáu d\'aplicaciones.
Deberíes tener procuru con aplicaciones baxaes dende índices ensin roblar.</string>
<string name="repo_not_yet_updated">Entá nun s\'usó esti repositoriu.
Pa ver les aplicaciones qu\'apurre, necesitarás anovalu.
Una vegada anováu, la descripción y los otros detalles tarán disponibles equí.</string>
<string name="repo_delete_details">¿Quies desaniciar el repositoriu «{0}», que contién {1} aplicaciones n\'elli? NUN se desaniciará dal aplicación instalada pero tampoco podrás anovales pente F-Droid más.</string>
<string name="unknown">Desconocíu</string>
<string name="repo_confirm_delete_title">¿Desaniciar repositoriu?</string>
<string name="repo_confirm_delete_body">Desaniciar un repositoriu quier dicir que les aplicaciones d\'elli nun tarán disponibles dende F-Droid.
Nota: Toles aplicaciones instalaes d\'enantes quedaránse nel preséu.</string>
<string name="repo_disabled_notification">Deshabilitóse \"%1$s\".
Necesitarás rehabilitar esti repositoriu pa instalar aplicaciones dende elli.</string>
<string name="repo_added">Guardóse\'l repositoriu F-Droid %1$s</string>
<string name="repo_searching_address">Guetando repositorios F-Droid en
%1$s</string>
<string name="minsdk_or_later">%s o posterior</string>
<string name="up_to_maxsdk">fasta %s</string>
<string name="minsdk_up_to_maxsdk">De %1$s fasta %2$s</string>
<string name="not_on_same_wifi">¡El to preséu nun ta na mesma rede WiFi que\'l repositoriu llocal que tas acabante
d\'amestar! Intenta xunite a esta rede: %s</string>
<string name="requires_features">Rique: %1$s</string>
<string name="app_icon">Iconu d\'aplicación</string>
<string name="repo_icon">Iconu de repositoriu</string>
<string name="Children">Guaḥes</string>
<string name="Development">Desendolcu</string>
<string name="Games">Xuegos</string>
<string name="Internet">Internet</string>
<string name="Mathematics">Matemátiques</string>
<string name="Multimedia">Multimedia</string>
<string name="Navigation">Navegación</string>
<string name="News">Anuncies</string>
<string name="Office">Oficina</string>
<string name="Phone_SMS">Teléfonu y SMS</string>
<string name="Reading">Llectura</string>
<string name="Science_Education">Ciencia y educación</string>
<string name="Security">Seguranza</string>
<string name="System">Sistema</string>
<string name="Wallpaper">Fondos de pantalla</string>
<string name="requesting_root_access_body">Solicitando l\'accesu root…</string>
<string name="root_access_denied_title">Refugóse l\'accesu root</string>
<string name="root_access_denied_body">O\'l to preséu Android nun ta rooteáu o refuguesti l\'accesu root pa F-Droid.</string>
<string name="update_all">Anovar too</string>
<string name="system_permission_denied_title">Refugáronse los permisos del sistema</string>
<string name="system_permission_denied_body">Esta opción ta namái disponible cuando s\'instale D-Droid como una aplicación del sistema.</string>
<string name="app_description">F-Droid ye un catálogu de software FOSS (software llibre y de baldre) instalable pa la plataforma Android. El veceru fai cenciello restolar, instalar y caltener el rastrexu d\'anovamientos nel to preséu.</string>
<string name="swap_nfc_description">Si\'l to collaciu tocó los vuesos teléfonos xuntos.</string>
<string name="swap_join_same_wifi">Xúnite a la mesma Wifi que\'l to collaciu</string>
<string name="swap_use_bluetooth">Usar Bluetooth nel so llugar</string>
<string name="swap_wifi_help">Deprendi más tocante al Wifi</string>
<string name="menu_swap">Intercambiar aplicaciones</string>
<string name="swap">Intercambéu d\'aplicaciones</string>
<string name="swap_no_wifi_network">Entá nun hai rede</string>
<string name="swap_view_available_networks">(Calca p\'abrir les redes disponibles)</string>
<string name="swap_wifi_qr_not_working">Nun ta furrulando</string>
<string name="open_qr_code_scanner">Abrir l\'escáner de códigos QR</string>
<string name="swap_welcome">¡Bienllegáu a F-Droid!</string>
<string name="swap_confirm_connect">¿Quies consiguir aplicaciones de %1$s agora?</string>
</resources>

View File

@ -1,131 +1,193 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="searchres_napps">Намерени са %1$d приложения съвпадащи с \'%2$s\':</string>
<string name="searchres_napps">Намерени са %1$d приложения съвпадащи с \"%2$s\":</string>
<string name="searchres_oneapp">Намерено е едно приложение съвпадащо с \"%s\":</string>
<string name="searchres_noapps">Не са намерени приложения съвпадащи с \"%s\"</string>
<string name="SignatureMismatch">Новата версия е подписана с различен ключ. За да бъде инсталирана първо трябва да деинсталирате старата версия. (Забележка: деинсталирането ще доведе до изтриване на данни съхранявани от старата версия.)</string>
<string name="installIncompatible">Изглежда пакетът не е съвместим с вашето устройство. Да бъде направен опит за инсталиране въпреки това?</string>
<string name="installDowngrade">Опитвате се да инсталирате по-стара версия на приложението. Това действие може да предизвика нестабилност и дори загуба на данни. Наистина ли желаете да продължите?</string>
<string name="version">Версия</string>
<string name="edit">Редактиране</string>
<string name="delete">Изтриване</string>
<string name="enable_nfc_send">Активирай NFC изпращане…</string>
<string name="cache_downloaded">Кеширай свалените приложения</string>
<string name="cache_downloaded_on">Запазвай свалените .apk файлове на SD картата</string>
<string name="cache_downloaded">Кеширай приложения</string>
<string name="cache_downloaded_on">Записва свалените .apk файлове на SD картата.</string>
<string name="updates">Актуализации</string>
<string name="other">Други</string>
<string name="last_update_check">Последно сканиране на хранилищата: %s</string>
<string name="last_update_check">Последно сканиране: %s</string>
<string name="never">никога</string>
<string name="update_interval">Автоматичен интервал за обновяване</string>
<string name="update_interval">Интервал за автоматично актуализиране</string>
<string name="update_interval_zero">Без автоматично актуализиране на списъка с приложения</string>
<string name="automatic_scan_wifi">Само през WiFi</string>
<string name="notify_on">Известие при налична актуализация</string>
<string name="update_history">Актуализирай историята</string>
<string name="automatic_scan_wifi_on">Актуализирането на списъка с приложения ще става само през WiFi.</string>
<string name="notify">Известяване</string>
<string name="notify_on">Известява за наличие на актуализация.</string>
<string name="update_history">История на актуализациите</string>
<string name="update_history_summ">Счита за нови или скорошни приложенията от преди (дни): %s</string>
<string name="system_installer">Инсталиране чрез системни разрешения</string>
<string name="system_installer_on">Ползване на системни права за инсталиране, актуализиране и премахване на пакети.</string>
<string name="local_repo_name">Име на локалното хранилище</string>
<string name="search_results">Резултати от търсенето</string>
<string name="local_repo_name_summary">Обявява хранилището под името: %s.</string>
<string name="local_repo_https_on">Ползва криптирана HTTPS:// връзка за комуникацията с локалното хранилище.</string>
<string name="search_results">Резултат от търсенето</string>
<string name="app_details">Детайли за приложението</string>
<string name="no_such_app">Такова приложение не беше намерено</string>
<string name="about_title">За F-Droid</string>
<string name="no_such_app">Не е намерено такова приложение</string>
<string name="about_title">Относно F-Droid</string>
<string name="about_desc">Първоначално базиран на Aptoide.
Лицензиран под GNU GPLv3.</string>
<string name="about_site">Уебсайт:</string>
<string name="about_mail">Имейл:</string>
<string name="about_version">Версия:</string>
<string name="about_website">Уебсайт</string>
<string name="not_inst">Не е инсталирано</string>
<string name="no_repo">Няма нито едно настроено хранилище!
Хранилището е източник на приложения. За добавяне натиснете бутона МЕНЮ и въведете URL адрес.
Адресът трябва да наподобява: https://f-droid.org/repo</string>
<string name="inst">Инсталирана</string>
<string name="not_inst">Неинсталирана</string>
<string name="inst_known_source">Инсталирана (от %s)</string>
<string name="inst_unknown_source">Инсталирана (от неизвестен източник)</string>
<string name="added_on">Добавена на %s</string>
<string name="ok">Добре</string>
<string name="yes">Да</string>
<string name="no">Не</string>
<string name="repo_add_add">Добави</string>
<string name="repo_add_title">Добави ново хранилище</string>
<string name="repo_add_add">Добавяне</string>
<string name="cancel">Отказ</string>
<string name="add_key">Добавете ключ</string>
<string name="repo_update_title">Актуализирай хранилищата</string>
<string name="repo_update_title">Актуализиране на хранилищата</string>
<string name="tab_noninstalled">Налични</string>
<string name="tab_updates">Актуализации</string>
<string name="one_update_available">1 налична актуализация.</string>
<string name="many_updates_available">%d налични актуализации.</string>
<string name="process_wait_title">Моля изчакай</string>
<string name="go_to_nfc_settings">Отиди в настройките на NFC…</string>
<string name="fdroid_updates_available">Налични актуализации от F-Droid</string>
<string name="process_wait_title">Моля изчакайте</string>
<string name="process_update_msg">Актуализиране на списъка с приложения…</string>
<string name="download_server">Сваляне на приложение от</string>
<string name="nfc_is_not_enabled">NFC не е активиран!</string>
<string name="go_to_nfc_settings">Към настройките на NFC…</string>
<string name="bluetooth_activity_not_found">Не е намерен Bluetooth метод за изпращане, изберете един!</string>
<string name="choose_bt_send">Изберете Bluetooth метод за изпращане</string>
<string name="send_via_bluetooth">Изпрати чрез Bluetooth</string>
<string name="repo_add_url">Адрес на хранилището</string>
<string name="repo_add_fingerprint">Отпечатък (незадължително)</string>
<string name="repo_exists">Хранилището вече съществува!</string>
<string name="malformed_repo_uri">Игнориране на неправилен URI адрес на хранилище: %s</string>
<string name="menu_manage">Управление на хранилищата</string>
<string name="repo_alrt">Списъкът на хранилищата е променен.
Желаете ли да бъде актуализиран?</string>
<string name="menu_update_repo">Актуализиране на хранилищата</string>
<string name="menu_manage">Хранилища</string>
<string name="menu_send_apk_bt">Изпрати FDroid.apk чрез Bluetooth…</string>
<string name="menu_preferences">Предпочитания</string>
<string name="menu_about">Относно</string>
<string name="menu_search">Търсене</string>
<string name="menu_add_repo">Ново хранилище</string>
<string name="menu_rem_repo">Премахни хранилище</string>
<string name="menu_rem_repo">Премахни хранилището</string>
<string name="menu_launch">Стартирай</string>
<string name="menu_share">Сподели</string>
<string name="menu_install">Инсталирай</string>
<string name="menu_uninstall">Деинсталирай</string>
<string name="menu_ignore_all">Игнорирай всички актуализации</string>
<string name="menu_ignore_this">Игнорирай тази актуализация</string>
<string name="menu_website">Уебсайт</string>
<string name="menu_issues">Проблеми</string>
<string name="menu_source">Изходен код</string>
<string name="corrupt_download">Сваленият файл е развален</string>
<string name="menu_donate">Направи дарение</string>
<string name="details_installed">Инсталирана е версия %s</string>
<string name="details_notinstalled">Не е инсталирано</string>
<string name="corrupt_download">Сваленият файл е повреден</string>
<string name="download_cancelled">Свалянето е отказано</string>
<string name="antitracklist">Приложението следи и докладва за местоположението ви</string>
<string name="antiadslist">Приложението съдържа реклами</string>
<string name="antitracklist">Приложението следи и докладва активността ви</string>
<string name="antinonfreeadlist">Приложението промотира не-безплатни добавки</string>
<string name="antinonfreenetlist">Приложението промотира не-безплатни услуги</string>
<string name="antinonfreedeplist">Приложението зависи от други не-безплатни приложения</string>
<string name="antiupstreamnonfreelist">Изходният код не е напълно безплатен</string>
<string name="display">Дисплей</string>
<string name="expert">Експерт</string>
<string name="expert_on">Показва допълнителна информация и активира допълнителни настройки.</string>
<string name="search_hint">Търсене на приложения</string>
<string name="appcompatibility">Съвместимост на приложенията</string>
<string name="show_incompat_versions">Несъвместими версии</string>
<string name="show_incompat_versions_on">Показва и версиите, които са несъвместими с устройството.</string>
<string name="rooted">Root достъп</string>
<string name="rooted_on">Приложенията изискващи Root няма да бъдат изобразявани в сиво.</string>
<string name="ignoreTouch">Игнорирай сензорния екран</string>
<string name="ignoreTouch_on">Приложенията изискващи сензорен екран ще бъдат показвани винаги.</string>
<string name="category_all">Всички</string>
<string name="category_whatsnew">Какво ново</string>
<string name="category_recentlyupdated">Обновени наскоро</string>
<string name="local_repo">Локално хранилище</string>
<string name="waiting_for_ipaddress">изчакване за IP адрес…</string>
<string name="updating">Обновяване…</string>
<string name="update_repo">Актуализиране на хранилището</string>
<string name="deleting_repo">Изтриване на хранилището…</string>
<string name="adding_apks_format">Добавяне на хранилището %s</string>
<string name="adding_apks_format">Добавяне на %s към хранилището…</string>
<string name="no_applications_found">Не са открити приложения</string>
<string name="icon">икона</string>
<string name="fingerprint">Отпечатък:</string>
<string name="wifi_network">WiFi мрежа:</string>
<string name="sharing_uri">URL за споделяне:</string>
<string name="enabling_wifi">Включване на WiFi…</string>
<string name="qr_code">QR код</string>
<string name="qr_content_description">QR код от URL на хранилище</string>
<string name="next">Напред</string>
<string name="skip">Пропускане</string>
<string name="qr_content_description">QR код за URL на хранилище</string>
<string name="qr_wizard_wifi_network_instructions">Сканирайте QR кода, за се свържете към същата WiFi мрежа, в която е и устройството.</string>
<string name="send_fdroid_via_wifi">Изпрати FDroid чрез WiFi…</string>
<string name="proxy">Прокси</string>
<string name="enable_proxy_title">Включване на HTTP прокси</string>
<string name="enable_proxy_summary">Настройка на HTTP прокси за всички мрежови заявки.</string>
<string name="proxy_host">Хост на проксито</string>
<string name="proxy_host_summary">Въведете името на хоста за проксито (напр. 127.0.0.1).</string>
<string name="proxy_port">Порт за проксито</string>
<string name="proxy_port_summary">Въведете номер за порта на проксито (напр. 8118).</string>
<string name="status_download">Сваляне
%2$s / %3$s (%4$d%%) от
%1$s</string>
<string name="status_connecting_to_repo">Свързване с
%1$s</string>
<string name="status_inserting">Запазване на детайли за приложението (%1$d%%)</string>
<string name="global_error_updating_repos">Грешка при обновяването:</string>
%2$s / %3$s (%4$d%%) от
%1$s</string>
<string name="status_connecting_to_repo">Свързване към
%1$s</string>
<string name="status_checking_compatibility">Проверка за съвместимост с устройството…</string>
<string name="status_inserting">Запазване на детайли за приложенията (%1$d%%)</string>
<string name="repos_unchanged">В хранилищата няма актуализирани приложения</string>
<string name="global_error_updating_repos">Грешка при актуализирането:</string>
<string name="no_permissions">Не изисква разрешения.</string>
<string name="permissions_for_long">Разрешения за версия %s</string>
<string name="no_handler_app">Никое инсталирано приложение не може да изпълни %s</string>
<string name="compactlayout">Компактно оформление</string>
<string name="compactlayout_on">Показва по-малки икони.</string>
<string name="theme">Тема</string>
<string name="repo_url">URL</string>
<string name="repo_num_apps">Брой приложения</string>
<string name="repo_fingerprint">Отпечатък на ключа за подписване (SHA-256)</string>
<string name="repo_description">Описание</string>
<string name="repo_last_update">Последна актуализация</string>
<string name="repo_name">Име</string>
<string name="repo_not_yet_updated">Хранилището не е било използвано все още. За да разгледате приложенията, които предлага, трябва да го актуализирате.
<string name="repo_not_yet_updated">Хранилището не е било използвано все още. За да разгледате приложенията, които предлага, трябва да бъде актуализирате.
Веднъж актуализирано, описанието и други детайли ще бъдат достъпни тук.</string>
<string name="repo_delete_details">Искате ли да изтриете \"{0}\"
хранилище, което има {1} приложения в себе си? Инсталираните приложения НЯМА
да бъдат премахнати, но няма да можете да ги актуализирате през F-Droid повече.</string>
<string name="repo_confirm_delete_title">Изтриване на хранилище?</string>
<string name="repo_confirm_delete_body">Изтриването на хранилище значи, че приложения от него няма да са налични от F-Droid.
След това ще имате достъп до описанието и други детайли..</string>
<string name="repo_delete_details">Желаете ли да изтриете хранилище \"{0}\", което има {1}, което съдържа {1} приложения? Инсталираните приложения НЯМА да бъдат изтрити, но ще загубите възможността за актуализиране през F-Droid.</string>
<string name="repo_confirm_delete_title">Изтриване на хранилището?</string>
<string name="repo_confirm_delete_body">Изтриването на хранилище значи, че приложенията от него няма да са налични в F-Droid.
Бележка: Всички
вече инсталирани приложения ще останат на устройството.</string>
Бележка: Всички вече инсталирани приложения ще останат на устройството.</string>
<string name="repo_disabled_notification">\"%1$s\" е деактивирано.
За да инсталирате приложения от него ще трябва да го активирате наново.</string>
За да можете отново да инсталирате приложения ще трябва да го активирате наново.</string>
<string name="up_to_maxsdk">до %s</string>
<string name="minsdk_up_to_maxsdk">%1$s до %2$s</string>
<string name="not_on_same_wifi">Вашето устройство не е в една и съща WiFi мрежа с локалното хранилище, което добавихте! Опитайте да се свържете към тази мрежа: %s</string>
<string name="requires_features">Изисква: %1$s</string>
<string name="app_icon">Икона на приложението</string>
<string name="repo_icon">Икона на хранилището</string>
<string name="Children">Детски</string>
<string name="Development">Разработване</string>
<string name="Games">Игри</string>
<string name="Internet">Интернет</string>
<string name="Mathematics">Математика</string>
<string name="Multimedia">Мултимедия</string>
<string name="Navigation">Навигиране</string>
<string name="Navigation">Навигация</string>
<string name="News">Новини</string>
<string name="Office">Офис</string>
<string name="Phone_SMS">Телефон и SMS</string>
@ -134,14 +196,17 @@
<string name="Security">Сигурност</string>
<string name="System">Система</string>
<string name="Wallpaper">Тапет</string>
<string name="requesting_root_access_body">Изискване на Root достъп…</string>
<string name="requesting_root_access_body">Изисква Root достъп…</string>
<string name="root_access_denied_title">Root достъпът е отказан</string>
<string name="update_all">Обнови всички</string>
<string name="installer_error_title">Грешка при (де)инсталирането</string>
<string name="installer_error_body">(Де)Инсталиранете се провали. Ако работиет с Root достъп, моля изключето го.</string>
<string name="system_permission_denied_body">Опцията е налична само когато F-Droid е инсталирано като системно приложение.</string>
<string name="swap_wifi_help">Научете повече относно Wifi</string>
<string name="update_all">Актуализирай всички</string>
<string name="system_permission_denied_body">Опцията е налична само когато сте инсталирали F-Droid като системно приложение.</string>
<string name="swap_nfc_description">Ако приятелят ви има &lt;b&gt;F-Droid и е включил NFC&lt;/b&gt; можете да докоснете телефоните си.</string>
<string name="swap_join_same_wifi">Свържете се към една и съща WiFi мрежа с приятеля си.</string>
<string name="swap_wifi_help">Научете повече относно WiFi</string>
<string name="menu_swap">Размяна на приложения</string>
<string name="swap">РАЗМЯНА</string>
<string name="swap_view_available_networks">(Докоснете за преглед на наличните мрежи)</string>
<string name="swap_wifi_qr_not_working">Не работи</string>
<string name="open_qr_code_scanner">Отвори четец на QR кодове</string>
<string name="open_qr_code_scanner">Отваряне на четец на QR кодове</string>
<string name="swap_welcome">Добре дошли в F-Droid!</string>
</resources>

View File

@ -87,7 +87,7 @@ Uvolněno pod GPLv3 licencí.</string>
<string name="corrupt_download">Stažený soubor je poškozen</string>
<string name="download_cancelled">Stažení zrušeno</string>
<string name="antiadslist">Tato aplikace obsahuje reklamu</string>
<string name="antitracklist">Tato aplikace zaznamenává a hlásí vaše aktvity</string>
<string name="antitracklist">Tato aplikace zaznamenává a hlásí vaše aktivity</string>
<string name="expert">Expert</string>
<string name="expert_on">Zobrazit dodatečné informace a povolit pokročilá nastavení</string>
<string name="search_hint">Hledat aplikace</string>
@ -177,7 +177,9 @@ Tento repozitář bude nutné znovu povolit, aby z něj mohly být instalovány
<string name="Navigation">Navigace</string>
<string name="News">Zpravodajství</string>
<string name="Office">Kancelář</string>
<string name="Phone_SMS">Telefon &amp; SMS</string>
<string name="Reading">Čtení</string>
<string name="Science_Education">Věda &amp; vzdělání</string>
<string name="Security">Bezpečnost</string>
<string name="System">Systém</string>
<string name="Wallpaper">Tapety na pozadí</string>
@ -185,7 +187,6 @@ Tento repozitář bude nutné znovu povolit, aby z něj mohly být instalovány
<string name="root_access_denied_title">Root přístup odepřen</string>
<string name="root_access_denied_body">Buď toto Android zařízení není rootnuté, nebo jsi odepřel F-Droidu opránění roota.</string>
<string name="update_all">Aktualizovat vše</string>
<string name="installer_error_title">(De-)instalační chyba</string>
<string name="system_permission_denied_title">Systémová oprávnění odepřena</string>
<string name="system_permission_denied_body">Tato volba je dostupná pouze, pokud je F-Droid nainstalován jako systémová aplikace.</string>
<string name="swap_join_same_wifi">Připoj se na stejnou WiFi jako tvůj přítel</string>

View File

@ -48,6 +48,8 @@ Um eine Paketquelle hinzuzufügen drücken Sie jetzt den Menüknopf und geben Si
Die Adresse einer Paketquelle könnte wie folgt aussehen: https://f-droid.org/repo</string>
<string name="inst">Installiert</string>
<string name="not_inst">Nicht installiert</string>
<string name="inst_known_source">Installiert (aus %s)</string>
<string name="inst_unknown_source">Installiert (aus unbekannter Quelle)</string>
<string name="added_on">Hinzugefügt am %s</string>
<string name="ok">OK</string>
<string name="yes">Ja</string>
@ -79,7 +81,7 @@ Die Adresse einer Paketquelle könnte wie folgt aussehen: https://f-droid.org/re
<string name="repo_exists_enable">Diese Paketquelle ist bereits eingerichtet, bestätigen, dass Sie diese wieder aktivieren möchten.</string>
<string name="repo_exists_and_enabled">Die eingehende Paketquelle ist bereits eingerichtet und aktiviert!</string>
<string name="repo_delete_to_overwrite">Sie müssen diese Paketquelle zuerst löschen, bevor Sie eine mit einem anderen Schlüssel hinzuzufügen!</string>
<string name="malformed_repo_uri">Fehlerhafte Paketquellenadresse ignorieren: %s</string>
<string name="malformed_repo_uri">Fehlerhafte Paketquellenadresse wird übergangen: %s</string>
<string name="repo_alrt">Die Liste der genutzten Paketquellen hat sich geändert.
Sollen diese aktualisiert werden?</string>
<string name="menu_update_repo">Paketquellen aktualisieren</string>
@ -162,13 +164,13 @@ Sollen diese aktualisiert werden?</string>
<string name="proxy_host_summary">Konfigurieren Sie Ihren Proxy-Hostnamen (z.B. 127.0.0.1)</string>
<string name="proxy_port">Proxy-Port</string>
<string name="proxy_port_summary">Konfigurieren Sie Ihren Proxy-Port (z.B. 8818)</string>
<string name="status_download">Herunterladen
%2$s / %3$s (%4$d%%) von
%1$s</string>
<string name="status_download">%2$s / %3$s (%4$d%%) von
%1$s
wird heruntergeladen</string>
<string name="status_connecting_to_repo">Mit %1$s
wird verbunden</string>
<string name="status_checking_compatibility">Kompatibilität mit Ihrem Gerät wird überprüft …</string>
<string name="status_inserting">App-Details speichern (%1$d%%)</string>
<string name="status_inserting">App-Details werden gespeichert (%1$d%%)</string>
<string name="repos_unchanged">Keine Paketquelle hat irgendwelche Paketaktualisierungen</string>
<string name="all_other_repos_fine">Alle anderen Paketquellen erzeugen keine Fehler.</string>
<string name="global_error_updating_repos">Fehler während der Aktualisierung:</string>
@ -185,7 +187,7 @@ wird verbunden</string>
<string name="repo_fingerprint">Fingerabdruck des Paketquellensignaturschlüssels (SHA-256)</string>
<string name="repo_description">Beschreibung</string>
<string name="repo_last_update">Letzte Aktualisierung</string>
<string name="repo_update">Aktualisierung</string>
<string name="repo_update">Aktualisieren</string>
<string name="repo_name">Name</string>
<string name="unsigned_description">Das bedeutet, dass die Liste von
Anwendungen nicht verifiziert werden konnte.
@ -211,6 +213,9 @@ Bemerkung: Alle
Sie müssen
diese Paketquelle wieder aktivieren, um Anwendungen daraus installieren zu können.</string>
<string name="repo_added">F-Droid-Paketquelle %1$s gespeichert</string>
<string name="repo_searching_address">Nach F-Droid-Paketquelle wird unter
%1$s gesucht</string>
<string name="minsdk_or_later">%s oder später</string>
<string name="up_to_maxsdk">bis zu %s</string>
<string name="minsdk_up_to_maxsdk">%1$s bis zu %2$s</string>
@ -227,7 +232,9 @@ Sie müssen
<string name="Navigation">Navigation</string>
<string name="News">Nachrichten</string>
<string name="Office">Büro</string>
<string name="Reading">Wird gelesen</string>
<string name="Phone_SMS">Telefon &amp; SMS</string>
<string name="Reading">Lesen</string>
<string name="Science_Education">Wissenschaft &amp; Bildung</string>
<string name="Security">Sicherheit</string>
<string name="System">System</string>
<string name="Wallpaper">Hintergrundbild</string>
@ -235,8 +242,6 @@ Sie müssen
<string name="root_access_denied_title">Root-Zugriff verweigert</string>
<string name="root_access_denied_body">Entweder ist Ihr Android-Gerät nicht gerootet oder Sie haben den Root-Zugriff für F-Droid verweigert.</string>
<string name="update_all">Alle aktualisieren</string>
<string name="installer_error_title">(De-)Installationsfehler</string>
<string name="installer_error_body">Die (De-)Installation schlug fehl. Wenn Sie Root-Zugriff benutzen, versuchen Sie diese Einstellung zu deaktivieren!</string>
<string name="system_permission_denied_title">Systemberechtigungen verweigert</string>
<string name="system_permission_denied_body">Diese Option ist nur verfügbar, wenn F-Droid als System-App installiert wurde.</string>
<string name="app_description">F-Droid ist ein installierbarer App-Store für FOSS (Freie und Quelloffene Software) Anwendungen für die Android-Plattform. Der Client macht es auf deinem Gerät einfach zu durchsuchen, zu installieren und Aktualisierungen zu verfolgen.</string>

View File

@ -1,8 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="version">Versio</string>
<string name="edit">Redakti</string>
<string name="delete">Forigi</string>
<string name="cache_downloaded_on">Konservi elsutitaj apk dosierojn sur la SD-karto</string>
<string name="updates">Ĝisdatigoj</string>
<string name="other">Aliaj</string>
<string name="never">neniam</string>
<string name="notify">Sciigi</string>
<string name="notify_on">Sciigi kiam ĝisdatigoj estas disponebla</string>
<string name="update_history">Ĝisdatiga historio</string>
<string name="search_results">Serĉrezultoj</string>
<string name="app_details">Aplikaĵaj detaloj</string>
<string name="no_such_app">Nenia aplikaĵo trovita</string>
<string name="about_title">Pri F-Droid</string>
<string name="about_site">Retejo:</string>
<string name="about_mail">Retpoŝto:</string>
@ -10,29 +20,127 @@
<string name="about_website">Retejo</string>
<string name="inst">Instalita</string>
<string name="not_inst">Ne instalita</string>
<string name="ok">OK</string>
<string name="inst_known_source">Instalita (de %s)</string>
<string name="inst_unknown_source">Instalita (de nekonata fonto)</string>
<string name="added_on">Aldonita je %s</string>
<string name="ok">Bone</string>
<string name="yes">Jes</string>
<string name="no">Ne</string>
<string name="repo_add_title">Aldoni novan deponejon</string>
<string name="repo_add_add">Aldoni</string>
<string name="cancel">Rezigni</string>
<string name="cancel">Nuligi</string>
<string name="overwrite">Anstataŭigi</string>
<string name="repo_update_title">Ĝisdatigi deponejojn</string>
<string name="tab_noninstalled">Disponeblaj</string>
<string name="tab_updates">Ĝisdatigoj</string>
<string name="one_update_available">1 giŝdatigo estas disponebla.</string>
<string name="many_updates_available">%d ĝisdatigoj estas disponeblaj.</string>
<string name="fdroid_updates_available">F-Droid ĝisdatigoj disponeblaj</string>
<string name="process_wait_title">Bonvolu atendi</string>
<string name="menu_manage">Administri deponejojn</string>
<string name="nfc_is_not_enabled">NFC estas malŝaltita!</string>
<string name="send_via_bluetooth">Sendi per Bluetooth</string>
<string name="repo_add_url">Deponeja adreso</string>
<string name="repo_exists">Tio ĉi deponejo jam ekzistas!</string>
<string name="menu_update_repo">Ĝisdatigi deponejojn</string>
<string name="menu_manage">Deponejojn</string>
<string name="menu_preferences">Agordoj</string>
<string name="menu_about">Pri</string>
<string name="menu_search">Serĉi</string>
<string name="menu_add_repo">Nova deponejo</string>
<string name="menu_rem_repo">Forigi deponejon</string>
<string name="menu_launch">Lanĉi</string>
<string name="menu_install">Instali</string>
<string name="menu_uninstall">Malinstali</string>
<string name="menu_ignore_all">Ignori ĉiujn ĝisdatigojn</string>
<string name="menu_ignore_this">Ignori ĉi tiun ĝisdatigon</string>
<string name="menu_website">Retejo</string>
<string name="menu_issues">Cimoj</string>
<string name="menu_source">Fontkodo</string>
<string name="menu_upgrade">Ĝisdatigi</string>
<string name="menu_donate">Donaci</string>
<string name="details_installed">Versiono %s instalita</string>
<string name="details_notinstalled">Neinstalita</string>
<string name="search_hint">Trovi aplikaĵojn</string>
<string name="corrupt_download">La elŝutita dosiero estas difektita</string>
<string name="download_cancelled">Elŝuto nuliĝis</string>
<string name="antiadslist">Ĉi tiu aplikaĵo enhavas reklamojn</string>
<string name="antitracklist">Ĉi tiu aplikaĵo spuras kaj raportas vian agadon</string>
<string name="antinonfreeadlist">Ĉi tiu aplikaĵo favoras neliberajn aldonaĵojn</string>
<string name="antinonfreenetlist">Ĉi tiu aplikaĵo favoras neliberajn retservojn</string>
<string name="antinonfreedeplist">Ĉi tiu aplikaĵo dependas de aliaj neliberaj aplikaĵoj</string>
<string name="antiupstreamnonfreelist">La fontkodo ne estas tute libera</string>
<string name="display">Montriĝo</string>
<string name="expert">Altnivelo</string>
<string name="expert_on">Montri aldonaj informoj kaj ŝalti aldonajn agordojn</string>
<string name="search_hint">Serĉi aplikaĵojn</string>
<string name="appcompatibility">Aplikaĵa kongrueco</string>
<string name="show_incompat_versions">Malkongruaj versiojn</string>
<string name="show_incompat_versions_on">Montri applikaĵversiojn malkongruajn kun la aparato</string>
<string name="rooted">Ĉefuzanto</string>
<string name="rooted_on">Ne grizigi programojn, kiuj postulas ĉefuzantajn privilegiojn</string>
<string name="ignoreTouch">Ignori tuŝekranon</string>
<string name="ignoreTouch_on">Ĉiam inkluzivi aplikaĵojn, kiuj postulas tuŝekranon</string>
<string name="category_all">Ĉiuj</string>
<string name="category_whatsnew">Novaĵoj</string>
<string name="category_recentlyupdated">Juŝ giŝdatigitaj</string>
<string name="local_repo">Loka deponejo</string>
<string name="touch_to_turn_on_local_repo">Tuŝu por ŝalti vian lokan deponejon.</string>
<string name="touch_to_turn_off_local_repo">Tuŝu por malŝalti vian lokan deponejon.</string>
<string name="updating">Ĝisdatiganta…</string>
<string name="update_repo">Ĝisdatigi deponejon</string>
<string name="deleting_repo">Foriganta la nunan deponejon…</string>
<string name="adding_apks_format">Aldonanta %s al la deponejo…</string>
<string name="linking_apks">Ligantaj APK-ojn al la deponejo…</string>
<string name="copying_icons">Kopianta aplikaĵemblemojn al la deponejo…</string>
<string name="no_applications_found">Neniu aplikaĵo trovita</string>
<string name="icon">emblemo</string>
<string name="wifi_network">WiFi-reto:</string>
<string name="enable_wifi">Ŝalti WiFi</string>
<string name="enabling_wifi">Ŝaltantaj WiFi</string>
<string name="qr_code">QR-kodo</string>
<string name="next">Sekvi</string>
<string name="skip">Preterpasi</string>
<string name="send_fdroid_via_wifi">Sendi F-Droid per WiFi…</string>
<string name="no_permissions">Neniu permeson estas uzita.</string>
<string name="permissions_for_long">Permesoj por versio %s</string>
<string name="compactlayout">Kompakta aranĝo</string>
<string name="compactlayout_on">Montri emblemojn je pli mangranda grandeco</string>
<string name="theme">Temo</string>
<string name="repo_num_apps">Nombro de aplikaĵoj</string>
<string name="repo_description">Priskribo</string>
<string name="repo_last_update">Lasta ĝisdatigo</string>
<string name="repo_update">Ĝisdatigi</string>
<string name="repo_name">Nomo</string>
<string name="unknown">Nekonata</string>
<string name="repo_confirm_delete_title">Ĉu forigi la deponejon?</string>
<string name="repo_added">Konservis la F-Droidan deponejon %1$s</string>
<string name="repo_searching_address">Serĉi F-Droidan deponejon ĉe %1$s</string>
<string name="minsdk_or_later">%s aŭ posta</string>
<string name="up_to_maxsdk">ĝis %s</string>
<string name="minsdk_up_to_maxsdk">De %1$s ĝis %2$s</string>
<string name="requires_features">Postulas: %1$s</string>
<string name="app_icon">Aplikaĵemblemo</string>
<string name="repo_icon">Deponejemblemo</string>
<string name="Children">Infanoj</string>
<string name="Development">Programado</string>
<string name="Games">Ludoj</string>
<string name="Internet">Interreto</string>
<string name="Mathematics">Matematiko</string>
<string name="Multimedia">Plurmedio</string>
<string name="Navigation">Navigado</string>
<string name="News">Novaĵoj</string>
<string name="Office">Oficejo</string>
<string name="Phone_SMS">Telefono &amp; tekstmesaĝo</string>
<string name="Reading">Legado</string>
<string name="Science_Education">Scienco &amp; Edukado</string>
<string name="Security">Sekureco</string>
<string name="System">Sistemo</string>
<string name="Wallpaper">Ekranfono</string>
<string name="update_all">Ĝisdatigi ĉiujn</string>
<string name="swap_use_bluetooth">Uzi Bluetooth-on anstataŭe</string>
<string name="swap_wifi_help">Lerni pli pri WiFi</string>
<string name="swap_no_wifi_network">Ankoraŭ neniu reto</string>
<string name="swap_view_available_networks">(Tuŝu por malfermi disponeblajn retojn)</string>
<string name="swap_wifi_qr_not_working">Ne funkcias</string>
<string name="open_qr_code_scanner">Malfermi QR-kodan skanilon</string>
<string name="swap_welcome">Bonvenon al F-Droid!</string>
</resources>

View File

@ -47,6 +47,8 @@ Un repositorio es una fuente de aplicaciones. Para añadir uno, pulsa el botón
La dirección de un repositorio es algo similar a esto: https://f-droid.org/repo</string>
<string name="inst">Instalado</string>
<string name="not_inst">No instalado</string>
<string name="inst_known_source">Instalado (desde %s)</string>
<string name="inst_unknown_source">Instalado (desde origen desconocido)</string>
<string name="added_on">Agregado el %s</string>
<string name="ok">OK</string>
<string name="yes"></string>
@ -204,6 +206,9 @@ Nota: todas las aplicaciones previamente instaladas se quedarán en tu dispositi
<string name="repo_disabled_notification">\"%1$s\" deshabilitado.
Necesitarás volver a habilitar este repositorio para instalar aplicaciones desde él.</string>
<string name="repo_added">Guardado el repositorio de F-Droid %1$s</string>
<string name="repo_searching_address">BUscando repositorio de F-Droid en
%1$s</string>
<string name="minsdk_or_later">%s o posterior</string>
<string name="up_to_maxsdk">hasta %s</string>
<string name="minsdk_up_to_maxsdk">De %1$s a %2$s</string>
@ -230,8 +235,6 @@ Necesitarás volver a habilitar este repositorio para instalar aplicaciones desd
<string name="root_access_denied_title">Acceso Root denegado</string>
<string name="root_access_denied_body">Puede ser que el dispositivo Android no este rooteado o se ha denegado el acceso root para F-Droid.</string>
<string name="update_all">Actualizar todo</string>
<string name="installer_error_title">Error de (des)instalación</string>
<string name="installer_error_body">La (des)instalación falló. Si se está usando acceso root, ¡prueba a deshabilitar esta opción!</string>
<string name="system_permission_denied_title">Permisos de Sistema denegados</string>
<string name="system_permission_denied_body">Esta opción sólo está disponible cuando F-Droid se instala como una aplicación de sistema.</string>
<string name="app_description">F-Droid es un catálogo instalable de aplicaciones FOSS (Software libre y de Código Abierto) para la plataforma Android. El cliente hace que sea fácil navegar, instalar y mantener un registro de cambios en el dispositivo.</string>

View File

@ -34,18 +34,23 @@
<string name="app_details">Sovelluksen tiedot</string>
<string name="no_such_app">Sovellusta ei löytynyt</string>
<string name="about_title">Tietoa F-Droidista</string>
<string name="about_desc">Pohjautuu alkujaan Aptoideen.
Julkaistu GNU GPLv3 -lisenssin
käyttöehtojen mukaisesti.</string>
<string name="about_site">Verkkosivu:</string>
<string name="about_mail">Sähköposti:</string>
<string name="about_version">Versio:</string>
<string name="about_website">Verkkosivu</string>
<string name="inst">Asennettu</string>
<string name="not_inst">Ei asennettu</string>
<string name="inst_unknown_source">Asennettu (tuntemattomasta lähteestä)</string>
<string name="added_on">Lisätty %s</string>
<string name="ok">OK</string>
<string name="yes">Kyllä</string>
<string name="no">Ei</string>
<string name="repo_add_title">Lisää uusi sovelluslähde</string>
<string name="repo_add_add">Lisää</string>
<string name="cancel">Peruuta</string>
<string name="enable">Ota käyttöön</string>
<string name="add_key">Lisää avain</string>
<string name="overwrite">Korvaa</string>
@ -59,6 +64,9 @@
<string name="process_update_msg">Päivitetään sovelluslistaa…</string>
<string name="download_server">Haetaan sovellusta lähteestä</string>
<string name="nfc_is_not_enabled">NFC ei ole käytössä.</string>
<string name="go_to_nfc_settings">NFC-asetukset…</string>
<string name="bluetooth_activity_not_found">Bluetooth-läheystapaa ei löytynyt, valitse yksi!</string>
<string name="choose_bt_send">Valitse Bluetooth-lähetystapa</string>
<string name="send_via_bluetooth">Lähetä bluetoothilla</string>
<string name="repo_add_url">Sovelluslähteen osoite</string>
<string name="repo_add_fingerprint">Sormenjälki (valinnainen)</string>
@ -86,9 +94,12 @@ Tahdotko päivittää ne?</string>
<string name="details_installed">Versio %s asennettu</string>
<string name="details_notinstalled">Ei asennettu</string>
<string name="corrupt_download">Ladattu tiedosto on viallinen</string>
<string name="download_cancelled">Lataus peruutettu</string>
<string name="antiadslist">Tämä sovellus sisältää mainoksia</string>
<string name="antitracklist">Tämä sovellus tarkkailee ja raportoi toimintaasi</string>
<string name="antinonfreeadlist">Tämä sovellus suosittelee ei-avoimia lisäosia</string>
<string name="antinonfreenetlist">Tämä sovellus mainostaa epävapaita verkkopalveluja</string>
<string name="antinonfreedeplist">Tämä sovellus vaatii toimiakseen jonkin muun, ei-avoimen sovelluksen</string>
<string name="display">Näyttö</string>
<string name="expert">Asiantuntija</string>
<string name="search_hint">Etsi sovelluksia</string>
@ -171,7 +182,9 @@ Sinun pitää
<string name="Navigation">Navigointi</string>
<string name="News">Uutiset</string>
<string name="Office">Toimisto</string>
<string name="Phone_SMS">Puhelin &amp; SMS</string>
<string name="Reading">Luetaan</string>
<string name="Science_Education">Tiede &amp; koulutus</string>
<string name="Security">Tietoturva</string>
<string name="System">Järjestelmä</string>
<string name="Wallpaper">Taustakuva</string>
@ -179,8 +192,6 @@ Sinun pitää
<string name="root_access_denied_title">Root-oikeudet kielletty</string>
<string name="root_access_denied_body">Joko Android-laitettasi ei ole rootattu tai olet kieltänyt F-Droidin root-oikeuksiin pääsyn.</string>
<string name="update_all">Päivitä kaikki</string>
<string name="installer_error_title">Asennus(/poisto)virhe</string>
<string name="installer_error_body">Asennus (asennuuksen poisto) epäonnistui. Jos käytät root-oikeuksia, kokeile tämän asetuksen poistamista käytöstä.</string>
<string name="system_permission_denied_title">Järjestelmäasetukset kielletty</string>
<string name="system_permission_denied_body">Tämä asetus on käytössä vain silloin, kun F-Droid on asennettu järjestelmäsovellukseksi.</string>
<string name="app_description">F-Droid on asennettava FOSS-sovellusten hakemisto (Free and Open Source Software) Androidille. Asiakasohjelma helpottaa selailemista, asentamista ja laitteesi pitämistä päivitettynä.</string>
@ -189,7 +200,7 @@ Sinun pitää
<string name="swap_use_bluetooth">Käytä sen sijaan bluetoothia</string>
<string name="swap_wifi_help">Lisää tietoa WiFistä</string>
<string name="menu_swap">Vaihda sovelluksia</string>
<string name="swap">Vaida sovelluksia</string>
<string name="swap">Vaihda sovelluksia</string>
<string name="swap_no_wifi_network">Ei vielä verkkoa</string>
<string name="swap_view_available_networks">(Napauta avataksesi saatavissa olevat verkot)</string>
<string name="swap_wifi_qr_not_working">Se ei toimi</string>

View File

@ -36,7 +36,10 @@
<string name="about_title">À propos de F-Droid</string>
<string name="about_desc">Initialement basée sur Aptoide.
Publiée sous licence GNU GPLv3.</string>
<string name="about_website">Site Web</string>
<string name="about_site">Site web :</string>
<string name="about_mail">Courriel :</string>
<string name="about_version">Version :</string>
<string name="about_website">Site web</string>
<string name="no_repo">Aucun dépôt n\'est configuré!
Un dépôt est une source d\'applications. Pour en ajouter un, appuyez maintenant sur le bouton MENU et entrez l\'adresse URL.
@ -44,6 +47,8 @@ Un dépôt est une source d\'applications. Pour en ajouter un, appuyez maintenan
L\'adresse d\'un dépôt ressemble à ceci: https://f-droid.org/repo</string>
<string name="inst">Installée</string>
<string name="not_inst">Non installée</string>
<string name="inst_known_source">Installé (depuis %s)</string>
<string name="inst_unknown_source">Installé (depuis une source inconnue)</string>
<string name="added_on">Ajoutée le %s</string>
<string name="ok">OK</string>
<string name="yes">Oui</string>
@ -178,7 +183,7 @@ Voulez-vous les mettre à jour?</string>
<string name="unverified">Non vérifié</string>
<string name="repo_url">URL</string>
<string name="repo_num_apps">Nombre d\'applications</string>
<string name="repo_fingerprint">Empreinte digitale de la clef de signature pour le dépôt (SHA-256)</string>
<string name="repo_fingerprint">Empreinte numérique de la clef de signature pour le dépôt (SHA-256)</string>
<string name="repo_description">Description</string>
<string name="repo_last_update">Dernière mise à jour</string>
<string name="repo_update">Mise à jour</string>
@ -219,7 +224,9 @@ Vous devez
<string name="Navigation">Navigation</string>
<string name="News">Nouveautés</string>
<string name="Office">Bureautique</string>
<string name="Phone_SMS">Téléphone &amp; SMS</string>
<string name="Reading">Lecture</string>
<string name="Science_Education">Science &amp; Éducation</string>
<string name="Security">Sécurité</string>
<string name="System">Système</string>
<string name="Wallpaper">Fond d\'écran</string>
@ -227,8 +234,6 @@ Vous devez
<string name="root_access_denied_title">Droits root refusés</string>
<string name="root_access_denied_body">Soit votre système Android n\'a pas les droits root/SuperUser, soit vous les avez refusés à F-Droid.</string>
<string name="update_all">Tout mettre à jour</string>
<string name="installer_error_title">Erreur de (Dés-)Installation</string>
<string name="installer_error_body">Échec de (dés-)installation. Si vous utilisez l\'accès ROOT, essayez de désactiver ce paramètre\u00A0!</string>
<string name="system_permission_denied_title">Permissions systèmes refusées</string>
<string name="system_permission_denied_body">Cette option est seulement disponible quand F-Droid est installé comme application-système.</string>
<string name="app_description">F-Droid est un catalogue installable de logiciels libres et open source pour le système Android. Le client permet une navigation facile, l\'installation, et garder une trace des mises à jour sur votre appareil.</string>
@ -241,6 +246,6 @@ Vous devez
<string name="swap_view_available_networks">(Appuyez pour ouvrir les réseaux disponibles)</string>
<string name="swap_wifi_qr_not_working">Ça ne marche pas</string>
<string name="open_qr_code_scanner">Ouvrir le scanner QR Code</string>
<string name="swap_welcome">Bienvenue sur F-Droid\u00A0!</string>
<string name="swap_confirm_connect">Voulez-vous recevoir des applications de %1$s maintenant\u00A0?</string>
<string name="swap_welcome">Bienvenue sur F-Droid/u00A0!</string>
<string name="swap_confirm_connect">Voulez-vous recevoir des applications de %1$s maintenantu00A0?</string>
</resources>

View File

@ -27,7 +27,7 @@
<string name="system_installer">Installa usando i permessi di sistema</string>
<string name="system_installer_on">Usa i permessi di sistema per installare,aggiornare e rimuovere i pacchetti</string>
<string name="local_repo_name">Nome della tua Repo Locale</string>
<string name="local_repo_name_summary">Il testo pubblico della tua repo: %s</string>
<string name="local_repo_name_summary">Il titolo visualizzato della tua repo: %s</string>
<string name="local_repo_https">Usa una Connessione Privata</string>
<string name="local_repo_https_on">Usa la connessione HTTPS:// criptata per le repo locali</string>
<string name="search_results">Risultati Ricerca</string>
@ -137,7 +137,7 @@ Vuoi aggiornarlo?</string>
<string name="adding_apks_format">Aggiungo %s alla repo…</string>
<string name="writing_index_jar">Scrivo il file di indice fimrato (index.jar)…</string>
<string name="failed_to_create_index">Creazione dell\'indice della repo fallita!</string>
<string name="linking_apks">Collego gli APK nella repo…</string>
<string name="linking_apks">Aggiungo gli APK nella repo…</string>
<string name="copying_icons">Copio le icone delle app nella repo…</string>
<string name="no_applications_found">Nessuna applicazione trovata</string>
<string name="icon">icona</string>
@ -216,6 +216,7 @@ Prova a collegarti a questa rete: %s</string>
<string name="Office">Ufficio</string>
<string name="Phone_SMS">Telefono e SMS</string>
<string name="Reading">Lettura</string>
<string name="Science_Education">Scienza &amp; Educazione</string>
<string name="Security">Sicurezza</string>
<string name="System">Sistema</string>
<string name="Wallpaper">Wallpaper</string>
@ -223,8 +224,6 @@ Prova a collegarti a questa rete: %s</string>
<string name="root_access_denied_title">Accesso Root negato</string>
<string name="root_access_denied_body">Il tuo telefono non ha i permessi di root oppure li hai negati ad F-Droid.</string>
<string name="update_all">Aggiorna tutto</string>
<string name="installer_error_title">Errore di (Dis-)Installazione</string>
<string name="installer_error_body">La (Dis-)Installazione è fallita. Se usi i permessi di root, prova a cambiare le impostazioni!</string>
<string name="system_permission_denied_title">Permessi di sistema negati</string>
<string name="system_permission_denied_body">Questa opzione è disponibile solo quando F-Droid è installato come app di sistema.</string>
<string name="app_description">F-Droid è un catalogo installabile di applicazioni FOSS (Free and Open Source Software) per Android. Il client rende semplice cercare, installare e tenere traccia deglii aggiornamenti sul tuo dispositivo.</string>
@ -238,5 +237,5 @@ Prova a collegarti a questa rete: %s</string>
<string name="swap_wifi_qr_not_working">Non funziona</string>
<string name="open_qr_code_scanner">Apri lo scanner per codici QR</string>
<string name="swap_welcome">Benvenuto in F-Droid!</string>
<string name="swap_confirm_connect">Vuoi prendere le app da %1$s?</string>
<string name="swap_confirm_connect">Vuoi ricevere le app da %1$s?</string>
</resources>

View File

@ -3,15 +3,15 @@
<string name="searchres_napps">\'%2$s\' に適合する %1$d アプリケーションが見つかりました:</string>
<string name="searchres_oneapp">\'%s\' に適合する 1 アプリケーションが見つかりました:</string>
<string name="searchres_noapps">\'%s\' に適合するアプリケーションは見つかりませんでした</string>
<string name="SignatureMismatch">新しいバージョンは、以前のものと異なる暗号鍵で署名されています。新しいバージョンをインストールするには, まず以前のバージョンをアンインストールする必要があります。その後で再度実行してください。(アプリケーションをアンインストールすると保存したデーターが消えることに注意してください)</string>
<string name="installIncompatible">このパッケージはあなたの端末と互換性がないようです。それでもインストールを続行しますか?</string>
<string name="installDowngrade">このアプリケーションをダウングレードしようとしています。これにより不具合を発生させたりデーターを失ったりする場合があります。それでもダウングレードを続行しますか?</string>
<string name="SignatureMismatch">新しいバージョンは、以前のものと異なる暗号鍵で署名されています。新しいバージョンをインストールするにはまず以前のバージョンをアンインストールする必要があります。その後で再度実行してください。(アプリケーションをアンインストールすると保存したデーターが消えることに注意してください)</string>
<string name="installIncompatible">このパッケージはあなたの端末と互換性がないようです。それでもインストールを続行しますか</string>
<string name="installDowngrade">このアプリケーションをダウングレードしようとしています。これにより不具合を発生させたりデーターを失ったりする場合があります。それでもダウングレードを続行しますか</string>
<string name="version">バージョン</string>
<string name="edit">編集</string>
<string name="delete">削除</string>
<string name="enable_nfc_send">NFC 送信を有効</string>
<string name="cache_downloaded">アプリのキャッシュ</string>
<string name="cache_downloaded_on">ダウンロードした.apkファイルをSDカードに残します</string>
<string name="cache_downloaded">アプリケーションの保存</string>
<string name="cache_downloaded_on">ダウンロードした.apkファイルをSDカードに残します</string>
<string name="updates">更新</string>
<string name="other">その他</string>
<string name="last_update_check">最新リポジトリ検索: %s</string>
@ -23,7 +23,7 @@
<string name="notify">通知</string>
<string name="notify_on">更新があれば通知します</string>
<string name="update_history">更新履歴</string>
<string name="update_history_summ">アプリを新しいものと判断する日数: %s</string>
<string name="update_history_summ">アプリケーションが新しいものだと判断する日数:%s日</string>
<string name="system_installer">システムアクセス許可を使用してインストール</string>
<string name="system_installer_on">パッケージのインストール、更新、および削除にシステムアクセス許可を使用する</string>
<string name="local_repo_name">ローカルリポジトリの名前</string>
@ -32,23 +32,25 @@
<string name="local_repo_https_on">ローカルリポジトリに暗号化したHTTPS://接続を使用する</string>
<string name="search_results">検索結果</string>
<string name="app_details">アプリ詳細</string>
<string name="no_such_app">そのようなアプリはありません</string>
<string name="no_such_app">該当するアプリケーションが存在しません</string>
<string name="about_title">F-Droidについて</string>
<string name="about_desc">Aptoideをベースにしています.
GNU GPLv3 ライセンスに基づいてリリースされました.</string>
<string name="about_site">Webサイト</string>
<string name="about_mail">電子メール</string>
<string name="about_version">バージョン</string>
GNU GPLv3 ライセンスに基づいてリリースされました</string>
<string name="about_site">Webサイト:</string>
<string name="about_mail">電子メール:</string>
<string name="about_version">バージョン:</string>
<string name="about_website">Webサイト</string>
<string name="no_repo">設定済のリポジトリがありません!
<string name="no_repo">設定済のリポジトリがありません
リポジトリはアプリケーションの元になります。追加するには、メニュー
ボタンを押してURLを入力してください。
リポジトリのアドレスは
次のような形式です: https://f-droid.org/repo</string>
<string name="inst">インストール</string>
<string name="inst">入手</string>
<string name="not_inst">未インストール</string>
<string name="inst_known_source">インストール済 (%s から)</string>
<string name="inst_unknown_source">インストール済 (入手元不明)</string>
<string name="added_on">%s に追加しました</string>
<string name="ok">OK</string>
<string name="yes">はい</string>
@ -60,10 +62,10 @@ GNU GPLv3 ライセンスに基づいてリリースされました.</string>
<string name="add_key">キーを追加</string>
<string name="overwrite">上書き</string>
<string name="repo_update_title">リポジトリを更新</string>
<string name="tab_noninstalled">インストール可能</string>
<string name="tab_noninstalled">入手可能</string>
<string name="tab_updates">更新</string>
<string name="one_update_available">1つの更新があります。</string>
<string name="many_updates_available">%d の更新があります。</string>
<string name="many_updates_available">%d の更新があります。</string>
<string name="fdroid_updates_available">F-Droidの更新があります</string>
<string name="process_wait_title">しばらくお待ちください</string>
<string name="process_update_msg">アプリケーションリストを更新中…</string>
@ -95,7 +97,7 @@ GNU GPLv3 ライセンスに基づいてリリースされました.</string>
<string name="menu_share">共有</string>
<string name="menu_install">インストール</string>
<string name="menu_uninstall">アンインストール</string>
<string name="menu_ignore_all">すべての更新を無視</string>
<string name="menu_ignore_all">ての更新を無視</string>
<string name="menu_ignore_this">この更新を無視</string>
<string name="menu_website">Webサイト</string>
<string name="menu_issues">問題</string>
@ -113,7 +115,7 @@ GNU GPLv3 ライセンスに基づいてリリースされました.</string>
<string name="antinonfreedeplist">このアプリケーションは他の有償アプリケーションに依存します</string>
<string name="antiupstreamnonfreelist">提供されるソースコードは全てがフリーではありません</string>
<string name="display">表示</string>
<string name="expert">上級者向け</string>
<string name="expert">上級者向け設定</string>
<string name="expert_on">拡張情報を表示し、拡張設定を有効にします</string>
<string name="search_hint">アプリケーションの検索</string>
<string name="appcompatibility">アプリケーションの互換性</string>
@ -200,11 +202,13 @@ GNU GPLv3 ライセンスに基づいてリリースされました.</string>
<string name="repo_confirm_delete_title">リポジトリを削除しますか?</string>
<string name="repo_confirm_delete_body">リポジトリを削除するとアプリケーションはF-Droidからインストールできなくなります。
注:これまでにインストールした全てのアプリケーションは端末に残ります。</string>
注:これまでにインストールしたアプリケーションは端末に残ります。</string>
<string name="repo_disabled_notification">\"%1$s\" を無効にしました。
このリポジトリからアプリケーションをインストールするには再度有効にする必要があります。</string>
<string name="minsdk_or_later">%s 以降</string>
<string name="repo_added">保存した F-Droid リポジトリ %1$s</string>
<string name="repo_searching_address">%1$s で F-Droid リポジトリを検索中</string>
<string name="minsdk_or_later">%s 以上</string>
<string name="up_to_maxsdk">最大 %s</string>
<string name="minsdk_up_to_maxsdk">%1$s から %2$s</string>
<string name="not_on_same_wifi">あなたの端末は追加したローカル・リポジトリと同じWiFi上にありません。このネットワークに参加してみてください: %s</string>
@ -221,7 +225,7 @@ GNU GPLv3 ライセンスに基づいてリリースされました.</string>
<string name="News">ニュース</string>
<string name="Office">オフィス</string>
<string name="Phone_SMS">電話とSMS</string>
<string name="Reading">読み込み中</string>
<string name="Reading">閲覧</string>
<string name="Science_Education">科学と教育</string>
<string name="Security">セキュリティ</string>
<string name="System">システム</string>
@ -230,8 +234,6 @@ GNU GPLv3 ライセンスに基づいてリリースされました.</string>
<string name="root_access_denied_title">管理者権限での接続が拒絶されました</string>
<string name="root_access_denied_body">お使いのAndroid端末はroot化されていないか、F-Droidの管理者権限要求が拒絶されされました.</string>
<string name="update_all">全て更新</string>
<string name="installer_error_title">(アン)インストールエラー</string>
<string name="installer_error_body">(アン)インストールに失敗しました。管理者権限を使用している場合は、この設定を無効にしてみてください。</string>
<string name="system_permission_denied_title">システムアクセス許可が拒絶されました</string>
<string name="system_permission_denied_body">この設定は、F-Droidがシステムアプリとしてインストールされているときのみ有効です。</string>
<string name="app_description">F-DroidはAndroidプラットフォーム向けFOSS(フリーのオープンソースソフトウェア) アプリケーションのインストール可能なカタログです。このクライアントで、お使いの端末で簡単に参照、インストール、および更新履歴を記録することができます。</string>

View File

@ -3,18 +3,39 @@
<string name="searchres_napps">\'%2$s\' 검색결과 (%1$d개)</string>
<string name="searchres_oneapp">\'%s\' 검색결과:</string>
<string name="searchres_noapps">\'%s\' 와 일치하는 응용프로그램을 찾을 수 없습니다.</string>
<string name="SignatureMismatch">새 버전은 기존 버전과 다른 키로 서명되어 있습니다. 새 버전을 설치하려면 기존 버전을 반드시 먼저 삭제해야 합니다. 그 다음에 다시 시도하세요. (참고로, 삭제를 할 경우 앱이 저장한 모든 내부 자료도 같이 삭제됩니다)</string>
<string name="installIncompatible">이 패키지가 기기와 호환되지 않는 것 같습니다. 계속 설치를 진행할까요?</string>
<string name="installDowngrade">이 응용 프로그램의 다운그레이드 하려고 합니다. 이전 버전을 설치할 경우, 응용 프로그램에 데이터가 손상되거나 오작동이 발생할 수 있습니다. 정말로 다운그레이드하시겠습니까?</string>
<string name="version">버전</string>
<string name="edit">편집</string>
<string name="delete">삭제</string>
<string name="enable_nfc_send">NFC 전송 사용…</string>
<string name="cache_downloaded">다운로드된 설치파일 저장</string>
<string name="cache_downloaded_on">다운로드한 APK 파일을 SD 카드에 계속 보관</string>
<string name="updates">업데이트</string>
<string name="other">기타</string>
<string name="last_update_check">마지막 저장소 검색: %s</string>
<string name="never">하지 않음</string>
<string name="update_interval">자동 업데이트 간격</string>
<string name="update_interval_zero">자동으로 앱 목록 업데이트 하지 않음</string>
<string name="automatic_scan_wifi">Wi-Fi 연결 시에만</string>
<string name="automatic_scan_wifi_on">WiFi에 연결되어 있을 때만 자동으로 앱 목록 업데이트</string>
<string name="notify">알림</string>
<string name="notify_on">새로운 업데이트가 가능할 때 알림</string>
<string name="update_history">이력 업데이트</string>
<string name="update_history_summ">최신 앱이라고 간주할 날짜: %s</string>
<string name="system_installer">시스템 권한을 사용해 설치</string>
<string name="system_installer_on">패키지의 설치, 업데이트, 제거를 위해 시스템 권한 사용</string>
<string name="local_repo_name">로컬 저장소의 이름</string>
<string name="local_repo_name_summary">로컬 저장소의 광고 제목: %s</string>
<string name="local_repo_https">비공개 연결 사용</string>
<string name="local_repo_https_on">로컬 저장소에 암호화된 HTTPS:// 연결을 사용</string>
<string name="search_results">검색 결과</string>
<string name="app_details">앱 상세정보</string>
<string name="no_such_app">앱이 발견되지 않음</string>
<string name="about_title">F-Droid 대하여</string>
<string name="about_desc">Aptoide에 기반합니다.
GNU GPLv3 라이센스 하에 배포됩니다.</string>
<string name="about_site">웹사이트:</string>
<string name="about_mail">이메일:</string>
<string name="about_version">버전:</string>
@ -25,6 +46,8 @@
저장소 URL 예: https://f-droid.org/repo</string>
<string name="inst">설치됨</string>
<string name="not_inst">설치되지 않음</string>
<string name="inst_known_source">설치됨 (%s (으)로부터)</string>
<string name="inst_unknown_source">설치됨 (알 수 없는 출처로부터)</string>
<string name="added_on">%s에 추가됨</string>
<string name="ok">확인</string>
<string name="yes"></string>
@ -32,19 +55,36 @@
<string name="repo_add_title">새로운 저장소 추가</string>
<string name="repo_add_add">추가</string>
<string name="cancel">취소</string>
<string name="enable">사용</string>
<string name="add_key">키 추가</string>
<string name="overwrite">덮어쓰기</string>
<string name="repo_update_title">저장소 업데이트</string>
<string name="tab_noninstalled">사용 가능</string>
<string name="tab_updates">업데이트</string>
<string name="one_update_available">1개의 업데이트를 사용할 수 있습니다.</string>
<string name="many_updates_available">%d개의 업데이트를 사용할 수 있습니다.</string>
<string name="fdroid_updates_available">F-Droid 업데이트를 사용할 수 있습니다.</string>
<string name="process_wait_title">잠시만 기다려주세요</string>
<string name="process_update_msg">응용 프로그램 목록 업데이트중…</string>
<string name="download_server">에서 응용프로그램 가져오기</string>
<string name="download_server">다음으로부터 응용프로그램을 가져옵니다:</string>
<string name="nfc_is_not_enabled">NFC가 해제되어 있습니다!</string>
<string name="go_to_nfc_settings">NFC 설정으로…</string>
<string name="bluetooth_activity_not_found">블루투스 전송 방법을 찾을 수 없습니다. 선택하세요!</string>
<string name="choose_bt_send">블루투스 전송 방법 선택</string>
<string name="send_via_bluetooth">블루투스를 통해 전송</string>
<string name="repo_add_url">저장소 주소</string>
<string name="repo_add_fingerprint">핑거프린트 (선택 가능)</string>
<string name="repo_exists">저장소가 이미 존재합니다!</string>
<string name="repo_exists_add_fingerprint">저장소가 이미 설치되었으며, 키에 대한 새로운 정보를 추가할 것입니다.</string>
<string name="repo_exists_enable">저장소가 이미 설치되었으며, 다시 사용할 것인지 확인하세요.</string>
<string name="repo_exists_and_enabled">도착하는 저장소가 이미 설치되었으며 사용 가능합니다!</string>
<string name="repo_delete_to_overwrite">다른 키가 할당된 저장소를 추가하기 전에 이 저장소를 먼저 삭제해야 합니다!</string>
<string name="malformed_repo_uri">잘못된 형식의 저장소 URI를 무시하는 중: %s</string>
<string name="repo_alrt">사용된 저장소의 목록이 변경되었습니다.
업데이트 하시겠습니까?</string>
<string name="menu_update_repo">저장소 업데이트</string>
<string name="menu_manage">저장소 관리</string>
<string name="menu_send_apk_bt">FDroid.apk 파일을 블루투스로 전송…</string>
<string name="menu_preferences">설정</string>
<string name="menu_about">대하여</string>
<string name="menu_search">검색</string>
@ -61,27 +101,140 @@
<string name="menu_source">소스코드</string>
<string name="menu_upgrade">업그레이드</string>
<string name="menu_donate">기부</string>
<string name="details_installed">%s 버전이 설치됨</string>
<string name="details_notinstalled">설치되지 않음</string>
<string name="corrupt_download">다운로드된 파일이 손상되었습니다.</string>
<string name="download_cancelled">다운로드 취소됨</string>
<string name="antiadslist">이 응용프로그램은 광고가 포함되어 있습니다.</string>
<string name="antitracklist">이 응용프로그램은 활동을 추적하여 리포트를 보고합니다.</string>
<string name="antinonfreeadlist">이 앱은 자유롭지 않은 애드온을 권장하고 있습니다</string>
<string name="antinonfreenetlist">이 앱은 자유롭지 않은 네트워크 서비스를 권장하고 있습니다</string>
<string name="antinonfreedeplist">이 앱은 다른 자유롭지 않은 앱에 의존합니다</string>
<string name="antiupstreamnonfreelist">업스트림 소스 코드가 완전히 자유롭지 않습니다</string>
<string name="display">표시</string>
<string name="expert">전문가</string>
<string name="expert_on">추가 정보 표시 및 추가 설정 사용</string>
<string name="search_hint">응용 프로그램 검색</string>
<string name="appcompatibility">응용 프로그램 호환성</string>
<string name="show_incompat_versions">호환되지 않는 버전</string>
<string name="show_incompat_versions_on">기기와 호환되지 않는 앱 버전도 표시</string>
<string name="rooted">루트</string>
<string name="rooted_on">루트 권한을 요구하는 앱을 비활성화 하지 않기</string>
<string name="ignoreTouch">터치스크린 무시</string>
<string name="ignoreTouch_on">터치스크린을 요구하는 앱을 항상 포함</string>
<string name="category_all">전체</string>
<string name="category_whatsnew">새로운 기능</string>
<string name="category_recentlyupdated">최근 업데이트</string>
<string name="local_repo">로컬 저장소</string>
<string name="local_repo_running">F-Droid는 교환할 준비가 되었습니다</string>
<string name="waiting_for_ipaddress">IP 주소 기다리는 중…</string>
<string name="setup_repo">로컬 저장소 설정</string>
<string name="touch_to_configure_local_repo">자세한 정보를 보고, 타인이 당신과 앱을 교환할 수 있도록 하려면 여기를 누르세요.</string>
<string name="touch_to_turn_on_local_repo">로컬 저장소를 켜기 위해 여기를 누르세요.</string>
<string name="touch_to_turn_off_local_repo">로컬 저장소를 끄기 위해 여기를 누르세요.</string>
<string name="updating">업데이트 중…</string>
<string name="update_repo">저장소 업데이트</string>
<string name="deleting_repo">현재의 저장소 삭제중…</string>
<string name="adding_apks_format">%s 을(를) 저장소에 추가하는 중…</string>
<string name="writing_index_jar">서명된 색인 파일(index.jar) 작성 중…</string>
<string name="failed_to_create_index">저장소 색인을 만드는 데 실패했습니다!</string>
<string name="linking_apks">APK 파일을 저장소에 연결하는 중…</string>
<string name="copying_icons">앱 아이콘을 저장소에 복사하는 중…</string>
<string name="no_applications_found">앱이 발견되지 않음</string>
<string name="icon">아이콘</string>
<string name="fingerprint">핑거프린트:</string>
<string name="wifi_network">WiFi 네트워크:</string>
<string name="sharing_uri">공유 URL:</string>
<string name="enable_wifi">WiFi 사용</string>
<string name="enabling_wifi">WiFi 활성화 중…</string>
<string name="same_wifi_instructions">타인의 기기에 접속하려면 두 기기가 모두 같은 WiFi 네트워크에 연결되어 있는지를 확인하세요. 그리고 위의 URL 주소를 F-Droid에 입력하거나 이 QR코드를 스캔하세요.</string>
<string name="qr_code">QR 코드</string>
<string name="next">다음</string>
<string name="skip">건너뛰기</string>
<string name="qr_content_description">저장소 URL의 QR 코드</string>
<string name="qr_wizard_wifi_network_instructions">이 기기와 같은 WiFi 네트워크에 접속하려면 이 QR 코드를 스캔하기</string>
<string name="qr_wizard_download_instructions">시작하기 위한 웹사이트에 접속하려면 이 QR 코드를 스캔하기</string>
<string name="send_fdroid_via_wifi">FDroid를 WiFi를 통해 전송…</string>
<string name="proxy">프록시</string>
<string name="enable_proxy_title">HTTP 프록시 사용</string>
<string name="enable_proxy_summary">모든 네트워크 요청 사항에 사용할 HTTP 프록시 설정</string>
<string name="proxy_host">프록시 호스트</string>
<string name="proxy_host_summary">프록시의 호스트명을 설정 (예시: 127.0.0.1)</string>
<string name="proxy_port">프록시 포트</string>
<string name="proxy_port_summary">프록시의 포트 번호를 설정 (예시: 8118)</string>
<string name="status_download">%1$s 에서 다운로드 중입니다.
%2$s / %3$s (%4$d%%)</string>
<string name="status_connecting_to_repo">%1$s에 접속중</string>
<string name="status_checking_compatibility">장치와 응용프로그램의 호환성 확인중…</string>
<string name="status_inserting">앱 상세 정보 저장하는 중 (%1$d%%)</string>
<string name="repos_unchanged">모든 저장소에는 업데이트 할 패키지가 없습니다</string>
<string name="all_other_repos_fine">다른 저장소들은 오류를 일으키지 않았습니다.</string>
<string name="global_error_updating_repos">업데이트 도중 오류:</string>
<string name="no_permissions">사용된 권한이 없습니다.</string>
<string name="permissions_for_long">%s 버전에 대한 권한</string>
<string name="no_handler_app">%s을(를) 처리할 수 있는 응용프로그램이 없습니다.</string>
<string name="compactlayout">컴팩트 레이아웃</string>
<string name="compactlayout_on">아이콘을 작게 표시</string>
<string name="theme">테마</string>
<string name="unsigned">서명되지 않음</string>
<string name="unverified">검증되지 않음</string>
<string name="repo_url">URL</string>
<string name="repo_num_apps">앱 개수</string>
<string name="repo_fingerprint">저장소 서명 키(SHA-256)의 핑거프린트</string>
<string name="repo_description">설명</string>
<string name="repo_last_update">마지막 업데이트</string>
<string name="repo_update">업데이트</string>
<string name="repo_name">이름</string>
<string name="unsigned_description">앱 목록을 검증할 수 없습니다. 서명되지 않은 색인으로부터 다운로드한 앱은 주의하시기 바랍니다.</string>
<string name="repo_not_yet_updated">이 저장소는 아직 사용되지 않았습니다. 저장소가 제공하는 앱들을 열람하려면 업데이트를 해야만 합니다. 한번 업데이트되면, 여기에 설명과 상세 정보가 표시될 것입니다.</string>
<string name="repo_delete_details">{1} 앱이 있는 \"{0}\" 저장소를 삭제하시겠습니까? 이미 설치된 앱은 제거되지 않지만, F-Droid를 통한 업데이트는 더이상 할 수 없게 됩니다.</string>
<string name="unknown">알 수 없음</string>
<string name="repo_confirm_delete_title">저장소를 삭제할까요?</string>
<string name="repo_confirm_delete_body">저장소를 삭제한다는 것은 저장소의 앱들을 F-Droid에서 더이상 구할 수 없다는 의미입니다. 참고로, 이미 설치된 앱들은 기기에 남아있게 됩니다.</string>
<string name="repo_disabled_notification">\"%1$s\"을(를) 해제했습니다.
저장소로부터 앱을 설치하려면 이 저장소를 다시 활성화해야 합니다.</string>
<string name="repo_added">F-Droid 저장소 저장 %1$s</string>
<string name="repo_searching_address">%1$s에서 F-Droid 저장소 찾는 중</string>
<string name="minsdk_or_later">%s 또는 나중에</string>
<string name="up_to_maxsdk">최대 %s</string>
<string name="minsdk_up_to_maxsdk">%1$s 최대 %2$s</string>
<string name="not_on_same_wifi">현재 이 기기는 당신이 추가한 로컬 저장소와 같은 WiFi 네트워크에 있지 않습니다! 이 네트워크로 접속을 시도해보세요: %s</string>
<string name="requires_features">다음이 필요함: %1$s</string>
<string name="app_icon">앱 아이콘</string>
<string name="repo_icon">저장소 아이콘</string>
<string name="Children">어린이</string>
<string name="Development">개발</string>
<string name="Games">게임</string>
<string name="Internet">인터넷</string>
<string name="Mathematics">수학</string>
<string name="Multimedia">멀티미디어</string>
<string name="Navigation">탐색</string>
<string name="News">뉴스</string>
<string name="Office">사무</string>
<string name="Phone_SMS">전화 및 문자</string>
<string name="Reading">독서</string>
<string name="Science_Education">과학 및 교육</string>
<string name="Security">보안</string>
<string name="System">시스템</string>
<string name="Wallpaper">배경화면</string>
<string name="requesting_root_access_body">루트 권한 요청하는 중…</string>
<string name="root_access_denied_title">루트 권한 거부됨</string>
<string name="root_access_denied_body">기기가 루팅되지 않았거나 F-Droid의 루트 권한 요청을 거부한 경우입니다.</string>
<string name="update_all">모두 업데이트</string>
<string name="system_permission_denied_title">시스템 권한 거부됨</string>
<string name="system_permission_denied_body">이 옵션은 F-Droid가 시스템 앱으로 설치된 경우에만 사용 가능합니다.</string>
<string name="app_description">F-Droid는 안드로이드 플랫폼을 위한 \'오픈 소스 및 자유 소프트웨어(FOSS)\' 앱들의 설치 목록입니다. F-Droid는 기기에서 앱들을 쉽게 검색, 설치, 업데이트를 할 수 있게 해줍니다.</string>
<string name="swap_nfc_description">기기를 서로 맞대어 놓으세요.</string>
<string name="swap_join_same_wifi">같은 WiFi 네트워크에 접속하세요</string>
<string name="swap_use_bluetooth">대신 블루투스 사용하기</string>
<string name="swap_wifi_help">WiFi에 대해서 더 알아보기</string>
<string name="menu_swap">앱 교환</string>
<string name="swap">앱 교환</string>
<string name="swap_no_wifi_network">아직 네트워크 없음</string>
<string name="swap_view_available_networks">(사용 가능한 네트워크를 열기 위해 누르기)</string>
<string name="swap_wifi_qr_not_working">작동되지 않습니다</string>
<string name="open_qr_code_scanner">QR 코드 스캐너 열기</string>
<string name="swap_welcome">F-Droid에 오신 것을 환영합니다!</string>
<string name="swap_confirm_connect">지금 %1$s(으)로부터 앱을 가져올까요?</string>
</resources>

View File

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="version">Versija</string>
<string name="edit">Labot</string>
<string name="delete">Dzēst</string>
<string name="enable_nfc_send">Ieslēgt sūtīšanu caur NFC</string>
<string name="cache_downloaded">Programmu kešs</string>
<string name="cache_downloaded_on">Saglabāt novilktos apk failus SD kartē</string>
<string name="updates">Atjauninājumi</string>
<string name="other">Cits</string>
<string name="last_update_check">Atjauninājumi pārbaudīti</string>
<string name="never">nekad</string>
<string name="update_interval">Atjauninājumu intervāls</string>
<string name="update_interval_zero">Neatjaunināt automātiski</string>
<string name="automatic_scan_wifi">Tikai WiFi</string>
<string name="automatic_scan_wifi_on">Atjaunināt automātiski tikai WiFi tīklā</string>
<string name="notify">Ziņot</string>
<string name="notify_on">Ziņot, kad atjauninājumi pieejami</string>
<string name="update_history">Atjauninājumu vēsture</string>
<string name="system_installer">Instalēt izmantojot sistēmas piekļuvi</string>
<string name="system_installer_on">Izmantot sistēmas piekļuvi instalējot, atjauninot, dzēšot pakotnes</string>
<string name="local_repo_name">Lokālā Repozitorija nosaukums</string>
<string name="local_repo_https">Izmantot privātu savienojumu</string>
<string name="local_repo_https_on">Izmantot kriptētu HTTPS:// savienojumu</string>
<string name="search_results">Meklējuma rezultāti</string>
<string name="app_details">Programmas detaļas</string>
<string name="no_such_app">Nav atrasts</string>
<string name="about_title">Par F-Droid</string>
<string name="about_desc">Veidots uz Aptoide bāzes
Izlaists zem GNU GPLv3 licenzes</string>
<string name="about_site">Mājaslapa:</string>
<string name="about_mail">Epasts:</string>
<string name="about_version">Versija:</string>
<string name="about_website">Mājaslapa:</string>
<string name="no_repo">Tev nav iestatītu Repozitoroju
Repozotoriji ir programmu avots. Lai pievienotu nospied IZVĒLNI un ievadi URL
Repozitorija adrese izskatās, aptuveni, šādi: https://f-droid.org/repo</string>
<string name="inst">Intstalēts</string>
<string name="not_inst">Nav instalēts</string>
<string name="inst_known_source">Instalēts (no %s)</string>
<string name="inst_unknown_source">Instalēts (no nezināmiem avotiem)</string>
<string name="added_on">Pievienots %s</string>
<string name="ok">OK</string>
<string name="yes"></string>
<string name="no"></string>
<string name="repo_add_title">Piecienot jaunu Repozitoriju</string>
<string name="repo_add_add">Pievienot</string>
<string name="cancel">Atcelt</string>
<string name="enable">Ieslēgt</string>
<string name="add_key">Pievienot atslēgu</string>
<string name="overwrite">Pārrakstīt</string>
<string name="repo_update_title">Atjaunot Repozitorijus</string>
<string name="tab_noninstalled">Pieejams</string>
<string name="tab_updates">Atjauninājumi</string>
<string name="one_update_available">1 atjauninājums pieejams</string>
<string name="many_updates_available">%d atjauninājumi pieejami</string>
<string name="process_wait_title">Lūdzu uzgaidi</string>
<string name="process_update_msg">Atjauno programmi sarakstu</string>
<string name="download_server">Saņem programmu no</string>
<string name="nfc_is_not_enabled">NFC nav ieslègts</string>
<string name="go_to_nfc_settings">Uz NFC iestatījumiem</string>
<string name="bluetooth_activity_not_found">Nav Bluetooth aktivitāšu, izvēlies vienu!</string>
<string name="choose_bt_send">Izvēlies Bluesūtīšanas metodi</string>
<string name="send_via_bluetooth">Bluesūtīt</string>
<string name="repo_add_url">Repozitorija adrese</string>
<string name="repo_add_fingerprint">Nospiedums (opcionāli)</string>
<string name="repo_exists">Repozitorijs jau pastāv!</string>
<string name="repo_exists_add_fingerprint">Repozitorijs jau iestatīts, šis pievienos jaunu atslēgad info</string>
<string name="repo_exists_enable">Reozitroris jau iestatīts, apstiprini atkārtotu ieslēgšanu</string>
<string name="repo_exists_and_enabled">Ienākošais Repozitorijs jau iestatīts un ieslēgts!</string>
<string name="repo_delete_to_overwrite">Vispirms jāizdzēš Repozitorijs, pirms pievienošanas ar citu atslēgu!</string>
<string name="malformed_repo_uri">Ignorē nepareizu Repozitorija URI: %s</string>
<string name="repo_alrt">Izmantoto Repozitoriju saraksts izmainīts, vai atjaunot?</string>
<string name="menu_update_repo">Atjauno Repozitorijus</string>
<string name="menu_manage">Repozitoriji</string>
<string name="menu_send_apk_bt">Bluesūta FDroid.apk…</string>
<string name="menu_preferences">Iestatījumi</string>
<string name="menu_about">Par</string>
<string name="menu_search">Meklēt</string>
<string name="menu_add_repo">Jauns Repozitorijs</string>
<string name="menu_rem_repo">Dzēst Repozitoriju</string>
<string name="menu_launch">Palaist</string>
<string name="menu_share">Dalīties</string>
<string name="menu_install">Instalēt</string>
<string name="menu_uninstall">Izdzēst</string>
<string name="menu_ignore_all">Ignorēt visus atjauninājumus</string>
<string name="menu_ignore_this">Ignorēt atjauninājumu</string>
<string name="menu_website">Mājaslapa</string>
<string name="menu_source">Pirmkods</string>
<string name="menu_upgrade">Atjaunot</string>
<string name="menu_donate">Ziedot</string>
<string name="details_installed">versija %s instalēta</string>
<string name="details_notinstalled">Nav instalēts</string>
<string name="corrupt_download">Novilktais fails nav derīgs</string>
<string name="download_cancelled">Lejupielāde atcelta</string>
<string name="antiadslist">Programma satur reklāmu</string>
<string name="antitracklist">Programma seko tavām aktivitātēm un ziņo par tām</string>
</resources>

View File

@ -158,8 +158,11 @@ Lisensiert GNU GPLv3.</string>
<string name="proxy_host_summary">Sett opp tjenernavn for din mellomtjener (f.eks. 127.0.0.1)</string>
<string name="proxy_port">Mellomtjener-port</string>
<string name="proxy_port_summary">Sett opp portnummer for din mellomtjener (f.eks. 8118)</string>
<string name="status_download">Laster ned\n%2$s / %3$s (%4$d%%) fra\n%1$s</string>
<string name="status_connecting_to_repo">Kobler til\n%1$s</string>
<string name="status_download">Laster ned
%2$s / %3$s (%4$d%%) fra
%1$s</string>
<string name="status_connecting_to_repo">Kobler til
%1$s</string>
<string name="status_checking_compatibility">Sjekker programstøtte for ditt utstyr…</string>
<string name="status_inserting">Lagrer programdata (%1$d%%)</string>
<string name="repos_unchanged">Ingen av pakkebrønnene hadde noen oppdateringer</string>
@ -219,6 +222,7 @@ Du må
<string name="Office">Kontor</string>
<string name="Phone_SMS">Telefon og SMS</string>
<string name="Reading">Leser</string>
<string name="Science_Education">Vitenskap &amp; Opplæring</string>
<string name="Security">Sikkerhet</string>
<string name="System">System</string>
<string name="Wallpaper">Bakgrunn</string>
@ -226,8 +230,6 @@ Du må
<string name="root_access_denied_title">Root tilgang nektet</string>
<string name="root_access_denied_body">Enten mangler din Android-enhet superbrukertilgang, eller så har du nektet F-droid root-tilgang.</string>
<string name="update_all">Oppdater alle</string>
<string name="installer_error_title">(Av-)Installasjons-feil</string>
<string name="installer_error_body">(Av-)installasjon feilet. Hvis du bruker root-tilgang, prøv å skru av dette!</string>
<string name="system_permission_denied_title">System-rettigheter avslått</string>
<string name="system_permission_denied_body">Dette valget er bare tilgjengelig når F-Droid er installert som system-program.</string>
<string name="app_description">F-droid er en ansamling fri programvare som kan installeres på Android-plattformen. Klienten gjør det enkelt å sjekke ut, installere og holde øye med oppdateringer på din enhet.</string>

View File

@ -24,6 +24,12 @@
<string name="notify_on">Meld wanneer updates beschikbaar zijn</string>
<string name="update_history">Vernieuw historie</string>
<string name="update_history_summ">Dagen om een app als nieuw of recent te zien: %s</string>
<string name="system_installer">Installeer met systeem-rechten</string>
<string name="system_installer_on">Gebruik systeem rechten om pakketten te installeren, updaten en verwijderen</string>
<string name="local_repo_name">Naam van collectie gedeelde apps</string>
<string name="local_repo_name_summary">De geadverteerde titel van jouw collectie gedeelde apps: %s</string>
<string name="local_repo_https">Gebruik beveiligde verbinding</string>
<string name="local_repo_https_on">Gebruik versleutelde HTTPS:// verbinding voor gedeelde apps</string>
<string name="search_results">Zoekresultaten</string>
<string name="app_details">App Details</string>
<string name="no_such_app">Geen dergelijke app gevonden</string>
@ -44,6 +50,8 @@ Een bron-adres ziet er ongeveer
als: https://f-droid.org/repo</string>
<string name="inst">Geïnstalleerd</string>
<string name="not_inst">Niet geïnstalleerd</string>
<string name="inst_known_source">Geïnstalleerd (van %s)</string>
<string name="inst_unknown_source">Geïnstalleerd (van onbekende bron)</string>
<string name="added_on">Toegevoegd op %s</string>
<string name="ok">OK</string>
<string name="yes">Ja</string>
@ -67,6 +75,7 @@ Een bron-adres ziet er ongeveer
<string name="go_to_nfc_settings">Ga naar NFC instellingen…</string>
<string name="bluetooth_activity_not_found">Geen Bluetooth verzendmethode gevonden, kies er een!</string>
<string name="choose_bt_send">Kies Bluetooth verzendmethode</string>
<string name="send_via_bluetooth">Verstuur via Bluetooth</string>
<string name="repo_add_url">Bron-adres</string>
<string name="repo_add_fingerprint">Vingerafdruk (optioneel)</string>
<string name="repo_exists">Deze softwarebron bestaat al!</string>
@ -79,6 +88,7 @@ Een bron-adres ziet er ongeveer
Wilt u ze vernieuwen?</string>
<string name="menu_update_repo">Vernieuw Bronnen</string>
<string name="menu_manage">Beheer bronnen</string>
<string name="menu_send_apk_bt">Deel F-Droid via Bluetooth…</string>
<string name="menu_preferences">Voorkeuren</string>
<string name="menu_about">Over</string>
<string name="menu_search">Zoeken</string>
@ -93,7 +103,7 @@ Wilt u ze vernieuwen?</string>
<string name="menu_website">Website</string>
<string name="menu_issues">Problemen</string>
<string name="menu_source">Broncode</string>
<string name="menu_upgrade">Verbeteren</string>
<string name="menu_upgrade">Vernieuwen</string>
<string name="menu_donate">Doneer</string>
<string name="details_installed">Versie %s geïnstalleerd</string>
<string name="details_notinstalled">Niet geïnstalleerd</string>
@ -119,12 +129,52 @@ Wilt u ze vernieuwen?</string>
<string name="category_all">Alles</string>
<string name="category_whatsnew">Wat is nieuw</string>
<string name="category_recentlyupdated">Recentelijk vernieuwd</string>
<string name="local_repo">Collectie gedeelde apps</string>
<string name="local_repo_running">F-Droid is klaar om apps te delen</string>
<string name="waiting_for_ipaddress">wachten op IP adres…</string>
<string name="setup_repo">Collectie gedeelde apps instellen</string>
<string name="touch_to_configure_local_repo">Raak aan om details te bekijken en anderen gedeelde apps van jou te laten downloaden.</string>
<string name="touch_to_turn_on_local_repo">Raak aan om apps te delen.</string>
<string name="touch_to_turn_off_local_repo">Raak aan om apps niet langer te delen.</string>
<string name="updating">Bezig met updaten…</string>
<string name="update_repo">Vernieuw Bronnen</string>
<string name="deleting_repo">Bron verwijderen…</string>
<string name="adding_apks_format">%s aan gedeelde app collectie toevoegen…</string>
<string name="writing_index_jar">Gesigneerd index bestand (index.jar) aan het schrijven…</string>
<string name="failed_to_create_index">Kon indexbestand voor gedeelde apps niet aanmaken!</string>
<string name="linking_apks">APKs aan collectie toevoegen…</string>
<string name="copying_icons">App iconen aan collectie toevoegen…</string>
<string name="no_applications_found">Geen apps gevonden</string>
<string name="icon">icoon</string>
<string name="fingerprint">Vingerafdruk:</string>
<string name="wifi_network">WiFi Netwerk:</string>
<string name="sharing_uri">Deeladres:</string>
<string name="enable_wifi">Schakel WiFi in</string>
<string name="enabling_wifi">WiFi inschakelen…</string>
<string name="same_wifi_instructions">Om apps te delen, zorg dat beide apparaten op hetzelfde WiFi netwerk zitten. Type dan het bovenstaande webadres in F-Droid, of scan deze QR code:</string>
<string name="qr_code">QR code</string>
<string name="next">Volgende</string>
<string name="skip">Overslaan</string>
<string name="qr_content_description">QR code of appcollectie webadres</string>
<string name="qr_wizard_wifi_network_instructions">Scan deze QR code om het hetzelfde WiFi netwerk als dit apparaat te verbinden.</string>
<string name="qr_wizard_download_instructions">Scan deze QR code om met de website met startinstructies te verbinden.</string>
<string name="send_fdroid_via_wifi">Verstuur F-Droid via WiFi…</string>
<string name="proxy">Proxy</string>
<string name="enable_proxy_title">Schakel HTTP proxy in</string>
<string name="enable_proxy_summary">Stel HTTP proxy voor alle netwerkverbindingen in</string>
<string name="proxy_host">Proxy host</string>
<string name="proxy_host_summary">Stel de proxy\'s hostname in (bijv. 127.0.0.1)</string>
<string name="proxy_port">Proxy poort</string>
<string name="proxy_port_summary">Stel het poortnummer van de proxy in (bijv. 8118)</string>
<string name="status_download">Downloaden
%2$s / %3$s (%4$d%%) van
%1$s</string>
<string name="status_connecting_to_repo">Verbinden met %1$s</string>
<string name="status_checking_compatibility">Controleer app compatibiliteit met uw apparaat…</string>
<string name="status_inserting">Applicatiedetails opslaan (%1$d%%)</string>
<string name="repos_unchanged">Geen enkele bron heeft updates voor apps</string>
<string name="all_other_repos_fine">Alle andere bronnen hebben geen fouten veroorzaakt.</string>
<string name="global_error_updating_repos">Fout tijdens update:</string>
<string name="no_permissions">Geen permissies worden gebruikt</string>
<string name="permissions_for_long">Permissies voor versie %s</string>
<string name="no_handler_app">U hebt geen beschikbare app die %s kan verwerken</string>
@ -132,6 +182,7 @@ Wilt u ze vernieuwen?</string>
<string name="compactlayout_on">Iconen weergeven in klein formaat</string>
<string name="theme">Thema</string>
<string name="unsigned">Ongetekend</string>
<string name="unverified">Onbevestigd</string>
<string name="repo_url">URL</string>
<string name="repo_num_apps">Aantal apps</string>
<string name="repo_fingerprint">Vingerafdruk van bronondertekensleutel (SHA-256)</string>
@ -150,9 +201,46 @@ Zodra de update gedaan is ziet u hier de beschrijving en andere details.</string
Noot: Eerder geïnstalleerde apps blijven op uw apparaat.</string>
<string name="repo_disabled_notification">\"%1$s\" uitgeschakeld. U moet deze weer activeren mocht u apps vanuit deze opslag willen installeren.</string>
<string name="repo_added">F-Droid bron %1$s opgeslagen</string>
<string name="repo_searching_address">Zoeker naar F-Droid bron op %1$s</string>
<string name="minsdk_or_later">%s of later</string>
<string name="up_to_maxsdk">tot maximaal %s</string>
<string name="minsdk_up_to_maxsdk">%1$s tot %2$s</string>
<string name="not_on_same_wifi">Uw apparaat zit niet op hetzelfde WiFi-netwerk als de lokale bron die u zojuist heeft toegevoegd! Probeer om bij netwerk %s aan te melden</string>
<string name="requires_features">Benodigd: %1$s</string>
<string name="app_icon">App icoon</string>
<string name="repo_icon">Bron icoon</string>
<string name="Children">Kinderen</string>
<string name="Development">Ontwikkeling</string>
<string name="Games">Spellen</string>
<string name="Internet">Internet</string>
<string name="Mathematics">Wiskunde</string>
<string name="Multimedia">Multimedia</string>
<string name="Navigation">Navigatie</string>
<string name="News">Nieuws</string>
<string name="Office">Kantoor</string>
<string name="Phone_SMS">Telefoon &amp; SMS</string>
<string name="Reading">Lezen</string>
<string name="Science_Education">Wetenschap &amp; Educatie</string>
<string name="Security">Beveiliging</string>
<string name="System">Systeem</string>
<string name="Wallpaper">Achtergrond</string>
<string name="requesting_root_access_body">Root toegang aanvragen…</string>
<string name="root_access_denied_title">Root toegang geweigerd</string>
<string name="root_access_denied_body">Uw Android apparaat is niet geroot, of u heeft F-Droid geen root toegang gegeven.</string>
<string name="update_all">Update alles</string>
<string name="system_permission_denied_title">Systeemrechten geweigerd</string>
<string name="system_permission_denied_body">Deze optie is alleen beschikbaar als F-Droid als systeemapp geïnstalleerd is.</string>
<string name="app_description">F-Droid is een installeerbare cataloges van FOSS (Vrije en Open Source Software) apps voor Android. Het programma maakt het gemakkelijk om door apps te bladeren, te installeren en up-to-date te houden.</string>
<string name="swap_join_same_wifi">Verbind met hetzelfe WiFi netwerk als uw vriend</string>
<string name="swap_use_bluetooth">Gebruik Bluetooth</string>
<string name="swap_wifi_help">Leer meer over WiFi</string>
<string name="menu_swap">Deel apps</string>
<string name="swap">Deel apps</string>
<string name="swap_no_wifi_network">Nog geen netwerkverbinding</string>
<string name="swap_view_available_networks">(Raak aan om een lijst van beschikbare netwerken te openen)</string>
<string name="swap_wifi_qr_not_working">Het werkt niet</string>
<string name="open_qr_code_scanner">Open QR code scanner</string>
<string name="swap_welcome">Welkom bij F-Droid!</string>
<string name="swap_confirm_connect">Wilt u nu apps van %1$s ontvangen?</string>
</resources>

View File

@ -175,8 +175,6 @@ Uwaga: Wszystkie poprzednio zainstalowane aplikacje zostaną na urządzeniu.</st
<string name="root_access_denied_title">Odmówiono uprawnień roota</string>
<string name="root_access_denied_body">Urządzenie nie zostało zrootowane lub odmówiono uprawnień roota F-Droidowi.</string>
<string name="update_all">Uaktualnij wszystko</string>
<string name="installer_error_title">Błąd de/instalacji</string>
<string name="installer_error_body">Błąd de/instalacji. Jeżeli używasz uprawnień roota, spróbuj wyłączyć tę opcję.</string>
<string name="system_permission_denied_title">Odmówiono uprawnień systemowych</string>
<string name="system_permission_denied_body">Opcja dostępna tylko wtedy, gdy F-Droid został zainstalowany jako aplikacja systemowa.</string>
<string name="app_description">F-Droid jest katalogiem aplikacji FOSS (Wolne i Otwarte Oprogramowanie) dla platformy Android. Aplikacja kliencka umożliwia łatwe przeglądanie, instalację i zarządzanie aktualizacjami na Twoim urządzeniu.</string>

View File

@ -7,37 +7,48 @@
<string name="installIncompatible">Aparentemente esse pacote não é compatível com o seu dispositivo. Quer tentar instalá-lo mesmo assim?</string>
<string name="installDowngrade">Você está tentando desatualizar este aplicativo. Isso pode causar mal funcionamento e eventualmente perda de dados. Você quer tentar desatualizá-lo mesmo assim?</string>
<string name="version">Versão</string>
<string name="cache_downloaded">Cache de aplicativos baixado</string>
<string name="edit">Editar</string>
<string name="delete">Apagar</string>
<string name="enable_nfc_send">Habilitar envio NFC…</string>
<string name="cache_downloaded">Cache de aplicativos</string>
<string name="cache_downloaded_on">Manter arquivos apk baixados no cartão SD</string>
<string name="updates">Atualizações</string>
<string name="other">Outro</string>
<string name="last_update_check">Última consulta aos repositórios: %s</string>
<string name="other">Outros</string>
<string name="last_update_check">Última consulta ao repositório: %s</string>
<string name="never">nunca</string>
<string name="automatic_scan_wifi">Só com wifi</string>
<string name="update_interval">Intervalo de atualização automática</string>
<string name="update_interval_zero">Não atualizar a lista de aplicativos automaticamente</string>
<string name="automatic_scan_wifi">Apenas com wifi</string>
<string name="automatic_scan_wifi_on">Atualizar a lista de aplicativos automaticamente apenas com wifi</string>
<string name="notify">Notificar</string>
<string name="notify_on">Notificar quando houver atualizações disponíveis</string>
<string name="update_history">Atualizar histórico</string>
<string name="update_history_summ">Dias para considerar os aplicativos novos ou recentes: %s</string>
<string name="system_installer">Instalar usando permissões do sistema</string>
<string name="system_installer_on">Usar permissões do sistema para instalar, atualizar e remover pacotes</string>
<string name="local_repo_name">Nome do seu repositório local</string>
<string name="local_repo_name_summary">Título anunciado do seu repositório local: %s</string>
<string name="local_repo_https">Usar conexão privada</string>
<string name="local_repo_https_on">Usar conexão HTTPS:// criptografada para repositório local</string>
<string name="search_results">Resultados da Pesquisa</string>
<string name="app_details">Detalhes do Aplicativo</string>
<string name="no_such_app">Nenhum aplicativo encontrado</string>
<string name="local_repo_https_on">Usar conexão HTTPS:// criptografada para o repositório local</string>
<string name="search_results">Resultados da busca</string>
<string name="app_details">Detalhes do aplicativo</string>
<string name="no_such_app">O aplicativo não foi encontrado</string>
<string name="about_title">Sobre o F-Droid</string>
<string name="about_desc">Baseado originalmente no Aptoide.
Lançado sob a licença GNU GPLv3.</string>
<string name="about_site">Site:</string>
<string name="about_site">Página web:</string>
<string name="about_mail">E-mail:</string>
<string name="about_version">Versão:</string>
<string name="about_website">Site</string>
<string name="no_repo">Você não tem nenhum repositório configurado!!
<string name="about_website">Página web</string>
<string name="no_repo">Você não tem nenhum repositório configurado!
Um repositório é uma fonte de aplicativos. Para adicionar um, pressione o botão MENU e digite a URL.
Um endereço do repositório é algo similar a isto: https://f-droid.org/repo</string>
<string name="inst">Instalado</string>
<string name="not_inst">Não Instalado</string>
<string name="inst_known_source">Instalado (a partir de %s)</string>
<string name="inst_unknown_source">Instalado (a partir de fonte desconhecida)</string>
<string name="added_on">Adicionado em %s</string>
<string name="ok">OK</string>
<string name="yes">Sim</string>
@ -45,85 +56,105 @@ Um endereço do repositório é algo similar a isto: https://f-droid.org/repo</s
<string name="repo_add_title">Adicionar novo repositório</string>
<string name="repo_add_add">Adicionar</string>
<string name="cancel">Cancelar</string>
<string name="enable">Ativar</string>
<string name="add_key">Adicionar chave</string>
<string name="overwrite">Sobrescrever</string>
<string name="repo_update_title">Atualizar repositórios</string>
<string name="tab_noninstalled">Disponível</string>
<string name="tab_updates">Atualizações</string>
<string name="one_update_available">1 atualização disponível.</string>
<string name="many_updates_available">%d atualizações disponíveis.</string>
<string name="fdroid_updates_available">Atualizações do F-Droid Disponíveis</string>
<string name="process_wait_title">Aguarde</string>
<string name="fdroid_updates_available">Atualizações do F-Droid disponíveis</string>
<string name="process_wait_title">Por favor, aguarde</string>
<string name="process_update_msg">Atualizando a lista de aplicativos…</string>
<string name="download_server">Baixando aplicativo de</string>
<string name="nfc_is_not_enabled">O NFC não está habilitado!</string>
<string name="go_to_nfc_settings">Ir para configurações de NFC…</string>
<string name="bluetooth_activity_not_found">Nenhum método de envio Bluetooth foi encontrado, escolha um!</string>
<string name="choose_bt_send">Escolher o método de envio Bluetooth</string>
<string name="send_via_bluetooth">Enviar via bluetooth</string>
<string name="repo_add_url">Endereço do repositório</string>
<string name="repo_add_fingerprint">Impressão digital (opcional)</string>
<string name="repo_exists">Este repositório já existe!</string>
<string name="repo_exists_add_fingerprint">Este repositório já está configurado, isto adicionará nova informação sobre a chave.</string>
<string name="repo_exists_enable">Este repositório já está configurado, confirma que quer reativá-lo.</string>
<string name="repo_exists_and_enabled">O repositório já está configurado e habilitado!</string>
<string name="repo_delete_to_overwrite">Você deve apagar este repositório antes para poder adicionar um com uma chave diferente!</string>
<string name="malformed_repo_uri">Ignorando URI de repositório mal formada: %s</string>
<string name="repo_alrt">A lista de repositórios usados mudou.
Você deseja atualizá-los?</string>
Você quer atualizá-los?</string>
<string name="menu_update_repo">Atualizar repositórios</string>
<string name="menu_manage">Gerenciar Repositórios</string>
<string name="menu_send_apk_bt">Bluetooth FDroid.apk…</string>
<string name="menu_preferences">Preferências</string>
<string name="menu_about">Sobre</string>
<string name="menu_search">Pesquisa</string>
<string name="menu_add_repo">Novo Repositório</string>
<string name="menu_search">Procurar</string>
<string name="menu_add_repo">Novo repositório</string>
<string name="menu_rem_repo">Remover Repositório</string>
<string name="menu_launch">Rodar</string>
<string name="menu_launch">Executar</string>
<string name="menu_share">Compartilhar</string>
<string name="menu_install">Instalar</string>
<string name="menu_uninstall">Desinstalar</string>
<string name="menu_ignore_all">Ignorar Todas as Atualizações</string>
<string name="menu_ignore_this">Ignorar Esta Atualização</string>
<string name="menu_website">Site</string>
<string name="menu_ignore_all">Ignorar todas as atualizações</string>
<string name="menu_ignore_this">Ignorar esta atualização</string>
<string name="menu_website">Página web</string>
<string name="menu_issues">Questões</string>
<string name="menu_source">Código-Fonte</string>
<string name="menu_upgrade">Atualização (upgrade)</string>
<string name="menu_source">Código Fonte</string>
<string name="menu_upgrade">Atualização</string>
<string name="menu_donate">Fazer doação</string>
<string name="details_installed">Versão %s instalada</string>
<string name="details_notinstalled">Não instalado</string>
<string name="corrupt_download">O arquivo baixado está corrompido</string>
<string name="download_cancelled">Download cancelado</string>
<string name="antiadslist">Este aplicativo contem publicidade</string>
<string name="antiadslist">Este aplicativo contém publicidade</string>
<string name="antitracklist">Este aplicativo rastreia e relata sua atividade</string>
<string name="antinonfreeadlist">Este aplicativo promove complementos não-livres</string>
<string name="antinonfreenetlist">Este aplicativo promove serviços de rede não-livre</string>
<string name="antinonfreedeplist">Este aplicativo depende de aplicativos não-livres</string>
<string name="display">Exibição</string>
<string name="antinonfreeadlist">Este aplicativo promove complementos não livres</string>
<string name="antinonfreenetlist">Este aplicativo promove serviços de rede não livres</string>
<string name="antinonfreedeplist">Este aplicativo depende de aplicativos não livres</string>
<string name="antiupstreamnonfreelist">O código fonte original não é totalmente livre.</string>
<string name="display">Mostrar</string>
<string name="expert">Especialista</string>
<string name="search_hint">Pesquisar aplicativos</string>
<string name="expert_on">Mostrar informações extras e habilitar os ajustes extras</string>
<string name="search_hint">Procurar aplicativos</string>
<string name="appcompatibility">Compatibilidade de aplicativo</string>
<string name="show_incompat_versions">Versões incompatíveis</string>
<string name="show_incompat_versions_on">Mostrar as versões de aplicativos incompatíveis com o dispositivo</string>
<string name="rooted">Root</string>
<string name="rooted_on">Não marcar em cinza os aplicativos que requerem privilégios de root</string>
<string name="ignoreTouch">Ignorar tela sensível ao toque</string>
<string name="ignoreTouch_on">Sempre incluir aplicativos que requerem tela sensível a toque</string>
<string name="category_all">Todos</string>
<string name="category_whatsnew">O que há de novo</string>
<string name="category_recentlyupdated">Atualizado Recentemente</string>
<string name="category_recentlyupdated">Recentemente atualizado</string>
<string name="local_repo">Repositório local</string>
<string name="local_repo_running">O F-Droid está pronto para a troca</string>
<string name="waiting_for_ipaddress">esperando endereço IP…</string>
<string name="local_repo_running">O F-Droid está pronto para permutar</string>
<string name="waiting_for_ipaddress">Esperando por endereço IP…</string>
<string name="setup_repo">Configurar repositório local</string>
<string name="touch_to_configure_local_repo">Toque para ver detalhes e permitir que outros troquem seus aplicativos.</string>
<string name="touch_to_configure_local_repo">Toque para ver detalhes e permitir que outros permutem seus aplicativos.</string>
<string name="touch_to_turn_on_local_repo">Toque para ligar seu repositório local.</string>
<string name="touch_to_turn_off_local_repo">Toque para desligar o repositório local.</string>
<string name="touch_to_turn_off_local_repo">Toque para desligar seu repositório local.</string>
<string name="updating">Atualizando…</string>
<string name="update_repo">Atualizar repositório</string>
<string name="deleting_repo">Excluindo o repositório atual…</string>
<string name="deleting_repo">Apagando o repositório atual…</string>
<string name="adding_apks_format">Adicionando %s ao repositório…</string>
<string name="writing_index_jar">Escrita de arquivo index assinado (index.jar)</string>
<string name="writing_index_jar">Escrevendo arquivo de índice assinado (index.jar)…</string>
<string name="failed_to_create_index">Falha ao criar o índice do repositório!</string>
<string name="linking_apks">Vinculando APKs no repositório…</string>
<string name="copying_icons">Copiando ícones de aplicativos no repositório…</string>
<string name="no_applications_found">Nenhuma aplicação encontrada</string>
<string name="no_applications_found">Nenhum aplicativo encontrado</string>
<string name="icon">ícone</string>
<string name="fingerprint">Fingerprint:</string>
<string name="fingerprint">Impressão digital:</string>
<string name="wifi_network">Rede WiFi:</string>
<string name="sharing_uri">Compartilhar URL:</string>
<string name="enable_wifi">Ativar WiFi</string>
<string name="enabling_wifi">Ativando WIFI</string>
<string name="enabling_wifi">Ativando WiFi</string>
<string name="same_wifi_instructions">Para conectar-se a dispositivos de outras pessoas, assegure-se de que ambos os dispositivos estão na mesma rede WiFi. Em seguida, digite a URL acima no F-Droid, ou escanei este código QR:</string>
<string name="qr_code">Código QR</string>
<string name="next">Próximo</string>
<string name="skip">Pular</string>
<string name="qr_content_description">Código QR da URL do repositório</string>
<string name="qr_wizard_wifi_network_instructions">Escanear este código QR para conectar-se à mesma rede WiFi deste dispositivo.</string>
<string name="qr_wizard_download_instructions">Escanear este código QR para conectar-se ao site para começar.</string>
<string name="qr_wizard_download_instructions">Escanear este código QR para conectar-se ao site web para começar.</string>
<string name="send_fdroid_via_wifi">Enviar F-Droid via WiFi…</string>
<string name="proxy">Proxy</string>
<string name="enable_proxy_title">Ativar proxy HTTP</string>
@ -138,24 +169,50 @@ Você deseja atualizá-los?</string>
<string name="status_connecting_to_repo">Conectando-se a
%1$s</string>
<string name="status_checking_compatibility">Verificando compatibilidade de aplicativos com o seu dispositivo…</string>
<string name="status_inserting">Guardando detalhes dos aplicativos (%1$d%%)</string>
<string name="repos_unchanged">Nenhum repositório tem atualizações de pacotes</string>
<string name="all_other_repos_fine">Todos os outros repositórios não geraram erros.</string>
<string name="global_error_updating_repos">Erro durante a atualização:</string>
<string name="no_permissions">Nenhuma permissão utilizada.</string>
<string name="permissions_for_long">Permissões para a versão %s</string>
<string name="no_handler_app">Você não tem aplicativo instalado que lide com %s</string>
<string name="no_handler_app">Você não tem aplicativo instalado que possa lidar com %s</string>
<string name="compactlayout">Leiaute compacto</string>
<string name="compactlayout_on">Mostrar ícones em um tamanho menor</string>
<string name="theme">Tema</string>
<string name="unsigned">Não assinado</string>
<string name="unverified">Não verificado</string>
<string name="repo_not_yet_updated">Este repositório não foi usando ainda.
Para visualizar os aplicativos com ele disponibiliza, você precisa atualizá-lo.</string>
<string name="repo_delete_details">Quer excluir o repositório \"{0}\", que contém {1} aplicativos? As aplicações instaladas Não serão removidas, mas você não poderá mais atualizaras através do F-Droid.</string>
<string name="repo_url">URL</string>
<string name="repo_num_apps">Número de aplicativos</string>
<string name="repo_fingerprint">Impressão digital da chave de assinatura do repositório (SHA-256)</string>
<string name="repo_description">Descrição</string>
<string name="repo_last_update">Última atualização</string>
<string name="repo_update">Atualizar</string>
<string name="repo_name">Nome</string>
<string name="unsigned_description">Isto significa que a lista de
aplicativos não pôde ser verificada. Você deve ter cuidado
com aplicativos baixados a partir de índices não assinados.</string>
<string name="repo_not_yet_updated">Este repositório não foi usado ainda.
Para visualizar os aplicativos que ele disponibiliza, você precisará atualizá-lo.
Uma vez atualizado, a descrição e outros detalhes estarão disponíveis aqui.</string>
<string name="repo_delete_details">Quer apagar o repositório \"{0}\", que contém {1} aplicativos?
Os aplicativos instalados NÃO serão removidos, mas você não
poderá mais atualizá-los através do F-Droid.</string>
<string name="unknown">Desconhecido</string>
<string name="repo_confirm_delete_title">Apagar repositório?</string>
<string name="repo_confirm_delete_body">A exclusão de um repositório significa que os aplicativos do mesmo não estarão mais disponíveis pelo F-Droid.
Nota: Todos os aplicativos previamente instalados permanecerão no seu dispositivo.</string>
<string name="repo_disabled_notification">\"%1$s\" desativado.
<string name="repo_disabled_notification">\"%1$s\" desabilitado.
Você precisará reativar este repositório para instalar aplicativos a partir dele.</string>
<string name="repo_added">Repositório F-Droid %1$s salvo</string>
<string name="repo_searching_address">Procurando por repositório F-Droid em
%1$s</string>
<string name="minsdk_or_later">%s ou posterior</string>
<string name="up_to_maxsdk">até %s</string>
<string name="minsdk_up_to_maxsdk">De %1$s até %2$s</string>
<string name="not_on_same_wifi">O seu dispositivo não está na mesma WiFi do repositório local que você acabou de adicionar! Tente conectar-se a esta rede: %s</string>
<string name="requires_features">Requer: %1$s</string>
<string name="app_icon">Ícone do aplicativo</string>
<string name="repo_icon">Ícone do repositório</string>
<string name="Children">Crianças</string>
@ -167,7 +224,9 @@ Você precisará reativar este repositório para instalar aplicativos a partir d
<string name="Navigation">Navegação</string>
<string name="News">Notícia</string>
<string name="Office">Escritório</string>
<string name="Phone_SMS">Telefone e SMS</string>
<string name="Reading">Leitura</string>
<string name="Science_Education">Ciência e Educação</string>
<string name="Security">Segurança</string>
<string name="System">Sistema</string>
<string name="Wallpaper">Fundo de tela</string>
@ -175,21 +234,19 @@ Você precisará reativar este repositório para instalar aplicativos a partir d
<string name="root_access_denied_title">Acesso root negado</string>
<string name="root_access_denied_body">Ou o seu dispositivo Android não está \"rooteado\" ou você recusou o acesso root para o F-Droid.</string>
<string name="update_all">Atualizar tudo</string>
<string name="installer_error_title">Erro na desinstalação</string>
<string name="installer_error_body">A desinstalação falhou. Caso você esteja usando acesso root, tente desativar essa configuração.</string>
<string name="system_permission_denied_title">Permissões do sistema negadas</string>
<string name="system_permission_denied_body">Esta opção só está disponível quando o F-Droid está instalado como um aplicativo de sistema.</string>
<string name="app_description">F-Droid é um catálogo instalável de aplicativos FOSS (Software Livre e de Código Aberto) para a plataforma Android. O cliente faz com que seja fácil navegar, instalar e manter o controle das atualizações no seu dispositivo.</string>
<string name="swap_nfc_description">Caso seu(sua) amigo(a) encoste o telefone dele(a) junto ao seu.</string>
<string name="swap_join_same_wifi">Juntar-se a mesma rede WiFi do seu amigo</string>
<string name="swap_join_same_wifi">Juntar-se a mesma rede WiFi do(a) seu(sua) amigo(a)</string>
<string name="swap_use_bluetooth">Usar bluetooth ao invés disso</string>
<string name="swap_wifi_help">Saber mais sobre WiFi</string>
<string name="menu_swap">Trocar aplicativos</string>
<string name="swap">Trocar aplicativos</string>
<string name="menu_swap">Permutar aplicativos</string>
<string name="swap">Permutar aplicativos</string>
<string name="swap_no_wifi_network">Nenhuma rede ainda</string>
<string name="swap_view_available_networks">(Toque para abrir as redes disponíveis)</string>
<string name="swap_wifi_qr_not_working">Não está funcionando</string>
<string name="open_qr_code_scanner">Abrir o escanear de código QR</string>
<string name="open_qr_code_scanner">Abrir o leitor de código QR</string>
<string name="swap_welcome">Bem-vindo ao F-Droid!</string>
<string name="swap_confirm_connect">Você quer obter os aplicativos de %1$s agora?</string>
<string name="swap_confirm_connect">Você quer obter aplicativos de %1$s agora?</string>
</resources>

View File

@ -49,6 +49,8 @@
Пример адреса: https://f-droid.org/repo</string>
<string name="inst">Установлено</string>
<string name="not_inst">Не установлено</string>
<string name="inst_known_source">Установлено (из %s)</string>
<string name="inst_unknown_source">Установлено (из неизвестного источника)</string>
<string name="added_on">Добавлено %s</string>
<string name="ok">ОК</string>
<string name="yes">Да</string>
@ -124,7 +126,7 @@
<string name="ignoreTouch">Игнорировать Тачскрин</string>
<string name="ignoreTouch_on">Всегда включать приложения, которые требуют сенсорный экран</string>
<string name="category_all">Все</string>
<string name="category_whatsnew">Что Нового</string>
<string name="category_whatsnew">Новинки</string>
<string name="category_recentlyupdated">Недавно обновлённые</string>
<string name="local_repo">Локальный репозиторий</string>
<string name="local_repo_running">F-Droid готов для обмена</string>
@ -224,7 +226,6 @@
<string name="root_access_denied_title">Отказано в root доступе</string>
<string name="root_access_denied_body">Либо у вашего устройства нет root доступа, либо вы отклонили запрос от F-Droid.</string>
<string name="update_all">Обновить всё</string>
<string name="installer_error_title">Ошибка установки/удаления</string>
<string name="system_permission_denied_title">Запрос на системные привилегии отклонён</string>
<string name="system_permission_denied_body">Данная опция доступна только если F-Droid установлен как системное приложение.</string>
<string name="app_description">F-Droid — каталог FOSS (свободного и открытого программного обеспечения) для платформы Android. Клиент позволяет с лёгкостью просматривать, устанавливать и обновлять приложение на вашем устройстве.</string>

View File

@ -1,28 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="searchres_napps">Agatadas %1$d aplicatziones currispondentes cun \'%2$s\':</string>
<string name="searchres_oneapp">Agatada una aplicatzione currispondente cun \'%s\':</string>
<string name="searchres_noapps">Non sunt istadas agatadas aplicatziones currispondentes cun \'%s\'</string>
<string name="SignatureMismatch">Sa versione noa est firmada cun una crae diferente dae sa bècia. Pro la installare, sa bècia depet èssere istada disinstallada in antis. Pro piaghere fàghe·lu e torra a proare. (Disinstallande as a burrare totu sos datos sarbados in s\'aplicatzione)</string>
<string name="installIncompatible">Paret chi custu pachete non siat cumpatìbile cun su dispositivu tuo. Boles a proare a lu installare su matessi?</string>
<string name="installDowngrade">Ses chircande de torrare a una versione prus bècia de custa aplicatzione. Dias pòdere tènnere problemas e fintzas pèrdere sos datos tuos. Seguru ses de bòlere proare a lu fàghere?</string>
<string name="version">Versione</string>
<string name="edit">Modìfica</string>
<string name="delete">Burra</string>
<string name="enable_nfc_send">Abìlita imbiu NFC…</string>
<string name="cache_downloaded">Cache aplicatzione</string>
<string name="cache_downloaded_on">Mantene sos documentos apk iscarrigados in s\'ischeda SD</string>
<string name="updates">Agiornamentos</string>
<string name="other">Àteru</string>
<string name="last_update_check">Ùrtima iscansidura depòsitos: %s</string>
<string name="never">mai</string>
<string name="update_interval">Intervallu agiornamentu automàticu</string>
<string name="update_interval_zero">Non che agiornes automaticamente sa lista de sas aplicatziones</string>
<string name="automatic_scan_wifi">Petzi cun su wifi</string>
<string name="automatic_scan_wifi_on">Agiornat sa lista de sas aplicatziones petzi si b\'est su wifi</string>
<string name="notify">Notìfica</string>
<string name="notify_on">Averte cando bi sunt agiornamentos disponìbiles</string>
<string name="update_history">Istòria de sos agiornamentos</string>
<string name="update_history_summ">Nùmeru de dies pro che cunsiderare sas aplicatzione noas o reghentes: %s</string>
<string name="system_installer">Installa impreande sos permissos de sistema</string>
<string name="system_installer_on">Imprea sos permissos de sistema pro installare, agiornare, e remòvere pachetos</string>
<string name="local_repo_name">Nùmene de su Depòsitu Locale tuo</string>
<string name="local_repo_name_summary">Su nùmene pùblicu de su depòsitu locale tuo: %s</string>
<string name="local_repo_https">Imprea una cunnessione privada</string>
<string name="local_repo_https_on">Imprea sa cunnessione criptada HTTPS:// pro sos depòsitu locale</string>
<string name="search_results">Resultados de sa chirca</string>
<string name="app_details">Minujas/detallios aplicatzione</string>
<string name="no_such_app">Peruna aplicatzione currispondente</string>
<string name="about_title">Informatziones</string>
<string name="about_desc">Basadu in supra de Aptoide.
Intregadu cun sa litzèntzia
GNU GPLv3.</string>
<string name="about_site">Giassu/situ web:</string>
<string name="about_mail">E-lìtera:</string>
<string name="about_version">Versione:</string>
<string name="ok">Andat bene</string>
<string name="about_website">Giassu/situ web</string>
<string name="no_repo">Non tenes perunu depòsitu cunfiguradu!
Unu
depòsitu est una mitza de aplicatziones. Pro nde annànghere unu, incarca como su butone MENÙ
e inserta s\'URL.
S\'indiritzu de unu depòsitu paret una cosa
tipu
custa: https://f-droid.org/repo</string>
<string name="inst">Installada</string>
<string name="not_inst">Non installada</string>
<string name="inst_known_source">Installada (dae %s)</string>
<string name="inst_unknown_source">Installada (dae una mitza disconnota)</string>
<string name="added_on">Annanta su %s</string>
<string name="ok">AB</string>
<string name="yes">Eja</string>
<string name="no">Nono</string>
<string name="repo_add_title">Annanghe unu depòsitu nou</string>
@ -30,24 +63,81 @@
<string name="cancel">Annudda</string>
<string name="enable">Abìlita</string>
<string name="add_key">Annanghe crae</string>
<string name="tab_noninstalled">Disponìbile</string>
<string name="overwrite">Subraiscrie</string>
<string name="repo_update_title">Agiorna depòsitos</string>
<string name="tab_noninstalled">Disponìbiles</string>
<string name="tab_updates">Agiornamentos</string>
<string name="one_update_available">1 agiornamentu est disponìbile.</string>
<string name="many_updates_available">%d agiornamentos sunt disponìbiles.</string>
<string name="fdroid_updates_available">Agiornamentos pro F-Droid disponìbiles</string>
<string name="process_wait_title">Iseta, pro piaghere</string>
<string name="process_update_msg">Agiornande sa lista de sos aplicos…</string>
<string name="download_server">Iscarrigande s\'aplicu dae</string>
<string name="process_update_msg">Agiornande sa lista de sas aplicatziones…</string>
<string name="download_server">Iscarrigande s\'aplicatzione dae</string>
<string name="nfc_is_not_enabled">Su NFC no est abilitadu!</string>
<string name="go_to_nfc_settings">Bae a sas impostaduras NFC…</string>
<string name="bluetooth_activity_not_found">Perunu mètodu de imbiu Bluetooth agatadu, issèberane unu!</string>
<string name="choose_bt_send">Issèbera su mètodu de imbiu Bluetooth</string>
<string name="send_via_bluetooth">Imbia tramite Bluetooth</string>
<string name="repo_add_url">Indiritzu depòsitu</string>
<string name="repo_add_fingerprint">Arrastu/Imprenta (optzionale)</string>
<string name="repo_exists">Custu depòsitu esistit giai!</string>
<string name="repo_exists_add_fingerprint">Custu depòsitu est giai cunfiguradu, custu at a annànghere un\'informatzione crae noa.</string>
<string name="repo_exists_enable">Custu depòsitu est giai cunfiguradu, cunfirma de lu bòlere torrare a abilitare</string>
<string name="repo_exists_and_enabled">Custu depòsitu est giai cunfiguradu e abilitadu!</string>
<string name="repo_delete_to_overwrite">Depes burrare custu depòsitu in antis de nde pòdere annànghere unu cun un\'àtera crae!</string>
<string name="malformed_repo_uri">Ignorande URI depòsitos malformados: %s</string>
<string name="repo_alrt">Sa lista de sos depòsitos impreados est
mudada.
Los
boles agiornare?</string>
<string name="menu_update_repo">Agiorna sos depòsitos</string>
<string name="menu_manage">Depòsitos</string>
<string name="menu_send_apk_bt">Bluetooth FDroid.apk…</string>
<string name="menu_preferences">Preferèntzias</string>
<string name="menu_about">Informatziones</string>
<string name="menu_search">Chirca</string>
<string name="menu_add_repo">Depòsitu nou</string>
<string name="menu_rem_repo">Burra depòsitu</string>
<string name="menu_launch">Inghitza/avia</string>
<string name="menu_share">Cumpartzi</string>
<string name="menu_install">Installa</string>
<string name="menu_uninstall">Disinstalla</string>
<string name="menu_ignore_all">Ignora totu sos agiornamentos</string>
<string name="menu_ignore_this">Ignora custu agiornamentu</string>
<string name="menu_website">Giassu/situ web</string>
<string name="menu_issues">Problemas</string>
<string name="menu_source">Còdighe mitza</string>
<string name="menu_upgrade">Agiorna</string>
<string name="menu_donate">Dona</string>
<string name="details_installed">Versione %s installada</string>
<string name="details_notinstalled">Non installada</string>
<string name="corrupt_download">Su documentu iscarrigadu est corrùmpidu</string>
<string name="download_cancelled">Iscarrigamentu annuddadu</string>
<string name="antiadslist">Custa aplicatzione cuntènnidi publitzidade</string>
<string name="antitracklist">Custa aplicatzione compidat e riferit a àteros de sas atividades tuas</string>
<string name="antinonfreeadlist">Custa aplicatzione promovet estensiones (add-ons) non lìberas</string>
<string name="antinonfreenetlist">Custa aplicatzione promovet servìtzios de retza non lìberos</string>
<string name="antinonfreedeplist">Custa aplicatzione dipendet dae àteros aplicos non lìberos</string>
<string name="antiupstreamnonfreelist">Su còdighe mitza originale no est lìberu de su totu</string>
<string name="display">Ammustra</string>
<string name="expert">Espertu</string>
<string name="expert_on">Ammustra àteras informatziones e abìlita àteras impostaduras</string>
<string name="search_hint">Chirca aplicatziones</string>
<string name="appcompatibility">Cumpatibilidade aplicatziones</string>
<string name="show_incompat_versions">Versiones non cumpatìbiles</string>
<string name="show_incompat_versions_on">Ammustra versiones non cumpatìbiles cun su dispositivu</string>
<string name="rooted">Amministradore (Root)</string>
<string name="rooted_on">Non disabilitare sas aplicatziones chi tenet bisòngiu de sos permissos de root</string>
<string name="ignoreTouch">Ignora Touchscreen</string>
<string name="ignoreTouch_on">Inclui semper sas aplicatziones chi tenet bisòngiu de su touchscreen</string>
<string name="category_all">Totus</string>
<string name="category_whatsnew">Novidades</string>
<string name="category_recentlyupdated">Agiornadas dae pagu</string>
<string name="local_repo">Depòsitu locale</string>
<string name="local_repo_running">F-Droid est prontu pro imbiare cun swap</string>
<string name="waiting_for_ipaddress">isetande pro s\'indiritzu IP</string>
<string name="setup_repo">Ammània unu depòsitu locale</string>
<string name="touch_to_configure_local_repo">Toca pro bìere sas minujas e permìtere a àteros de retzire sos aplicos tuos.</string>
<string name="touch_to_configure_local_repo">Toca pro bìere sas minujas e permìtere a àteros de retzire sas aplicatziones tuas.</string>
<string name="touch_to_turn_on_local_repo">Toca pro allùere su depòsitu locale tuo.</string>
<string name="touch_to_turn_off_local_repo">Toca pro istudare su depòsitu locale tuo.</string>
<string name="updating">Agiornande…</string>
@ -57,15 +147,15 @@
<string name="writing_index_jar">Iscriende su documentu de ìnditze firmadu (index.jar)…</string>
<string name="failed_to_create_index">Sa creatzione de s\'inditze de sos depòsitos est faddida!</string>
<string name="linking_apks">Cullegande sos APK in su depòsitu…</string>
<string name="copying_icons">Copiande sas iconas de sos aplicos in su depòsitu…</string>
<string name="no_applications_found">Perunu aplicu agatadu</string>
<string name="copying_icons">Copiande sas iconas de sas aplicatziones in su depòsitu…</string>
<string name="no_applications_found">Peruna aplicatzione agatada</string>
<string name="icon">icona</string>
<string name="fingerprint">Arrastu/imprenta:</string>
<string name="wifi_network">Retza WiFi:</string>
<string name="sharing_uri">URL de cumpartzidura:</string>
<string name="enable_wifi">Abìlita su Wifi</string>
<string name="enabling_wifi">Abilitande su WiFi…</string>
<string name="same_wifi_instructions">Pro ti cunnèttere a sos dispositivos de calicun\'àteru, asseguradi chi ambos sos dispositivos siant in sa matessi retza WiFi. A pustis, inserta su URL in supra in F-Droid, o iscansi custu còdighe QR:</string>
<string name="same_wifi_instructions">Pro ti cunnèttere a sos dispositivos de calicun\'àteru, assegura·di chi ambos sos dispositivos siant in sa matessi retza WiFi. A pustis, inserta su URL in supra in F-Droid, o iscansi custu còdighe QR:</string>
<string name="qr_code">Còdighe QR</string>
<string name="next">Imbeniente</string>
<string name="skip">Brinca</string>
@ -80,28 +170,62 @@
<string name="proxy_host_summary">Cunfigura su nùmene de s\'host de su proxy tuo (e.g. 127.0.0.1)</string>
<string name="proxy_port">Ghenna proxy</string>
<string name="proxy_port_summary">Cunfigura su nùmeru de sa ghenna de su proxy tuo (es. 8118)</string>
<string name="status_download">Iscarrigande
%2$s / %3$s (%4$d%%) dae
%1$s</string>
<string name="status_connecting_to_repo">Cunnessione a
%1$s</string>
<string name="status_checking_compatibility">Verificande sa cumpatibilidade cun su dispositivu tuo…</string>
<string name="status_inserting">Sarbande minujas/detàllios aplicatziones (%1$d%%)</string>
<string name="repos_unchanged">Perunu depòsitu tenet agiornamentos de pachetos</string>
<string name="all_other_repos_fine">Totu sos àteros depòsitos no ant creados errores.</string>
<string name="global_error_updating_repos">Faddina durante s\'agiornamentu</string>
<string name="no_permissions">Perunu permissu impreadu.</string>
<string name="permissions_for_long">Permissos pro sa versione %s</string>
<string name="no_handler_app">Non tenes peruna aplicatzione disponìbile pro gestire %s</string>
<string name="compactlayout">Aspetu cumpatu</string>
<string name="compactlayout_on">Ammustra sas iconas cun una mannària minimada</string>
<string name="theme">Tema</string>
<string name="unsigned">Non firmadu</string>
<string name="unverified">Non verificadu</string>
<string name="repo_url">URL</string>
<string name="repo_num_apps">Nùmeru de aplicatziones</string>
<string name="repo_fingerprint">Imprenta digitale de sa Crae de su Depòsitu (SHA-256)</string>
<string name="repo_description">Descritzione</string>
<string name="repo_last_update">Ùrtimu agiornamentu</string>
<string name="repo_update">Agiorna</string>
<string name="repo_name">Nùmene</string>
<string name="unsigned_description">Custu bolet nàrrere chi sa lista de
sas aplicatziones no est istadu possìbile a la verificare. Depes istare atentu
cun sas aplicatziones iscarrifìgadas dae ìnditzes non firmados.</string>
<string name="repo_not_yet_updated">Custu depòsitu no est istadu galu impreadu.
Pro che bìdere sos aplicos in intro, lu depes agiornare.
Pro che bìdere sas aplicatziones in intro, lu depes agiornare.
A pustis, sa descritzione e sos àteros detallios ant a
èssere disponìbiles inoghe.</string>
<string name="repo_delete_details">Boles burrare su depòsitu \"{0}\",
chi in intro tenet {1} aplicos? Sos aplicos installados No ant a èssere
removidos, ma no as a tènnere prus sa possibilidade de los agiornare tràmite F-Droid.</string>
chi in intro tenet {1} aplicatziones? Sas aplicatziones installadas No ant a èssere
removidas, ma no as a tènnere prus sa possibilidade de las agiornare tràmite F-Droid.</string>
<string name="unknown">Disconnotu</string>
<string name="repo_confirm_delete_title">Burrare su depòsitu?</string>
<string name="repo_confirm_delete_body">Burrare unu depòsitu bolet nàrrere
chi sos aplicos in intro no ant a èssere prus disponìbiles tràmite F-Droid.
chi sas aplicatziones in intro no ant a èssere prus disponìbiles tràmite F-Droid.
Nota: Totu
sos aplicos giai installados ant a abarrare in su dispositivu tuo.</string>
sas aplicatziones giai installadas ant a abarrare in su dispositivu tuo.</string>
<string name="repo_disabled_notification">\"%1$s\" est disabilitadu.
Depes
torrare ad abilitare custu depòsitu pro installare sos aplicos chi bi sunt in intro.</string>
<string name="app_icon">Icona de s\'aplicu</string>
torrare ad abilitare custu depòsitu pro installare sas aplicatziones chi bi sunt in intro.</string>
<string name="repo_added">Sarbadu depòsitu F-Droid %1$s</string>
<string name="repo_searching_address">Chircande unu depòsitu F-Droid in
%1$s</string>
<string name="minsdk_or_later">%s o imbeniente</string>
<string name="up_to_maxsdk">finas a %s</string>
<string name="minsdk_up_to_maxsdk">dae %1$s finas a %2$s</string>
<string name="not_on_same_wifi">Su dispositivu tuo no est in sa matessi retza WiFi de su depòsitu locale chi as annantu como! Proa a intrare in custa retza: %s</string>
<string name="requires_features">Netzessitat de: %1$s</string>
<string name="app_icon">Icona de s\'aplicatzione</string>
<string name="repo_icon">Icona depòsitu</string>
<string name="Children">Pitzinnos</string>
<string name="Development">Isvilupu</string>
@ -112,6 +236,7 @@ Depes
<string name="Navigation">Nàvigu</string>
<string name="News">Noas</string>
<string name="Office">Ufìtziu</string>
<string name="Phone_SMS">Telèfonu &amp; SMS</string>
<string name="Reading">Leghidura</string>
<string name="Science_Education">Iscièntzia e educatzione</string>
<string name="Security">Seguràntzia</string>
@ -121,20 +246,19 @@ Depes
<string name="root_access_denied_title">Atzessu root dennegadu</string>
<string name="root_access_denied_body">Su dispositivu tuo non tenet sos permissos de root o non los as datu a F-droid.</string>
<string name="update_all">Agiorna totu</string>
<string name="installer_error_title">Errore de (Dis-)Installatzione</string>
<string name="installer_error_body">Sa (dis-)installatzione st faddida. Si ses impreande s\'atzessu root, proa a che lu disabilitare!</string>
<string name="system_permission_denied_title">Permissos de sistema dennegados</string>
<string name="system_permission_denied_body">Custa optzione st disponìbile petzi cando F-Droid est installadu comente aplicu de sistema.</string>
<string name="app_description">F-Droid est unu catàlogu installàbile de FOSS (Free and Open Source Software - Aplicos lìberos e a mitza aberta) pro Android. S\'aplicu-client permitit de chircare, installare, e compidare sos agiornamentos in su dispositivu tuo.</string>
<string name="system_permission_denied_body">Custa optzione st disponìbile petzi cando F-Droid est installadu comente aplicatzione de sistema.</string>
<string name="app_description">F-Droid est unu catàlogu installàbile de FOSS (Free and Open Source Software - Aplicatziones lìberas e a mitza aberta) pro Android. S\'aplicatzione-client permitit de chircare, installare, e compidare sos agiornamentos in su dispositivu tuo.</string>
<string name="swap_nfc_description">Si s\'amigu tuo tenet pone a cuntatu sos duos dispositivos.</string>
<string name="swap_join_same_wifi">Cunnete•ti a sa matessi Wifi de s\'amigu tuo</string>
<string name="swap_use_bluetooth">Imprea su Bluetooth imbetzes</string>
<string name="swap_wifi_help">Àteras informatziones pro su WiFi</string>
<string name="menu_swap">Imbia aplicos</string>
<string name="swap">Imbia aplicos</string>
<string name="menu_swap">Imbia aplicatziones</string>
<string name="swap">Imbia aplicatziones</string>
<string name="swap_no_wifi_network">Peruna retza disponìbile</string>
<string name="swap_view_available_networks">(Toca pro ammustrare sas retzas disponìbiles)</string>
<string name="swap_wifi_qr_not_working">No est funtzionande</string>
<string name="open_qr_code_scanner">Aberi s\'iscansidore de còdighes QR</string>
<string name="swap_welcome">Benènnidu in F-Droid!</string>
<string name="swap_confirm_connect">Boles retzire como sos aplicos dae %1$s?</string>
<string name="swap_confirm_connect">Boles retzire como sas aplicatziones dae %1$s?</string>
</resources>

View File

@ -1,15 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="searchres_napps">Nájdené aplikácie (%1$d ks) zodpovedajúce \'%2$s\':</string>
<string name="searchres_oneapp">Nájdená jedna aplikácia zodpovedajúca \'%s\':</string>
<string name="searchres_noapps">Žiadna aplikácia nezodpovedá \'%s\':</string>
<string name="SignatureMismatch">Nová verzia je podpísaná iným kľúčom ako tá stará. Pred inštaláciou novej verzie je nutné starú odinštalovať. Urobte to a skúste znovu. (Pozor! Odinštalovanie zmaže všetky interné dáta uložené aplikáciou)</string>
<string name="installIncompatible">Zdá sa, že tento balíček nie je kompatibilný s vašim zariadením. Chcete ho napriek tomu skúsiť nainštalovať?</string>
<string name="installDowngrade">Pokúšate sa prejsť na staršiu verziu aplikácie. Môže to spôsobiť poruchy a dokonca aj stratu údajov. Naozaj chcete skúsiť prejsť na staršiu verziu?</string>
<string name="version">Verzia</string>
<string name="edit">Upraviť</string>
<string name="delete">Vymazať</string>
<string name="enable_nfc_send">Zapnúť NFC odoslanie…</string>
<string name="cache_downloaded">Vyr. pamäť aplikácií</string>
<string name="cache_downloaded_on">Nechať stiahnuté apk súbory na SD karte</string>
<string name="updates">Aktualizácie</string>
<string name="other">Iné</string>
<string name="last_update_check">Posledný sken: %s</string>
<string name="never">nikdy</string>
<string name="update_interval">Interval automat. aktualizácií</string>
<string name="update_interval_zero">Automaticky neobnovovať zoznam</string>
<string name="automatic_scan_wifi">Iba cez wifi</string>
<string name="automatic_scan_wifi_on">Automaticky obnoviť zoznam iba cez wifi</string>
<string name="notify">Oznámiť</string>
<string name="notify_on">Upozorniť na dostupnosť aktualizácií</string>
<string name="update_history">História aktualizácií</string>
<string name="update_history_summ">Počet dní, kedy sú aplikácie brané ako nové alebo nedávne: %s</string>
<string name="system_installer">Inštalovať s povoleniami systému</string>
<string name="system_installer_on">Používať systémové povolenia na inštaláciu, aktualizácie a odstránenie balíkov</string>
<string name="local_repo_name">Meno miestneho repa</string>
<string name="local_repo_name_summary">Zverejnený názov miestneho repa: %s</string>
<string name="local_repo_https">Použiť bezpečné pripojenie</string>
<string name="local_repo_https_on">Použiť zašifrované HTTPS:// pripojenie pre miestne repo</string>
<string name="search_results">Výsledky hľadania</string>
<string name="app_details">Detaily aplikácie</string>
<string name="no_such_app">Taká aplikácia sa nenašla</string>
<string name="about_title">O F-Droide</string>
<string name="about_desc">Pôvodne založený na Aptoide.
Vydaný pod licenciou
GNU GPLv3.</string>
<string name="about_site">Webstránka:</string>
<string name="about_mail">Email:</string>
<string name="about_version">Verzia:</string>
<string name="about_website">Webstránka</string>
<string name="no_repo">Nemáte nastavené žiadne repozitáre!
Repozitár (repo) je zdrojom aplikácií. Na jeho pridanie stlačte MENU a zadajte URL (adresu).
Adresa repozitára vyzerá napríklad takto:
https://f-droid.org/repo</string>
<string name="inst">Nainštalované</string>
<string name="not_inst">Nie je nainštalované</string>
<string name="inst_known_source">Nainštalované (z %s)</string>
<string name="inst_unknown_source">Nainštalované (z neznámeho zdroja)</string>
<string name="added_on">Pridané %s</string>
<string name="ok">OK</string>
<string name="yes">Áno</string>
<string name="no">Nie</string>
<string name="repo_add_title">Pridať nové repo</string>
<string name="repo_add_add">Pridať</string>
<string name="cancel">Zrušiť</string>
<string name="enable">Zapnúť</string>
<string name="add_key">Pridať kľúč</string>
<string name="overwrite">Prepísať</string>
<string name="repo_update_title">Aktualizuj repozitáre</string>
<string name="tab_noninstalled">Dostupné</string>
<string name="tab_updates">Aktualizácie</string>
<string name="one_update_available">Dostupná 1 aktualizácia.</string>
<string name="many_updates_available">Dostupné aktualizácie: %d ks</string>
<string name="fdroid_updates_available">Dostupné aktualizácie F-Droidu</string>
<string name="process_wait_title">Prosím čakajte</string>
<string name="process_update_msg">Aktualizácia zoznamu aplikácií…</string>
<string name="download_server">Aplikácie získavame z</string>
<string name="nfc_is_not_enabled">NFC je vypnuté!</string>
<string name="go_to_nfc_settings">Ísť do nastavení NFC…</string>
<string name="send_via_bluetooth">Poslať cez Bluetooth</string>
<string name="repo_add_url">Adresa repozitára</string>
<string name="repo_add_fingerprint">Odtlačok (voliteľný)</string>
<string name="repo_exists">Toto repo už existuje!</string>
<string name="repo_exists_add_fingerprint">Toto repo je už nastavené, toto pridá nové info o kľúčoch.</string>
<string name="repo_exists_enable">Toto repo je už nastavené, potvrďte jeho znovuzapnutie.</string>
<string name="repo_delete_to_overwrite">Najprv musíte zmazať toto repo. Až potom ho môžete pridať s iným kľúčom!</string>
<string name="malformed_repo_uri">Ignorujem chybné URI(adresu) repa: %s</string>
<string name="repo_alrt">Zoznam repozitárov sa zmenil.
Chcete ich aktualizovať?</string>
<string name="menu_update_repo">Aktualizovať repá</string>
<string name="menu_manage">Repozitáre</string>
<string name="menu_send_apk_bt">Poslať FDroid.apk cez bluetooth</string>
<string name="menu_preferences">Voľby</string>
<string name="menu_about">O</string>
<string name="menu_search">Hľadať</string>
<string name="menu_add_repo">Nové repo</string>
<string name="menu_rem_repo">Zmazať repo</string>
<string name="menu_launch">Spustiť</string>
<string name="menu_share">Zdieľať</string>
<string name="menu_install">Inštalovať</string>
<string name="menu_uninstall">Odinštalovať</string>
<string name="menu_ignore_all">Ignorovať aktualizácie</string>
<string name="menu_ignore_this">Ignorovať aktualizáciu</string>
<string name="menu_website">Webstránka</string>
<string name="menu_issues">Problémy</string>
<string name="menu_source">Zdrojový kód</string>
<string name="menu_upgrade">Inovovať</string>
<string name="menu_donate">Darovať peniaze</string>
<string name="details_installed">Verzia %s nainštalovaná</string>
<string name="details_notinstalled">Nie je nainštalované</string>
<string name="corrupt_download">Stiahnutý súbor je poškodený</string>
<string name="download_cancelled">Stiahnutie zrušené</string>
<string name="antiadslist">Táto aplikácia obsahuje reklamy</string>
<string name="antitracklist">Táto aplikácia zaznamenáva a hlási vaše aktivity</string>
<string name="antinonfreeadlist">Táto aplikácia propaguje neslobodné doplnky</string>
<string name="antinonfreenetlist">Táto aplikácia propaguje neslobodné služby siete</string>
<string name="antinonfreedeplist">Táto aplikácia závisí na iných neslobodných aplikáciách</string>
<string name="antiupstreamnonfreelist">Originálny zdrojový kód nie je úplne slobodný</string>
<string name="display">Zobraziť</string>
<string name="expert">Expert</string>
<string name="expert_on">Ukázať extra info a zapnúť extra nastavenia</string>
<string name="search_hint">Hľadať aplikácie</string>
<string name="appcompatibility">Kompatibilita aplikácií</string>
<string name="show_incompat_versions">Nekompatibilné verzie</string>
<string name="show_incompat_versions_on">Zobraziť verzie nekompatibilné so zariadením</string>
<string name="rooted">Root</string>
<string name="rooted_on">Nezašediť aplikácie vyžadujúce práva root.</string>
<string name="ignoreTouch">Ignorovať dotykovú obrazovku</string>
<string name="ignoreTouch_on">Vždy zahrnúť aplikácie vyžadujúce dotykovú obrazovku</string>
<string name="category_all">Všetky</string>
<string name="category_whatsnew">Čo je nové</string>
<string name="category_recentlyupdated">Nedávno aktualizované</string>
<string name="local_repo">Miestne repo</string>
<string name="local_repo_running">F-Droid je pripravený na výmenu</string>
<string name="waiting_for_ipaddress">čakanie na IP adresu</string>
@ -47,10 +162,31 @@
<string name="proxy_host_summary">Nastavte názov hostiteľa svojej proxy (napr. 127.0.0.1)</string>
<string name="proxy_port">Port proxy</string>
<string name="proxy_port_summary">Nastaviť číslo portu proxy (napr. 8118)</string>
<string name="status_download">Sťahuje sa %2$s / %3$s (%4$d%%) z
%1$s</string>
<string name="status_connecting_to_repo">Pripájanie na
%1$s</string>
<string name="status_checking_compatibility">Kontroluje sa kompatibilita aplikácií s vašim zariadením…</string>
<string name="status_inserting">Ukladám detaily aplikácie (%1$d%%)</string>
<string name="repos_unchanged">Repozitáre nemajú aktualizácie balíkov</string>
<string name="all_other_repos_fine">Ostatné repá nevytvorili chyby.</string>
<string name="global_error_updating_repos">Chyba počas aktualizácie:</string>
<string name="no_permissions">Nepoužívajú sa žiadne povolenia.</string>
<string name="permissions_for_long">Povolenia pre verziu %s</string>
<string name="no_handler_app">Nemáte žiadne dostupné aplikácie, ktoré môžu spracovať %s</string>
<string name="compactlayout">Úsporné rozloženie</string>
<string name="compactlayout_on">Zobraziť menšie ikony</string>
<string name="theme">Téma</string>
<string name="unsigned">Nepodpísané</string>
<string name="unverified">Neoverené</string>
<string name="repo_url">URL</string>
<string name="repo_num_apps">Počet aplikácií</string>
<string name="repo_fingerprint">Odtlačok podpisového kľúča (SHA-256) repa</string>
<string name="repo_description">Popis</string>
<string name="repo_last_update">Posledná aktualizácia</string>
<string name="repo_update">Aktualizovať</string>
<string name="repo_name">Názov</string>
<string name="unsigned_description">To znamená, že zoznam aplikácií nemohol byť overený. Buďte opatrný s aplikáciami z nepodpísaných indexov.</string>
<string name="repo_not_yet_updated">Tento repozitár ste ešte nepoužili.
Aby ste videli aplikácie, ktoré poskytuje, musíte ho aktualizovať.
@ -58,6 +194,8 @@ Po aktualizácii budú popisy a iné detaily dostupné tu.</string>
<string name="repo_delete_details">Chcete vymazať repozitár \"{0}\",
ktorý obsahuje {1} aplikácií? Prípadné inštalované aplikácie NEBUDÚ
odstránené, ale nebude ich už môcť aktualizovať cez F-Droid.</string>
<string name="unknown">Neznáme</string>
<string name="repo_confirm_delete_title">Zmazať repozitár?</string>
<string name="repo_confirm_delete_body">Odstránenie repozitára znamená,
že aplikácie z neho už nebudú z F-Droidu prístupné.
@ -67,6 +205,13 @@ Poznámka: Všetky
Budete
musieť znovu povoliť tento repozitár pre inštaláciu aplikácií z neho.</string>
<string name="repo_added">Uložené repo F-Droidu %1$s</string>
<string name="repo_searching_address">Hľadá sa repo F-Droidu na %1$s</string>
<string name="minsdk_or_later">%s alebo neskôr</string>
<string name="up_to_maxsdk">do %s</string>
<string name="minsdk_up_to_maxsdk">%1$s do %2$s</string>
<string name="not_on_same_wifi">Vaše zariadenie nie je na rovnakej WiFi ako miestne repo, čo ste práve pridali! Napojte sa na túto sieť: %s</string>
<string name="requires_features">Vyžaduje: %1$s</string>
<string name="app_icon">Ikona aplikácie</string>
<string name="repo_icon">Ikona repa</string>
<string name="Children">Deti</string>
@ -88,8 +233,6 @@ Budete
<string name="root_access_denied_title">Root prístup zamietnutý</string>
<string name="root_access_denied_body">Buď vaše zariadenie s Androidom nemá urobený root alebo ste odmietli root prístup pre F-Droid.</string>
<string name="update_all">Aktualizovať všetko</string>
<string name="installer_error_title">(Od-)Inštalačná chyba</string>
<string name="installer_error_body">(Od-)inštalácia sa nepodarila. Ak používate roota, skúste vypnúť toto nastavenie!</string>
<string name="system_permission_denied_title">Systémové povolenia zamietnuté</string>
<string name="system_permission_denied_body">Táto možnosť je nedostupná ak nie je F-Droid inštalovaný ako systémová aplikácia.</string>
<string name="app_description">F-Droid je inštalovateľný katalóg FOSS (Free a Open Source Software) aplikácií pre platformu Android. Klient umožňuje ľahko prechádzať, inštalovať, a sledovať aktualizácie na vašom zariadení.</string>

View File

@ -234,8 +234,6 @@
<string name="root_access_denied_title">Корени приступ одбијен</string>
<string name="root_access_denied_body">Или ваш Андроид уређај није рутован или сте Ф-дроиду одбили корени приступ.</string>
<string name="update_all">Надогради све</string>
<string name="installer_error_title">Грешка инсталера</string>
<string name="installer_error_body">Инсталација/уклањање није успело. Ако користите корени приступ покушајте да га онемогућите.</string>
<string name="system_permission_denied_title">Системске дозволе одбијене</string>
<string name="system_permission_denied_body">Ова опција доступна само када је Ф-дроид инсталиран као системска апликација.</string>
<string name="app_description">Ф-дроид је каталог ФОСС (слободан и софтвер отвореног кôда) апликација за Андроид платформу. Клијент олакшава претрагу, инсталацију и праћење надоградњи на вашем уређају.</string>

View File

@ -47,6 +47,8 @@ Ett förråd är en källa för program. Tryck på meny-knappen och ange URL:en
En förrådsadress ser ut så här: https://f-droid.org/repo</string>
<string name="inst">Installerad</string>
<string name="not_inst">Inte installerad</string>
<string name="inst_known_source">Installerad (från %s)</string>
<string name="inst_unknown_source">Installerad (från okänd källa)</string>
<string name="added_on">Tillagd %s</string>
<string name="ok">OK</string>
<string name="yes">Ja</string>
@ -209,7 +211,9 @@ Vill du uppdatera dem?</string>
<string name="Navigation">Navigation</string>
<string name="News">Nyheter</string>
<string name="Office">Kontor</string>
<string name="Phone_SMS">Telefon &amp; SMS</string>
<string name="Reading">Läsning</string>
<string name="Science_Education">Vetenskap &amp; utbildning</string>
<string name="Security">Säkerhet</string>
<string name="System">System</string>
<string name="Wallpaper">Bakgrundsbild</string>
@ -217,8 +221,6 @@ Vill du uppdatera dem?</string>
<string name="root_access_denied_title">Root-åtkomst nekad</string>
<string name="root_access_denied_body">Antingen är din Android-enhet inte rootad eller så har du nekat root-åtkomst för F-Droid.</string>
<string name="update_all">Uppdatera alla</string>
<string name="installer_error_title">Fel vid (av-)installation</string>
<string name="installer_error_body">(Av-)installationen misslyckades. Försök att inaktivera root-åtkomst om du använder denna inställning!</string>
<string name="system_permission_denied_title">Systembehörigheter nekade</string>
<string name="system_permission_denied_body">Detta val är endast tillgängligt när F-Droid installerats som en system-app.</string>
<string name="app_description">F-Droid är en installerbar katalog av fri och öppen källkodsprogramvara (FOSS) för Android-plattformen. Klienten gör det enkelt att bläddra bland, installera och hålla koll på uppdateringar på din enhet.</string>

View File

@ -25,8 +25,10 @@
<string name="update_history">Güncelleme tarihçesi</string>
<string name="update_history_summ">Uygulamaların yeni sayılacağı gün sayısı: %s</string>
<string name="system_installer">Sistem-izinlerini kullanarak yükle</string>
<string name="system_installer_on">Paket kurmak, güncellemek ve kaldırmak için sistem izinlerini kullan</string>
<string name="local_repo_name">Yerel Deponun Adı</string>
<string name="local_repo_name_summary">Yerel deponun duyrulan adı: %s</string>
<string name="local_repo_https">Özel Bağlantı Kullan</string>
<string name="local_repo_https_on">Yerel depo için güvenli HTTPS:// bağlantı kullan</string>
<string name="search_results">Arama Sonuçları</string>
<string name="app_details">Uygulama Detayları</string>
@ -35,6 +37,7 @@
<string name="about_desc">Aptoide\'den türetilmiştir.
GNU GPLv3 lisansı kapsamında yayınlanmıştır.</string>
<string name="about_site">Ağ sitesi:</string>
<string name="about_mail">E-posta:</string>
<string name="about_version">Sürüm:</string>
<string name="about_website">Ağ sitesi</string>
<string name="no_repo">Kurulu hiçbir deponuz bulunmamaktadır!
@ -44,6 +47,8 @@ Depolar uygulama kaynaklarıdır. Bir depo eklemek için MENÜ düğmesine bası
Bir depo adresi şuna benzer: https://f-droid.org/repo</string>
<string name="inst">Kurulu</string>
<string name="not_inst">Kurulu değil</string>
<string name="inst_known_source">Kuruldu (şuradan: %s)</string>
<string name="inst_unknown_source">Kuruldu (bilinmeyen kaynaktan)</string>
<string name="added_on">%s tarihinde eklenmiş</string>
<string name="ok">Tamam</string>
<string name="yes">Evet</string>
@ -124,20 +129,33 @@ Güncellemek ister misiniz?</string>
<string name="local_repo">Yerel Depo</string>
<string name="local_repo_running">F-Droid değiş-tokuşa hazır</string>
<string name="waiting_for_ipaddress">IP adres bekleniyor…</string>
<string name="setup_repo">Yerel Depo Kur</string>
<string name="touch_to_configure_local_repo">Detayları görmek için ve başkalarının uygulamalarınızı takas edebilmesi için dokunun.</string>
<string name="touch_to_turn_on_local_repo">Yerel deponuzu etkinleştirmek için dokunun.</string>
<string name="touch_to_turn_off_local_repo">Yerel deponu kapatmak için dokunun.</string>
<string name="updating">Güncelleniyor…</string>
<string name="update_repo">Depoyu Güncelle</string>
<string name="deleting_repo">Mevcut depo siliniyor…</string>
<string name="adding_apks_format">%s depoya ekleniyor…</string>
<string name="writing_index_jar">İmzalanmış endeks dosyası yazılıyor (index.jar)</string>
<string name="failed_to_create_index">Depo endeksinin oluşturulmasında hata meydana geldi!</string>
<string name="linking_apks">APK\'ler depo içine bağlanıyor</string>
<string name="copying_icons">Uygulama ikonları depoya kopyalanıyor…</string>
<string name="no_applications_found">Uygulama bulunamadı</string>
<string name="icon">ikon</string>
<string name="fingerprint">Parmak izi:</string>
<string name="wifi_network">WiFi Ağı:</string>
<string name="sharing_uri">Paylaşma URL\'i:</string>
<string name="enable_wifi">WiFi Etkinleştir</string>
<string name="enabling_wifi">WiFi etkinleştiriliyor…</string>
<string name="same_wifi_instructions">Diğer cihazları bağlanmak için, her cihazın aynı WiFi ağı üzerinde olduğundan emin olun. Sonra ya F-Droid\'e URL\'yi yazın veya bu QR Kodu taratın:</string>
<string name="qr_code">QR Kodu</string>
<string name="next">İleri</string>
<string name="skip">Geç</string>
<string name="qr_content_description">Depo URL\'nin QR Kodu</string>
<string name="qr_wizard_wifi_network_instructions">Bu cihazla aynı WiFi ağına bağlanmak için bu QR Kodunu tarayın.</string>
<string name="qr_wizard_download_instructions">Başlangıç yapmak amacıyla ağ sitesine bağlanmak için bu QR kodunu tarayın.</string>
<string name="send_fdroid_via_wifi">FDroid\'i WiFi ile gönder…</string>
<string name="proxy">Proxy</string>
<string name="enable_proxy_title">HTTP Proxy Etkinleştir</string>
<string name="enable_proxy_summary">Tüm ağ istekleri için HTTP Proxy Yapılandır</string>
@ -152,6 +170,9 @@ Güncellemek ister misiniz?</string>
bağlanılıyor</string>
<string name="status_checking_compatibility">Uygulamaların cihazınızla uyumluluğu kontrol ediliyor…</string>
<string name="status_inserting">Uygulama detayları kaydediliyor (%1$d%%)</string>
<string name="repos_unchanged">Hiçbir depoda paket güncellemesi yok</string>
<string name="all_other_repos_fine">Diğer tüm depolar hata oluşturmadılar.</string>
<string name="global_error_updating_repos">Güncelleme sırasında hata:</string>
<string name="no_permissions">Hiçbir izin kullanılmıyor.</string>
<string name="permissions_for_long">%s sürümü için izinler</string>
<string name="no_handler_app">%s unsurunu yönetecek hiçbir mevcut uygulamanız yok</string>
@ -159,6 +180,7 @@ bağlanılıyor</string>
<string name="compactlayout_on">İkonları daha küçük boyutta görüntüle</string>
<string name="theme">Tema</string>
<string name="unsigned">İmzasız</string>
<string name="unverified">Teyit edilmemiş</string>
<string name="repo_url">URL</string>
<string name="repo_num_apps">Uygulama sayısı</string>
<string name="repo_fingerprint">Depo imza anahtarının parmak izi (SHA-256)</string>
@ -185,20 +207,27 @@ Not: Tüm
<string name="repo_disabled_notification">\"%1$s\" devre dışı bırakıldı.
Ondan uygulama indirmek için bu depoyu tekrar etkinleştirmeniz gerekecektir.</string>
<string name="repo_added">F-Droid deposu %1$s kaydedildi</string>
<string name="repo_searching_address">%1$s konumunda F-Droid deposu aranıyor</string>
<string name="minsdk_or_later">%s ya da sonrası</string>
<string name="up_to_maxsdk">%s değerine kadar</string>
<string name="minsdk_up_to_maxsdk">%1$s değerinden %2$s değerine kadar</string>
<string name="not_on_same_wifi">Cihazınız eklemiş olduğunuz yerel depoyla aynı WiFi\'de değildir. Şu şebekeye katılmayı deneyin: %s</string>
<string name="requires_features">Gerektirdiği: %1$s</string>
<string name="app_icon">Uygulama ikonu</string>
<string name="repo_icon">Depo ikonu</string>
<string name="Children">Çocuklar</string>
<string name="Development">Geliştirme</string>
<string name="Games">Oyunlar</string>
<string name="Internet">İnternet</string>
<string name="Mathematics">Matematik</string>
<string name="Multimedia">Çoklu Ortam</string>
<string name="Navigation">Gezinim</string>
<string name="News">Haberler</string>
<string name="Office">Ofis</string>
<string name="Phone_SMS">Telefon &amp; SMS</string>
<string name="Reading">Okuma</string>
<string name="Science_Education">Bilim &amp; Eğitim</string>
<string name="Security">Güvenlik</string>
<string name="System">Sistem</string>
<string name="Wallpaper">Duvar Kağıdı</string>
@ -206,8 +235,12 @@ Ondan uygulama indirmek için bu depoyu tekrar etkinleştirmeniz gerekecektir.</
<string name="root_access_denied_title">Root erişimi engellendi</string>
<string name="root_access_denied_body">Ya Android cihazınız rootlu değil ya da F-Droid için root erişimini engellediniz.</string>
<string name="update_all">Tümünü güncelle</string>
<string name="installer_error_body">Kurulum(kaldırma) başarısız oldu. Eğer root erişimi kullanıyorsanız, bu ayarı devre dışı bırakmayı deneyin!</string>
<string name="system_permission_denied_title">Sistem izinleri reddedildi</string>
<string name="system_permission_denied_body">Bu seçenek sadece F-Droid bir sistem uygulaması olarak kurulduğunda mevcuttur.</string>
<string name="app_description">F-Droid, Android platformu için kurulabilir Özgür ve Açık Kaynaklı Yazılım kataloğudur. İstemci cihazınızda uygulama taramayı, kurmayı ve güncellemeyi kolaylaştırır.</string>
<string name="swap_nfc_description">Arkadaşınızda NFC varsa telefonlarınızı birbirine dokundurun.</string>
<string name="swap_join_same_wifi">Arkadaşınızla aynı kablosuz ağda bulunun</string>
<string name="swap_use_bluetooth">Yerine Bluetooth kullan</string>
<string name="swap_wifi_help">Wifi hakkında daha fazla öğren</string>
<string name="menu_swap">Değiş-Tokuş uygulamalar</string>
<string name="swap">Değiş-Tokuş uygulamalar</string>
@ -216,4 +249,5 @@ Ondan uygulama indirmek için bu depoyu tekrar etkinleştirmeniz gerekecektir.</
<string name="swap_wifi_qr_not_working">Çalışmıyor</string>
<string name="open_qr_code_scanner">QR Kod Tarayıcısını</string>
<string name="swap_welcome">F-Droid\'e Hoşgeldin!</string>
<string name="swap_confirm_connect">%1$s konumundan şimdi uygulama almak istiyor musunuz?</string>
</resources>

View File

@ -0,0 +1,213 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="searchres_napps">Tìm thấy %1$d ứng dụng với từ khoá \'%2$s\':</string>
<string name="searchres_oneapp">Tìm thấy một ứng dụng với từ khoá \'%s\':</string>
<string name="searchres_noapps">Không tìm thấy ứng dụng với từ khoá \'%s\'</string>
<string name="SignatureMismatch">Phiên bản mới có mã khoá khác với phiên bản cũ. Để cài đặt phiên bản mới phải xoá phiên bản cũ trước. Hãy xoá phiên bản cũ và thử lại. (Chú ý rằng khi xoá ứng dụng, dữ liệu ứng dụng sẽ bị mất)</string>
<string name="installIncompatible">Ứng dụng này có khả năng không tương thích với thiết bị của bạn. Bạn vẫn muốn thử cài đặt?</string>
<string name="installDowngrade">Bạn đang cài đè phiên bản cũ hơn của ứng dụng này. Làm như vậy có thể khiến cho ứng dụng không hoạt động được và thậm chí làm mất dữ liệu. Bạn vẫn muốn tiếp tục?</string>
<string name="version">Phiên bản</string>
<string name="edit">Sửa</string>
<string name="delete">Xoá</string>
<string name="enable_nfc_send">Kích hoạt gửi qua NFC…</string>
<string name="cache_downloaded">Lưu ứng dụng</string>
<string name="cache_downloaded_on">Lưu các tập tin apk đã tải trong thẻ nhớ</string>
<string name="updates">Cập nhật</string>
<string name="other">Khác</string>
<string name="last_update_check">Lần quét kho cuối: %s</string>
<string name="never">không bao giờ</string>
<string name="update_interval">Tự động cạp nhật định kì</string>
<string name="update_interval_zero">Không tự động cập nhật danh sách ứng dụng</string>
<string name="automatic_scan_wifi">Chỉ khi dùng wifi</string>
<string name="automatic_scan_wifi_on">Chỉ tự động cập nhật danh sách ứng dụng khi dùng wifi</string>
<string name="notify">Thông báo</string>
<string name="notify_on">Thông báo khi có bản cập nhật</string>
<string name="update_history">Lịch sử cập nhật</string>
<string name="update_history_summ">Ứng dụng sẽ được xem là mới nếu được thêm hoặc cập nhật trong vòng %s ngày</string>
<string name="system_installer">Cài đặt bằng quyền hệ thống</string>
<string name="system_installer_on">Dùng quyền hệ thống để cài đặt, cập nhật và xoá ứng dụng</string>
<string name="local_repo_name">Tên kho ứng dụng nội bộ</string>
<string name="local_repo_https">Dùng kết nối riêng tư</string>
<string name="local_repo_https_on">Dùng kết nối HTTPS:// mã hoá cho kho nội bộ</string>
<string name="search_results">Kết quả tìm kiếm</string>
<string name="app_details">Thông tin ứng dụng</string>
<string name="no_such_app">Không tìm thấy ứng dụng</string>
<string name="about_title">Giới thiệu về F-Droid</string>
<string name="about_desc">Được xây dựng dựa trên Aptoide. Phát hành theo giấy phép GNU GPLv3.</string>
<string name="about_site">Trang web:</string>
<string name="about_mail">Email:</string>
<string name="about_version">Phiên bản:</string>
<string name="about_website">Trang web</string>
<string name="no_repo">Bạn chưa thiết lập kho nào! Kho là một nguồn ứng dụng. Để thêm một kho, ấn nút MENU để nhập địa chỉ kho. Địa chỉ kho có dạng: https://f-droid.org/repo</string>
<string name="inst">Đã cài đặt</string>
<string name="not_inst">Chưa cài đặt</string>
<string name="inst_known_source">Đã cài đặt (từ %s)</string>
<string name="inst_unknown_source">Đã cài đặt (không rõ nguồn gốc)</string>
<string name="added_on">Đã thêm vào %s</string>
<string name="ok">OK</string>
<string name="yes"></string>
<string name="no">Không</string>
<string name="repo_add_title">Thêm kho ứng dụng mới</string>
<string name="repo_add_add">Thêm</string>
<string name="cancel">Huỷ</string>
<string name="enable">Kích hoạt</string>
<string name="add_key">Thêm mã khoá</string>
<string name="overwrite">Ghi đè</string>
<string name="repo_update_title">Cập nhật các kho ứng dụng</string>
<string name="tab_noninstalled">Hiện có</string>
<string name="tab_updates">Cập nhật</string>
<string name="one_update_available">Có 1 bản cập nhật.</string>
<string name="many_updates_available">Có %d bản cập nhật.</string>
<string name="fdroid_updates_available">Có cập nhật F-Droid</string>
<string name="process_wait_title">Vui lòng đợi</string>
<string name="process_update_msg">Đang cập nhật danh sách ứng dụng…</string>
<string name="download_server">Đang tải ứng dụng từ</string>
<string name="nfc_is_not_enabled">NFC hiện đang tắt!</string>
<string name="go_to_nfc_settings">Cài đặt NFC…</string>
<string name="bluetooth_activity_not_found">Không tìm thấy cách gửi qua Bluetooth mặc định, hãy chọn một cách khác!</string>
<string name="choose_bt_send">Chọn cách gửi qua Bluetooth</string>
<string name="send_via_bluetooth">Gửi qua Bluetooth</string>
<string name="repo_add_url">Địa chỉ kho</string>
<string name="repo_exists">Kho đã tồn tại!</string>
<string name="repo_delete_to_overwrite">Bạn phải xoá kho này trước thì mới có thể thêm kho có mã khác!</string>
<string name="malformed_repo_uri">Bỏ qua địa chỉ lỗi: %s</string>
<string name="repo_alrt">Danh sách kho được sử dụng đã thay đổi. Bạn có muốn cập nhật các kho không?</string>
<string name="menu_update_repo">Cập nhật kho</string>
<string name="menu_manage">Kho ứng dụng</string>
<string name="menu_send_apk_bt">Gửi FDroid.apk qua Bluetooth…</string>
<string name="menu_preferences">Cài đặt</string>
<string name="menu_about">Giới thiệu</string>
<string name="menu_search">Tìm kiếm</string>
<string name="menu_add_repo">Thêm kho ứng dụng mới</string>
<string name="menu_rem_repo">Xoá kho ứng dụng</string>
<string name="menu_launch">Chạy</string>
<string name="menu_share">Chia sẻ</string>
<string name="menu_install">Cài đặt</string>
<string name="menu_uninstall">Gỡ bỏ</string>
<string name="menu_ignore_all">Bỏ qua tất cả các cập nhật</string>
<string name="menu_ignore_this">Bỏ qua cập nhật lần này</string>
<string name="menu_website">Trang web</string>
<string name="menu_issues">Vấn đề</string>
<string name="menu_source">Mã nguồn</string>
<string name="menu_upgrade">Nâng cấp</string>
<string name="menu_donate">Ủng hộ</string>
<string name="details_installed">Đã cài đặt phiên bản %s</string>
<string name="details_notinstalled">Chưa cài đặt</string>
<string name="corrupt_download">Tập tin đã tải bị lỗi</string>
<string name="download_cancelled">Đã dừng tải xuống</string>
<string name="antiadslist">Ứng dụng này có quảng cáo</string>
<string name="antitracklist">Ứng dụng này theo dõi và báo cáo hoạt động của bạn</string>
<string name="antinonfreeadlist">Ứng dụng này khuyến khích sử dụng phần mở rộng không tự do</string>
<string name="antinonfreenetlist">Ứng dụng này khuyến khích sử dụng dịch vụ mạng không tự do</string>
<string name="antinonfreedeplist">Ứng dụng này phụ thuộc vào các ứng dụng không tự do khác</string>
<string name="antiupstreamnonfreelist">Mã nguồn không hoàn toàn tự do</string>
<string name="display">Hiển thị</string>
<string name="expert">Nâng cao</string>
<string name="expert_on">Hiện thông tin và cài đặt bổ sung</string>
<string name="search_hint">Tìm kiếm ứng dụng</string>
<string name="appcompatibility">Tính tương thích của ứng dụng</string>
<string name="show_incompat_versions">Phiên bản không tương thích</string>
<string name="show_incompat_versions_on">Hiện các phiên bản không tương thích với thiết bị này</string>
<string name="rooted">Root</string>
<string name="rooted_on">Không bôi xám các ứng dụng yêu cầu quyền root</string>
<string name="ignoreTouch">Bỏ qua cảm ứng</string>
<string name="ignoreTouch_on">Luôn hiện các ứng dụng yêu cầu màn hình cảm ứng</string>
<string name="category_all">Tất cả</string>
<string name="category_whatsnew">Mới</string>
<string name="category_recentlyupdated">Mới cập nhật</string>
<string name="local_repo">Kho nội bộ</string>
<string name="local_repo_running">F-Droid đã sẵn sàng để trao đổi</string>
<string name="waiting_for_ipaddress">đang đợi địa chỉ IP…</string>
<string name="setup_repo">Cài đặt kho nội bộ</string>
<string name="touch_to_configure_local_repo">Chạm để xem danh sách và cho phép mọi người trao đổi ứng dụng với bạn.</string>
<string name="touch_to_turn_on_local_repo">Chạm để bật kho nội bộ của bạn.</string>
<string name="touch_to_turn_off_local_repo">Chạm để tắt kho nội bộ của bạn.</string>
<string name="updating">Đang cập nhật…</string>
<string name="update_repo">Cập nhật kho ứng dụng</string>
<string name="deleting_repo">Đang xoá kho hiện tại…</string>
<string name="adding_apks_format">Đang thêm %s vào kho…</string>
<string name="copying_icons">Đang sao chép biểu tượng ứng dụng vào kho…</string>
<string name="no_applications_found">Không tìm thấy ứng dụng nào</string>
<string name="icon">biểu tượng</string>
<string name="wifi_network">Mạng WiFi:</string>
<string name="sharing_uri">URL chia sẻ:</string>
<string name="enable_wifi">Bật WiFi</string>
<string name="enabling_wifi">Đang bật WiFi…</string>
<string name="same_wifi_instructions">Để kết nối với thiết bị khác, hãy đảm bảo cả hai thiết bị đang trong cùng một mạng WiFi. Sau đó gõ đường dẫn sau vào F-Droid, hoặc quét mã QR này:</string>
<string name="qr_code">Mã QR</string>
<string name="next">Tiếp</string>
<string name="skip">Bỏ qua</string>
<string name="qr_wizard_wifi_network_instructions">Quét mã QR này để kết nối đến cùng một mạng WiFi với thiết bị này.</string>
<string name="send_fdroid_via_wifi">Gửi FDroid qua WiFi</string>
<string name="proxy">Proxy</string>
<string name="enable_proxy_title">Kích hoạt proxy HTTP</string>
<string name="proxy_port">Cổng proxy</string>
<string name="proxy_port_summary">Thiết lập số cổng proxy của bạn (ví dụ 8118)</string>
<string name="status_download">Đang tải %2$s / %3$s (%4$d%%) từ %1$s</string>
<string name="status_connecting_to_repo">Đang kết nối đến %1$s</string>
<string name="status_checking_compatibility">Đang kiểm tra tính tương thích của các ứng dụng…</string>
<string name="status_inserting">Đang lưu thông tin ứng dụng (%1$d%%)</string>
<string name="repos_unchanged">Không có kho nào có cập nhật</string>
<string name="global_error_updating_repos">Lỗi khi cập nhật:</string>
<string name="no_permissions">Không sử dụng quyền nào.</string>
<string name="permissions_for_long">Các quyền trong phiên bản %s</string>
<string name="no_handler_app">Bạn không có ứng dụng nào tương thích với %s</string>
<string name="compactlayout">Xem rút gọn</string>
<string name="compactlayout_on">Giảm kích cỡ biểu tượng</string>
<string name="theme">Giao diện</string>
<string name="unverified">Chưa kiểm tra</string>
<string name="repo_url">Địa chỉ</string>
<string name="repo_num_apps">Số ứng dụng</string>
<string name="repo_description">Mô tả</string>
<string name="repo_last_update">Cập nhật lần cuối vào</string>
<string name="repo_update">Cập nhật</string>
<string name="repo_name">Tên</string>
<string name="repo_not_yet_updated">Kho này chưa được sử dụng. Để xem ứng dụng trong kho, bạn phải cập nhật nó. Khi đã cập nhật xong, các thông tin sẽ xuất hiện ở đây.</string>
<string name="repo_delete_details">Bạn có muốn xoá kho \"{0}\" chứa {1} ứng dụng? Ứng dụng đã cài trong kho sẽ KHÔNG bị xoá, nhưng bạn sẽ không thể cập nhật được qua F-Droid nữa.</string>
<string name="repo_confirm_delete_title">Xoá kho?</string>
<string name="repo_confirm_delete_body">Nếu xoá kho, ứng dụng trong kho sẽ không xuất hiện trong F-Droid. Chú ý: Ứng dụng đã cài trước đó sẽ vẫn còn trên thiết bị của bạn.</string>
<string name="repo_disabled_notification">Đã tắt \"%1$s\". Bạn sẽ cần phải kích hoạt lại để cài ứng dụng từ kho này.</string>
<string name="repo_added">Đã lưu kho F-Droid %1$s</string>
<string name="repo_searching_address">Đang tìm kho F-Droid tại địa chỉ %1$s</string>
<string name="minsdk_or_later">%s hoặc mới hơn</string>
<string name="up_to_maxsdk">đến %s</string>
<string name="minsdk_up_to_maxsdk">Từ %1$s đến %2$s</string>
<string name="not_on_same_wifi">Thiết bị của bạn không trong cùng mạng WiFi với kho nội bộ mới thêm! Hãy vào mạng này: %s</string>
<string name="requires_features">Yêu cầu: %1$s</string>
<string name="app_icon">Biểu tượng ứng dụng</string>
<string name="repo_icon">Biểu tượng kho</string>
<string name="Children">Trẻ em</string>
<string name="Development">Lập trình</string>
<string name="Games">Trò chơi</string>
<string name="Internet">Internet</string>
<string name="Mathematics">Toán học</string>
<string name="Multimedia">Đa phương tiện</string>
<string name="Navigation">Điều hướng</string>
<string name="News">Tin tức</string>
<string name="Office">Văn phòng</string>
<string name="Phone_SMS">Gọi &amp; nhắn tin</string>
<string name="Reading">Đọc</string>
<string name="Science_Education">Khoa học &amp; giáo dục</string>
<string name="Security">Bảo mật</string>
<string name="System">Hệ thống</string>
<string name="Wallpaper">Hình nền</string>
<string name="requesting_root_access_body">Đang yêu cầu quyền root…</string>
<string name="root_access_denied_title">Bị từ chối quyền root</string>
<string name="root_access_denied_body">Thiết bị của bạn chưa được root hoặc bạn đã từ chối quyền root của F-Droid.</string>
<string name="update_all">Cập nhật tất cả</string>
<string name="system_permission_denied_title">Bị từ chối quyền hệ thống</string>
<string name="system_permission_denied_body">Chỉ có tuỳ chọn này khi F-Droid được cài làm ứng dụng hệ thống.</string>
<string name="app_description">F-Droid là một kho ứng dụng FOSS (tự do và mã nguồn mở) cài đặt được trên nền tảng Android. Ứng dụng F-Droid giúp bạn tìm kiếm, cài đặt và theo dõi cập nhật dễ dàng hơn.</string>
<string name="swap_nfc_description">Nếu bạn của bạn có NFC, hãy chạm hai điện thoại vào nhau.</string>
<string name="swap_join_same_wifi">Vào cùng mạng WiFi với bạn của bạn</string>
<string name="swap_use_bluetooth">Chuyển sang dùng Bluetooth</string>
<string name="swap_wifi_help">Tìm hiểu thêm về WiFi</string>
<string name="menu_swap">Trao đổi ứng dụng</string>
<string name="swap">Trao đổi ứng dụng</string>
<string name="swap_no_wifi_network">Không có mạng</string>
<string name="swap_view_available_networks">(Chạm để xem các mạng hiện có)</string>
<string name="swap_wifi_qr_not_working">Không hoạt động được</string>
<string name="open_qr_code_scanner">Mở trình quét mã QR</string>
<string name="swap_welcome">Chào mừng bạn đến với F-Droid!</string>
<string name="swap_confirm_connect">Bạn có muốn nhận ứng dụng từ %1$s bây giờ không?</string>
</resources>

View File

@ -105,6 +105,7 @@ https://f-droid.org/repo</string>
<string name="antinonfreeadlist">该应用程序会推广非自由免费的插件或扩展</string>
<string name="antinonfreenetlist">该应用程序会推广非自由的网络服务</string>
<string name="antinonfreedeplist">该应用程序依赖于其它非自由的应用程序</string>
<string name="antiupstreamnonfreelist">上游源代码不是完全自由的</string>
<string name="display">显示</string>
<string name="expert">高级</string>
<string name="expert_on">显示额外信息并启用额外选项</string>

View File

@ -6,50 +6,71 @@
<string name="version">版本</string>
<string name="edit">編輯</string>
<string name="delete">刪除</string>
<string name="enable_nfc_send">啟用NFC傳送…</string>
<string name="enable_nfc_send">啟用 NFC 傳送…</string>
<string name="cache_downloaded">應用程式快取</string>
<string name="cache_downloaded_on">將已下載的apk檔案保留在SD卡上</string>
<string name="cache_downloaded_on">保留已下載的 apk 檔案在SD卡上</string>
<string name="updates">更新</string>
<string name="other">其他</string>
<string name="last_update_check">最近的repo掃描:%s</string>
<string name="last_update_check">最近的倉庫掃描:%s</string>
<string name="never">永不</string>
<string name="update_interval">自動更新頻率</string>
<string name="update_interval_zero">不要自動更新應用程式清單</string>
<string name="automatic_scan_wifi">只透過 Wi-Fi</string>
<string name="automatic_scan_wifi_on">只透過 Wi-Fi 自動更新應用程式清單</string>
<string name="automatic_scan_wifi">只透過 Wifi 更新</string>
<string name="automatic_scan_wifi_on">只透過 Wifi 自動更新應用程式清單</string>
<string name="notify">通知</string>
<string name="notify_on">應用程式發佈更新時通知我</string>
<string name="update_history">更新記錄</string>
<string name="system_installer">使用系統權限安裝</string>
<string name="system_installer_on">安裝、更新,及移除軟件包時使用系統權限</string>
<string name="local_repo_name">您的本地倉庫名稱</string>
<string name="local_repo_name_summary">您本地倉庫對外公開的名稱:</string>
<string name="local_repo_https">使用私人連線</string>
<string name="local_repo_https_on">連接至本地倉庫時使用 HTTPS:// 加密連線</string>
<string name="search_results">搜尋結果</string>
<string name="app_details">應用程式詳細資料</string>
<string name="no_such_app">找不到這樣的應用程式</string>
<string name="about_title">關於F-Droid</string>
<string name="about_title">關於 F-Droid</string>
<string name="about_site">網站:</string>
<string name="about_mail">電郵:</string>
<string name="about_version">版本:</string>
<string name="about_website">網站</string>
<string name="inst">已安裝</string>
<string name="not_inst">未安裝</string>
<string name="not_inst">沒有安裝</string>
<string name="inst_known_source">已安裝 (來自 %s)</string>
<string name="inst_unknown_source">已安裝 (來源不明)</string>
<string name="added_on">在 %s 加入</string>
<string name="ok">OK</string>
<string name="yes"></string>
<string name="no"></string>
<string name="repo_add_title">添加軟件倉庫</string>
<string name="repo_add_add">添加</string>
<string name="cancel">取消</string>
<string name="enable">啟用</string>
<string name="add_key">添加鑰匙</string>
<string name="overwrite">蓋寫</string>
<string name="repo_update_title">更新所有軟件倉庫</string>
<string name="tab_noninstalled">可用</string>
<string name="tab_updates">更新</string>
<string name="one_update_available">有1個更新可用。</string>
<string name="many_updates_available">有%d個更新可用。</string>
<string name="one_update_available">有 1 個更新。</string>
<string name="many_updates_available">有 %d 個更新。</string>
<string name="fdroid_updates_available">您有 F-Droid 更新</string>
<string name="process_wait_title">請稍等</string>
<string name="process_update_msg">正在更新應用程式清單…</string>
<string name="nfc_is_not_enabled">NFC還未啟用</string>
<string name="nfc_is_not_enabled">NFC 還未啟用!</string>
<string name="bluetooth_activity_not_found">找不到藍牙傳送方式,請選擇!</string>
<string name="choose_bt_send">選擇藍牙傳送方式</string>
<string name="repo_add_fingerprint">指模(可選)</string>
<string name="menu_send_apk_bt">藍牙傳送FDroid.apk…</string>
<string name="send_via_bluetooth">透過藍牙傳送</string>
<string name="repo_add_url">軟件倉庫網址</string>
<string name="repo_add_fingerprint">指模 (可選)</string>
<string name="repo_exists">此倉庫已存在!</string>
<string name="menu_update_repo">更新倉庫</string>
<string name="menu_manage">軟件倉庫</string>
<string name="menu_send_apk_bt">藍牙傳送 FDroid.apk…</string>
<string name="menu_preferences">設定</string>
<string name="menu_about">關於</string>
<string name="menu_search">搜尋</string>
<string name="menu_add_repo">新增軟件倉庫</string>
<string name="menu_rem_repo">移除軟件倉庫</string>
<string name="menu_launch">執行</string>
<string name="menu_share">分享</string>
<string name="menu_install">安裝</string>
@ -61,14 +82,16 @@
<string name="menu_source">原始碼</string>
<string name="menu_upgrade">升級</string>
<string name="menu_donate">捐款</string>
<string name="details_installed">版本%s已安裝</string>
<string name="details_notinstalled">未安裝</string>
<string name="download_cancelled">下載已取消</string>
<string name="details_installed">已安裝版本%s</string>
<string name="details_notinstalled">沒有安裝</string>
<string name="corrupt_download">下載的檔案已損毀</string>
<string name="download_cancelled">已取消下載</string>
<string name="antiadslist">此應用程式含有廣告</string>
<string name="antitracklist">此應用程式會跟蹤及彙報您的行為</string>
<string name="antinonfreeadlist">此應用程式提倡使用非自由的附加元件</string>
<string name="antinonfreenetlist">此應用程式提倡使用非自由的網絡服務</string>
<string name="antinonfreeadlist">此應用程式推廣非自由的附加元件</string>
<string name="antinonfreenetlist">此應用程式推廣非自由的網絡服務</string>
<string name="antinonfreedeplist">此應用程式依賴其他非自由的應用程式</string>
<string name="antiupstreamnonfreelist">上游原始碼並非完全自由</string>
<string name="display">顯示</string>
<string name="expert">進階</string>
<string name="expert_on">顯示更多資訊及啟用更多設定</string>
@ -77,17 +100,48 @@
<string name="show_incompat_versions">不相容的版本</string>
<string name="show_incompat_versions_on">顯示與裝置不相容的應用程式版本</string>
<string name="rooted">Root</string>
<string name="ignoreTouch">略過觸碰屏幕</string>
<string name="ignoreTouch_on">永遠顯示需要觸碰屏幕的應用程式</string>
<string name="category_all">所有</string>
<string name="category_whatsnew">最新</string>
<string name="category_recentlyupdated">最近更新</string>
<string name="local_repo">本地倉庫</string>
<string name="local_repo_running">F-Droid 隨時可以進行交換</string>
<string name="waiting_for_ipaddress">正等待 IP 地址…</string>
<string name="setup_repo">設置本地倉庫</string>
<string name="touch_to_configure_local_repo">觸碰以顯示詳細資料及允許其他人交換您的應用程式。</string>
<string name="touch_to_turn_on_local_repo">觸碰以啟用您的本地倉庫。</string>
<string name="touch_to_turn_off_local_repo">觸碰以停用您的本地倉庫。</string>
<string name="updating">更新中…</string>
<string name="update_repo">更新倉庫</string>
<string name="deleting_repo">正在刪除此倉庫…</string>
<string name="adding_apks_format">正在添加 %s 至倉庫…</string>
<string name="copying_icons">正在複製應用程式圖示至倉庫…</string>
<string name="no_applications_found">找不到任何應用程式</string>
<string name="icon">圖示</string>
<string name="fingerprint">指模:</string>
<string name="wifi_network">Wifi 網絡:</string>
<string name="sharing_uri">分享地址:</string>
<string name="enable_wifi">啟用 Wifi</string>
<string name="enabling_wifi">正在啟用 Wifi…</string>
<string name="same_wifi_instructions">連接至其他人的裝置時,確保兩個裝置都連接在同一個 Wifi 網絡上。然後,在 F-Droid 輸入以上的網址或掃描這個 QR 碼:</string>
<string name="qr_code">QR 碼</string>
<string name="skip">略過</string>
<string name="qr_content_description">倉庫地址的 QR 碼</string>
<string name="send_fdroid_via_wifi">經 Wifi 傳送 F-Droid…</string>
<string name="status_connecting_to_repo">正在連接至%1$s</string>
<string name="status_checking_compatibility">正在檢查應用程式與裝置的相容性…</string>
<string name="status_inserting">儲存應用程式詳情中(%1$d%%</string>
<string name="status_inserting">儲存應用程式詳情中 (%1$d%%)</string>
<string name="repos_unchanged">所有倉庫都沒有任何可更新的軟件包</string>
<string name="all_other_repos_fine">其他倉庫都沒有出現問題。</string>
<string name="global_error_updating_repos">更新時出現的問題:</string>
<string name="no_permissions">沒有使用任何存取權。</string>
<string name="permissions_for_long">版本%s的存取權</string>
<string name="compactlayout">精簡設計</string>
<string name="permissions_for_long">版本 %s 的存取權</string>
<string name="compactlayout">濃縮設計</string>
<string name="compactlayout_on">顯示小型圖示</string>
<string name="theme">主題</string>
<string name="unsigned">未簽署</string>
<string name="unverified">未經驗證</string>
<string name="repo_url">網址</string>
<string name="repo_num_apps">應用程式數目</string>
<string name="repo_description">描述</string>
@ -95,9 +149,42 @@
<string name="repo_update">更新</string>
<string name="repo_name">名稱</string>
<string name="unknown">未知</string>
<string name="repo_confirm_delete_title">刪除Repository</string>
<string name="repo_confirm_delete_title">刪除軟件倉庫</string>
<string name="repo_disabled_notification">已停用「%1$s」。
您需要重新啟用此repository才能從中安裝應用程式。</string>
您需要重新啟用此軟件倉庫才能從中安裝應用程式。</string>
<string name="repo_added">已儲存 F-Droid 軟件倉庫 %1$s</string>
<string name="repo_searching_address">在 %1$s 尋找 F-Droid 軟件倉庫</string>
<string name="minsdk_or_later">%s 或以後</string>
<string name="up_to_maxsdk">直至 %s</string>
<string name="not_on_same_wifi">您剛才添加的本地倉庫與您的裝置並不在同一個 Wifi 網絡上!請嘗試加入以下網絡:%s</string>
<string name="requires_features">需要:%1$s</string>
<string name="app_icon">應用程式圖示</string>
<string name="repo_icon">倉庫圖示</string>
<string name="Children">兒童</string>
<string name="Development">開發</string>
<string name="Games">遊戲</string>
<string name="Internet">互聯網</string>
<string name="Mathematics">數學</string>
<string name="Multimedia">多媒體</string>
<string name="Navigation">導航</string>
<string name="News">新聞</string>
<string name="Office">辦公室</string>
<string name="Phone_SMS">通話與短訊</string>
<string name="Reading">閱讀</string>
<string name="Science_Education">科學與教育</string>
<string name="Security">安全性</string>
<string name="System">系統</string>
<string name="Wallpaper">牆紙</string>
<string name="requesting_root_access_body">要求 root 權限中…</string>
<string name="root_access_denied_title">Root 權限被拒絕</string>
<string name="update_all">更新所有應用程式</string>
<string name="system_permission_denied_title">系統權限被拒絕</string>
<string name="app_description">F-Droid 是一個為 Android 而設可供安裝的自由開源應用程式目錄。F-Droid 讓您更容易瀏覽、安裝和管理在您裝置上的應用程式更新。</string>
<string name="menu_swap">交換應用程式</string>
<string name="swap">交換應用程式</string>
<string name="swap_no_wifi_network">沒有網絡連線</string>
<string name="open_qr_code_scanner">開啟 QR 碼掃描器</string>
<string name="swap_welcome">歡迎使用 F-Droid</string>
<string name="swap_confirm_connect">你是否想從 %1$s 取得應用程式?</string>
</resources>

View File

@ -3,6 +3,7 @@
<color name="signed">#ffcccccc</color>
<color name="unsigned">#ffCC0000</color>
<color name="unverified">#ff999999</color>
<color name="red">#ffdd2c00</color>
<color name="fdroid_blue">#ff1976d2</color>
<color name="fdroid_blue_dark">#ff0d47a1</color>
@ -18,7 +19,6 @@
<color name="swap_light_grey_icon">#bbbbbb</color>
<color name="shadow">#cc222222</color>
<color name="transparent">#00000000</color>
<color name="perms_costs_money">#fff4511e</color>

View File

@ -31,6 +31,7 @@
<string-array name="languageValues">
<item></item>
<item>ar</item>
<item>ast</item>
<item>bg</item>
<item>ca</item>
<item>cs</item>
@ -51,6 +52,7 @@
<item>ja</item>
<item>ko</item>
<item>lt</item>
<item>lv</item>
<item>nb</item>
<item>nl</item>
<item>pl</item>
@ -65,6 +67,7 @@
<item>tr</item>
<item>ug</item>
<item>uk</item>
<item>vi</item>
<item>zh</item>
<item>zh-rCN</item>
<item>zh-rHK</item>

View File

@ -166,21 +166,21 @@
<string name="touch_to_configure_local_repo">Touch to view details and allow others to swap your apps.</string>
<string name="touch_to_turn_on_local_repo">Touch to turn on your local repo.</string>
<string name="touch_to_turn_off_local_repo">Touch to turn off your local repo.</string>
<string name="updating">Updating&#8230;</string>
<string name="updating">Updating</string>
<string name="update_repo">Update Repo</string>
<string name="deleting_repo">Deleting current repo&#8230;</string>
<string name="adding_apks_format">Adding %s to repo&#8230;</string>
<string name="writing_index_jar">Writing signed index file (index.jar)&#8230;</string>
<string name="deleting_repo">Deleting current repo</string>
<string name="adding_apks_format">Adding %s to repo</string>
<string name="writing_index_jar">Writing signed index file (index.jar)</string>
<string name="failed_to_create_index">Failed to create the repo index!</string>
<string name="linking_apks">Linking APKs into the repo&#8230;</string>
<string name="copying_icons">Copying app icons into the repo&#8230;</string>
<string name="linking_apks">Linking APKs into the repo</string>
<string name="copying_icons">Copying app icons into the repo</string>
<string name="no_applications_found">No applications found</string>
<string name="icon">icon</string>
<string name="fingerprint">Fingerprint:</string>
<string name="wifi_network">WiFi Network:</string>
<string name="sharing_uri">Sharing URL:</string>
<string name="enable_wifi">Enable WiFi</string>
<string name="enabling_wifi">Enabling WiFi&#8230;</string>
<string name="enabling_wifi">Enabling WiFi</string>
<string name="same_wifi_instructions">To connect to other people\'s devices, make sure both devices are on the same WiFi network. Then either type the URL above into F-Droid, or scan this QR Code:</string>
<string name="qr_code">QR Code</string>
<string name="next">Next</string>
@ -188,7 +188,7 @@
<string name="qr_content_description">QR Code of repo URL</string>
<string name="qr_wizard_wifi_network_instructions">Scan this QR Code to connect to the same WiFi network as this device.</string>
<string name="qr_wizard_download_instructions">Scan this QR Code to connect to the website for getting started.</string>
<string name="send_fdroid_via_wifi">Send F-Droid via WiFi&#8230;</string>
<string name="send_fdroid_via_wifi">Send F-Droid via WiFi</string>
<string name="proxy">Proxy</string>
<string name="enable_proxy_title">Enable HTTP Proxy</string>
@ -211,7 +211,7 @@
<string name="status_connecting_to_repo">Connecting to\n%1$s</string>
<string name="status_checking_compatibility">Checking apps compatibility with your device…</string>
<string name="status_inserting">Saving application details (%1$d%%)</string>
<string name="repos_unchanged">No repository has any package updates</string>
<string name="repos_unchanged">All repositories are up to date</string>
<string name="all_other_repos_fine">All other repos didn\'t create errors.</string>
<string name="global_error_updating_repos">Error during update:</string>
<string name="no_permissions">No permissions are used.</string>
@ -291,8 +291,10 @@
<string name="root_access_denied_title">Root access denied</string>
<string name="root_access_denied_body">Either your Android device is not rooted or you have denied root access for F-Droid.</string>
<string name="update_all">Update all</string>
<string name="installer_error_title">(De-)Installation Error</string>
<string name="installer_error_body">The (de-)installation failed. If you are using F-Droid as a privileged app, try disabling this setting!</string>
<string name="install_error_title">Install error</string>
<string name="install_error_unknown">Failed to install due to an unknown error</string>
<string name="uninstall_error_title">Uninstall error</string>
<string name="uninstall_error_unknown">Failed to uninstall due to an unknown error</string>
<string name="system_permission_denied_title">System permissions denied</string>
<string name="system_permission_denied_body">This option is only available when F-Droid is installed as a privileged app.</string>
<string name="system_permission_install_via_root">Install as a privileged app</string>
@ -314,8 +316,8 @@
<string name="app_description">F-Droid is an installable catalogue of FOSS (Free and Open Source Software) applications for the Android platform. The client makes it easy to browse, install, and keep track of updates on your device.</string>
<string name="swap_nfc_title">Touch to swap</string>
<string name="swap_nfc_description">If your friend has <b>F-Droid and NFC turned on</b> touch your phones together.</string>
<string name="swap_join_same_wifi">Join the same WiFi</string>
<string name="swap_nfc_description">If your friend has F-Droid and NFC turned on touch your phones together.</string>
<string name="swap_join_same_wifi">Join the same WiFi as your friend</string>
<string name="swap_join_same_wifi_desc">To swap using WiFi, ensure you are on the same network. If you don\'t have access to the same network, one of you can create a WiFi Hotspot.</string>
<string name="swap_join_this_hotspot">Help your friend join your hotspot</string>
<string name="swap_use_bluetooth">Use Bluetooth instead</string>
@ -387,7 +389,7 @@
<string name="uninstall_update_confirm">Do you want to replace this app with the factory version?</string>
<string name="uninstall_confirm">Do you want to uninstall this app?</string>
<string name="perms_new_perm_prefix"><font size="12" fgcolor="#ff33b5e5">NEW: </font></string>
<string name="perms_new_perm_prefix">NEW: </string>
<string name="perms_description_app">Provided by %1$s.</string>
<string name="downloading">Downloading…</string>

View File

@ -20,9 +20,6 @@
<item name="alertDialogTheme">@style/AlertDialogThemeLight</item>
</style>
<color name="white">#FFFFFFFF</color>
<color name="red">#FFFF0000</color>
<style name="AppThemeDark" parent="AppBaseThemeDark">
<!-- customizations that are not API-level specific go here. -->
</style>
@ -50,7 +47,7 @@
</style>
<style name="SwapTheme.StartSwap" parent="AppThemeLight">
<item name="android:background">@color/white</item>
<item name="android:background">@android:color/white</item>
</style>
<style name="SwapTheme.StartSwap.Text" parent="@style/SwapTheme.StartSwap">

View File

@ -48,10 +48,6 @@
<EditTextPreference
android:key="localRepoName"
android:title="@string/local_repo_name" />
<CheckBoxPreference
android:defaultValue="false"
android:key="localRepoHttps"
android:title="@string/local_repo_https" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/proxy" >
<CheckBoxPreference

View File

@ -1,5 +1,6 @@
/*
* Copyright (C) 2010-12 Ciaran Gultnieks, ciaran@ciarang.com
* Copyright (C) 2013-15 Daniel Martí <mvdan@mvdan.cc>
* Copyright (C) 2013 Stefan Völkel, bd@bc-bd.org
* Copyright (C) 2015 Nico Alt, nicoalt@posteo.org
*
@ -389,10 +390,10 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
// Get the preferences we're going to use in this Activity...
ConfigurationChangeHelper previousData = (ConfigurationChangeHelper)getLastCustomNonConfigurationInstance();
if (previousData != null) {
Log.d(TAG, "Recreating view after configuration change.");
Utils.DebugLog(TAG, "Recreating view after configuration change.");
downloadHandler = previousData.downloader;
if (downloadHandler != null) {
Log.d(TAG, "Download was in progress before the configuration change, so we will start to listen to its events again.");
Utils.DebugLog(TAG, "Download was in progress before the configuration change, so we will start to listen to its events again.");
}
app = previousData.app;
setApp(app);
@ -498,7 +499,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
super.onPause();
if (app != null && (app.ignoreAllUpdates != startingIgnoreAll
|| app.ignoreThisUpdate != startingIgnoreThis)) {
Log.d(TAG, "Updating 'ignore updates', as it has changed since we started the activity...");
Utils.DebugLog(TAG, "Updating 'ignore updates', as it has changed since we started the activity...");
setIgnoreUpdates(app.id, app.ignoreAllUpdates, app.ignoreThisUpdate);
}
@ -566,7 +567,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
// Return true if the app was found, false otherwise.
private boolean reset(String appId) {
Log.d(TAG, "Getting application details for " + appId);
Utils.DebugLog(TAG, "Getting application details for " + appId);
App newApp = null;
if (!TextUtils.isEmpty(appId)) {
@ -585,7 +586,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
private void setApp(App newApp) {
if (newApp == null) {
Toast.makeText(this, getString(R.string.no_such_app), Toast.LENGTH_LONG).show();
Toast.makeText(this, R.string.no_such_app, Toast.LENGTH_LONG).show();
finish();
return;
}
@ -819,8 +820,8 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
if (!apk.compatible) {
AlertDialog.Builder ask_alrt = new AlertDialog.Builder(this);
ask_alrt.setMessage(getString(R.string.installIncompatible));
ask_alrt.setPositiveButton(getString(R.string.yes),
ask_alrt.setMessage(R.string.installIncompatible);
ask_alrt.setPositiveButton(R.string.yes,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
@ -828,7 +829,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
startDownload(apk, repoaddress);
}
});
ask_alrt.setNegativeButton(getString(R.string.no),
ask_alrt.setNegativeButton(R.string.no,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
@ -843,7 +844,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
&& !apk.sig.equals(mInstalledSigID)) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.SignatureMismatch).setPositiveButton(
getString(R.string.ok),
R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
@ -909,7 +910,22 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
onAppChanged();
}
});
return;
}
final int title, body;
if (operation == InstallerCallback.OPERATION_INSTALL) {
title = R.string.install_error_title;
} else {
title = R.string.uninstall_error_title;
}
switch (errorCode) {
default:
if (operation == InstallerCallback.OPERATION_INSTALL) {
body = R.string.install_error_unknown;
} else {
body = R.string.uninstall_error_unknown;
}
}
runOnUiThread(new Runnable() {
@Override
public void run() {
@ -918,14 +934,13 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
Log.e(TAG, "Installer aborted with errorCode: " + errorCode);
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(AppDetails.this);
alertBuilder.setTitle(R.string.installer_error_title);
alertBuilder.setMessage(R.string.installer_error_title);
alertBuilder.setTitle(title);
alertBuilder.setMessage(body);
alertBuilder.setNeutralButton(android.R.string.ok, null);
alertBuilder.create().show();
}
});
}
}
};
private void launchApk(String id) {
@ -953,20 +968,21 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
// the download thread to make sure that we check for cancellations before
// sending events, but it is not possible to be perfect, because the interruption
// which triggers the download can happen after the check to see if
Log.d(TAG, "Discarding downloader event \"" + event.type + "\" as it is from an old (probably cancelled) downloader.");
Utils.DebugLog(TAG, "Discarding downloader event \"" + event.type + "\" as it is from an old (probably cancelled) downloader.");
return;
}
boolean finished = false;
switch (event.type) {
case ApkDownloader.EVENT_ERROR:
final String text;
final int res;
if (event.getData().getInt(ApkDownloader.EVENT_DATA_ERROR_TYPE) == ApkDownloader.ERROR_HASH_MISMATCH)
text = getString(R.string.corrupt_download);
res = R.string.corrupt_download;
else
text = getString(R.string.details_notinstalled);
res = R.string.details_notinstalled;
// this must be on the main UI thread
Toast.makeText(this, text, Toast.LENGTH_LONG).show();
Toast.makeText(this, res, Toast.LENGTH_LONG).show();
cleanUpFinishedDownload();
finished = true;
break;
case ApkDownloader.EVENT_APK_DOWNLOAD_COMPLETE:
@ -1073,8 +1089,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
view_more_description.setImageResource(R.drawable.ic_expand_more_grey600);
view_more_description.setOnClickListener(expander_description);
}
else {
} else {
view_more_description.setVisibility(View.GONE);
}
}
@ -1225,7 +1240,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
private final View.OnClickListener mOnClickListener = new View.OnClickListener() {
public void onClick(View v) {
switch(v.getId()) {
switch (v.getId()) {
case R.id.website:
((AppDetails) getActivity()).tryOpenUri(getApp().webURL);
break;
@ -1309,7 +1324,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
view_all_permissions = false;
CommaSeparatedList permsList = getApks().getItem(0).permissions;
if (permsList == null) {
permissionListView.setText(getString(R.string.no_permissions));
permissionListView.setText(R.string.no_permissions);
} else {
Iterator<String> permissions = permsList.iterator();
StringBuilder sb = new StringBuilder();
@ -1521,36 +1536,34 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
if (activity.downloadHandler != null) {
btMain.setText(R.string.downloading);
btMain.setEnabled(false);
}
/*
Check count > 0 due to incompatible apps resulting in an empty list.
If App isn't installed
*/
else if (!getApp().isInstalled() && getApp().suggestedVercode > 0 &&
// Check count > 0 due to incompatible apps resulting in an empty list.
// If App isn't installed
} else if (!getApp().isInstalled() && getApp().suggestedVercode > 0 &&
((AppDetails)getActivity()).adapter.getCount() > 0) {
installed = false;
statusView.setText(getString(R.string.details_notinstalled));
statusView.setText(R.string.details_notinstalled);
NfcHelper.disableAndroidBeam(getActivity());
// Set Install button and hide second button
btMain.setText(R.string.menu_install);
btMain.setOnClickListener(mOnClickListener);
btMain.setEnabled(true);
}
// If App is installed
else if (getApp().isInstalled()) {
} else if (getApp().isInstalled()) {
installed = true;
statusView.setText(getString(R.string.details_installed, getApp().installedVersionName));
NfcHelper.setAndroidBeam(getActivity(), getApp().id);
if (getApp().canAndWantToUpdate()) {
updateWanted = true;
btMain.setText(R.string.menu_upgrade);
}else {
} else {
updateWanted = false;
if (((AppDetails)getActivity()).mPm.getLaunchIntentForPackage(getApp().id) != null){
btMain.setText(R.string.menu_launch);
}
else {
} else {
btMain.setText(R.string.menu_uninstall);
if (!getApp().uninstallable) {
btMain.setVisibility(View.GONE);
}
}
}
btMain.setOnClickListener(mOnClickListener);
@ -1559,7 +1572,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
TextView currentVersion = (TextView) view.findViewById(R.id.current_version);
if (!getApks().isEmpty()) {
currentVersion.setText(getApks().getItem(0).version);
}else {
} else {
currentVersion.setVisibility(View.GONE);
btMain.setVisibility(View.GONE);
}
@ -1580,14 +1593,11 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
// If "launchable", launch
if (((AppDetails)getActivity()).mPm.getLaunchIntentForPackage(getApp().id) != null) {
((AppDetails)getActivity()).launchApk(getApp().id);
}
else {
} else {
((AppDetails)getActivity()).removeApk(getApp().id);
}
}
// If not installed, install
else if (getApp().suggestedVercode > 0) {
} else if (getApp().suggestedVercode > 0) {
btMain.setEnabled(false);
btMain.setText(R.string.system_install_installing);
final Apk apkToInstall = ApkProvider.Helper.find(getActivity(), getApp().id, getApp().suggestedVercode);
@ -1634,7 +1644,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
// the last opportunity to set the list adapter. As such, we use the headerView
// as a mechanism to optionally allow adding a header in the future.
if (headerView == null) {
headerView = new FrameLayout(getActivity().getApplicationContext());
headerView = new FrameLayout(getActivity());
headerView.setId(R.id.appDetailsSummaryHeader);
} else {
Fragment summaryFragment = getChildFragmentManager().findFragmentByTag(SUMMARY_TAG);
@ -1655,8 +1665,8 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
remove();
} else if (getApp().installedVersionCode > apk.vercode) {
AlertDialog.Builder ask_alrt = new AlertDialog.Builder(getActivity());
ask_alrt.setMessage(getString(R.string.installDowngrade));
ask_alrt.setPositiveButton(getString(R.string.yes),
ask_alrt.setMessage(R.string.installDowngrade);
ask_alrt.setPositiveButton(R.string.yes,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
@ -1664,7 +1674,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
install(apk);
}
});
ask_alrt.setNegativeButton(getString(R.string.no),
ask_alrt.setNegativeButton(R.string.no,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,

View File

@ -47,7 +47,7 @@ public class CompatibilityChecker extends Compatibility {
for (FeatureInfo fi : pm.getSystemAvailableFeatures()) {
logMsg.append('\n').append(fi.name);
}
Log.d(TAG, logMsg.toString());
Utils.DebugLog(TAG, logMsg.toString());
}
for (FeatureInfo fi : pm.getSystemAvailableFeatures()) {
features.add(fi.name);
@ -102,23 +102,19 @@ public class CompatibilityChecker extends Compatibility {
}
if (!features.contains(feat)) {
Collections.addAll(incompatibleReasons, feat.split(","));
if (BuildConfig.DEBUG) {
Log.d(TAG, apk.id + " vercode " + apk.vercode
Utils.DebugLog(TAG, apk.id + " vercode " + apk.vercode
+ " is incompatible based on lack of " + feat);
}
}
}
}
if (!compatibleApi(apk.nativecode)) {
for (final String code : apk.nativecode) {
incompatibleReasons.add(code);
}
if (BuildConfig.DEBUG) {
Log.d(TAG, apk.id + " vercode " + apk.vercode
Utils.DebugLog(TAG, apk.id + " vercode " + apk.vercode
+ " only supports " + Utils.CommaSeparatedList.str(apk.nativecode)
+ " while your architectures are " + cpuAbisDesc);
}
}
return incompatibleReasons;
}

View File

@ -183,11 +183,11 @@ public class FDroid extends ActionBarActivity {
Intent call = null;
if (!TextUtils.isEmpty(appId)) {
Log.d(TAG, "FDroid launched via app link for '" + appId + "'");
Utils.DebugLog(TAG, "FDroid launched via app link for '" + appId + "'");
call = new Intent(this, AppDetails.class);
call.putExtra(AppDetails.EXTRA_APPID, appId);
} else if (!TextUtils.isEmpty(query)) {
Log.d(TAG, "FDroid launched via search link for '" + query + "'");
Utils.DebugLog(TAG, "FDroid launched via search link for '" + query + "'");
call = new Intent(this, SearchResults.class);
call.setAction(Intent.ACTION_SEARCH);
call.putExtra(SearchManager.QUERY, query);
@ -288,7 +288,7 @@ public class FDroid extends ActionBarActivity {
AlertDialog.Builder builder = new AlertDialog.Builder(this).setView(view);
final AlertDialog alrt = builder.create();
alrt.setTitle(getString(R.string.about_title));
alrt.setTitle(R.string.about_title);
alrt.setButton(AlertDialog.BUTTON_NEUTRAL,
getString(R.string.about_website),
new DialogInterface.OnClickListener() {

View File

@ -34,6 +34,7 @@ import android.net.Uri;
import android.os.Build;
import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
import com.nostra13.universalimageloader.cache.disc.impl.LimitedAgeDiskCache;
@ -61,6 +62,8 @@ import sun.net.www.protocol.bluetooth.Handler;
public class FDroidApp extends Application {
private static final String TAG = "FDroidApp";
// for the local repo on this device, all static since there is only one
public static int port;
public static String ipAddressString;
@ -82,6 +85,7 @@ public class FDroidApp extends Application {
public enum Theme {
dark,
light,
lightWithDarkActionBar, // Obsolete
}
private static Theme curTheme = Theme.light;
@ -292,8 +296,8 @@ public class FDroidApp extends Application {
break;
}
}
} catch (PackageManager.NameNotFoundException e1) {
e1.printStackTrace();
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "Could not get application info to send via bluetooth", e);
found = false;
}
if (sendBt != null) {

View File

@ -10,9 +10,12 @@ import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.NfcAdapter;
import android.os.Build;
import android.util.Log;
public class NfcHelper {
private static final String TAG = "NfcHelper";
@TargetApi(14)
private static NfcAdapter getAdapter(Context context) {
if (Build.VERSION.SDK_INT < 14)
@ -48,7 +51,7 @@ public class NfcHelper {
};
nfcAdapter.setBeamPushUris(uris, activity);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
Log.e(TAG, "Could not get application info", e);
}
}
}

View File

@ -9,8 +9,7 @@ import android.provider.Settings;
import android.support.v7.app.ActionBarActivity;
// aka Android 4.0 aka Ice Cream Sandwich
public class NfcNotEnabledActivity extends ActionBarActivity
{
public class NfcNotEnabledActivity extends ActionBarActivity {
/*
* ACTION_NFC_SETTINGS was added in 4.1 aka Jelly Bean MR1 as a
@ -21,7 +20,11 @@ public class NfcNotEnabledActivity extends ActionBarActivity
*/
@TargetApi(16)
private void doOnJellybean(Intent intent) {
if (NfcAdapter.getDefaultAdapter(this).isEnabled())
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (nfcAdapter == null) {
return;
}
if (nfcAdapter.isEnabled())
intent.setAction(Settings.ACTION_NFCSHARING_SETTINGS);
else
intent.setAction(Settings.ACTION_NFC_SETTINGS);

View File

@ -146,7 +146,7 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
}
public boolean isLocalRepoHttpsEnabled() {
return preferences.getBoolean(PREF_LOCAL_REPO_HTTPS, DEFAULT_LOCAL_REPO_HTTPS);
return false; // disabled until it works well
}
private String getDefaultLocalRepoName() {
@ -237,9 +237,7 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (BuildConfig.DEBUG) {
Log.d(TAG, "Invalidating preference '" + key + "'.");
}
Utils.DebugLog(TAG, "Invalidating preference '" + key + "'.");
uninitialize(key);
switch (key) {

View File

@ -52,14 +52,14 @@ public class QrGenAsyncTask extends AsyncTask<String, Void, Void> {
qrCodeDimension = x;
else
qrCodeDimension = y;
Log.i(TAG, "generating QRCode Bitmap of " + qrCodeDimension + "x" + qrCodeDimension);
Utils.DebugLog(TAG, "generating QRCode Bitmap of " + qrCodeDimension + "x" + qrCodeDimension);
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(qrData, null,
Contents.Type.TEXT, BarcodeFormat.QR_CODE.toString(), qrCodeDimension);
try {
qrBitmap = qrCodeEncoder.encodeAsBitmap();
} catch (WriterException e) {
Log.e(TAG, e.getMessage());
Log.e(TAG, "Could not encode QR as bitmap", e);
}
return null;
}

View File

@ -76,7 +76,7 @@ public class RepoUpdater {
String versionName = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
urlString += "?client_version=" + versionName;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
Log.e(TAG, "Could not get client version name", e);
}
return new URL(urlString);
}
@ -92,7 +92,7 @@ public class RepoUpdater {
if (downloader.isCached()) {
// The index is unchanged since we last read it. We just mark
// everything that came from this repo as being updated.
Log.d(TAG, "Repo index for " + getIndexAddress() + " is up to date (by etag)");
Utils.DebugLog(TAG, "Repo index for " + getIndexAddress() + " is up to date (by etag)");
}
} catch (IOException e) {
@ -190,13 +190,13 @@ public class RepoUpdater {
}
if (handler.getVersion() != -1 && handler.getVersion() != repo.version) {
Log.d(TAG, "Repo specified a new version: from "
Utils.DebugLog(TAG, "Repo specified a new version: from "
+ repo.version + " to " + handler.getVersion());
values.put(RepoProvider.DataColumns.VERSION, handler.getVersion());
}
if (handler.getMaxAge() != -1 && handler.getMaxAge() != repo.maxage) {
Log.d(TAG, "Repo specified a new maximum age - updated");
Utils.DebugLog(TAG, "Repo specified a new maximum age - updated");
values.put(RepoProvider.DataColumns.MAX_AGE, handler.getMaxAge());
}
@ -293,7 +293,7 @@ public class RepoUpdater {
}
if (trustNewSigningCertificate) {
Log.d(TAG, "Saving new signing certificate in the database for " + repo.address);
Utils.DebugLog(TAG, "Saving new signing certificate in the database for " + repo.address);
ContentValues values = new ContentValues(2);
values.put(RepoProvider.DataColumns.LAST_UPDATED, Utils.formatDate(new Date(), ""));
values.put(RepoProvider.DataColumns.PUBLIC_KEY, Hasher.hex(rawCertFromJar));

View File

@ -19,7 +19,6 @@
package org.fdroid.fdroid;
import android.os.Bundle;
import android.text.TextUtils;
import org.fdroid.fdroid.data.Apk;

View File

@ -136,9 +136,9 @@ public class UpdateService extends IntentService implements ProgressListener {
alarm.setInexactRepeating(AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() + 5000,
AlarmManager.INTERVAL_HOUR, pending);
Log.d(TAG, "Update scheduler alarm set");
Utils.DebugLog(TAG, "Update scheduler alarm set");
} else {
Log.d(TAG, "Update scheduler alarm not set");
Utils.DebugLog(TAG, "Update scheduler alarm not set");
}
}
@ -295,12 +295,12 @@ public class UpdateService extends IntentService implements ProgressListener {
String sint = prefs.getString(Preferences.PREF_UPD_INTERVAL, "0");
int interval = Integer.parseInt(sint);
if (interval == 0) {
Log.d(TAG, "Skipping update - disabled");
Log.i(TAG, "Skipping update - disabled");
return false;
}
long elapsed = System.currentTimeMillis() - lastUpdate;
if (elapsed < interval * 60 * 60 * 1000) {
Log.d(TAG, "Skipping update - done " + elapsed
Log.i(TAG, "Skipping update - done " + elapsed
+ "ms ago, interval is " + interval + " hours");
return false;
}
@ -312,7 +312,7 @@ public class UpdateService extends IntentService implements ProgressListener {
NetworkInfo.State wifi = conMan.getNetworkInfo(1).getState();
if (wifi != NetworkInfo.State.CONNECTED &&
wifi != NetworkInfo.State.CONNECTING) {
Log.d(TAG, "Skipping update - wifi not available");
Log.i(TAG, "Skipping update - wifi not available");
return false;
}
}
@ -330,7 +330,7 @@ public class UpdateService extends IntentService implements ProgressListener {
// See if it's time to actually do anything yet...
if (manualUpdate) {
Log.d(TAG, "Unscheduled (manually requested) update");
Utils.DebugLog(TAG, "Unscheduled (manually requested) update");
} else if (!verifyIsTimeForScheduledRun()) {
return;
}
@ -383,13 +383,12 @@ public class UpdateService extends IntentService implements ProgressListener {
} catch (RepoUpdater.UpdateException e) {
errorRepos.add(repo.address);
repoErrors.add(e.getMessage());
Log.e(TAG, "Error updating repository " + repo.address + ": " + e.getMessage());
Log.e(TAG, Log.getStackTraceString(e));
Log.e(TAG, "Error updating repository " + repo.address, e);
}
}
if (!changes) {
Log.d(TAG, "Not checking app details or compatibility, because all repos were up to date.");
Utils.DebugLog(TAG, "Not checking app details or compatibility, because all repos were up to date.");
} else {
sendStatus(STATUS_INFO, getString(R.string.status_checking_compatibility));
@ -445,9 +444,7 @@ public class UpdateService extends IntentService implements ProgressListener {
}
}
} catch (Exception e) {
Log.e(TAG,
"Exception during update processing:\n"
+ Log.getStackTraceString(e));
Log.e(TAG, "Exception during update processing", e);
sendStatus(STATUS_ERROR_GLOBAL, e.getMessage());
}
}
@ -524,7 +521,7 @@ public class UpdateService extends IntentService implements ProgressListener {
}
private void showAppUpdatesNotification(Cursor hasUpdates) {
Log.d(TAG, "Notifying " + hasUpdates.getCount() + " updates.");
Utils.DebugLog(TAG, "Notifying " + hasUpdates.getCount() + " updates.");
final int icon = Build.VERSION.SDK_INT >= 11 ? R.drawable.ic_stat_notify_updates : R.drawable.ic_launcher;
@ -600,11 +597,11 @@ public class UpdateService extends IntentService implements ProgressListener {
}
}
Log.d(TAG, "Updating/inserting " + operations.size() + " apps.");
Utils.DebugLog(TAG, "Updating/inserting " + operations.size() + " apps.");
try {
executeBatchWithStatus(AppProvider.getAuthority(), operations, currentCount, totalUpdateCount);
} catch (RemoteException | OperationApplicationException e) {
Log.e(TAG, e.getMessage());
Log.e(TAG, "Could not update or insert apps", e);
}
}
@ -659,11 +656,11 @@ public class UpdateService extends IntentService implements ProgressListener {
}
}
Log.d(TAG, "Updating/inserting " + operations.size() + " apks.");
Utils.DebugLog(TAG, "Updating/inserting " + operations.size() + " apks.");
try {
executeBatchWithStatus(ApkProvider.getAuthority(), operations, currentCount, totalApksAppsCount);
} catch (RemoteException | OperationApplicationException e) {
Log.e(TAG, e.getMessage());
Log.e(TAG, "Could not update/insert apps", e);
}
}
@ -723,7 +720,7 @@ public class UpdateService extends IntentService implements ProgressListener {
}
long duration = System.currentTimeMillis() - startTime;
Log.d(TAG, "Found " + toRemove.size() + " apks no longer in the updated repos (took " + duration + "ms)");
Utils.DebugLog(TAG, "Found " + toRemove.size() + " apks no longer in the updated repos (took " + duration + "ms)");
if (toRemove.size() > 0) {
ApkProvider.Helper.deleteApks(this, toRemove);
@ -743,13 +740,13 @@ public class UpdateService extends IntentService implements ProgressListener {
for (final Repo repo : repos) {
Uri uri = ApkProvider.getRepoUri(repo.getId());
int numDeleted = getContentResolver().delete(uri, null, null);
Log.d(TAG, "Removing " + numDeleted + " apks from repo " + repo.address);
Utils.DebugLog(TAG, "Removing " + numDeleted + " apks from repo " + repo.address);
}
}
private void removeAppsWithoutApks() {
int numDeleted = getContentResolver().delete(AppProvider.getNoApksUri(), null, null);
Log.d(TAG, "Removing " + numDeleted + " apks that don't have any apks");
Utils.DebugLog(TAG, "Removing " + numDeleted + " apks that don't have any apks");
}
/**

View File

@ -170,7 +170,7 @@ public final class Utils {
input.close();
return true;
} catch (IOException e) {
e.printStackTrace();
Log.e(TAG, "I/O error when copying a file", e);
return false;
}
}
@ -219,7 +219,8 @@ public final class Utils {
"4.4", // 19
"4.4W", // 20
"5.0", // 21
"5.1" // 22
"5.1", // 22
"6.0" // 23
};
public static String getAndroidVersionName(int sdkLevel) {
@ -251,7 +252,7 @@ public final class Utils {
eventType = xml.nextToken();
}
} catch (PackageManager.NameNotFoundException | IOException | XmlPullParserException e) {
e.printStackTrace();
Log.e(TAG, "Could not get min/max sdk version", e);
}
return 0;
}
@ -343,6 +344,8 @@ public final class Utils {
}
public static String calcFingerprint(Certificate cert) {
if (cert == null)
return null;
try {
return calcFingerprint(cert.getEncoded());
} catch (CertificateEncodingException e) {
@ -351,6 +354,8 @@ public final class Utils {
}
public static String calcFingerprint(byte[] key) {
if (key == null)
return null;
String ret = null;
if (key.length < 256) {
Log.e(TAG, "key was shorter than 256 bytes (" + key.length + "), cannot be valid!");
@ -368,8 +373,7 @@ public final class Utils {
ret = formatter.toString();
formatter.close();
} catch (Exception e) {
Log.w(TAG, "Unable to get certificate fingerprint.\n"
+ Log.getStackTraceString(e));
Log.w(TAG, "Unable to get certificate fingerprint", e);
}
return ret;
}
@ -639,21 +643,33 @@ public final class Utils {
}
if (startsWith != null) {
Log.i(TAG, "Cleaning up files in " + directory + " that start with \"" + startsWith + "\"");
DebugLog(TAG, "Cleaning up files in " + directory + " that start with \"" + startsWith + "\"");
}
if (endsWith != null) {
Log.i(TAG, "Cleaning up files in " + directory + " that end with \"" + endsWith + "\"");
DebugLog(TAG, "Cleaning up files in " + directory + " that end with \"" + endsWith + "\"");
}
for (File f : files) {
if ((startsWith != null && f.getName().startsWith(startsWith))
|| (endsWith != null && f.getName().endsWith(endsWith))) {
if (!f.delete()) {
Log.i(TAG, "Couldn't delete cache file " + f);
Log.w(TAG, "Couldn't delete cache file " + f);
}
}
}
}
public static void DebugLog(String tag, String msg) {
if (BuildConfig.DEBUG) {
Log.d(tag, msg);
}
}
public static void DebugLog(String tag, String msg, Throwable tr) {
if (BuildConfig.DEBUG) {
Log.d(tag, msg, tr);
}
}
}

View File

@ -59,9 +59,7 @@ public class FileCompat extends Compatibility {
dest.getAbsolutePath()
};
try {
if (BuildConfig.DEBUG) {
Log.d(TAG, "Executing command: " + commands[0] + " " + commands[1] + " " + commands[2]);
}
Utils.DebugLog(TAG, "Executing command: " + commands[0] + " " + commands[1] + " " + commands[2]);
Process proc = Runtime.getRuntime().exec(commands);
Utils.consumeStream(proc.getInputStream());
Utils.consumeStream(proc.getErrorStream());
@ -78,7 +76,7 @@ public class FileCompat extends Compatibility {
} catch (Exception e) {
// Should catch more specific exceptions than just "Exception" here, but there are
// some which come from libcore.io.Libcore, which we don't have access to at compile time.
Log.e(TAG, "Could not symlink " + source.getAbsolutePath() + " to " + dest.getAbsolutePath() + ": " + e.getMessage());
Log.e(TAG, "Could not symlink " + source.getAbsolutePath() + " to " + dest.getAbsolutePath(), e);
}
}
@ -109,9 +107,7 @@ public class FileCompat extends Compatibility {
};
try {
if (BuildConfig.DEBUG) {
Log.d(TAG, "Executing following command: " + args[0] + " " + args[1] + " " + args[2]);
}
Utils.DebugLog(TAG, "Executing following command: " + args[0] + " " + args[1] + " " + args[2]);
Process proc = Runtime.getRuntime().exec(args);
Utils.consumeStream(proc.getInputStream());
Utils.consumeStream(proc.getErrorStream());

View File

@ -4,6 +4,8 @@ import android.annotation.TargetApi;
import android.content.pm.PackageManager;
import android.util.Log;
import org.fdroid.fdroid.Utils;
public class PackageManagerCompat extends Compatibility {
private static final String TAG = "PackageManagerCompat";
@ -13,8 +15,7 @@ public class PackageManagerCompat extends Compatibility {
if (!hasApi(11)) return;
try {
mPm.setInstallerPackageName(packageName, "org.fdroid.fdroid");
Log.d(TAG, "Installer package name for " +
packageName + " set successfully");
Utils.DebugLog(TAG, "Installer package name for " + packageName + " set successfully");
} catch (Exception e) {
// Many problems can occur:
// * App wasn't installed due to incompatibility

View File

@ -14,6 +14,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.fdroid.fdroid.Utils;
public class ApkProvider extends FDroidProvider {
private static final String TAG = "ApkProvider";
@ -427,7 +429,7 @@ public class ApkProvider extends FDroidProvider {
for (Map.Entry<String, String> repoField : REPO_FIELDS.entrySet()) {
final String field = repoField.getKey();
if (values.containsKey(field)) {
Log.i(TAG, "Cannot insert/update '" + field + "' field " +
Utils.DebugLog(TAG, "Cannot insert/update '" + field + "' field " +
"on apk table, as it belongs to the repo table. " +
"This field will be ignored.");
values.remove(field);

View File

@ -102,6 +102,11 @@ public class App extends ValueObject implements Comparable<App> {
public Apk installedApk; // might be null if not installed
public boolean system;
public boolean updatedSystemApp;
public boolean uninstallable;
@Override
public int compareTo(App app) {
return name.compareToIgnoreCase(app.name);
@ -236,7 +241,7 @@ public class App extends ValueObject implements Comparable<App> {
PackageManager.GET_META_DATA);
installerPackageLabel = installerAppInfo.loadLabel(pm);
} catch (PackageManager.NameNotFoundException e) {
Log.d(TAG, e.getMessage());
Log.w(TAG, "Could not get app info", e);
}
}
if (TextUtils.isEmpty(installerPackageLabel))
@ -340,6 +345,9 @@ public class App extends ValueObject implements Comparable<App> {
apk.sig = Utils.hashBytes(fdroidSig, "md5");
this.installedApk = apk;
this.system = ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
this.updatedSystemApp = ((appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0);
this.uninstallable = !this.system || this.updatedSystemApp;
}
public boolean isValid() {

View File

@ -862,7 +862,7 @@ public class AppProvider extends FDroidProvider {
*/
private void updateSuggestedFromUpstream() {
Log.d(TAG, "Calculating suggested versions for all apps which specify an upstream version code.");
Utils.DebugLog(TAG, "Calculating suggested versions for all apps which specify an upstream version code.");
final String apk = DBHelper.TABLE_APK;
final String app = DBHelper.TABLE_APP;
@ -894,7 +894,7 @@ public class AppProvider extends FDroidProvider {
*/
private void updateCompatibleFlags() {
Log.d(TAG, "Calculating whether apps are compatible, based on whether any of their apks are compatible");
Utils.DebugLog(TAG, "Calculating whether apps are compatible, based on whether any of their apks are compatible");
final String apk = DBHelper.TABLE_APK;
final String app = DBHelper.TABLE_APP;
@ -938,7 +938,7 @@ public class AppProvider extends FDroidProvider {
*/
private void updateSuggestedFromLatest() {
Log.d(TAG, "Calculating suggested versions for all apps which don't specify an upstream version code.");
Utils.DebugLog(TAG, "Calculating suggested versions for all apps which don't specify an upstream version code.");
final String apk = DBHelper.TABLE_APK;
final String app = DBHelper.TABLE_APP;
@ -965,10 +965,10 @@ public class AppProvider extends FDroidProvider {
final String iconsDir = Utils.getIconsDir(context, 1.0);
final String iconsDirLarge = Utils.getIconsDir(context, 1.5);
String repoVersion = Integer.toString(Repo.VERSION_DENSITY_SPECIFIC_ICONS);
Log.d(TAG, "Updating icon paths for apps belonging to repos with version >= "
Utils.DebugLog(TAG, "Updating icon paths for apps belonging to repos with version >= "
+ repoVersion);
Log.d(TAG, "Using icons dir '" + iconsDir + "'");
Log.d(TAG, "Using large icons dir '" + iconsDirLarge + "'");
Utils.DebugLog(TAG, "Using icons dir '" + iconsDir + "'");
Utils.DebugLog(TAG, "Using large icons dir '" + iconsDirLarge + "'");
String query = getIconUpdateQuery();
final String[] params = {
repoVersion, iconsDir, Utils.FALLBACK_ICONS_DIR,

View File

@ -112,7 +112,7 @@ public class DBHelper extends SQLiteOpenHelper {
private void populateRepoNames(SQLiteDatabase db, int oldVersion) {
if (oldVersion < 37) {
Log.i(TAG, "Populating repo names from the url");
Utils.DebugLog(TAG, "Populating repo names from the url");
final String[] columns = { "address", "_id" };
Cursor cursor = db.query(TABLE_REPO, columns,
"name IS NULL OR name = ''", null, null, null, null);
@ -126,7 +126,7 @@ public class DBHelper extends SQLiteOpenHelper {
String name = Repo.addressToName(address);
values.put("name", name);
final String[] args = { Long.toString(id) };
Log.i(TAG, "Setting repo name to '" + name + "' for repo " + address);
Utils.DebugLog(TAG, "Setting repo name to '" + name + "' for repo " + address);
db.update(TABLE_REPO, values, "_id = ?", args);
cursor.moveToNext();
}
@ -139,7 +139,7 @@ public class DBHelper extends SQLiteOpenHelper {
private void renameRepoId(SQLiteDatabase db, int oldVersion) {
if (oldVersion < 36 && !columnExists(db, TABLE_REPO, "_id")) {
Log.d(TAG, "Renaming " + TABLE_REPO + ".id to _id");
Utils.DebugLog(TAG, "Renaming " + TABLE_REPO + ".id to _id");
db.beginTransaction();
try {
@ -181,7 +181,7 @@ public class DBHelper extends SQLiteOpenHelper {
db.execSQL("DROP TABLE " + tempTableName + ";");
db.setTransactionSuccessful();
} catch (Exception e) {
Log.e(TAG, "Error renaming id to _id: " + e.getMessage());
Log.e(TAG, "Error renaming id to _id", e);
}
db.endTransaction();
}
@ -255,15 +255,14 @@ public class DBHelper extends SQLiteOpenHelper {
values.put(RepoProvider.DataColumns.PRIORITY, priority);
values.put(RepoProvider.DataColumns.LAST_ETAG, (String) null);
Log.i(TAG, "Adding repository " + name);
Utils.DebugLog(TAG, "Adding repository " + name);
db.insert(TABLE_REPO, null, values);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.i(TAG, "Upgrading database from v" + oldVersion + " v"
+ newVersion);
Utils.DebugLog(TAG, "Upgrading database from v" + oldVersion + " v" + newVersion);
migrateRepoTable(db, oldVersion);
@ -407,35 +406,35 @@ public class DBHelper extends SQLiteOpenHelper {
private void addLastUpdatedToRepo(SQLiteDatabase db, int oldVersion) {
if (oldVersion < 35 && !columnExists(db, TABLE_REPO, "lastUpdated")) {
Log.i(TAG, "Adding lastUpdated column to " + TABLE_REPO);
Utils.DebugLog(TAG, "Adding lastUpdated column to " + TABLE_REPO);
db.execSQL("Alter table " + TABLE_REPO + " add column lastUpdated string");
}
}
private void addIsSwapToRepo(SQLiteDatabase db, int oldVersion) {
if (oldVersion < 47 && !columnExists(db, TABLE_REPO, "isSwap")) {
Log.i(TAG, "Adding isSwap field to " + TABLE_REPO + " table in db.");
Utils.DebugLog(TAG, "Adding isSwap field to " + TABLE_REPO + " table in db.");
db.execSQL("alter table " + TABLE_REPO + " add column isSwap boolean default 0;");
}
}
private void addChangelogToApp(SQLiteDatabase db, int oldVersion) {
if (oldVersion < 48 && !columnExists(db, TABLE_APP, "changelogURL")) {
Log.i(TAG, "Adding changelogURL column to " + TABLE_APP);
Utils.DebugLog(TAG, "Adding changelogURL column to " + TABLE_APP);
db.execSQL("alter table " + TABLE_APP + " add column changelogURL text");
}
}
private void addIconUrlLargeToApp(SQLiteDatabase db, int oldVersion) {
if (oldVersion < 49 && !columnExists(db, TABLE_APP, "iconUrlLarge")) {
Log.i(TAG, "Adding iconUrlLarge columns to " + TABLE_APP);
Utils.DebugLog(TAG, "Adding iconUrlLarge columns to " + TABLE_APP);
db.execSQL("alter table " + TABLE_APP + " add column iconUrlLarge text");
}
}
private void updateIconUrlLarge(SQLiteDatabase db, int oldVersion) {
if (oldVersion < 50) {
Log.i(TAG, "Recalculating app icon URLs so that the newly added large icons will get updated.");
Utils.DebugLog(TAG, "Recalculating app icon URLs so that the newly added large icons will get updated.");
AppProvider.UpgradeHelper.updateIconUrls(context, db);
clearRepoEtags(db);
}
@ -447,7 +446,7 @@ public class DBHelper extends SQLiteOpenHelper {
* they have changed since last update or not.
*/
private void clearRepoEtags(SQLiteDatabase db) {
Log.i(TAG, "Clearing repo etags, so next update will not be skipped with \"Repos up to date\".");
Utils.DebugLog(TAG, "Clearing repo etags, so next update will not be skipped with \"Repos up to date\".");
db.execSQL("update " + TABLE_REPO + " set lastetag = NULL");
}
@ -476,13 +475,13 @@ public class DBHelper extends SQLiteOpenHelper {
}
private void createInstalledApp(SQLiteDatabase db) {
Log.d(TAG, "Creating 'installed app' database table.");
Utils.DebugLog(TAG, "Creating 'installed app' database table.");
db.execSQL(CREATE_TABLE_INSTALLED_APP);
}
private void addAppLabelToInstalledCache(SQLiteDatabase db, int oldVersion) {
if (oldVersion < 45) {
Log.i(TAG, "Adding applicationLabel to installed app table. " +
Utils.DebugLog(TAG, "Adding applicationLabel to installed app table. " +
"Turns out we will need to repopulate the cache after doing this, " +
"so just dropping and recreating the table (instead of altering and adding a column). " +
"This will force the entire cache to be rebuilt, including app names.");

View File

@ -13,6 +13,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.fdroid.fdroid.Utils;
/**
* Compares what is in the fdroid_installedApp SQLite database table with the package
* info that we can gleam from the {@link android.content.pm.PackageManager}. If there
@ -64,13 +66,13 @@ public class InstalledAppCacheUpdater {
updateCache();
long duration = System.currentTimeMillis() - startTime;
Log.d(TAG, "Took " + duration + "ms to compare the installed app cache with PackageManager.");
Utils.DebugLog(TAG, "Took " + duration + "ms to compare the installed app cache with PackageManager.");
return hasChanged();
}
protected void notifyProviders() {
Log.i(TAG, "Installed app cache has changed, notifying content providers (so they can update the relevant views).");
Utils.DebugLog(TAG, "Installed app cache has changed, notifying content providers (so they can update the relevant views).");
context.getContentResolver().notifyChange(AppProvider.getContentUri(), null);
context.getContentResolver().notifyChange(ApkProvider.getContentUri(), null);
}
@ -96,7 +98,7 @@ public class InstalledAppCacheUpdater {
if (ops.size() > 0) {
try {
context.getContentResolver().applyBatch(InstalledAppProvider.getAuthority(), ops);
Log.d(TAG, "Finished executing " + ops.size() + " CRUD operations on installed app cache.");
Utils.DebugLog(TAG, "Finished executing " + ops.size() + " CRUD operations on installed app cache.");
} catch (RemoteException | OperationApplicationException e) {
Log.e(TAG, "Error updating installed app cache: " + e);
}
@ -126,7 +128,7 @@ public class InstalledAppCacheUpdater {
private List<ContentProviderOperation> insertIntoCache(List<PackageInfo> appsToInsert) {
List<ContentProviderOperation> ops = new ArrayList<>(appsToInsert.size());
if (appsToInsert.size() > 0) {
Log.d(TAG, "Preparing to cache installed info for " + appsToInsert.size() + " new apps.");
Utils.DebugLog(TAG, "Preparing to cache installed info for " + appsToInsert.size() + " new apps.");
Uri uri = InstalledAppProvider.getContentUri();
for (PackageInfo info : appsToInsert) {
ContentProviderOperation op = ContentProviderOperation.newInsert(uri)
@ -145,7 +147,7 @@ public class InstalledAppCacheUpdater {
private List<ContentProviderOperation> deleteFromCache(List<String> appIds) {
List<ContentProviderOperation> ops = new ArrayList<>(appIds.size());
if (appIds.size() > 0) {
Log.d(TAG, "Preparing to remove " + appIds.size() + " apps from the installed app cache.");
Utils.DebugLog(TAG, "Preparing to remove " + appIds.size() + " apps from the installed app cache.");
for (final String appId : appIds) {
Uri uri = InstalledAppProvider.getAppUri(appId);
ops.add(ContentProviderOperation.newDelete(uri).build());

View File

@ -11,6 +11,7 @@ import android.net.Uri;
import android.util.Log;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.Utils;
import java.util.HashMap;
import java.util.Map;
@ -99,10 +100,8 @@ public class InstalledAppProvider extends FDroidProvider {
try {
appInfo = pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA);
return appInfo.loadLabel(pm).toString();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (Resources.NotFoundException e) {
Log.d(TAG, "getApplicationLabel: " + e.getMessage());
} catch (PackageManager.NameNotFoundException | Resources.NotFoundException e) {
Utils.DebugLog(TAG, "Could not get application label", e);
}
return packageName; // all else fails, return id
}

View File

@ -4,9 +4,9 @@ import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.localrepo.peers.WifiPeer;
import org.fdroid.fdroid.views.swap.SwapWorkflowActivity;
@ -46,7 +46,7 @@ public class NewRepoConfig {
return;
}
Log.d(TAG, "Parsing incoming intent looking for repo: " + incomingUri);
Utils.DebugLog(TAG, "Parsing incoming intent looking for repo: " + incomingUri);
// scheme and host should only ever be pure ASCII aka Locale.ENGLISH
String scheme = uri.getScheme();

View File

@ -104,7 +104,7 @@ public class Repo extends ValueObject {
/**
* If we haven't run an update for this repo yet, then the name
* will be unknown, in which case we will just take a guess at an
* appropriate name based on the url (e.g. "fdroid.org/archive")
* appropriate name based on the url (e.g. "f-droid.org/archive")
*/
public static String addressToName(String address) {
String tempName;

View File

@ -186,11 +186,11 @@ public class RepoProvider extends FDroidProvider {
Uri apkUri = ApkProvider.getRepoUri(repo.getId());
ContentResolver resolver = context.getContentResolver();
int apkCount = resolver.delete(apkUri, null, null);
Log.d(TAG, "Removed " + apkCount + " apks from repo " + repo.name);
Utils.DebugLog(TAG, "Removed " + apkCount + " apks from repo " + repo.name);
Uri appUri = AppProvider.getNoApksUri();
int appCount = resolver.delete(appUri, null, null);
Log.d(TAG, "Removed " + appCount + " apps with no apks.");
Utils.DebugLog(TAG, "Removed " + appCount + " apps with no apks.");
}
public static int countAppsForRepo(Context context, long repoId) {
@ -337,7 +337,7 @@ public class RepoProvider extends FDroidProvider {
}
long id = write().insertOrThrow(getTableName(), null, values);
Log.i(TAG, "Inserted repo. Notifying provider change: '" + uri + "'.");
Utils.DebugLog(TAG, "Inserted repo. Notifying provider change: '" + uri + "'.");
getContext().getContentResolver().notifyChange(uri, null);
return getContentUri(id);
}
@ -361,7 +361,7 @@ public class RepoProvider extends FDroidProvider {
}
int rowsAffected = write().delete(getTableName(), where, whereArgs);
Log.i(TAG, "Deleted repos. Notifying provider change: '" + uri + "'.");
Utils.DebugLog(TAG, "Deleted repos. Notifying provider change: '" + uri + "'.");
getContext().getContentResolver().notifyChange(uri, null);
return rowsAffected;
}
@ -369,7 +369,7 @@ public class RepoProvider extends FDroidProvider {
@Override
public int update(Uri uri, ContentValues values, String where, String[] whereArgs) {
int numRows = write().update(getTableName(), values, where, whereArgs);
Log.i(TAG, "Updated repo. Notifying provider change: '" + uri + "'.");
Utils.DebugLog(TAG, "Updated repo. Notifying provider change: '" + uri + "'.");
getContext().getContentResolver().notifyChange(uri, null);
return numRows;
}

View File

@ -111,6 +111,16 @@ public class AppSecurityPermissions {
}
return null;
}
public int flags() {
if (Build.VERSION.SDK_INT < 17) return 0;
return flags;
}
public int priority() {
if (Build.VERSION.SDK_INT < 17) return 0;
return priority;
}
}
private static class MyPermissionInfo extends PermissionInfo {
@ -335,7 +345,7 @@ public class AppSecurityPermissions {
myPerm.mNew = newPerm;
permSet.add(myPerm);
} catch (NameNotFoundException e) {
Log.i(TAG, "Ignoring unknown permission:"+permName);
Log.i(TAG, "Ignoring unknown permission:" + permName);
}
}
}
@ -411,6 +421,7 @@ public class AppSecurityPermissions {
private PermissionItemView getPermissionItemView(MyPermissionGroupInfo grp,
MyPermissionInfo perm, boolean first, CharSequence newPermPrefix) {
PermissionItemView permView = (PermissionItemView) mInflater.inflate(
Build.VERSION.SDK_INT >= 17 &&
(perm.flags & PermissionInfo.FLAG_COSTS_MONEY) != 0
? R.layout.app_permission_item_money : R.layout.app_permission_item,
null);
@ -434,7 +445,8 @@ public class AppSecurityPermissions {
// Dangerous and normal permissions are always shown to the user if the permission
// is required, or it was previously granted
if ((isNormal || isDangerous) && (isRequired || wasGranted || isGranted)) {
if ((isNormal || isDangerous) && (isRequired || wasGranted || isGranted ||
Build.VERSION.SDK_INT < 16)) {
return true;
}
@ -452,11 +464,11 @@ public class AppSecurityPermissions {
PermissionGroupInfoComparator() {
}
public final int compare(MyPermissionGroupInfo a, MyPermissionGroupInfo b) {
if (((a.flags^b.flags)&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) {
return ((a.flags&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) ? -1 : 1;
if (((a.flags()^b.flags())&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) {
return ((a.flags()&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) ? -1 : 1;
}
if (a.priority != b.priority) {
return a.priority > b.priority ? -1 : 1;
if (a.priority() != b.priority()) {
return a.priority() > b.priority() ? -1 : 1;
}
return sCollator.compare(a.mLabel, b.mLabel);
}
@ -497,7 +509,7 @@ public class AppSecurityPermissions {
if (pInfo.mNew) {
addPermToList(group.mNewPermissions, pInfo);
}
if ((group.flags&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) {
if ((group.flags()&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) {
addPermToList(group.mPersonalPermissions, pInfo);
} else {
addPermToList(group.mDevicePermissions, pInfo);

View File

@ -102,7 +102,7 @@ abstract class InstallIntoSystem {
protected List<String> getCopyToSystemCommands() {
final List<String> commands = new ArrayList<>(2);
commands.add("cat " + context.getPackageCodePath() + " > " + getInstallPath() + ".tmp");
commands.add("chmod 655 " + getInstallPath() + ".tmp");
commands.add("chmod 644 " + getInstallPath() + ".tmp");
return commands;
}
@ -120,7 +120,7 @@ abstract class InstallIntoSystem {
@Override
protected String getSystemFolder() {
return "/system/app";
return "/system/app/";
}
}
@ -176,9 +176,10 @@ abstract class InstallIntoSystem {
@Override
protected List<String> getCopyToSystemCommands() {
List<String> commands = new ArrayList<>(3);
commands.add("mkdir " + getSystemFolder()); // create app directory if not existing
commands.add("mkdir -p " + getSystemFolder()); // create app directory if not existing
commands.add("chmod 755 " + getSystemFolder());
commands.add("cat " + context.getPackageCodePath() + " > " + getInstallPath() + ".tmp");
commands.add("chmod 655 " + getInstallPath() + ".tmp");
commands.add("chmod 644 " + getInstallPath() + ".tmp");
return commands;
}

View File

@ -107,7 +107,9 @@ public class InstallIntoSystemDialogActivity extends FragmentActivity {
protected void onPostExecute(Boolean probablyRoot) {
super.onPostExecute(probablyRoot);
if (probablyRoot) {
// TODO: remove false condition once the install into system
// process is stable - #294, #346, #347, #348
if (false && probablyRoot) {
// looks like we have root, at least su has a version number and is present
Intent installIntent = new Intent(context, InstallIntoSystemDialogActivity.class);

View File

@ -27,6 +27,7 @@ import android.content.pm.PackageManager;
import android.util.Log;
import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.Utils;
import java.io.File;
import java.util.List;
@ -107,7 +108,7 @@ abstract public class Installer {
boolean isSystemInstallerEnabled = Preferences.get().isSystemInstallerEnabled();
if (isSystemInstallerEnabled) {
if (hasSystemPermissions(activity, pm)) {
Log.d(TAG, "system permissions -> SystemInstaller");
Utils.DebugLog(TAG, "system permissions -> SystemInstaller");
try {
return new SystemInstaller(activity, pm, callback);
@ -123,7 +124,7 @@ abstract public class Installer {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
// Default installer on Android >= 4.0
try {
Log.d(TAG, "try default installer for Android >= 4");
Utils.DebugLog(TAG, "try default installer for Android >= 4");
return new DefaultInstallerSdk14(activity, pm, callback);
} catch (AndroidNotCompatibleException e) {
@ -132,7 +133,7 @@ abstract public class Installer {
} else {
// Default installer on Android < 4.0
try {
Log.d(TAG, "try default installer for Android < 4");
Utils.DebugLog(TAG, "try default installer for Android < 4");
return new DefaultInstaller(activity, pm, callback);
} catch (AndroidNotCompatibleException e) {

View File

@ -33,6 +33,7 @@ import android.support.v7.app.AlertDialog;
import android.util.Log;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.Utils;
import java.io.File;
import java.lang.reflect.Method;
@ -107,7 +108,7 @@ public class SystemInstaller extends Installer {
public void packageInstalled(String packageName, int returnCode) throws RemoteException {
// TODO: propagate other return codes?
if (returnCode == INSTALL_SUCCEEDED) {
Log.d(TAG, "Install succeeded");
Utils.DebugLog(TAG, "Install succeeded");
mCallback.onSuccess(InstallerCallback.OPERATION_INSTALL);
} else {
@ -125,7 +126,7 @@ public class SystemInstaller extends Installer {
public void packageDeleted(String packageName, int returnCode) throws RemoteException {
// TODO: propagate other return codes?
if (returnCode == DELETE_SUCCEEDED) {
Log.d(TAG, "Delete succeeded");
Utils.DebugLog(TAG, "Delete succeeded");
mCallback.onSuccess(InstallerCallback.OPERATION_DELETE);
} else {
@ -189,11 +190,20 @@ public class SystemInstaller extends Installer {
try {
appInfo = mPm.getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);
} catch (PackageManager.NameNotFoundException e) {
Log.d(TAG, "Failed to get ApplicationInfo for uninstalling");
Log.w(TAG, "Failed to get ApplicationInfo for uninstalling");
return;
}
final boolean isSystem = ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
final boolean isUpdate = ((appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0);
if (isSystem && !isUpdate) {
// Cannot remove system apps unless we're uninstalling updates
mCallback.onError(InstallerCallback.OPERATION_DELETE,
InstallerCallback.ERROR_CODE_OTHER);
return;
}
int messageId;
if (isUpdate) {
messageId = R.string.uninstall_update_confirm;
@ -268,69 +278,59 @@ public class SystemInstaller extends Installer {
public final int INSTALL_REPLACE_EXISTING = 2;
/**
* Following return codes are copied from Android 4.3 source code
* Following return codes are copied from Android 5.1 source code
*/
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} on
* success.
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} on success.
*/
public static final int INSTALL_SUCCEEDED = 1;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the package is already installed.
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the package is
* already installed.
*/
public static final int INSTALL_FAILED_ALREADY_EXISTS = -1;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the package archive file is invalid.
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the package archive
* file is invalid.
*/
public static final int INSTALL_FAILED_INVALID_APK = -2;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the URI passed in is invalid.
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the URI passed in
* is invalid.
*/
public static final int INSTALL_FAILED_INVALID_URI = -3;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the package manager service found that the device didn't have enough
* storage space to install the app.
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if the package manager
* service found that the device didn't have enough storage space to install the app.
*/
public static final int INSTALL_FAILED_INSUFFICIENT_STORAGE = -4;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* a package is already installed with the same name.
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if a
* package is already installed with the same name.
*/
public static final int INSTALL_FAILED_DUPLICATE_PACKAGE = -5;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the requested shared user does not exist.
*/
public static final int INSTALL_FAILED_NO_SHARED_USER = -6;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* a previously installed package of the same name has a different signature
* than the new package (and the old package's data was not removed).
@ -338,33 +338,29 @@ public class SystemInstaller extends Installer {
public static final int INSTALL_FAILED_UPDATE_INCOMPATIBLE = -7;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the new package is requested a shared user which is already installed on
* the device and does not have matching signature.
* the new package is requested a shared user which is already installed on the
* device and does not have matching signature.
*/
public static final int INSTALL_FAILED_SHARED_USER_INCOMPATIBLE = -8;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the new package uses a shared library that is not available.
*/
public static final int INSTALL_FAILED_MISSING_SHARED_LIBRARY = -9;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the new package uses a shared library that is not available.
*/
public static final int INSTALL_FAILED_REPLACE_COULDNT_DELETE = -10;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the new package failed while optimizing and validating its dex files,
* either because there was not enough storage or the validation failed.
@ -372,17 +368,15 @@ public class SystemInstaller extends Installer {
public static final int INSTALL_FAILED_DEXOPT = -11;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the new package failed because the current SDK version is older than that
* required by the package.
* the new package failed because the current SDK version is older than
* that required by the package.
*/
public static final int INSTALL_FAILED_OLDER_SDK = -12;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the new package failed because it contains a content provider with the
* same authority as a provider already installed in the system.
@ -390,17 +384,15 @@ public class SystemInstaller extends Installer {
public static final int INSTALL_FAILED_CONFLICTING_PROVIDER = -13;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the new package failed because the current SDK version is newer than that
* required by the package.
* the new package failed because the current SDK version is newer than
* that required by the package.
*/
public static final int INSTALL_FAILED_NEWER_SDK = -14;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the new package failed because it has specified that it is a test-only
* package and the caller has not supplied the {@link #INSTALL_ALLOW_TEST}
@ -409,17 +401,15 @@ public class SystemInstaller extends Installer {
public static final int INSTALL_FAILED_TEST_ONLY = -15;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the package being installed contains native code, but none that is
* compatible with the the device's CPU_ABI.
* compatible with the device's CPU_ABI.
*/
public static final int INSTALL_FAILED_CPU_ABI_INCOMPATIBLE = -16;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the new package uses a feature that is not available.
*/
@ -427,121 +417,181 @@ public class SystemInstaller extends Installer {
// ------ Errors related to sdcard
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* a secure container mount point couldn't be accessed on external media.
*/
public static final int INSTALL_FAILED_CONTAINER_ERROR = -18;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the new package couldn't be installed in the specified install location.
* the new package couldn't be installed in the specified install
* location.
*/
public static final int INSTALL_FAILED_INVALID_INSTALL_LOCATION = -19;
/**
* Installation return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the new package couldn't be installed in the specified install location
* because the media is not available.
* the new package couldn't be installed in the specified install
* location because the media is not available.
*/
public static final int INSTALL_FAILED_MEDIA_UNAVAILABLE = -20;
/**
* Installation parse return code: this is passed to the
* {@link IPackageInstallObserver} by
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the parser was given a path that is not a file, or does not end with the
* expected '.apk' extension.
* the new package couldn't be installed because the verification timed out.
*/
public static final int INSTALL_FAILED_VERIFICATION_TIMEOUT = -21;
/**
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the new package couldn't be installed because the verification did not succeed.
*/
public static final int INSTALL_FAILED_VERIFICATION_FAILURE = -22;
/**
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the package changed from what the calling program expected.
*/
public static final int INSTALL_FAILED_PACKAGE_CHANGED = -23;
/**
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the new package is assigned a different UID than it previously held.
*/
public static final int INSTALL_FAILED_UID_CHANGED = -24;
/**
* Installation return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the new package has an older version code than the currently installed package.
*/
public static final int INSTALL_FAILED_VERSION_DOWNGRADE = -25;
/**
* Installation parse return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
* if the parser was given a path that is not a file, or does not end with the expected
* '.apk' extension.
*/
public static final int INSTALL_PARSE_FAILED_NOT_APK = -100;
/**
* Installation parse return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the parser was unable to retrieve the AndroidManifest.xml file.
* Installation parse return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
* if the parser was unable to retrieve the AndroidManifest.xml file.
*/
public static final int INSTALL_PARSE_FAILED_BAD_MANIFEST = -101;
/**
* Installation parse return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the parser encountered an unexpected exception.
* Installation parse return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
* if the parser encountered an unexpected exception.
*/
public static final int INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION = -102;
/**
* Installation parse return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the parser did not find any certificates in the .apk.
* Installation parse return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
* if the parser did not find any certificates in the .apk.
*/
public static final int INSTALL_PARSE_FAILED_NO_CERTIFICATES = -103;
/**
* Installation parse return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the parser found inconsistent certificates on the files in the .apk.
* Installation parse return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
* if the parser found inconsistent certificates on the files in the .apk.
*/
public static final int INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES = -104;
/**
* Installation parse return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the parser encountered a CertificateEncodingException in one of the files
* in the .apk.
* Installation parse return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
* if the parser encountered a CertificateEncodingException in one of the
* files in the .apk.
*/
public static final int INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING = -105;
/**
* Installation parse return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the parser encountered a bad or missing package name in the manifest.
* Installation parse return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
* if the parser encountered a bad or missing package name in the manifest.
*/
public static final int INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME = -106;
/**
* Installation parse return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the parser encountered a bad shared user id name in the manifest.
* Installation parse return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
* if the parser encountered a bad shared user id name in the manifest.
*/
public static final int INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID = -107;
/**
* Installation parse return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the parser encountered some structural problem in the manifest.
* Installation parse return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
* if the parser encountered some structural problem in the manifest.
*/
public static final int INSTALL_PARSE_FAILED_MANIFEST_MALFORMED = -108;
/**
* Installation parse return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the parser did not find any actionable tags (instrumentation or
* application) in the manifest.
* Installation parse return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
* if the parser did not find any actionable tags (instrumentation or application)
* in the manifest.
*/
public static final int INSTALL_PARSE_FAILED_MANIFEST_EMPTY = -109;
/**
* Installation failed return code: this is passed to the
* {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
* the system failed to install the package because of system issues.
* Installation failed return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
* if the system failed to install the package because of system issues.
*/
public static final int INSTALL_FAILED_INTERNAL_ERROR = -110;
/**
* Installation failed return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
* if the system failed to install the package because the user is restricted from installing
* apps.
*/
public static final int INSTALL_FAILED_USER_RESTRICTED = -111;
/**
* Installation failed return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
* if the system failed to install the package because it is attempting to define a
* permission that is already defined by some existing package.
*
* <p>The package name of the app which has already defined the permission is passed to
* a {@link PackageInstallObserver}, if any, as the {@link #EXTRA_EXISTING_PACKAGE}
* string extra; and the name of the permission being redefined is passed in the
* {@link #EXTRA_EXISTING_PERMISSION} string extra.
*/
public static final int INSTALL_FAILED_DUPLICATE_PERMISSION = -112;
/**
* Installation failed return code: this is passed to the {@link IPackageInstallObserver} by
* {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
* if the system failed to install the package because its packaged native code did not
* match any of the ABIs supported by the system.
*/
public static final int INSTALL_FAILED_NO_MATCHING_ABIS = -113;
/**
* Internal return code for NativeLibraryHelper methods to indicate that the package
* being processed did not contain any native code. This is placed here only so that
* it can belong to the same value space as the other install failure codes.
*/
public static final int NO_NATIVE_LIBRARIES = -114;
public static final int INSTALL_FAILED_ABORTED = -115;
/**
* Return code for when package deletion succeeds. This is passed to the
* {@link IPackageDeleteObserver} by {@link #deletePackage()} if the system
@ -571,4 +621,14 @@ public class SystemInstaller extends Installer {
*/
public static final int DELETE_FAILED_USER_RESTRICTED = -3;
/**
* Deletion failed return code: this is passed to the
* {@link IPackageDeleteObserver} by {@link #deletePackage()} if the system
* failed to delete the package because a profile
* or device owner has marked the package as uninstallable.
*/
public static final int DELETE_FAILED_OWNER_BLOCKED = -4;
public static final int DELETE_FAILED_ABORTED = -5;
}

View File

@ -4,11 +4,13 @@ import android.content.Context;
import android.util.Log;
import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.Utils;
import org.spongycastle.asn1.ASN1Sequence;
import org.spongycastle.asn1.x500.X500Name;
import org.spongycastle.asn1.x509.GeneralName;
import org.spongycastle.asn1.x509.GeneralNames;
import org.spongycastle.asn1.x509.SubjectPublicKeyInfo;
import org.spongycastle.asn1.x509.Time;
import org.spongycastle.asn1.x509.X509Extension;
import org.spongycastle.cert.X509CertificateHolder;
import org.spongycastle.cert.X509v3CertificateBuilder;
@ -40,6 +42,8 @@ import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import javax.net.ssl.KeyManager;
import javax.net.ssl.KeyManagerFactory;
@ -84,15 +88,15 @@ public class LocalRepoKeyStore {
try {
File appKeyStoreDir = context.getDir("keystore", Context.MODE_PRIVATE);
Log.d(TAG, "Generating LocalRepoKeyStore instance: " + appKeyStoreDir.getAbsolutePath());
Utils.DebugLog(TAG, "Generating LocalRepoKeyStore instance: " + appKeyStoreDir.getAbsolutePath());
this.keyStoreFile = new File(appKeyStoreDir, "kerplapp.bks");
Log.d(TAG, "Using default KeyStore type: " + KeyStore.getDefaultType());
Utils.DebugLog(TAG, "Using default KeyStore type: " + KeyStore.getDefaultType());
this.keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
if (keyStoreFile.exists()) {
try {
Log.d(TAG, "Keystore already exists, loading...");
Utils.DebugLog(TAG, "Keystore already exists, loading...");
keyStore.load(new FileInputStream(keyStoreFile), "".toCharArray());
} catch (IOException e) {
Log.e(TAG, "Error while loading existing keystore. Will delete and create a new one.");
@ -109,7 +113,7 @@ public class LocalRepoKeyStore {
// If there isn't a persisted BKS keystore on disk we need to
// create a new empty keystore
// Init a new keystore with a blank passphrase
Log.d(TAG, "Keystore doesn't exist, creating...");
Utils.DebugLog(TAG, "Keystore doesn't exist, creating...");
keyStore.load(null, "".toCharArray());
}
@ -155,8 +159,11 @@ public class LocalRepoKeyStore {
wrappedKeyManager
};
} catch (UnrecoverableKeyException | KeyStoreException | NoSuchAlgorithmException | CertificateException | OperatorCreationException | IOException e) {
Log.e(TAG, "Error loading keystore: " + e.getMessage());
Log.e(TAG, Log.getStackTraceString(e));
Log.e(TAG, "Error loading keystore", e);
// TODO: Remove once we have a proper fix for #334
} catch (IllegalArgumentException e) {
Log.e(TAG, "Error loading keystore", e);
Log.e(TAG, "See https://gitlab.com/fdroid/fdroidclient/issues/334");
}
}
@ -177,8 +184,7 @@ public class LocalRepoKeyStore {
FDroidApp.ipAddressString);
addToStore(HTTP_CERT_ALIAS, kerplappKeypair, indexCert);
} catch (Exception e) {
Log.e(TAG, "Failed to setup HTTPS certificate: " + e);
Log.e(TAG, Log.getStackTraceString(e));
Log.e(TAG, "Failed to setup HTTPS certificate", e);
}
}
@ -207,8 +213,7 @@ public class LocalRepoKeyStore {
zipSigner.signZip(input.getAbsolutePath(), output.getAbsolutePath());
} catch (ClassNotFoundException | IllegalAccessException | InstantiationException | GeneralSecurityException | IOException e) {
Log.e(TAG, "Unable to sign local repo index: " + e);
Log.e(TAG, Log.getStackTraceString(e));
Log.e(TAG, "Unable to sign local repo index", e);
}
}
@ -237,8 +242,7 @@ public class LocalRepoKeyStore {
if (key instanceof PrivateKey)
return keyStore.getCertificate(INDEX_CERT_ALIAS);
} catch (GeneralSecurityException e) {
Log.e(TAG, "Unable to get certificate for local repo: " + e);
Log.e(TAG, Log.getStackTraceString(e));
Log.e(TAG, "Unable to get certificate for local repo", e);
}
return null;
}
@ -290,17 +294,22 @@ public class LocalRepoKeyStore {
SubjectPublicKeyInfo subPubKeyInfo = new SubjectPublicKeyInfo(
ASN1Sequence.getInstance(pubKey.getEncoded()));
Date startDate = new Date(); // now
Date now = new Date(); // now
Calendar c = Calendar.getInstance();
c.setTime(startDate);
/* force it to use a English/Gregorian dates for the cert, hardly anyone
ever looks at the cert metadata anyway, and its very likely that they
understand English/Gregorian dates */
Calendar c = new GregorianCalendar(Locale.ENGLISH);
c.setTime(now);
c.add(Calendar.YEAR, 1);
Date endDate = c.getTime();
Time startTime = new Time(now, Locale.ENGLISH);
Time endTime = new Time(c.getTime(), Locale.ENGLISH);
X509v3CertificateBuilder v3CertGen = new X509v3CertificateBuilder(
subject,
BigInteger.valueOf(rand.nextLong()),
startDate, endDate,
startTime,
endTime,
subject,
subPubKeyInfo);

View File

@ -142,7 +142,7 @@ public class LocalRepoManager {
if (Utils.symlinkOrCopyFile(apkFile, fdroidApkLink))
fdroidClientURL = "/" + fdroidApkLink.getName();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
Log.e(TAG, "Could not set up F-Droid apk in the webroot", e);
}
return fdroidClientURL;
}
@ -182,8 +182,7 @@ public class LocalRepoManager {
symlinkEntireWebRootElsewhere("../../", repoDirCaps);
} catch (IOException e) {
Log.e(TAG, "Error writing local repo index: " + e.getMessage());
Log.e(TAG, Log.getStackTraceString(e));
Log.e(TAG, "Error writing local repo index", e);
}
}
@ -262,11 +261,10 @@ public class LocalRepoManager {
PackageInfo packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_META_DATA);
app.icon = getIconFile(packageName, packageInfo.versionCode).getName();
} catch (PackageManager.NameNotFoundException | CertificateEncodingException | IOException e) {
Log.e(TAG, "Error adding app to local repo: " + e.getMessage());
Log.e(TAG, Log.getStackTraceString(e));
Log.e(TAG, "Error adding app to local repo", e);
return;
}
Log.i(TAG, "apps.put: " + packageName);
Utils.DebugLog(TAG, "apps.put: " + packageName);
apps.put(packageName, app);
}
@ -282,7 +280,7 @@ public class LocalRepoManager {
appInfo = pm.getApplicationInfo(app.id, PackageManager.GET_META_DATA);
copyIconToRepo(appInfo.loadIcon(pm), app.id, app.installedApk.vercode);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
Log.e(TAG, "Error getting app icon", e);
}
}
}
@ -309,7 +307,7 @@ public class LocalRepoManager {
bitmap.compress(CompressFormat.PNG, 100, out);
out.close();
} catch (Exception e) {
e.printStackTrace();
Log.e(TAG, "Error copying icon to repo", e);
}
}
@ -484,7 +482,7 @@ public class LocalRepoManager {
try {
new IndexXmlBuilder(context, apps).build(new FileWriter(xmlIndex));
} catch (Exception e) {
Log.e(TAG, Log.getStackTraceString(e));
Log.e(TAG, "Could not write index jar", e);
Toast.makeText(context, R.string.failed_to_create_index, Toast.LENGTH_LONG).show();
return;
}

View File

@ -140,10 +140,10 @@ public class ApkDownloader implements AsyncDownloadWrapper.Listener {
private boolean verifyOrDelete(@NonNull final File apkFile) {
if (apkFile.exists()) {
if (hashMatches(apkFile)) {
Log.d(TAG, "Using cached apk at " + apkFile);
Utils.DebugLog(TAG, "Using cached apk at " + apkFile);
return true;
}
Log.d(TAG, "Not using cached apk at " + apkFile + "(hash doesn't match, will delete file)");
Utils.DebugLog(TAG, "Not using cached apk at " + apkFile + "(hash doesn't match, will delete file)");
delete(apkFile);
}
return false;
@ -190,7 +190,7 @@ public class ApkDownloader implements AsyncDownloadWrapper.Listener {
}
String remoteAddress = Utils.getApkUrl(repoAddress, curApk);
Log.d(TAG, "Downloading apk from " + remoteAddress + " to " + localFile);
Utils.DebugLog(TAG, "Downloading apk from " + remoteAddress + " to " + localFile);
try {
Downloader downloader = DownloaderFactory.create(context, remoteAddress, localFile);
@ -240,7 +240,7 @@ public class ApkDownloader implements AsyncDownloadWrapper.Listener {
private void cacheIfRequired() {
if (Preferences.get().shouldCacheApks()) {
Log.i(TAG, "Copying .apk file to cache at " + potentiallyCachedFile.getAbsolutePath());
Utils.DebugLog(TAG, "Copying .apk file to cache at " + potentiallyCachedFile.getAbsolutePath());
Utils.copy(localFile, potentiallyCachedFile);
}
}
@ -255,7 +255,7 @@ public class ApkDownloader implements AsyncDownloadWrapper.Listener {
cacheIfRequired();
Log.d(TAG, "Download finished: " + localFile);
Utils.DebugLog(TAG, "Download finished: " + localFile);
prepareApkFileAndSendCompleteMessage();
}

View File

@ -95,7 +95,7 @@ public class AsyncDownloadWrapper extends Handler {
} catch (InterruptedException e) {
sendMessage(MSG_DOWNLOAD_CANCELLED);
} catch (IOException e) {
Log.e(TAG, e.getMessage() + ": " + Log.getStackTraceString(e));
Log.e(TAG, "I/O exception in download thread", e);
Bundle data = new Bundle(1);
data.putString(MSG_DATA, e.getLocalizedMessage());
Message message = new Message();

View File

@ -99,7 +99,7 @@ public abstract class Downloader {
public abstract boolean isCached();
protected void downloadFromStream() throws IOException, InterruptedException {
Log.d(TAG, "Downloading from stream");
Utils.DebugLog(TAG, "Downloading from stream");
InputStream input = null;
try {
input = getInputStream();
@ -133,7 +133,7 @@ public abstract class Downloader {
*/
private void throwExceptionIfInterrupted() throws InterruptedException {
if (Thread.interrupted()) {
Log.d(TAG, "Received interrupt, cancelling download");
Utils.DebugLog(TAG, "Received interrupt, cancelling download");
throw new InterruptedException();
}
}
@ -160,7 +160,7 @@ public abstract class Downloader {
throwExceptionIfInterrupted();
if (count == -1) {
Log.d(TAG, "Finished downloading from stream");
Utils.DebugLog(TAG, "Finished downloading from stream");
break;
}

View File

@ -6,6 +6,7 @@ import android.util.Log;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.Utils;
import javax.net.ssl.SSLHandshakeException;
import java.io.File;
@ -96,14 +97,14 @@ public class HttpDownloader extends Downloader {
protected void doDownload() throws IOException, InterruptedException {
if (wantToCheckCache()) {
setupCacheCheck();
Log.i(TAG, "Checking cached status of " + sourceUrl);
Utils.DebugLog(TAG, "Checking cached status of " + sourceUrl);
statusCode = connection.getResponseCode();
}
if (isCached()) {
Log.i(TAG, sourceUrl + " is cached, so not downloading (HTTP " + statusCode + ")");
Utils.DebugLog(TAG, sourceUrl + " is cached, so not downloading (HTTP " + statusCode + ")");
} else {
Log.i(TAG, "Downloading from " + sourceUrl);
Utils.DebugLog(TAG, "Downloading from " + sourceUrl);
downloadFromStream();
updateCacheCheck();
}

View File

@ -6,7 +6,9 @@ import android.net.Uri;
import android.util.Log;
import android.webkit.MimeTypeMap;
import org.fdroid.fdroid.BuildConfig;
import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.localrepo.LocalRepoKeyStore;
import org.fdroid.fdroid.views.swap.SwapWorkflowActivity;
@ -34,11 +36,9 @@ public class LocalHTTPD extends NanoHTTPD {
private final Context context;
private final File webRoot;
private final boolean logRequests;
public LocalHTTPD(Context context, String hostname, int port, File webRoot, boolean useHttps) {
super(hostname, port);
this.logRequests = false;
this.webRoot = webRoot;
this.context = context.getApplicationContext();
if (useHttps)
@ -73,8 +73,8 @@ public class LocalHTTPD extends NanoHTTPD {
}
private void requestSwap(String repo) {
Log.d(TAG, "Received request to swap with " + repo);
Log.d(TAG, "Showing confirm screen to check whether that is okay with the user.");
Utils.DebugLog(TAG, "Received request to swap with " + repo);
Utils.DebugLog(TAG, "Showing confirm screen to check whether that is okay with the user.");
Uri repoUri = Uri.parse(repo);
Intent intent = new Intent(context, SwapWorkflowActivity.class);
@ -92,7 +92,7 @@ public class LocalHTTPD extends NanoHTTPD {
try {
session.parseBody(new HashMap<String, String>());
} catch (IOException e) {
Log.e(TAG, e.getMessage());
Log.e(TAG, "An error occured while parsing the POST body", e);
return new Response(Response.Status.INTERNAL_ERROR, MIME_PLAINTEXT, "Internal server error, check logcat on server for details.");
} catch (ResponseException re) {
return new Response(re.getStatus(), MIME_PLAINTEXT, re.getMessage());
@ -123,18 +123,18 @@ public class LocalHTTPD extends NanoHTTPD {
Map<String, String> parms = session.getParms();
String uri = session.getUri();
if (logRequests) {
Log.i(TAG, session.getMethod() + " '" + uri + "' ");
if (BuildConfig.DEBUG) {
Utils.DebugLog(TAG, session.getMethod() + " '" + uri + "' ");
Iterator<String> e = header.keySet().iterator();
while (e.hasNext()) {
String value = e.next();
Log.i(TAG, " HDR: '" + value + "' = '" + header.get(value) + "'");
Utils.DebugLog(TAG, " HDR: '" + value + "' = '" + header.get(value) + "'");
}
e = parms.keySet().iterator();
while (e.hasNext()) {
String value = e.next();
Log.i(TAG, " PRM: '" + value + "' = '" + parms.get(value) + "'");
Utils.DebugLog(TAG, " PRM: '" + value + "' = '" + parms.get(value) + "'");
}
}
@ -154,8 +154,7 @@ public class LocalHTTPD extends NanoHTTPD {
localRepoKeyStore.getKeyManagers());
makeSecure(factory);
} catch (LocalRepoKeyStore.InitException | IOException e) {
Log.e(TAG, "Could not enable HTTPS: " + e.getMessage());
Log.e(TAG, Log.getStackTraceString(e));
Log.e(TAG, "Could not enable HTTPS", e);
}
}

View File

@ -48,7 +48,7 @@ public class WifiStateChangeService extends Service {
if (ni == null || ni.isConnected()) {
/* started on app start or from WifiStateChangeReceiver,
NetworkInfo is only passed via WifiStateChangeReceiver */
Log.i(TAG, "ni == " + ni + " wifiState == " + printWifiState(wifiState));
Utils.DebugLog(TAG, "ni == " + ni + " wifiState == " + printWifiState(wifiState));
if (wifiState == WifiManager.WIFI_STATE_ENABLED
|| wifiState == WifiManager.WIFI_STATE_DISABLING // might be switching to hotspot
|| wifiState == WifiManager.WIFI_STATE_DISABLED // might be hotspot
@ -93,7 +93,7 @@ public class WifiStateChangeService extends Service {
if (FDroidApp.ipAddressString == null) {
Thread.sleep(1000);
if (BuildConfig.DEBUG) {
Log.d(TAG, "waiting for an IP address...");
Utils.DebugLog(TAG, "waiting for an IP address...");
}
}
}
@ -147,11 +147,8 @@ public class WifiStateChangeService extends Service {
if (Preferences.get().isLocalRepoHttpsEnabled())
localRepoKeyStore.setupHTTPSCertificate();
} catch (LocalRepoKeyStore.InitException e) {
Log.e(TAG, "Unable to configure a fingerprint or HTTPS for the local repo: " + e.getMessage());
Log.e(TAG, Log.getStackTraceString(e));
} catch (InterruptedException e) {
Log.e(TAG, Log.getStackTraceString(e));
} catch (LocalRepoKeyStore.InitException | InterruptedException e) {
Log.e(TAG, "Unable to configure a fingerprint or HTTPS for the local repo", e);
}
return null;
}
@ -171,7 +168,8 @@ public class WifiStateChangeService extends Service {
}
@Override
public void onServiceDisconnected(ComponentName name) {}
public void onServiceDisconnected(ComponentName name) {
}
}, BIND_AUTO_CREATE);
}
}
@ -197,8 +195,8 @@ public class WifiStateChangeService extends Service {
}
}
}
} catch (SocketException ex) {
ex.printStackTrace();
} catch (SocketException e) {
Log.e(TAG, "Could not get ip address", e);
}
return null;

View File

@ -25,6 +25,7 @@ import android.content.pm.PackageInfo;
import android.net.Uri;
import android.util.Log;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.InstalledAppProvider;
public class PackageAddedReceiver extends PackageReceiver {
@ -34,7 +35,7 @@ public class PackageAddedReceiver extends PackageReceiver {
@Override
protected boolean toDiscard(Intent intent) {
if (intent.hasExtra(Intent.EXTRA_REPLACING)) {
Log.d(TAG, "Discarding since this PACKAGE_ADDED is just a PACKAGE_REPLACED");
Utils.DebugLog(TAG, "Discarding since this PACKAGE_ADDED is just a PACKAGE_REPLACED");
return true;
}
return false;
@ -43,8 +44,12 @@ public class PackageAddedReceiver extends PackageReceiver {
@Override
protected void handle(Context context, String appId) {
PackageInfo info = getPackageInfo(context, appId);
if (info == null) {
Utils.DebugLog(TAG, "Could not get package info on '" + appId + "' - skipping.");
return;
}
Log.d(TAG, "Inserting installed app info for '" + appId + "' (v" + info.versionCode + ")");
Utils.DebugLog(TAG, "Inserting installed app info for '" + appId + "' (v" + info.versionCode + ")");
Uri uri = InstalledAppProvider.getContentUri();
ContentValues values = new ContentValues(4);

View File

@ -25,6 +25,7 @@ import android.content.Intent;
import android.content.pm.PackageInfo;
import android.util.Log;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.ApkProvider;
import org.fdroid.fdroid.data.AppProvider;
@ -46,7 +47,7 @@ abstract class PackageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "PackageReceiver received [action = '" + intent.getAction() + "', data = '" + intent.getData() + "']");
Utils.DebugLog(TAG, "PackageReceiver received [action = '" + intent.getAction() + "', data = '" + intent.getData() + "']");
if (toDiscard(intent)) {
return;
}

View File

@ -23,6 +23,7 @@ import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.InstalledAppProvider;
public class PackageRemovedReceiver extends PackageReceiver {
@ -32,7 +33,7 @@ public class PackageRemovedReceiver extends PackageReceiver {
@Override
protected boolean toDiscard(Intent intent) {
if (intent.hasExtra(Intent.EXTRA_REPLACING)) {
Log.d(TAG, "Discarding since this PACKAGE_REMOVED is just a PACKAGE_REPLACED");
Utils.DebugLog(TAG, "Discarding since this PACKAGE_REMOVED is just a PACKAGE_REPLACED");
return true;
}
return false;
@ -41,7 +42,7 @@ public class PackageRemovedReceiver extends PackageReceiver {
@Override
protected void handle(Context context, String appId) {
Log.d(TAG, "Removing installed app info for '" + appId + "'");
Utils.DebugLog(TAG, "Removing installed app info for '" + appId + "'");
Uri uri = InstalledAppProvider.getAppUri(appId);
context.getContentResolver().delete(uri, null, null);

View File

@ -25,6 +25,7 @@ import android.content.pm.PackageInfo;
import android.net.Uri;
import android.util.Log;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.InstalledAppProvider;
/**
@ -45,8 +46,12 @@ public class PackageUpgradedReceiver extends PackageReceiver {
@Override
protected void handle(Context context, String appId) {
PackageInfo info = getPackageInfo(context, appId);
if (info == null) {
Utils.DebugLog(TAG, "Could not get package info on '" + appId + "' - skipping.");
return;
}
Log.d(TAG, "Updating installed app info for '" + appId + "' to v" + info.versionCode + " (" + info.versionName + ")");
Utils.DebugLog(TAG, "Updating installed app info for '" + appId + "' to v" + info.versionCode + " (" + info.versionName + ")");
Uri uri = InstalledAppProvider.getContentUri();
ContentValues values = new ContentValues(4);

View File

@ -66,6 +66,7 @@ import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.UpdateService;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.compat.ClipboardCompat;
import org.fdroid.fdroid.data.NewRepoConfig;
import org.fdroid.fdroid.data.Repo;
@ -235,7 +236,7 @@ public class ManageReposActivity extends ActionBarActivity {
final EditText uriEditText = (EditText) view.findViewById(R.id.edit_uri);
final EditText fingerprintEditText = (EditText) view.findViewById(R.id.edit_fingerprint);
addRepoDialog.setTitle(getString(R.string.repo_add_title));
addRepoDialog.setTitle(R.string.repo_add_title);
addRepoDialog.setButton(DialogInterface.BUTTON_NEGATIVE,
getString(R.string.cancel),
new DialogInterface.OnClickListener() {
@ -285,13 +286,13 @@ public class ManageReposActivity extends ActionBarActivity {
return;
}
switch(addRepoState) {
switch (addRepoState) {
case DOESNT_EXIST:
prepareToCreateNewRepo(url, fp);
break;
case IS_SWAP:
Log.i(TAG, "Removing existing swap repo " + url + " before adding new repo.");
Utils.DebugLog(TAG, "Removing existing swap repo " + url + " before adding new repo.");
Repo repo = RepoProvider.Helper.findByAddress(context, url);
RepoProvider.Helper.remove(context, repo.getId());
prepareToCreateNewRepo(url, fp);
@ -462,7 +463,7 @@ public class ManageReposActivity extends ActionBarActivity {
final String[] pathsToCheck = {"", "fdroid/repo", "repo"};
for (final String path : pathsToCheck) {
Log.d(TAG, "Checking for repo at " + originalAddress + " with suffix \"" + path + "\".");
Utils.DebugLog(TAG, "Checking for repo at " + originalAddress + " with suffix \"" + path + "\".");
Uri.Builder builder = Uri.parse(originalAddress).buildUpon().appendEncodedPath(path);
final String addressWithoutIndex = builder.build().toString();
publishProgress(addressWithoutIndex);
@ -471,16 +472,16 @@ public class ManageReposActivity extends ActionBarActivity {
try {
if (checkForRepository(uri)) {
Log.i(TAG, "Found F-Droid repo at " + addressWithoutIndex);
Utils.DebugLog(TAG, "Found F-Droid repo at " + addressWithoutIndex);
return addressWithoutIndex;
}
} catch (IOException e) {
Log.e(TAG, "Error while searching for repo at " + addressWithoutIndex + ": " + e.getMessage());
Log.e(TAG, "Error while searching for repo at " + addressWithoutIndex, e);
return originalAddress;
}
if (isCancelled()) {
Log.d(TAG, "Not checking any more repo addresses, because process was skipped.");
Utils.DebugLog(TAG, "Not checking any more repo addresses, because process was skipped.");
break;
}
}
@ -509,7 +510,7 @@ public class ManageReposActivity extends ActionBarActivity {
};
Button skip = addRepoDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
skip.setText(getString(R.string.skip));
skip.setText(R.string.skip);
skip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -581,7 +582,7 @@ public class ManageReposActivity extends ActionBarActivity {
}
}
Log.d(TAG, "Enabling existing repo: " + url);
Utils.DebugLog(TAG, "Enabling existing repo: " + url);
Repo repo = RepoProvider.Helper.findByAddress(context, url);
ContentValues values = new ContentValues(2);
values.put(RepoProvider.DataColumns.IN_USE, 1);
@ -646,7 +647,7 @@ public class ManageReposActivity extends ActionBarActivity {
@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
Uri uri = RepoProvider.allExceptSwapUri();
Log.i(TAG, "Creating repo loader '" + uri + "'.");
Utils.DebugLog(TAG, "Creating repo loader '" + uri + "'.");
final String[] projection = {
RepoProvider.DataColumns._ID,
RepoProvider.DataColumns.NAME,

View File

@ -13,10 +13,10 @@ import android.nfc.NfcAdapter;
import android.os.Build;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v7.app.AlertDialog;
import android.support.v4.app.NavUtils;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AlertDialog;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
@ -172,7 +172,7 @@ public class RepoDetailsActivity extends ActionBarActivity {
i.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
NdefMessage msg = (NdefMessage) rawMsgs[0];
String url = new String(msg.getRecords()[0].getPayload());
Log.i(TAG, "Got this URL: " + url);
Utils.DebugLog(TAG, "Got this URL: " + url);
Toast.makeText(this, "Got this URL: " + url, Toast.LENGTH_LONG).show();
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.setClass(this, ManageReposActivity.class);
@ -181,7 +181,7 @@ public class RepoDetailsActivity extends ActionBarActivity {
}
}
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
int statusCode = intent.getIntExtra(UpdateService.EXTRA_STATUS_CODE, -1);
@ -234,7 +234,10 @@ public class RepoDetailsActivity extends ActionBarActivity {
@TargetApi(16)
private void prepareNfcMenuItems(Menu menu) {
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
MenuItem menuItem = menu.findItem(R.id.menu_enable_nfc);
if (nfcAdapter == null) {
menuItem.setVisible(false);
return;
}
@ -245,7 +248,6 @@ public class RepoDetailsActivity extends ActionBarActivity {
needsEnableNfcMenuItem = !nfcAdapter.isNdefPushEnabled();
}
MenuItem menuItem = menu.findItem(R.id.menu_enable_nfc);
menuItem.setVisible(needsEnableNfcMenuItem);
}

View File

@ -20,6 +20,7 @@ import org.fdroid.fdroid.AppDetails;
import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.UpdateService;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.App;
import org.fdroid.fdroid.data.AppProvider;
import org.fdroid.fdroid.views.AppListAdapter;
@ -125,12 +126,12 @@ abstract public class AppListFragment extends ThemeableListFragment implements
SharedPreferences prefs = getActivity().getPreferences(Context.MODE_PRIVATE);
boolean hasTriedEmptyUpdate = prefs.getBoolean(TRIED_EMPTY_UPDATE, false);
if (!hasTriedEmptyUpdate) {
Log.d(TAG, "Empty app list, and we haven't done an update yet. Forcing repo update.");
Utils.DebugLog(TAG, "Empty app list, and we haven't done an update yet. Forcing repo update.");
prefs.edit().putBoolean(TRIED_EMPTY_UPDATE, true).commit();
UpdateService.updateNow(getActivity());
return true;
}
Log.d(TAG, "Empty app list, but it looks like we've had an update previously. Will not force repo update.");
Utils.DebugLog(TAG, "Empty app list, but it looks like we've had an update previously. Will not force repo update.");
return false;
}

View File

@ -23,6 +23,7 @@ import android.widget.Spinner;
import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.compat.ArrayAdapterCompat;
import org.fdroid.fdroid.data.AppProvider;
import org.fdroid.fdroid.views.AppListAdapter;
@ -156,7 +157,7 @@ public class AvailableAppsFragment extends AppListFragment implements
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
getListView().setSelection(0);
Log.d(TAG, "Selected category: " + categories.get(pos));
Utils.DebugLog(TAG, "Selected category: " + categories.get(pos));
setCurrentCategory(categories.get(pos));
}
@Override
@ -194,7 +195,7 @@ public class AvailableAppsFragment extends AppListFragment implements
private void setCurrentCategory(String category) {
currentCategory = category;
Log.d(TAG, "Category '" + currentCategory + "' selected.");
Utils.DebugLog(TAG, "Category '" + currentCategory + "' selected.");
getLoaderManager().restartLoader(0, null, AvailableAppsFragment.this);
}

View File

@ -38,7 +38,6 @@ public class PreferencesFragment extends PreferenceFragment
Preferences.PREF_COMPACT_LAYOUT,
Preferences.PREF_IGN_TOUCH,
Preferences.PREF_LOCAL_REPO_NAME,
Preferences.PREF_LOCAL_REPO_HTTPS,
Preferences.PREF_LANGUAGE,
Preferences.PREF_CACHE_APK,
Preferences.PREF_EXPERT,

View File

@ -19,6 +19,7 @@ import android.widget.TextView;
import org.fdroid.fdroid.AppDetails;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.App;
import org.fdroid.fdroid.data.AppProvider;
import org.fdroid.fdroid.views.AppListAdapter;
@ -102,7 +103,7 @@ public class SearchResultsFragment extends ListFragment implements LoaderManager
headerText = getString(R.string.searchres_napps, count, query);
}
tv.setText(headerText);
Log.d(TAG, "Search for '" + query + "' returned " + count + " results");
Utils.DebugLog(TAG, "Search for '" + query + "' returned " + count + " results");
}
@Override

View File

@ -163,7 +163,7 @@ public class WifiQrView extends ScrollView implements SwapWorkflowActivity.Inner
}
}
Log.i(TAG, "Encoded swap URI in QR Code: " + qrUriString);
Utils.DebugLog(TAG, "Encoded swap URI in QR Code: " + qrUriString);
new QrGenAsyncTask(getActivity(), R.id.wifi_qr_code).execute(qrUriString);

View File

@ -2,4 +2,4 @@
# Fix TypographyEllipsis programmatically
sed -i 's/\.\.\./…/g' res/values*/*.xml
sed -r -i 's/(\.\.\.|&#8230\;)/…/g' res/values*/*.xml

View File

@ -1,4 +1,4 @@
#!/bin/env python2
#!/usr/bin/env python2
# List supported languages missing from the preference array

View File

@ -1,4 +1,4 @@
#!/bin/env python2
#!/usr/bin/env python2
# Remove translated arrays that are missing elements

View File

@ -1,4 +1,4 @@
#!/bin/env python2
#!/usr/bin/env python2
# Remove extra translations

View File

@ -1,38 +0,0 @@
F-Droid Client Hacking Doc
==========================
Style
-----
We loosely follow the [Google Java style](https://google-styleguide.googlecode.com/svn/trunk/javaguide.html).
Some of the points we follow the most are:
* Four space indentation
* UTF-8 source files
* Exactly one top-level class per file
* No wildcard imports
* One statement per line
* K&R spacings with braces and parenthesis
Some other interesting additions we might use in the future:
* Commented fallthroughs
* Braces are always used after if, for and while
We don't strictly follow the entire style spec, but when in doubt you should
follow it.
Building
--------
You have three options:
* Build with gradle
* Build with gradle from source
Debugging
---------
To get all the logcat messages by F-Droid, you can run:
adb logcat | grep `adb shell ps | grep org.fdroid.fdroid | cut -c10-15`

View File

View File

@ -1,11 +1,13 @@
F-Droid Client
==============
Client for [F-Droid](https://fdroid.org), the Free Software repository system
[![build status](https://ci.gitlab.com/projects/6571/status.png?ref=master)](https://ci.gitlab.com/projects/6571?ref=master)
Client for [F-Droid](https://f-droid.org), the Free Software repository system
for Android.
Building from source with Gradle
--------------------------------
Building with Gradle
--------------------
The only required tools are the [Android
SDK](http://developer.android.com/sdk/index.html) and Gradle.
@ -18,6 +20,11 @@ Once you have checked out the version you wish to build, run:
cd F-Droid
gradle assembleRelease
If you would like to build from source, add `-PsourceDeps`:
cd F-Droid
gradle assembleDebug -PsourceDeps
The resulting apk will be in `build/outputs/apk/`.
Android Studio
@ -37,8 +44,7 @@ Direct download
---------------
You can [download the application](https://f-droid.org/FDroid.apk) directly
from our site or [browse it in the
repo](https://f-droid.org/app/org.fdroid.fdroid).
from our site or [browse it in the repo](https://f-droid.org/app/org.fdroid.fdroid).
Contributing
@ -47,8 +53,10 @@ Contributing
You are welcome to submit
[Merge Requests](https://gitlab.com/fdroid/fdroidclient/merge_requests)
via the Gitlab web interface. You can also follow our
[Issue tracker](https://f-droid.org/repository/issues/) and our
[Forums](https://f-droid.org/forums/).
[Issue tracker](https://gitlab.com/fdroid/fdroidclient/issues) and our
[Forums](https://f-droid.org/forums).
Also see our [Contributing doc](CONTRIBUTING.md).
Translating
@ -67,7 +75,7 @@ In order to run the F-Droid test suite, you will need to have either a real devi
connected via `adb`, or an emulator running. Then, execute the following from the
command line:
> `gradle connectedAndroidTest`
gradle connectedAndroidTest
This will build and install F-Droid and the test apk, then execute the entire
test suite on the device or emulator.

Some files were not shown because too many files have changed in this diff Show More