mirror of
https://github.com/f-droid/fdroidclient.git
synced 2026-06-17 12:19:52 -04:00
Merge branch '2.0' into 'master'
Release prep See merge request fdroid/fdroidclient!1679
This commit is contained in:
@@ -19,6 +19,7 @@ workflow:
|
||||
- saas-linux-medium-amd64
|
||||
variables:
|
||||
JAVA_HOME: /usr/lib/jvm/java-21-openjdk-amd64
|
||||
GIT_SUBMODULE_STRATEGY: none
|
||||
before_script:
|
||||
- test -e /etc/apt/sources.list.d/trixie-backports.list
|
||||
|| echo "deb http://deb.debian.org/debian trixie-backports main" >> /etc/apt/sources.list
|
||||
|
||||
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "fastlane"]
|
||||
path = fastlane
|
||||
url = https://gitlab.com/fdroid/fdroidclient-fastlane.git
|
||||
@@ -22,7 +22,7 @@ android {
|
||||
versionCode = 2000010
|
||||
versionName = "2.0-alpha10"
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
testInstrumentationRunner = "org.fdroid.HiltTestRunner"
|
||||
}
|
||||
|
||||
// filter out incomplete translations from stable releases (which end in 50+)
|
||||
@@ -177,6 +177,9 @@ dependencies {
|
||||
androidTestImplementation(libs.androidx.test.uiautomator)
|
||||
androidTestImplementation(libs.coil.test)
|
||||
androidTestImplementation(libs.coil.network.okhttp)
|
||||
androidTestImplementation(libs.turbine)
|
||||
androidTestImplementation(libs.hilt.android.testing)
|
||||
kspAndroidTest(libs.hilt.android.compiler)
|
||||
|
||||
screenshotTestImplementation(libs.screenshot.validation.api)
|
||||
}
|
||||
|
||||
@@ -19,4 +19,7 @@
|
||||
<issue id="UnusedResources" severity="informational">
|
||||
<ignore path="src/main/res/values/strings.xml" />
|
||||
</issue>
|
||||
<issue id="MissingDefaultResource" severity="informational">
|
||||
<ignore path="src/main/res/**/strings.xml" />
|
||||
</issue>
|
||||
</lint>
|
||||
|
||||
12
app/src/androidTest/java/org/fdroid/HiltTestRunner.kt
Normal file
12
app/src/androidTest/java/org/fdroid/HiltTestRunner.kt
Normal file
@@ -0,0 +1,12 @@
|
||||
package org.fdroid
|
||||
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import androidx.test.runner.AndroidJUnitRunner
|
||||
import dagger.hilt.android.testing.HiltTestApplication
|
||||
|
||||
class HiltTestRunner : AndroidJUnitRunner() {
|
||||
override fun newApplication(cl: ClassLoader?, name: String?, context: Context?): Application {
|
||||
return super.newApplication(cl, HiltTestApplication::class.java.name, context)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,170 @@
|
||||
package org.fdroid.repo
|
||||
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import app.cash.turbine.TurbineTestContext
|
||||
import app.cash.turbine.test
|
||||
import dagger.hilt.android.testing.HiltAndroidRule
|
||||
import dagger.hilt.android.testing.HiltAndroidTest
|
||||
import javax.inject.Inject
|
||||
import kotlin.test.assertIs
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.fdroid.index.RepoManager
|
||||
import org.junit.Assume.assumeTrue
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.rules.TemporaryFolder
|
||||
import org.junit.runner.RunWith
|
||||
import org.slf4j.LoggerFactory
|
||||
|
||||
@HiltAndroidTest
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
internal class RepoManagerAddAllIntegrationTest {
|
||||
|
||||
@get:Rule var hiltRule = HiltAndroidRule(this)
|
||||
|
||||
@get:Rule var folder: TemporaryFolder = TemporaryFolder()
|
||||
|
||||
private val repos =
|
||||
listOf(
|
||||
"https://raw.githubusercontent.com/2br-2b/Fdroid-repo/master/fdroid/repo",
|
||||
"https://anonymousmessenger.ly/fdroid/repo",
|
||||
"https://fdroid.beocode.eu/fdroid/repo",
|
||||
"https://mobileapp.bitwarden.com/fdroid/repo",
|
||||
"https://briarproject.org/fdroid/repo",
|
||||
"https://fdroid.bromite.org/fdroid/repo",
|
||||
"https://fdroid.gitlab.io/ccc/fdroid/repo",
|
||||
"https://www.collaboraoffice.com/downloads/fdroid/repo",
|
||||
"https://bubu1.eu/cctg/fdroid/repo",
|
||||
"https://static.cryptomator.org/android/fdroid/repo",
|
||||
"https://lucaapp.gitlab.io/fdroid-repository/fdroid/repo",
|
||||
"https://divestos.org/apks/official/fdroid/repo",
|
||||
"https://divestos.org/apks/unofficial/fdroid/repo",
|
||||
"https://raw.githubusercontent.com/efreak/auto-daily-fdroid/main/fdroid/repo",
|
||||
"https://bubu1.eu/fdroidclassic/fdroid/repo",
|
||||
"https://f5a.typed.icu/fdroid/repo",
|
||||
"https://fdroid.fedilab.app/repo",
|
||||
"https://raw.githubusercontent.com/Tobi823/ffupdaterrepo/master/fdroid/repo",
|
||||
"https://rfc2822.gitlab.io/fdroid-firefox/fdroid/repo",
|
||||
"https://raw.githubusercontent.com/Five-Prayers/fdroid-repo-stable/main/fdroid/repo",
|
||||
"https://codeberg.org/florian-obernberger/fdroid-repo/raw/branch/main/repo",
|
||||
"https://fdroid.frostnerd.com/fdroid/repo",
|
||||
"https://pili.qi0.de/fdroid/repo",
|
||||
"https://gitjournal.io/fdroid/repo",
|
||||
"https://guardianproject.info/fdroid/repo",
|
||||
"https://s3.amazonaws.com/guardianproject/fdroid/repo",
|
||||
"https://guardianproject.info/fdroid/repo",
|
||||
"https://f-droid.i2p.io/repo",
|
||||
"https://iitc.app/fdroid/repo",
|
||||
"https://jhass.github.io/insporation/fdroid/repo",
|
||||
"https://raw.githubusercontent.com/iodeOS/fdroid/master/fdroid/repo",
|
||||
"https://apt.izzysoft.de/fdroid/repo",
|
||||
"https://android.izzysoft.de/repo",
|
||||
"https://jak-linux.org/fdroid/repo",
|
||||
"https://julianfairfax.gitlab.io/fdroid-repo/fdroid/repo",
|
||||
"https://kaffeemitkoffein.de/fdroid/repo",
|
||||
"https://store.nethunter.com/repo",
|
||||
"https://cdn.kde.org/android/stable-releases/fdroid/repo",
|
||||
"https://repo.kuschku.de/fdroid/repo",
|
||||
"https://fdroid.libretro.com/repo",
|
||||
"https://fdroid.ltheinrich.de/fdroid/repo",
|
||||
"https://ltt.rs/fdroid/repo",
|
||||
"https://pili.qi0.de/fdroid/repo",
|
||||
"https://fdroid.metatransapps.com/fdroid/repo",
|
||||
"https://microg.org/fdroid/repo",
|
||||
"https://fdroid.mm20.de/repo",
|
||||
"https://repo.mobilsicher.de/fdroid/repo",
|
||||
"https://molly.im/fdroid/repo",
|
||||
"https://molly.im/fdroid/foss/fdroid/repo",
|
||||
"https://f-droid.monerujo.io/fdroid/repo",
|
||||
"https://releases.nailyk.fr/repo",
|
||||
"https://nanolx.org/fdroid/repo",
|
||||
"https://www.nanolx.org/fdroid/repo",
|
||||
"https://repo.netsyms.com/fdroid/repo",
|
||||
"https://archive.newpipe.net/fdroid/repo",
|
||||
"https://repo.nononsenseapps.com/fdroid/repo",
|
||||
"https://fdroid.novy.software/repo",
|
||||
"https://raw.githubusercontent.com/nucleus-ffm/Nucleus-F-Droid-Repo/master/fdroid/repo",
|
||||
"https://obfusk.ch/fdroid/repo",
|
||||
"https://ouchadam.github.io/fdroid-repository/repo",
|
||||
"https://fdroid.partidopirata.com.ar/fdroid/repo",
|
||||
"https://thecapslock.gitlab.io/fdroid-patched-apps/fdroid/repo",
|
||||
"https://fdroid.i2pd.xyz/fdroid/repo",
|
||||
"https://fdroid.rami.io/fdroid/repo",
|
||||
"https://thedoc.eu.org/fdroid/repo",
|
||||
"https://repo.samourai.io/fdroid/repo",
|
||||
"https://fdroid.a3.pm/seabear/repo",
|
||||
"https://raw.githubusercontent.com/jackbonadies/seekerandroid/fdroid/fdroid/repo",
|
||||
"https://fdroid.getsession.org/fdroid/repo",
|
||||
"https://raw.githubusercontent.com/simlar/simlar-fdroid-repo/master/fdroid/repo",
|
||||
"https://s2.spiritcroc.de/fdroid/repo",
|
||||
"https://haagch.frickel.club/files/fdroid/repo",
|
||||
"https://submarine.strangled.net/fdroid/repo",
|
||||
"https://service.tagesschau.de/app/repo",
|
||||
"https://fdroid-repo.calyxinstitute.org/fdroid/repo",
|
||||
"https://releases.threema.ch/fdroid/repo",
|
||||
"https://raw.githubusercontent.com/chrisgch/tca/master/fdroid/repo",
|
||||
"https://fdroid.twinhelix.com/fdroid/repo",
|
||||
"https://secfirst.org/fdroid/repo",
|
||||
"https://fdroid.videlibri.de/repo",
|
||||
"https://guardianproject-wind.s3.amazonaws.com/fdroid/repo",
|
||||
"https://raw.githubusercontent.com/xarantolus/fdroid/main/fdroid/repo",
|
||||
"https://zimbelstern.eu/fdroid/repo",
|
||||
)
|
||||
|
||||
private val log = LoggerFactory.getLogger(this::class.java.simpleName)
|
||||
|
||||
@Inject lateinit var repoManager: RepoManager
|
||||
|
||||
@Before
|
||||
fun optIn() {
|
||||
// Careful! This will add lots of repos to your live DB
|
||||
assumeTrue(false) // don't run integration tests with real repos all the time
|
||||
|
||||
// inject repo manager before running test
|
||||
hiltRule.inject()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun addAllTheThings() = runBlocking {
|
||||
repos.forEach { addRepo(it) }
|
||||
}
|
||||
|
||||
private suspend fun addRepo(url: String) {
|
||||
log.info("Fetching $url")
|
||||
repoManager.fetchRepositoryPreview(url = url, proxy = null)
|
||||
repoManager.addRepoState.test(timeout = 15.seconds) {
|
||||
val fetchState = awaitFinalFetchState()
|
||||
if (fetchState is Fetching && fetchState.fetchResult != null) {
|
||||
repoManager.addFetchedRepository()
|
||||
val item = awaitItem()
|
||||
if (item is Adding) {
|
||||
// await final state
|
||||
assertIs<Added>(awaitItem())
|
||||
} else {
|
||||
// was already final state
|
||||
assertIs<Added>(item)
|
||||
}
|
||||
log.info(" Added")
|
||||
} else if (fetchState is AddRepoError) {
|
||||
log.error(" $fetchState $url")
|
||||
}
|
||||
repoManager.abortAddingRepository()
|
||||
assertIs<None>(awaitItem())
|
||||
cancelAndIgnoreRemainingEvents()
|
||||
}
|
||||
log.info("End $url")
|
||||
}
|
||||
|
||||
private suspend fun TurbineTestContext<AddRepoState>.awaitFinalFetchState(): AddRepoState {
|
||||
var item = awaitItem()
|
||||
log.info(" $item")
|
||||
while (item is None || (item is Fetching && !item.done)) {
|
||||
item = awaitItem()
|
||||
log.info(" $item")
|
||||
}
|
||||
log.info(" final: $item")
|
||||
return item
|
||||
}
|
||||
}
|
||||
231
app/src/androidTest/java/org/fdroid/ui/LocalizationTest.kt
Normal file
231
app/src/androidTest/java/org/fdroid/ui/LocalizationTest.kt
Normal file
@@ -0,0 +1,231 @@
|
||||
package org.fdroid.ui
|
||||
|
||||
import android.content.res.Resources
|
||||
import android.text.TextUtils
|
||||
import android.util.DisplayMetrics
|
||||
import android.util.Log
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import java.util.IllegalFormatException
|
||||
import java.util.Locale
|
||||
import java.util.regex.Pattern
|
||||
import org.fdroid.R
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
/**
|
||||
* Runs through all the translated strings and tests them with the same format values that the
|
||||
* source strings expect. This is to ensure that the formats in the translations are correct in
|
||||
* number and in type (e.g. `s` or `s`). It reads the source formats and then builds `formats` to
|
||||
* represent the position and type of the formats. Then it runs through all the translations with
|
||||
* formats of the correct number and type.
|
||||
*/
|
||||
@Suppress("DEPRECATION")
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class LocalizationTest {
|
||||
private val androidFormat: Pattern = Pattern.compile("(%[a-z0-9]\\$?[a-z]?)")
|
||||
private val locales: Array<Locale> = Locale.getAvailableLocales()
|
||||
private val localeNames = HashSet<String?>(locales.size)
|
||||
|
||||
private val context = InstrumentationRegistry.getInstrumentation().targetContext
|
||||
private var assets = context.assets
|
||||
private var config =
|
||||
context.resources.configuration.apply {
|
||||
locale = Locale.ENGLISH
|
||||
}
|
||||
private var resources = Resources(assets, DisplayMetrics(), config)
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
for (locale in LOCALES_TO_TEST) {
|
||||
localeNames.add(locale.toString())
|
||||
}
|
||||
for (locale in locales) {
|
||||
localeNames.add(locale.toString())
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(IllegalAccessException::class)
|
||||
fun testLoadAllPlural() {
|
||||
val fields = R.plurals::class.java.declaredFields
|
||||
|
||||
val haveFormats = HashMap<String?, String?>()
|
||||
for (field in fields) {
|
||||
// Log.i(TAG, field.getName());
|
||||
val resId = field.getInt(Int::class.javaPrimitiveType)
|
||||
val string = resources.getQuantityText(resId, 4)
|
||||
// Log.i(TAG, field.getName() + ": '" + string + "'");
|
||||
val matcher = androidFormat.matcher(string)
|
||||
var matches = 0
|
||||
val formats = CharArray(5)
|
||||
while (matcher.find()) {
|
||||
val match = matcher.group(0)
|
||||
val formatType = match!!.get(match.length - 1)
|
||||
when (match.length) {
|
||||
2 -> {
|
||||
formats[matches] = formatType
|
||||
matches++
|
||||
}
|
||||
4 -> formats[match.substring(1, 2).toInt() - 1] = formatType
|
||||
5 -> formats[match.substring(1, 3).toInt() - 1] = formatType
|
||||
else -> throw IllegalStateException(field.getName() + " has bad format: " + match)
|
||||
}
|
||||
}
|
||||
haveFormats[field.getName()] = String(formats).trim { it <= ' ' }
|
||||
}
|
||||
|
||||
for (locale in locales) {
|
||||
config.locale = locale
|
||||
// Resources() requires DisplayMetrics, but they are only needed for drawables
|
||||
resources = Resources(assets, DisplayMetrics(), config)
|
||||
for (field in fields) {
|
||||
var formats: String? = null
|
||||
try {
|
||||
val resId = field.getInt(Int::class.javaPrimitiveType)
|
||||
for (quantity in 0..566) {
|
||||
resources.getQuantityString(resId, quantity)
|
||||
}
|
||||
|
||||
formats = haveFormats[field.getName()]
|
||||
when (formats) {
|
||||
"d" -> resources.getQuantityString(resId, 1, 1)
|
||||
"s" -> resources.getQuantityString(resId, 1, "ONE")
|
||||
"ds" -> resources.getQuantityString(resId, 2, 1, "TWO")
|
||||
else ->
|
||||
check(TextUtils.isEmpty(formats)) { "Pattern not included in tests: " + formats }
|
||||
}
|
||||
} catch (e: IllegalFormatException) {
|
||||
Log.i(TAG, locale.toString() + " " + field.getName())
|
||||
throw IllegalArgumentException(
|
||||
("Bad '" + formats + "' format in " + locale + " " + field.getName() + ": " + e.message)
|
||||
)
|
||||
} catch (e: Resources.NotFoundException) {
|
||||
Log.i(TAG, locale.toString() + " " + field.getName())
|
||||
throw IllegalArgumentException(
|
||||
("Bad '" + formats + "' format in " + locale + " " + field.getName() + ": " + e.message)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(IllegalAccessException::class)
|
||||
fun testLoadAllStrings() {
|
||||
val fields = R.string::class.java.declaredFields
|
||||
|
||||
val haveFormats = HashMap<String?, String?>()
|
||||
for (field in fields) {
|
||||
val string = resources.getString(field.getInt(Int::class.javaPrimitiveType))
|
||||
val matcher = androidFormat.matcher(string)
|
||||
var matches = 0
|
||||
val formats = CharArray(5)
|
||||
while (matcher.find()) {
|
||||
val match = matcher.group(0)
|
||||
val formatType = match!!.get(match.length - 1)
|
||||
when (match.length) {
|
||||
2 -> {
|
||||
formats[matches] = formatType
|
||||
matches++
|
||||
}
|
||||
4 -> formats[match.substring(1, 2).toInt() - 1] = formatType
|
||||
5 -> formats[match.substring(1, 3).toInt() - 1] = formatType
|
||||
else -> throw IllegalStateException(field.getName() + " has bad format: " + match)
|
||||
}
|
||||
}
|
||||
haveFormats[field.getName()] = String(formats).trim { it <= ' ' }
|
||||
}
|
||||
|
||||
for (locale in locales) {
|
||||
config!!.locale = locale
|
||||
// Resources() requires DisplayMetrics, but they are only needed for drawables
|
||||
resources = Resources(assets, DisplayMetrics(), config)
|
||||
for (field in fields) {
|
||||
val resId = field.getInt(Int::class.javaPrimitiveType)
|
||||
resources.getString(resId)
|
||||
|
||||
val formats = haveFormats.get(field.getName())
|
||||
try {
|
||||
when (formats) {
|
||||
"d" -> resources.getString(resId, 1)
|
||||
"dd" -> resources.getString(resId, 1, 2)
|
||||
"ds" -> resources.getString(resId, 1, "TWO")
|
||||
"dds" -> resources.getString(resId, 1, 2, "THREE")
|
||||
"sds" -> resources.getString(resId, "ONE", 2, "THREE")
|
||||
"s" -> resources.getString(resId, "ONE")
|
||||
"ss" -> resources.getString(resId, "ONE", "TWO")
|
||||
"sss" -> resources.getString(resId, "ONE", "TWO", "THREE")
|
||||
"ssss" -> resources.getString(resId, "ONE", "TWO", "THREE", "FOUR")
|
||||
"ssd" -> resources.getString(resId, "ONE", "TWO", 3)
|
||||
"sssd" -> resources.getString(resId, "ONE", "TWO", "THREE", 4)
|
||||
else ->
|
||||
check(TextUtils.isEmpty(formats)) { "Pattern not included in tests: " + formats }
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.i(TAG, locale.toString() + " " + field.getName())
|
||||
throw IllegalArgumentException(
|
||||
("Bad format in '" + locale + "' '" + field.getName() + "': " + e.message)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG: String = "LocalizationTest"
|
||||
|
||||
val LOCALES_TO_TEST: Array<Locale> =
|
||||
arrayOf(
|
||||
Locale.ENGLISH,
|
||||
Locale.FRENCH,
|
||||
Locale.GERMAN,
|
||||
Locale.ITALIAN,
|
||||
Locale.JAPANESE,
|
||||
Locale.KOREAN,
|
||||
Locale.SIMPLIFIED_CHINESE,
|
||||
Locale.TRADITIONAL_CHINESE,
|
||||
Locale("zh", "HK"),
|
||||
Locale("bo"),
|
||||
Locale("af"),
|
||||
Locale("ar"),
|
||||
Locale("be"),
|
||||
Locale("bg"),
|
||||
Locale("ca"),
|
||||
Locale("cs"),
|
||||
Locale("da"),
|
||||
Locale("el"),
|
||||
Locale("es"),
|
||||
Locale("eo"),
|
||||
Locale("et"),
|
||||
Locale("eu"),
|
||||
Locale("fa"),
|
||||
Locale("fi"),
|
||||
Locale("he"),
|
||||
Locale("hi"),
|
||||
Locale("hu"),
|
||||
Locale("hy"),
|
||||
Locale("id"),
|
||||
Locale("is"),
|
||||
Locale("it"),
|
||||
Locale("ml"),
|
||||
Locale("my"),
|
||||
Locale("nb"),
|
||||
Locale("nl"),
|
||||
Locale("pl"),
|
||||
Locale("pt"),
|
||||
Locale("ro"),
|
||||
Locale("ru"),
|
||||
Locale("sc"),
|
||||
Locale("sk"),
|
||||
Locale("sn"),
|
||||
Locale("sr"),
|
||||
Locale("sv"),
|
||||
Locale("th"),
|
||||
Locale("tr"),
|
||||
Locale("uk"),
|
||||
Locale("vi"),
|
||||
)
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,35 +7,42 @@ val appMetadata =
|
||||
repoId = 1L,
|
||||
packageName = "org.fdroid.basic",
|
||||
added = 1680776466000L,
|
||||
lastUpdated = 1772364577000L,
|
||||
lastUpdated = 1777704496684L,
|
||||
name =
|
||||
mapOf(
|
||||
"en-GB" to "F-Droid Basic",
|
||||
"es" to "F-Droid Basic",
|
||||
"pl" to "F-Droid Podstawowy",
|
||||
"nb" to "F-Droid Basic",
|
||||
"pl" to "F-Droid Basic",
|
||||
"pt" to "F-Droid Básico",
|
||||
"pt-PT" to "F-Droid Básico",
|
||||
"ru" to "F-Droid Basic",
|
||||
"sv" to "F-Droid Basic",
|
||||
"ar" to "F-Droid Basic",
|
||||
"be" to "F-Droid Basic",
|
||||
"ca" to "F-Droid bàsic",
|
||||
"cs" to "F-Droid Basic",
|
||||
"de" to "F-Droid Basic",
|
||||
"en-US" to "F-Droid Basic",
|
||||
"eo" to "F-Droid Baza",
|
||||
"et" to "F-Droid Basic",
|
||||
"fa-IR" to "افدروید پایهای",
|
||||
"fa" to "افدروید پایهای",
|
||||
"fr" to "F-Droid Basic",
|
||||
"ga" to "F-Droid Bunúsach",
|
||||
"he" to "F-Droid בסיסי",
|
||||
"hu-HU" to "Alap F-Droid",
|
||||
"is-IS" to "Grunnútgáfa F-Droid",
|
||||
"hr" to "F-Droid Basic",
|
||||
"hu" to "Alap F-Droid",
|
||||
"id" to "F-Droid Basic",
|
||||
"is" to "Grunnútgáfa F-Droid",
|
||||
"it" to "F-Droid Basic",
|
||||
"ja" to "F-Droid Basic",
|
||||
"nl" to "F-Droid Basis",
|
||||
"pt-BR" to "F-Droid Básico",
|
||||
"ro" to "F-Droid Basic",
|
||||
"sr" to "Основни F-Droid",
|
||||
"sv-SE" to "F-Droid Basic",
|
||||
"ta-IN" to "எஃப்-டிராய்டு அடிப்படை",
|
||||
"tr" to "F-Droid Temel",
|
||||
"sw" to "F-Droid Basic",
|
||||
"ta" to "எஃப்-டிராய்டு அடிப்படை",
|
||||
"tr" to "F-Droid Basic",
|
||||
"uk" to "F-Droid Basic",
|
||||
"zh-CN" to "F-Droid Basic",
|
||||
"zh-TW" to "F-Droid Basic",
|
||||
@@ -44,38 +51,42 @@ val appMetadata =
|
||||
mapOf(
|
||||
"en-GB" to "The minimal client app for the app store that respects freedom and privacy",
|
||||
"es" to "Aplicación para la tienda de aplicaciones; respeta la libertad y la privacidad",
|
||||
"nb" to "Den minimale klient-appen for app-butikken som respekterer frihet og personvern",
|
||||
"pl" to "Minimalistyczna apka kliencka dla sklepu z apkami szanująca wolność i prywatność",
|
||||
"pt" to "App cliente mínima para a loja de apps que respeita a liberdade e a privacidade",
|
||||
"pt-PT" to
|
||||
"App cliente mínima para a loja de apps que respeita a liberdade e a privacidade",
|
||||
"ru" to "Минималистичный магазин приложений, уважающий свободу и приватность",
|
||||
"ar" to "تطبيق عميل خفيف لمتجر التطبيقات والذي يحترم الحرية والخصوصية",
|
||||
"sv" to "Den minimala klient-appen för app-butiken som respekterar frihet och privatliv",
|
||||
"ar" to "تطبيق عميل بسيط لمتجر التطبيقات الذي يحترم الحرية والخصوصية",
|
||||
"be" to "Мінімальная кліентская праграма што паважае вашыя свабоду і прыватнасць",
|
||||
"ca" to "El client mínim del centre d'aplicacions que respecta la llibertat i privadesa",
|
||||
"cs" to "Minimální klient pro obchod s aplikacemi, který respektuje svobodu a soukromí",
|
||||
"de" to "Der minimale Client für den App-Store, der Freiheit und Privatsphäre respektiert",
|
||||
"en-US" to "The minimal client app for the app store that respects freedom and privacy",
|
||||
"eo" to "Minimuma kliento por la aplikaĵa vendejo respektanta liberecon kaj privatecon",
|
||||
"et" to "Lihtsustatud variant F-Droidi rakendustepoe kliendist",
|
||||
"fa-IR" to "کارخواه کمینه برای فروشگاه کارهای که به آزادی و محرمانگی احترام میگذارد",
|
||||
"fa" to "کارخواه کمینه برای فروشگاه کارهای که به آزادی و محرمانگی احترام میگذارد",
|
||||
"fr" to "L’application minimale pour le magasin d’applis respectueux de la vie privée",
|
||||
"ga" to "Aip íosta cliant don siopa a léiríonn meas ar shaoirse agus ar phríobháideachas",
|
||||
"he" to "יישומון הלקוח המזערי לחנות יישומונים שמכבד חופש ופרטיות",
|
||||
"hu-HU" to "Az alap app a tárolóban, amely tiszteli a szabadságot és a magánéletet",
|
||||
"is-IS" to
|
||||
"Lágmarksviðmót forritsins fyrir hugbúnaðarsafnið sem virðir frelsi og gagnaleynd",
|
||||
"hr" to "Minimalalna aplikacija za trgovinu aplikacija koja poštuje slobodu i privatnost",
|
||||
"hu" to "Az alap app a tárolóban, amely tiszteli a szabadságot és a magánéletet",
|
||||
"id" to "Aplikasi klien minimal untuk toko aplikasi yang menghormati kebebasan dan privas",
|
||||
"is" to "Lágmarksviðmót forritsins fyrir hugbúnaðarsafnið sem virðir frelsi og gagnaleynd",
|
||||
"it" to "Il client minimale per l'app store che rispetta la libertà e la privacy",
|
||||
"ja" to "自由とプライバシーを尊重するアプリストアの簡略版クライアント",
|
||||
"nl" to "De minimale clientapp van de appwinkel die vrijheid en privacy respecteert",
|
||||
"pt-BR" to
|
||||
"App cliente mínimo para a loja de apps que respeita a liberdade e a privacidade",
|
||||
"O app minimalista para a loja de aplicativos que respeita a liberdade e a privac",
|
||||
"ro" to "Client minim pentru magazinul de aplicații ce respectă libertatea și intimitatea",
|
||||
"sr" to "Клијент апликација за продавницу апликација која поштује слободу и приватност",
|
||||
"sv-SE" to "Den minimala klient-appen för app-butiken som respekterar frihet och privatliv",
|
||||
"sw" to "An app cliant íosta don siopa app a urramaíonn saoirse agus príobháideachta",
|
||||
"ta-IN" to
|
||||
"விடுதலை மற்றும் தனியுரிமையை மதிக்கும் பயன்பாட்டு கடைக்கான குறைந்தபட்ச வாங்கி பயன",
|
||||
"tr" to "Özgürlük ve gizliliğe saygılı uygulama mağazası için sade bir istemci uygulaması",
|
||||
"ta" to "விடுதலை மற்றும் தனியுரிமையை மதிக்கும் பயன்பாட்டு கடைக்கான குறைந்தபட்ச வாங்கி பயன",
|
||||
"tr" to "Özgürlüğe ve gizliliğe saygılı uygulama mağazası için en sade istemci uygulaması",
|
||||
"uk" to "Мінімалістичний клієнтський застосунок, який поважає свободу й приватність",
|
||||
"zh-CN" to "尊重自由和隐私的应用商店的极简客户端应用",
|
||||
"zh-TW" to "尊重自由和隱私的應用商店最小客戶端應用程序",
|
||||
"zh-TW" to "尊重自由和隱私的應用商店最小用戶端應用程序",
|
||||
),
|
||||
description =
|
||||
mapOf(
|
||||
@@ -91,8 +102,12 @@ val appMetadata =
|
||||
"AVISO: A versão básica do cliente F-Droid tem menos funções (por exemplo, não tem o \"Por perto\" ou a função de pânico). Está preparado para o Android 13 e pode fazer atualizações sem intervenção do utilizador, sem precisar da extensão privilegiada ou de ",
|
||||
"ru" to
|
||||
"ПРИМЕЧАНИЕ: Basic-версия клиента F-Droid имеет урезанный набор функций (например, нет общего доступа к близлежащим ресурсам и функции паники). Она нацелена на Android 13 и может выполнять обновления без участия пользователя и без особого расширения или roo",
|
||||
"sv" to
|
||||
"OBS: Basic-versionen av F-Droid Client har en reducerad funktionsuppsättning (t.ex. ingen när-delning och ingen panikfunktion). Den riktar sig till Android 13 och kan göra obevakade uppdateringar utan privilegierad förlängning eller root.\n\nF-Droid är en ",
|
||||
"ar" to
|
||||
"ملاحظة: الإصدار الأساسي من عميل F-Droid يحتوي على مجموعة ميزات مخفضة (على سبيل المثال، لا توجد مشاركة قريبة ولا توجد ميزة الذعر). وهو يستهدف Android 13 ويمكنه إجراء تحديثات غير مراقبة بدون امتداد أو جذر مميز.\n\nF-Droid عبارة عن كتالوج قابل للتثبيت لتطبيقا",
|
||||
"ملاحظة: النسخة الأساسية من عميل F-Droid تأتي بميزات محدودة (على سبيل المثال، لا تتوفر ميزة المشاركة القريبة أو ميزة الطوارئ). تستهدف هذه النسخة نظام أندرويد 13، ويمكنها إجراء تحديثات تلقائية دون الحاجة إلى صلاحيات إضافية أو الجذر.\n\nF-Droid هو دليل قابل ل",
|
||||
"be" to
|
||||
"Увага: Базавая версія Кліента F-Droid мае зменшаны набор функцый (напр. няма функцый абагульвання і панікі). Ён нацэлены на Android 13 і можа выконваць аўтаматычныя абнаўленні без пашыраных прывіляў альбо root.\n\nF-Droid гэта каталог для ўсталёўкі Вольнаг",
|
||||
"ca" to
|
||||
"NOTA: La versió bàsica del client de l'F-Droid té un conjunt de funcionalitats reduït (p. ex. no hi ha compartició propera i funció del pànic). Està orientada a l'Android 13 i pot fer actualitzacions desateses sense extensions de privilegis ni permisos d'a",
|
||||
"cs" to
|
||||
@@ -105,7 +120,7 @@ val appMetadata =
|
||||
"RIMARKO: la baza versio de kliento F-Droid estas senigita de kelkaj ebloj (kiel proksima interŝanĝo kaj panika butono). Ĝi celas Android 13 kaj povas ĝisdatigi aplikaĵojn fone sen uzi ĉefuzantan permeson aŭ la privilegian aldonaĵon.\n\nF-Droid estas instal",
|
||||
"et" to
|
||||
"NB! F-Droid Basic on piiratud funktsionaalsusega klient (nt. puuduvad naabritega jagamine ja paanikarežiimi keelamine). Ta on mõeldud Android 13-le ja saab paigaldada uuendusi iseseisvalt, priviligeeritud laienduse või juurkasutajata.\n\nF-Droid on paigald",
|
||||
"fa-IR" to
|
||||
"fa" to
|
||||
"نکته: نگارش پایهای کارخواه اف دروید مجموعه ویز؛یهای کمتری دارد (برای نمونه همرسانی نزدیک و دکمهٔ هراس). اندروید ۱۳ را هدف قرار داده و میتواند بهروز رسانیهای پسزمینه را بدون ریشه یا افزونهٔ ممتاز انجام دهد.\n\nافدروید کالانمایی قابل نصب از کارههای",
|
||||
"fr" to
|
||||
"REMARQUE : la version Basic du client F-Droid a un jeu de fonctionnalités réduit (par ex. pas de partage de proximité et aucune fonction \"no panic\"). Elle est destinée à la plateforme Android 13 et peut faire des mises à jour sans extension privilégiée o",
|
||||
@@ -113,30 +128,32 @@ val appMetadata =
|
||||
"NÓTA: Tá sraith gnéithe laghdaithe ag an leagan Bunúsach de Chliant F-Droid (e.g. gan aon chomhroinnt in aice láimhe agus gan aon ghné scaoill). Díríonn sé ar Android 13 agus is féidir leis nuashonruithe gan duine a dhéanamh gan síneadh pribhléideach ná fr",
|
||||
"he" to
|
||||
"הערה: לגרסה הבסיסית של לקוח F-Droid יש מערכת תכונה מופחתת (לדוגמה, אין שיתוף סמוך ואין תכונה פאניקה). הוא מכוון לאנדרואיד 13 ויכול לעשות עדכונים ללא הרחבה מועדפת או root.\n\nF-Droid הוא קטלוג של יישומי תוכנה חופשית עבור אנדרואיד. יישומון לקוח F-Droid מקל ל",
|
||||
"hu-HU" to
|
||||
"hu" to
|
||||
"MEGJEGYZÉS: Az alap F-Droid verzió csökkentett funkciókészlettel rendelkezik (pl. nincs közeli megosztás és nincs pánik funkció). Az android 13-as rendszert célozza meg, és képes felügyelet nélküli frissítéseket végezni jogosultsági kiterjesztés vagy root ",
|
||||
"is-IS" to
|
||||
"id" to
|
||||
"CATATAN: Versi Basic dari Klien F-Droid memiliki fitur yang lebih terbatas (misalnya, tidak ada berbagi terdekat dan tidak ada fitur panik). Versi ini menargetkan Android 13 dan dapat melakukan pembaruan otomatis tanpa ekstensi istimewa atau akses root.\n",
|
||||
"is" to
|
||||
"ATHUGAÐU: Grunnútgáfa (Basic) F-Droid forritsins er með færri eiginleika (t.d. ekki deilingu til tækja í nágrenninu og enga neyðaraðgerð). Hún miðast við Android 13 og getur séð um uppfærslur án afskipta notandans án forgangsviðbótarinnar eða rótaraðgangs.",
|
||||
"ja" to
|
||||
"注意:F-DroidクライアントのBasic版は、機能が制限されています(例えば、近くへ共有やパニック機能がありません)。Android 13がターゲットで、特権の拡張やroot無しで更新出来ます。\n\nF-DroidはAndroidのための自由かつインストール可能なソフトウェアアプリの目録です。F-Droidクライアントアプリは、あなたのデバイス上での閲覧、インストール、更新の追跡を簡単にします。\n\nF-Droidは互換性のあるリポジトリへ接続します。標準のリポジトリはf-droid.orgでホスト",
|
||||
"nl" to
|
||||
"NOTITIE: De basisversie van de F-Droid-client heeft een gereduceerd aantal functies (bvb geen dichtbij delen en geen paniekfunctie). Het is gericht op Android 13 en kan zelfstandig updates uitvoeren zonder bevoorrechtte extensie of root.\n\nF-Droid is een ",
|
||||
"pt-BR" to
|
||||
"AVISO: A versão básica do cliente F-Droid tem um número reduzido de funções (por exemplo, não tem o \"Por perto\" ou a função de Pánico). Ela \"atinge\" o Android 13 e pode fazer atualizações sem intervenção do usuário, sem precisar da extensão privilegiad",
|
||||
"ro" to
|
||||
"NOTĂ: Versiunea de client F-Droid Basic are un set redus de funcții (de exemplu, fără partajare în apropiere și fără funcție de panică). Aceasta vizează Android 13 și poate face actualizări nesupravegheate fără extensia privilegiată sau root.\n\nF-Droid es",
|
||||
"sr" to
|
||||
"Напомена: Основна верзија клијента F-Droid има ограничен сет функција (нпр. нема опцију за дељење у близини и нема функцију за хитне случајеве). Она је намењена за Android 13 и може да обавља ажурирања без повишених привилегија или рута.\n\nF-Droid је ката",
|
||||
"sv-SE" to
|
||||
"OBS: Basic-versionen av F-Droid Client har en reducerad funktionsuppsättning (t.ex. ingen när-delning och ingen panikfunktion). Den riktar sig till Android 13 och kan göra obevakade uppdateringar utan privilegierad förlängning eller root.\n\nF-Droid är en ",
|
||||
"ta-IN" to
|
||||
"ta" to
|
||||
"குறிப்பு: எஃப்-டிராய்டு கிளையண்டின் அடிப்படை பதிப்பு குறைக்கப்பட்ட அம்சத் தொகுப்பைக் கொண்டுள்ளது (எ.கா. அருகிலுள்ள பங்கு இல்லை மற்றும் அச்சம் நற்பொருத்தம் இல்லை). இது ஆண்ட்ராய்டு 13 ஐ குறிவைக்கிறது மற்றும் சலுகை பெற்ற நீட்டிப்பு அல்லது வேர் இல்லாமல் கவனிக்",
|
||||
"tr" to
|
||||
"NOT: F-Droid İstemcisinin Temel sürümünün düşürülmüş özellikleri mevcuttur (mesela nearby share ve panik özelliği yok). Android 13'ü hedef alır ve özel eklenti veya root gerektirmeden gözetimsiz güncellemeler yapabilir.\nF-Droid, Android için özgür yazılım",
|
||||
"NOT: F-Droid İstemcisinin Basic (Temel) sürümü daraltılmış bir özellik setine sahiptir (örneğin yakındakilerle paylaşım ve panik özelliği yoktur). Android 13'ü hedefler ve ayrıcalıklı bir eklentiye veya root erişimine ihtiyaç duymadan katılımsız (arka plan",
|
||||
"uk" to
|
||||
"ПРИМІТКА. Базова версія F-Droid Client має скорочений набір функцій (наприклад, немає функції спільного доступу поблизу та функції паніки). Він націлений на Android 13 і може виконувати автоматичні оновлення без привілейованого розширення або root-права. ",
|
||||
"zh-CN" to
|
||||
"注意:F-Droid 客户端基础版本的功能不全 (如没有“附近”分享和应急功能)。它针对 Android 13 ,可以在没有特权扩展或 root 的情况下执行无人值守更新。.\n\nF-Droid 是 Android 系统自由软件应用的可安装目录。 F-Droid 客户端应用使得浏览、安装和跟踪设备上的应用更新变得轻而易举。\n\n它可以连接到任何兼容 F-Droid 的存储库。默认存储库托管在 f-droid.org 上,其中只包含真正的自由软件。\n\nAndroid 本身是开放的,意思是你可以从任何地",
|
||||
"zh-TW" to
|
||||
"注意:F-Droid 用戶端基本版的功能集較少(例如,沒有附近共享和恐慌功能)。它以 Android 13 為目標,無需特權擴充或 root 即可進行無人值守更新。\n\nF-Droid 是適用於 Android 的自由軟體應用程式的可安裝目錄。 F-Droid 用戶端應用程式可以輕鬆瀏覽、安裝和追蹤裝置上的更新。\n\n它可以連接到任何與 F-Droid 相容的儲存庫。預設 repo 託管在 f-droid.org,其中僅包含真正的自由軟體。\n\nAndroid 本身是開放的,這意味著您可以自由地從任何",
|
||||
"注意:F-Droid 用戶端基本版的功能集較少(例如,沒有附近共享和恐慌功能)。它以 Android 13 為目標,無需特權擴充或 root 即可進行無人值守更新。\n\nF-Droid 是適用於 Android 的自由軟體應用程式的可安裝目錄。 F-Droid 用戶端應用程式可以輕鬆瀏覽、安裝和追蹤裝置上的更新。\n\n它可以連線到任何與 F-Droid 相容的軟體庫。預設 repo 託管在 f-droid.org,其中僅包含真正的自由軟體。\n\nAndroid 本身是開放的,這意味著您可以自由地從任何",
|
||||
),
|
||||
webSite = "https://f-droid.org",
|
||||
changelog = "https://gitlab.com/fdroid/fdroidclient/-/blob/HEAD/CHANGELOG.md",
|
||||
|
||||
@@ -6,6 +6,59 @@ import org.fdroid.ui.discover.AppDiscoverItem
|
||||
|
||||
fun getNewApps(localeList: LocaleListCompat) =
|
||||
listOf(
|
||||
AppDiscoverItem(
|
||||
packageName = "org.fairscan.app",
|
||||
name =
|
||||
mapOf("en-US" to "FairScan – PDF Scanner", "ru" to "FairScan – Сканер в PDF")
|
||||
.getBestLocale(localeList) ?: "Unknown App",
|
||||
isInstalled = true,
|
||||
imageModel =
|
||||
"https://f-droid.org/repo/org.fairscan.app/en-US/icon_jXreg-23j73Q35sj5mioXnOD8m6Y9V6kLjX037gxq00=.png",
|
||||
),
|
||||
AppDiscoverItem(
|
||||
packageName = "com.github.catfriend1.syncthingfork",
|
||||
name =
|
||||
mapOf(
|
||||
"en-US" to "Syncthing-Fork",
|
||||
"vi" to "Syncthing-Fork",
|
||||
"he" to "Syncthing-Fork",
|
||||
"pt-PT" to "Syncthing-Fork",
|
||||
"zh-CN" to "Syncthing-Fork",
|
||||
"ru-RU" to "Syncthing-Fork",
|
||||
"es-419" to "Syncthing-Fork",
|
||||
"fr-FR" to "Syncthing-Fork",
|
||||
"es-ES" to "Syncthing-Fork",
|
||||
"be" to "Syncthing-Fork",
|
||||
"tr-TR" to "Syncthing-Fork",
|
||||
"ro" to "Syncthing-Fork",
|
||||
"ca" to "Syncthing-Fork",
|
||||
"it-IT" to "Syncthing-Fork",
|
||||
"uk" to "Syncthing-Fork",
|
||||
"zh-TW" to "Syncthing-Fork",
|
||||
"bg" to "Syncthing-Fork",
|
||||
"cs-CZ" to "Syncthing-Fork",
|
||||
"nl-NL" to "Syncthing-Fork",
|
||||
"de-DE" to "Syncthing-Fork",
|
||||
"ja-JP" to "Syncthing-Fork",
|
||||
"da-DK" to "Syncthing-Fork",
|
||||
"ko-KR" to "Syncthing-Fork",
|
||||
"id" to "Syncthing-Fork",
|
||||
"sr" to "Syncthing-Fork",
|
||||
"hu-HU" to "Syncthing-Fork",
|
||||
"sv-SE" to "Syncthing-Fork",
|
||||
"et" to "Syncthing-Fork",
|
||||
"pl-PL" to "Syncthing-Fork",
|
||||
"pt-BR" to "Syncthing-Fork",
|
||||
"ar" to "Syncthing-Fork",
|
||||
"sk" to "Syncthing-Fork",
|
||||
"es-US" to "Syncthing-Fork",
|
||||
"fi-FI" to "Syncthing-Fork",
|
||||
)
|
||||
.getBestLocale(localeList) ?: "Unknown App",
|
||||
isInstalled = false,
|
||||
imageModel =
|
||||
"https://f-droid.org/repo/com.github.catfriend1.syncthingfork/en-US/icon_egWOwTWZpQ_1CxmdrwP5wRta5EVmCCuzQWxjI5JTs0w=.png",
|
||||
),
|
||||
AppDiscoverItem(
|
||||
packageName = "jp.nonbili.noutube",
|
||||
name = mapOf("en-US" to "NouTube").getBestLocale(localeList) ?: "Unknown App",
|
||||
@@ -13,6 +66,64 @@ fun getNewApps(localeList: LocaleListCompat) =
|
||||
imageModel =
|
||||
"https://f-droid.org/repo/jp.nonbili.noutube/en-US/icon_A1nC0BkAzsvNhws7y1thjfhF8LJJReXVUORApHsstDE=.png",
|
||||
),
|
||||
AppDiscoverItem(
|
||||
packageName = "app.comaps.fdroid",
|
||||
name =
|
||||
mapOf(
|
||||
"pt-PT" to "CoMaps - Mapas e Navegação - Offline e Privada",
|
||||
"zh-CN" to "CoMaps — 隐私保护下的离线远足、骑行、驾驶",
|
||||
"lv" to "CoMaps - dodies ceļā bezsaistē ar privātumu",
|
||||
"hr" to "CoMaps - Pješačite, biciklirajte, vozite Offline i",
|
||||
"sl" to "CoMaps – potujte brez povezave, zasebno",
|
||||
"ru-RU" to "CoMaps - Карты и путешествия с приватностью",
|
||||
"fr-FR" to "CoMaps - Randonnée, Vélo, Conduite hors ligne",
|
||||
"es-ES" to "CoMaps - Senderismo, ciclismo y conducción offline",
|
||||
"lt" to "CoMaps – keliaukite atsijungę ir privačiai",
|
||||
"en-US" to "CoMaps - Hike, Bike, Drive Offline with Privacy",
|
||||
"tr-TR" to "CoMaps - Gizlilikle Yürüyün, Sürün, Gezin",
|
||||
"ro" to "CoMaps - călătorește offline cu confidențialitate",
|
||||
"bn-BD" to "কোম্যাপস - অফলাইনে হাইকিং, সাইকেলিং ও ড্রাইভিং",
|
||||
"ca" to "CoMaps - Camina, pedala o condueix privadament",
|
||||
"it-IT" to "CoMaps - Navigazione Offline con Privacy",
|
||||
"uk" to "CoMaps — ходьба та поїздки офлайн із приватність",
|
||||
"zh-TW" to "CoMaps — 隱私保護下的離線遠足、騎行、駕駛",
|
||||
"gl-ES" to "CoMaps - Aplicación de mapas privada, sen conexión",
|
||||
"bg" to "CoMaps - Хайкинг, Велосипед, Пътуване без Интернет",
|
||||
"cs-CZ" to "CoMaps – pěšky, na kole a autem offline a soukromě",
|
||||
"nl-NL" to "CoMaps - Wandel, fiets, rijd offline met privacy",
|
||||
"de-DE" to "CoMaps – Offline navigieren mit Datenschutz",
|
||||
"da-DK" to "CoMaps - vandr, cykl og kør offline med privatliv",
|
||||
"id" to "CoMaps- Navigasi Offline dengan Privasi",
|
||||
"sr" to "CoMaps - пешачење, бицикл и вожња, са приватношћу",
|
||||
"el-GR" to "CoMaps - Πλοήγηση εκτός σύνδεσης με ιδιωτικότητα",
|
||||
"eu-ES" to "CoMaps - mapak offline eta dena pribatuan",
|
||||
"hu-HU" to "CoMaps – túrázás, kerékpározás, autózás offline",
|
||||
"no-NO" to "CoMaps - Gå, Sykle, Kjør Uten Internett",
|
||||
"sv-SE" to "Comaps- Vandra, Cykla, Kör Offline, Privat",
|
||||
"et" to "CoMaps - sinu privaatne kaart",
|
||||
"pl-PL" to "CoMaps - Nawiguj offline z zachowaniem prywatności",
|
||||
"kn-IN" to "ಸಹ ನಕ್ಷೆಗಳು - ಆಫ್ಲೈನ್ ಮತ್ತು ಗೌಪ್ಯತೆಯೊಂದಿಗೆ",
|
||||
"pt-BR" to "CoMaps - Mapas e Navegação Offline com Privacidade",
|
||||
"ar" to "CoMaps - تنزه وتنقل وقُد دون إنترنت مع الخصوصية",
|
||||
"sk" to "CoMaps - kráčaj, bicykluj a jazdi v súkromí",
|
||||
"fi-FI" to "CoMaps - Navigoi yksityisesti ilman verkkoyhteyttä",
|
||||
"kw" to "CoMaps - Viajya gans Privetter",
|
||||
"fa-IR" to "CoMaps - کوهنوردی، دوچرخهسواری و رانندگی آفلاین",
|
||||
"pt" to "CoMaps - Mapas e Navegação - Offline e Privada",
|
||||
"ta-IN" to "இணைவரைபடங்கள் - மலையேறு, வண்டி, தனிமையில் இயக்கு",
|
||||
"en-GB" to "CoMaps - Hike, Bike, Drive Offline with Privacy",
|
||||
"mt" to "CoMaps - Imxi, Suq Rota u Karozza bil-Privatezza",
|
||||
"bn" to "CoMaps - অফলাইনে হাইক, বাইক, ড্রাইভ করুন",
|
||||
"brh" to "CoMaps - آفلائن مش لگ، سائکل سواری و موٹر سواری",
|
||||
"en-CA" to "CoMaps - Hike, Bike, Drive Offline with Privacy",
|
||||
"eo" to "CoMaps - Migru, Biciklu, Veturigu Eksterrete",
|
||||
"ast" to "CoMaps - Mapas ensin conexón con privacidá",
|
||||
)
|
||||
.getBestLocale(localeList) ?: "Unknown App",
|
||||
isInstalled = true,
|
||||
imageModel =
|
||||
"https://f-droid.org/repo/app.comaps.fdroid/en-US/icon_Xqa9hlGluoI0ME9XbHrLOaAJ_dX9wWMtDhLgpFYbUOI=.png",
|
||||
),
|
||||
AppDiscoverItem(
|
||||
packageName = "net.thunderbird.android",
|
||||
name =
|
||||
@@ -20,7 +131,7 @@ fun getNewApps(localeList: LocaleListCompat) =
|
||||
"ar" to "ثَندَربِرْد: حرّر صندوق بريدك",
|
||||
"be" to "Thunderbird: Вольная Пошта",
|
||||
"bg" to "Thunderbird: Освободете пощата",
|
||||
"br" to "Thunderbird: Dieubit hor boest degemer",
|
||||
"br" to "Thunderbird: Dieubit ho poest degemer",
|
||||
"ca" to "Thunderbird: allibereu la vostra safata d'entrada",
|
||||
"co" to "Thunderbird : Messaghjeria libera",
|
||||
"cs-CZ" to "Thunderbird: Svobodná pošta",
|
||||
@@ -38,7 +149,8 @@ fun getNewApps(localeList: LocaleListCompat) =
|
||||
"fr-FR" to "Thunderbird : Courriel libre",
|
||||
"fy" to "Thunderbird: Befrij jo Postfek",
|
||||
"ga" to "Thunderbird: Saor Do Phost",
|
||||
"gd" to "Thunderbird: Saorsa dhan phost agad",
|
||||
"gd" to "Thunderbird: Saorsa dhan phost",
|
||||
"gl-ES" to "Thunderbird: O teu correo libre",
|
||||
"hi-IN" to "थंडरबर्ड - इन्बॉक्स मुक्त करें",
|
||||
"hr" to "Thunderbird: Oslobodite svoju poštu",
|
||||
"hu-HU" to "Thunderbird: Szabad levelezés",
|
||||
@@ -47,6 +159,7 @@ fun getNewApps(localeList: LocaleListCompat) =
|
||||
"it-IT" to "Thunderbird: libera la tua casella di posta",
|
||||
"iw-IL" to "ת'אנדרבירד: שחרר את תיבת הדואר שלך",
|
||||
"ja-JP" to "Thunderbird: 受信トレイをもっと自由に",
|
||||
"ko-KR" to "Thunderbird: 이메일을 자유롭게",
|
||||
"lt" to "Thunderbird: lais. savo gaut.",
|
||||
"mnw" to "ဂစေံလလဳ: သၠးကဠာလိက်မၞး",
|
||||
"nl-NL" to "Thunderbird: Bevrijd uw e-mail",
|
||||
@@ -64,7 +177,7 @@ fun getNewApps(localeList: LocaleListCompat) =
|
||||
"sv-SE" to "Thunderbird: Frigör din inkorg",
|
||||
"ta-IN" to "இடிபறவை: உங்கள் உள்பெட்டி விடுவி",
|
||||
"tr-TR" to "Thunderbird: Özgür E-posta",
|
||||
"uk" to "Thunderbird: Вільна е-пошта",
|
||||
"uk" to "Thunderbird: Вивільніть Вхідні",
|
||||
"vi" to "Thunderbird: Giải phóng hộp thư của bạn",
|
||||
"zh-CN" to "Thunderbird:解放收件箱",
|
||||
"zh-TW" to "Thunderbird: 釋放你的收件匣",
|
||||
@@ -83,60 +196,6 @@ fun getNewApps(localeList: LocaleListCompat) =
|
||||
imageModel =
|
||||
"https://f-droid.org/repo/io.element.android.x/en-US/icon_YBz4_OnMHd7E2Bd_oEza9ImLSlHTpL_C-ovHcKljeFA=.png",
|
||||
),
|
||||
AppDiscoverItem(
|
||||
packageName = "org.breezyweather",
|
||||
name = mapOf("en-US" to "Breezy Weather").getBestLocale(localeList) ?: "Unknown App",
|
||||
isInstalled = true,
|
||||
imageModel =
|
||||
"https://f-droid.org/repo/org.breezyweather/en-US/icon_e18rWq0tKc__3173BVXmiiasM_F7yrUbs6kh7lQffto=.png",
|
||||
),
|
||||
AppDiscoverItem(
|
||||
packageName = "helium314.keyboard",
|
||||
name =
|
||||
mapOf(
|
||||
"ar" to "HeliBoard",
|
||||
"bg" to "HeliBoard",
|
||||
"bn" to "হেলিবোর্ড",
|
||||
"ca" to "HeliBoard",
|
||||
"cs-CZ" to "HeliBoard",
|
||||
"de-DE" to "HeliBoard",
|
||||
"en-US" to "HeliBoard",
|
||||
"es-ES" to "HeliBoard",
|
||||
"et" to "HeliBoard",
|
||||
"fi-FI" to "HeliBoard",
|
||||
"fr-FR" to "HeliBoard",
|
||||
"gl-ES" to "HeliBoard",
|
||||
"hu-HU" to "HeliBoard",
|
||||
"id" to "HeliBoard",
|
||||
"is-IS" to "HeliBoard",
|
||||
"it-IT" to "HeliBoard",
|
||||
"iw-IL" to "הליבורד HeliBoard",
|
||||
"lv" to "HeliBoard",
|
||||
"nl-NL" to "HeliBoard",
|
||||
"pa-PK" to "ہیلیبورڈ",
|
||||
"pl-PL" to "HeliBoard",
|
||||
"pt" to "HeliBoard",
|
||||
"pt-BR" to "HeliBoard",
|
||||
"ru-RU" to "HeliBoard",
|
||||
"ta-IN" to "எலிபோர்டு",
|
||||
"tr-TR" to "HeliBoard",
|
||||
"uk" to "HeliBoard",
|
||||
"zh-CN" to "HeliBoard",
|
||||
)
|
||||
.getBestLocale(localeList) ?: "Unknown App",
|
||||
isInstalled = true,
|
||||
imageModel =
|
||||
"https://f-droid.org/repo/helium314.keyboard/en-US/icon_-nkf9NO4Zp7Y0YX1AOcQdZMf32R_bPt8AZC2Ycn2v1I=.png",
|
||||
),
|
||||
AppDiscoverItem(
|
||||
packageName = "dev.imranr.obtainium.fdroid",
|
||||
name =
|
||||
mapOf("de" to "Obtainium", "en-US" to "Obtainium", "ru-RU" to "Obtainium")
|
||||
.getBestLocale(localeList) ?: "Unknown App",
|
||||
isInstalled = false,
|
||||
imageModel =
|
||||
"https://f-droid.org/repo/dev.imranr.obtainium.fdroid/en-US/icon_8o6Dm3kPEr-C-8U1QdRd9B6DrkXPqLJQ7or0KN7ut_4=.png",
|
||||
),
|
||||
)
|
||||
|
||||
fun getRecentlyUpdatedApps(localeList: LocaleListCompat) =
|
||||
@@ -148,6 +207,7 @@ fun getRecentlyUpdatedApps(localeList: LocaleListCompat) =
|
||||
"ar" to "K-9 Mail",
|
||||
"be" to "Пошта K-9",
|
||||
"bg" to "K-9 Поща",
|
||||
"br" to "Postel K-9",
|
||||
"ca" to "K-9 Mail",
|
||||
"co" to "K-9 Mail",
|
||||
"cs-CZ" to "K-9 Mail",
|
||||
@@ -165,6 +225,7 @@ fun getRecentlyUpdatedApps(localeList: LocaleListCompat) =
|
||||
"fy" to "K-9 Mail",
|
||||
"ga" to "K-9 Mail",
|
||||
"gd" to "Post K-9",
|
||||
"gl-ES" to "K-9 Mail",
|
||||
"he" to "K-9 דוא\"ל",
|
||||
"hi-IN" to "K-9 Mail",
|
||||
"hr" to "K-9 Mail",
|
||||
@@ -258,14 +319,14 @@ fun getRecentlyUpdatedApps(localeList: LocaleListCompat) =
|
||||
packageName = "com.kunzisoft.keepass.libre",
|
||||
name =
|
||||
mapOf(
|
||||
"ar" to "KeePassDX Passkey Vault",
|
||||
"ar" to "خزنة مفتاح مرور KeePassDX",
|
||||
"cs-CZ" to "Trezor pro klíče KeePassDX",
|
||||
"de-DE" to "KeePassDX Passkey-Tresor",
|
||||
"en-US" to "KeePassDX Passkey Vault",
|
||||
"es-ES" to "KeePassDX Passkey Vault",
|
||||
"et" to "KeePassDX salasõnahoidla",
|
||||
"fr-FR" to "KeePassDX - Passkey local",
|
||||
"hr" to "KeePassDX Passkey Vault",
|
||||
"hr" to "KeePassDX trezor za lozinke",
|
||||
"hu-HU" to "KeePassDX jelszótároló",
|
||||
"id" to "KeePassDX Passkey Vault",
|
||||
"it-IT" to "Cassaforte passkey KeePassDX",
|
||||
@@ -277,10 +338,12 @@ fun getRecentlyUpdatedApps(localeList: LocaleListCompat) =
|
||||
"pl-PL" to "KeePassDX – Bezpieczny sejf",
|
||||
"ru-RU" to "KeePassDX - менеджер паролей",
|
||||
"sq" to "Kasafortë Kyçklm. KeePassDX",
|
||||
"ta-IN" to "KeePassDX பாச்கி வால்ட்",
|
||||
"th" to "ตู้นิรภัยพาสคีย์คียพาสดีเอ็กซ์",
|
||||
"tr-TR" to "KeePassDX Passkey Vault",
|
||||
"tr-TR" to "KeePassDX Passkey Kasası",
|
||||
"ur" to "کی پاس ڈی ایکس پاس کی تجوری",
|
||||
"zh-CN" to "KeePassDX 密码库",
|
||||
"zh-TW" to "KeePassDX 密碼(金鑰/單字)保險庫",
|
||||
"zh-TW" to "KeePassDX 密碼金鑰保險庫",
|
||||
)
|
||||
.getBestLocale(localeList) ?: "Unknown App",
|
||||
isInstalled = false,
|
||||
@@ -300,59 +363,95 @@ fun getMostDownloadedApps(localeList: LocaleListCompat) =
|
||||
"pt-PT" to "Organic Maps - Mapas offline",
|
||||
"zh-CN" to "Organic Maps・离线地图与导航 & GPS",
|
||||
"iw-IL" to "Organic Maps・מפת אופליין ו-GPS",
|
||||
"ms-MY" to "Organic Maps: Peta & Navigasi",
|
||||
"lv" to "Organic Maps・Kartes・Navigācija",
|
||||
"am" to "Organic Maps・ከመስመር ውጭ ካርታ & GPS",
|
||||
"en-SG" to "Organic Maps・Offline Map & GPS",
|
||||
"af" to "Organic Maps・Aflynkaart & GPS",
|
||||
"kk" to "Organic Maps: Карталар",
|
||||
"hr" to "Organic Maps: offline karte",
|
||||
"th" to "Organic Maps: แผนที่gps",
|
||||
"si-LK" to "Organic Maps・ඔෆ්ලයින් සිතියම්",
|
||||
"sl" to "Organic Maps・Offline Karte",
|
||||
"ru-RU" to "Organic Maps: GPS карты офлайн",
|
||||
"es-419" to "Organic Maps: mapas sin conexión y GPS",
|
||||
"ne-NP" to "Organic Map・अफलाइन नक्सा & GPS",
|
||||
"jv" to "Organic Maps・Peta Offline & GPS",
|
||||
"fr-FR" to "Organic Maps: gps hors ligne",
|
||||
"es-ES" to "Organic Maps: mapas offline",
|
||||
"mk-MK" to "Organic Maps・Мапи и навигација",
|
||||
"ta-IN" to "Organic Maps・ஆஃப்லைன் வரைபடம்",
|
||||
"be" to "Organic Maps: GPS карты офлайн",
|
||||
"or" to "Organic Maps・ଅଫଲାଇନ୍ ମ୍ୟାପ୍ ଓ GPS",
|
||||
"en-ZA" to "Organic Maps・Offline Map & GPS",
|
||||
"fr-CA" to "Organic Maps: gps hors ligne",
|
||||
"lt" to "Organic Maps・žemėlapis & GPS",
|
||||
"ms" to "Organic Maps: Peta & Navigasi",
|
||||
"sq" to "Organic Maps・Hartë Offline & GPS",
|
||||
"fa-AE" to "Organic Maps・نقشه آفلاین و GPS",
|
||||
"en-US" to "Organic Maps・Offline Map & GPS",
|
||||
"bs" to "Organic Maps: Offline mape i GPS",
|
||||
"tr-TR" to "Organic Maps: Haritalar ve GPS",
|
||||
"ro" to "Organic Maps: hărți offline",
|
||||
"en-GB" to "Organic Maps・Offline Map & GPS",
|
||||
"ug" to "Organic Maps・تورسىز خەرىتە GPS",
|
||||
"hi-IN" to "Organic Maps・ऑफ़लाइन मैप",
|
||||
"bo" to "Organic Maps・དྲ་རྒྱ་མེད་ས་ཁྲ། GPS",
|
||||
"mr-IN" to "Organic Maps ऑफलाईन नकाशे",
|
||||
"bn-BD" to "Organic Maps・मैप्स और नेविगेशन",
|
||||
"ca" to "Organic Map・Mapa Offline i GPS",
|
||||
"it-IT" to "Organic Maps: Mappe Offline",
|
||||
"uk" to "Organic Maps: GPS карти офлайн",
|
||||
"fa-AF" to "Organic Maps・نقشه آفلاین و GPS",
|
||||
"mn-MN" to "Organic Maps・Офлайн газрын зураг ба GPS",
|
||||
"zh-TW" to "Organic Maps・離線地圖與導航 GPS",
|
||||
"as" to "Organic Maps・অফলাইন মেপ আৰু GPS",
|
||||
"zh-HK" to "Organic Maps: 地圖與導航",
|
||||
"gl-ES" to "Organic Maps・Mapa fóra de liña",
|
||||
"mi" to "Organic Maps・Mahere Tuimotu GPS",
|
||||
"en-AU" to "Organic Maps・Offline Map & GPS",
|
||||
"bg" to "Organic Maps: офлайн GPS карти",
|
||||
"my-MM" to "Organic Maps・အော့ဖ်လိုင်းမြေပုံနှင့် GPS",
|
||||
"cs-CZ" to "Organic Maps・mapy offline, GPS",
|
||||
"ml-IN" to "Organic Maps・ഓഫ്ലൈൻ മാപ്പ്",
|
||||
"nl-NL" to "Organic Maps: offline kaarten",
|
||||
"en-CA" to "Organic Maps・Offline Map & GPS",
|
||||
"de-DE" to "Organic Maps Offline Karten",
|
||||
"zu" to "Organic Maps・Imephu Offline ne-GPS",
|
||||
"ja-JP" to "Organic Maps: マップ & ナビゲーション",
|
||||
"da-DK" to "Organic Maps: Offline Kort",
|
||||
"fa" to "Organic Maps・نقشه آفلاین و GPS",
|
||||
"en-IN" to "Organic Maps・Offline Map & GPS",
|
||||
"hy-AM" to "Organic Maps・Offline Map & GPS",
|
||||
"ur" to "Organic Maps・Offline Map & GPS",
|
||||
"mai" to "Organic Maps・ऑफलाइन नक्शा आ GPS",
|
||||
"ko-KR" to "Organic Maps・GPS 지도 길찾기 앱 & 地图",
|
||||
"id" to "Organic Maps: pemetaan offline",
|
||||
"ky-KG" to "Organic Maps・Офлайн карта жана GPS",
|
||||
"sr" to "Organic Maps・Mape i navigacija",
|
||||
"el-GR" to "Organic Maps: Χάρτες & GPS",
|
||||
"eu-ES" to "Organic Maps・Offline Map & GPS",
|
||||
"hu-HU" to "Organic Maps offline navigáció",
|
||||
"lo-LA" to "Organic Maps・ແຜນທີ່ອອບໄລນ໌",
|
||||
"no-NO" to "Organic Maps・kart & navigasjon",
|
||||
"rm" to "Organic Maps: Carta Offline & GPS",
|
||||
"sw" to "Organic Maps・Ramani Offline na GPS",
|
||||
"te-IN" to "Organic Maps・ఆఫ్లైన్ మ్యాప్",
|
||||
"uz" to "Organic Maps: Oflayn xarita va GPS",
|
||||
"sv-SE" to "Organic Maps: kartor & GPS",
|
||||
"et" to "Organic Maps: gps offline",
|
||||
"pl-PL" to "Organic Map・mapy i GPS offline",
|
||||
"kn-IN" to "Organic Maps・ಆಫ್ಲೈನ್ ಮ್ಯಾಪ್",
|
||||
"fil" to "Organic Maps・Offline na Mapa at GPS",
|
||||
"pt-BR" to "Organic Maps - Mapas offline",
|
||||
"ar" to "Organic Maps・خرائط بدون إنترنت",
|
||||
"ka-GE" to "Organic Map: ნავიგაცია, რუკები",
|
||||
"sk" to "Organic Map・Offline Mapy & GPS",
|
||||
"pa" to "Organic Maps: ਆਫਲਾਈਨ ਨਕਸ਼ੇ",
|
||||
"gu" to "Organic Maps・ઓફલાઇન નકશો",
|
||||
"is-IS" to "Organic Maps・Ótengd kort og GPS",
|
||||
"az-AZ" to "Organic Maps – Xəritə və GPS",
|
||||
"es-US" to "Organic Maps: mapas sin conexión y GPS",
|
||||
"fi-FI" to "Organic Maps: offline kartat",
|
||||
)
|
||||
.getBestLocale(localeList) ?: "Unknown App",
|
||||
|
||||
@@ -8,6 +8,71 @@ import org.fdroid.ui.utils.getPreviewVersion
|
||||
|
||||
fun getUpdates(localeList: LocaleListCompat) =
|
||||
listOf(
|
||||
AppUpdateItem(
|
||||
repoId = 1L,
|
||||
packageName = "app.comaps.fdroid",
|
||||
name =
|
||||
mapOf(
|
||||
"pt-PT" to "CoMaps - Mapas e Navegação - Offline e Privada",
|
||||
"zh-CN" to "CoMaps — 隐私保护下的离线远足、骑行、驾驶",
|
||||
"lv" to "CoMaps - dodies ceļā bezsaistē ar privātumu",
|
||||
"hr" to "CoMaps - Pješačite, biciklirajte, vozite Offline i",
|
||||
"sl" to "CoMaps – potujte brez povezave, zasebno",
|
||||
"ru-RU" to "CoMaps - Карты и путешествия с приватностью",
|
||||
"fr-FR" to "CoMaps - Randonnée, Vélo, Conduite hors ligne",
|
||||
"es-ES" to "CoMaps - Senderismo, ciclismo y conducción offline",
|
||||
"lt" to "CoMaps – keliaukite atsijungę ir privačiai",
|
||||
"en-US" to "CoMaps - Hike, Bike, Drive Offline with Privacy",
|
||||
"tr-TR" to "CoMaps - Gizlilikle Yürüyün, Sürün, Gezin",
|
||||
"ro" to "CoMaps - călătorește offline cu confidențialitate",
|
||||
"bn-BD" to "কোম্যাপস - অফলাইনে হাইকিং, সাইকেলিং ও ড্রাইভিং",
|
||||
"ca" to "CoMaps - Camina, pedala o condueix privadament",
|
||||
"it-IT" to "CoMaps - Navigazione Offline con Privacy",
|
||||
"uk" to "CoMaps — ходьба та поїздки офлайн із приватність",
|
||||
"zh-TW" to "CoMaps — 隱私保護下的離線遠足、騎行、駕駛",
|
||||
"gl-ES" to "CoMaps - Aplicación de mapas privada, sen conexión",
|
||||
"bg" to "CoMaps - Хайкинг, Велосипед, Пътуване без Интернет",
|
||||
"cs-CZ" to "CoMaps – pěšky, na kole a autem offline a soukromě",
|
||||
"nl-NL" to "CoMaps - Wandel, fiets, rijd offline met privacy",
|
||||
"de-DE" to "CoMaps – Offline navigieren mit Datenschutz",
|
||||
"da-DK" to "CoMaps - vandr, cykl og kør offline med privatliv",
|
||||
"id" to "CoMaps- Navigasi Offline dengan Privasi",
|
||||
"sr" to "CoMaps - пешачење, бицикл и вожња, са приватношћу",
|
||||
"el-GR" to "CoMaps - Πλοήγηση εκτός σύνδεσης με ιδιωτικότητα",
|
||||
"eu-ES" to "CoMaps - mapak offline eta dena pribatuan",
|
||||
"hu-HU" to "CoMaps – túrázás, kerékpározás, autózás offline",
|
||||
"no-NO" to "CoMaps - Gå, Sykle, Kjør Uten Internett",
|
||||
"sv-SE" to "Comaps- Vandra, Cykla, Kör Offline, Privat",
|
||||
"et" to "CoMaps - sinu privaatne kaart",
|
||||
"pl-PL" to "CoMaps - Nawiguj offline z zachowaniem prywatności",
|
||||
"kn-IN" to "ಸಹ ನಕ್ಷೆಗಳು - ಆಫ್ಲೈನ್ ಮತ್ತು ಗೌಪ್ಯತೆಯೊಂದಿಗೆ",
|
||||
"pt-BR" to "CoMaps - Mapas e Navegação Offline com Privacidade",
|
||||
"ar" to "CoMaps - تنزه وتنقل وقُد دون إنترنت مع الخصوصية",
|
||||
"sk" to "CoMaps - kráčaj, bicykluj a jazdi v súkromí",
|
||||
"fi-FI" to "CoMaps - Navigoi yksityisesti ilman verkkoyhteyttä",
|
||||
"kw" to "CoMaps - Viajya gans Privetter",
|
||||
"fa-IR" to "CoMaps - کوهنوردی، دوچرخهسواری و رانندگی آفلاین",
|
||||
"pt" to "CoMaps - Mapas e Navegação - Offline e Privada",
|
||||
"ta-IN" to "இணைவரைபடங்கள் - மலையேறு, வண்டி, தனிமையில் இயக்கு",
|
||||
"en-GB" to "CoMaps - Hike, Bike, Drive Offline with Privacy",
|
||||
"mt" to "CoMaps - Imxi, Suq Rota u Karozza bil-Privatezza",
|
||||
"bn" to "CoMaps - অফলাইনে হাইক, বাইক, ড্রাইভ করুন",
|
||||
"brh" to "CoMaps - آفلائن مش لگ، سائکل سواری و موٹر سواری",
|
||||
"en-CA" to "CoMaps - Hike, Bike, Drive Offline with Privacy",
|
||||
"eo" to "CoMaps - Migru, Biciklu, Veturigu Eksterrete",
|
||||
"ast" to "CoMaps - Mapas ensin conexón con privacidá",
|
||||
)
|
||||
.getBestLocale(localeList) ?: "Unknown App",
|
||||
installedVersionName = "2026.05.06-10-FDroid",
|
||||
update =
|
||||
getPreviewVersion(
|
||||
versionName = "2026.05.06-11-FDroid",
|
||||
size = 65470491,
|
||||
),
|
||||
whatsNew = "foo bar",
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/app.comaps.fdroid/en-US/icon_Xqa9hlGluoI0ME9XbHrLOaAJ_dX9wWMtDhLgpFYbUOI=.png",
|
||||
),
|
||||
AppUpdateItem(
|
||||
repoId = 1L,
|
||||
packageName = "app.organicmaps",
|
||||
@@ -18,64 +83,104 @@ fun getUpdates(localeList: LocaleListCompat) =
|
||||
"pt-PT" to "Organic Maps - Mapas offline",
|
||||
"zh-CN" to "Organic Maps・离线地图与导航 & GPS",
|
||||
"iw-IL" to "Organic Maps・מפת אופליין ו-GPS",
|
||||
"ms-MY" to "Organic Maps: Peta & Navigasi",
|
||||
"lv" to "Organic Maps・Kartes・Navigācija",
|
||||
"am" to "Organic Maps・ከመስመር ውጭ ካርታ & GPS",
|
||||
"en-SG" to "Organic Maps・Offline Map & GPS",
|
||||
"af" to "Organic Maps・Aflynkaart & GPS",
|
||||
"kk" to "Organic Maps: Карталар",
|
||||
"hr" to "Organic Maps: offline karte",
|
||||
"th" to "Organic Maps: แผนที่gps",
|
||||
"si-LK" to "Organic Maps・ඔෆ්ලයින් සිතියම්",
|
||||
"sl" to "Organic Maps・Offline Karte",
|
||||
"ru-RU" to "Organic Maps: GPS карты офлайн",
|
||||
"es-419" to "Organic Maps: mapas sin conexión y GPS",
|
||||
"ne-NP" to "Organic Map・अफलाइन नक्सा & GPS",
|
||||
"jv" to "Organic Maps・Peta Offline & GPS",
|
||||
"fr-FR" to "Organic Maps: gps hors ligne",
|
||||
"es-ES" to "Organic Maps: mapas offline",
|
||||
"mk-MK" to "Organic Maps・Мапи и навигација",
|
||||
"ta-IN" to "Organic Maps・ஆஃப்லைன் வரைபடம்",
|
||||
"be" to "Organic Maps: GPS карты офлайн",
|
||||
"or" to "Organic Maps・ଅଫଲାଇନ୍ ମ୍ୟାପ୍ ଓ GPS",
|
||||
"en-ZA" to "Organic Maps・Offline Map & GPS",
|
||||
"fr-CA" to "Organic Maps: gps hors ligne",
|
||||
"lt" to "Organic Maps・žemėlapis & GPS",
|
||||
"ms" to "Organic Maps: Peta & Navigasi",
|
||||
"sq" to "Organic Maps・Hartë Offline & GPS",
|
||||
"fa-AE" to "Organic Maps・نقشه آفلاین و GPS",
|
||||
"en-US" to "Organic Maps・Offline Map & GPS",
|
||||
"bs" to "Organic Maps: Offline mape i GPS",
|
||||
"tr-TR" to "Organic Maps: Haritalar ve GPS",
|
||||
"ro" to "Organic Maps: hărți offline",
|
||||
"en-GB" to "Organic Maps・Offline Map & GPS",
|
||||
"ug" to "Organic Maps・تورسىز خەرىتە GPS",
|
||||
"hi-IN" to "Organic Maps・ऑफ़लाइन मैप",
|
||||
"bo" to "Organic Maps・དྲ་རྒྱ་མེད་ས་ཁྲ། GPS",
|
||||
"mr-IN" to "Organic Maps ऑफलाईन नकाशे",
|
||||
"bn-BD" to "Organic Maps・मैप्स और नेविगेशन",
|
||||
"ca" to "Organic Map・Mapa Offline i GPS",
|
||||
"it-IT" to "Organic Maps: Mappe Offline",
|
||||
"uk" to "Organic Maps: GPS карти офлайн",
|
||||
"fa-AF" to "Organic Maps・نقشه آفلاین و GPS",
|
||||
"mn-MN" to "Organic Maps・Офлайн газрын зураг ба GPS",
|
||||
"zh-TW" to "Organic Maps・離線地圖與導航 GPS",
|
||||
"as" to "Organic Maps・অফলাইন মেপ আৰু GPS",
|
||||
"zh-HK" to "Organic Maps: 地圖與導航",
|
||||
"gl-ES" to "Organic Maps・Mapa fóra de liña",
|
||||
"mi" to "Organic Maps・Mahere Tuimotu GPS",
|
||||
"en-AU" to "Organic Maps・Offline Map & GPS",
|
||||
"bg" to "Organic Maps: офлайн GPS карти",
|
||||
"my-MM" to "Organic Maps・အော့ဖ်လိုင်းမြေပုံနှင့် GPS",
|
||||
"cs-CZ" to "Organic Maps・mapy offline, GPS",
|
||||
"ml-IN" to "Organic Maps・ഓഫ്ലൈൻ മാപ്പ്",
|
||||
"nl-NL" to "Organic Maps: offline kaarten",
|
||||
"en-CA" to "Organic Maps・Offline Map & GPS",
|
||||
"de-DE" to "Organic Maps Offline Karten",
|
||||
"zu" to "Organic Maps・Imephu Offline ne-GPS",
|
||||
"ja-JP" to "Organic Maps: マップ & ナビゲーション",
|
||||
"da-DK" to "Organic Maps: Offline Kort",
|
||||
"fa" to "Organic Maps・نقشه آفلاین و GPS",
|
||||
"en-IN" to "Organic Maps・Offline Map & GPS",
|
||||
"hy-AM" to "Organic Maps・Offline Map & GPS",
|
||||
"ur" to "Organic Maps・Offline Map & GPS",
|
||||
"mai" to "Organic Maps・ऑफलाइन नक्शा आ GPS",
|
||||
"ko-KR" to "Organic Maps・GPS 지도 길찾기 앱 & 地图",
|
||||
"id" to "Organic Maps: pemetaan offline",
|
||||
"ky-KG" to "Organic Maps・Офлайн карта жана GPS",
|
||||
"sr" to "Organic Maps・Mape i navigacija",
|
||||
"el-GR" to "Organic Maps: Χάρτες & GPS",
|
||||
"eu-ES" to "Organic Maps・Offline Map & GPS",
|
||||
"hu-HU" to "Organic Maps offline navigáció",
|
||||
"lo-LA" to "Organic Maps・ແຜນທີ່ອອບໄລນ໌",
|
||||
"no-NO" to "Organic Maps・kart & navigasjon",
|
||||
"rm" to "Organic Maps: Carta Offline & GPS",
|
||||
"sw" to "Organic Maps・Ramani Offline na GPS",
|
||||
"te-IN" to "Organic Maps・ఆఫ్లైన్ మ్యాప్",
|
||||
"uz" to "Organic Maps: Oflayn xarita va GPS",
|
||||
"sv-SE" to "Organic Maps: kartor & GPS",
|
||||
"et" to "Organic Maps: gps offline",
|
||||
"pl-PL" to "Organic Map・mapy i GPS offline",
|
||||
"kn-IN" to "Organic Maps・ಆಫ್ಲೈನ್ ಮ್ಯಾಪ್",
|
||||
"fil" to "Organic Maps・Offline na Mapa at GPS",
|
||||
"pt-BR" to "Organic Maps - Mapas offline",
|
||||
"ar" to "Organic Maps・خرائط بدون إنترنت",
|
||||
"ka-GE" to "Organic Map: ნავიგაცია, რუკები",
|
||||
"sk" to "Organic Map・Offline Mapy & GPS",
|
||||
"pa" to "Organic Maps: ਆਫਲਾਈਨ ਨਕਸ਼ੇ",
|
||||
"gu" to "Organic Maps・ઓફલાઇન નકશો",
|
||||
"is-IS" to "Organic Maps・Ótengd kort og GPS",
|
||||
"az-AZ" to "Organic Maps – Xəritə və GPS",
|
||||
"es-US" to "Organic Maps: mapas sin conexión y GPS",
|
||||
"fi-FI" to "Organic Maps: offline kartat",
|
||||
)
|
||||
.getBestLocale(localeList) ?: "Unknown App",
|
||||
installedVersionName = "2026.02.18-4-FDroid",
|
||||
update = getPreviewVersion(versionName = "2026.02.18-5-FDroid", size = 70355961),
|
||||
installedVersionName = "2026.05.27-10-FDroid",
|
||||
update =
|
||||
getPreviewVersion(
|
||||
versionName = "2026.05.27-11-FDroid",
|
||||
size = 71778828,
|
||||
),
|
||||
whatsNew = "foo bar",
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/app.organicmaps/en-US/icon_dE7f4P95-uKZwu7cI89Q0xSi_-gvU4DD-XnLoDG9RLg=.png",
|
||||
@@ -84,34 +189,37 @@ fun getUpdates(localeList: LocaleListCompat) =
|
||||
repoId = 1L,
|
||||
packageName = "at.bitfire.davdroid",
|
||||
name = mapOf("ca" to "DAVx⁵", "en-US" to "DAVx⁵").getBestLocale(localeList) ?: "Unknown App",
|
||||
installedVersionName = "4.5.8-ose",
|
||||
update = getPreviewVersion(versionName = "4.5.9-ose", size = 15974669),
|
||||
installedVersionName = "4.5.12-ose",
|
||||
update =
|
||||
getPreviewVersion(
|
||||
versionName = "4.5.13-ose",
|
||||
size = 16018266,
|
||||
),
|
||||
whatsNew = null,
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/at.bitfire.davdroid/en-US/icon_NexNou7vmaD45rbdc8kjLj0Rv7FW128Mde9OQpHFXPE=.png",
|
||||
),
|
||||
AppUpdateItem(
|
||||
repoId = 1L,
|
||||
packageName = "ch.protonvpn.android",
|
||||
name =
|
||||
mapOf("en-US" to "ProtonVPN - Secure and Free VPN").getBestLocale(localeList)
|
||||
?: "Unknown App",
|
||||
installedVersionName = "5.16.30.9",
|
||||
update = getPreviewVersion(versionName = "5.16.31.0", size = 54161941),
|
||||
whatsNew = "foo bar",
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/ch.protonvpn.android/en-US/icon_xAphlcwMgx7oE7sxB15sxUFIO8geUokWkG01K1fubas=.png",
|
||||
),
|
||||
)
|
||||
|
||||
fun getInstalledApps(localeList: LocaleListCompat) =
|
||||
listOf(
|
||||
InstalledAppItem(
|
||||
packageName = "ch.protonvpn.android",
|
||||
name =
|
||||
mapOf("en-US" to "ProtonVPN - Secure and Free VPN").getBestLocale(localeList)
|
||||
?: "Unknown App",
|
||||
installedVersionName = "5.18.75.0",
|
||||
installedVersionCode = 1,
|
||||
lastUpdated = 1780506857489L,
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/ch.protonvpn.android/en-US/icon_xAphlcwMgx7oE7sxB15sxUFIO8geUokWkG01K1fubas=.png",
|
||||
),
|
||||
InstalledAppItem(
|
||||
packageName = "com.aurora.store",
|
||||
name = mapOf("en-US" to "Aurora Store").getBestLocale(localeList) ?: "Unknown App",
|
||||
installedVersionName = "4.8.1",
|
||||
installedVersionName = "4.8.3",
|
||||
installedVersionCode = 1,
|
||||
lastUpdated = 1771544205000L,
|
||||
lastUpdated = 1779007734975L,
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/com.aurora.store/en-US/icon_tbAhwq51NNd0liZcTg0cQNNvazxrWlj7bPCe_1TkCV8=.png",
|
||||
),
|
||||
@@ -119,18 +227,18 @@ fun getInstalledApps(localeList: LocaleListCompat) =
|
||||
packageName = "com.duckduckgo.mobile.android",
|
||||
name =
|
||||
mapOf("en-US" to "DuckDuckGo Privacy Browser").getBestLocale(localeList) ?: "Unknown App",
|
||||
installedVersionName = "5.268.1",
|
||||
installedVersionName = "5.281.1",
|
||||
installedVersionCode = 1,
|
||||
lastUpdated = 1772699310000L,
|
||||
lastUpdated = 1780614376764L,
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/com.duckduckgo.mobile.android/en-US/icon_QyKhnj_C0Pek3xtJAfPFTvywRXDutsVh7r-9t-doP9E=.png",
|
||||
),
|
||||
InstalledAppItem(
|
||||
packageName = "com.foobnix.pro.pdf.reader",
|
||||
name = mapOf("en-US" to "Librera Reader").getBestLocale(localeList) ?: "Unknown App",
|
||||
installedVersionName = "9.3.63-fdroid",
|
||||
installedVersionName = "9.3.75-fdroid",
|
||||
installedVersionCode = 1,
|
||||
lastUpdated = 1772574994000L,
|
||||
lastUpdated = 1777245514905L,
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/com.foobnix.pro.pdf.reader/en-US/icon_y15Jxhzp6YrmjLC-wtc27B6XLTcArf7yK-2WlpNaoe0=.png",
|
||||
),
|
||||
@@ -141,6 +249,7 @@ fun getInstalledApps(localeList: LocaleListCompat) =
|
||||
"ar" to "K-9 Mail",
|
||||
"be" to "Пошта K-9",
|
||||
"bg" to "K-9 Поща",
|
||||
"br" to "Postel K-9",
|
||||
"ca" to "K-9 Mail",
|
||||
"co" to "K-9 Mail",
|
||||
"cs-CZ" to "K-9 Mail",
|
||||
@@ -158,6 +267,7 @@ fun getInstalledApps(localeList: LocaleListCompat) =
|
||||
"fy" to "K-9 Mail",
|
||||
"ga" to "K-9 Mail",
|
||||
"gd" to "Post K-9",
|
||||
"gl-ES" to "K-9 Mail",
|
||||
"he" to "K-9 דוא\"ל",
|
||||
"hi-IN" to "K-9 Mail",
|
||||
"hr" to "K-9 Mail",
|
||||
@@ -191,36 +301,82 @@ fun getInstalledApps(localeList: LocaleListCompat) =
|
||||
"zh-TW" to "K-9 Mail",
|
||||
)
|
||||
.getBestLocale(localeList) ?: "Unknown App",
|
||||
installedVersionName = "16.1",
|
||||
installedVersionName = "19.2",
|
||||
installedVersionCode = 1,
|
||||
lastUpdated = 1770745842000L,
|
||||
lastUpdated = 1780699361309L,
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/com.fsck.k9/en-US/icon_-2bZW0ZnkKqPVher2SxQK8hXGGSjgaBHoa8x6vW0v8w=.png",
|
||||
),
|
||||
InstalledAppItem(
|
||||
packageName = "com.github.andreyasadchy.xtra",
|
||||
name = mapOf("en-US" to "Xtra").getBestLocale(localeList) ?: "Unknown App",
|
||||
installedVersionName = "2.54.3",
|
||||
installedVersionName = "2.56.2",
|
||||
installedVersionCode = 1,
|
||||
lastUpdated = 1772397992000L,
|
||||
lastUpdated = 1780506857489L,
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/com.github.andreyasadchy.xtra/en-US/icon_yfnxF0cNrXwFX2a93BUclISVaIQzoRmbOuxtGDAwz28=.png",
|
||||
),
|
||||
InstalledAppItem(
|
||||
packageName = "com.github.catfriend1.syncthingfork",
|
||||
name =
|
||||
mapOf(
|
||||
"en-US" to "Syncthing-Fork",
|
||||
"vi" to "Syncthing-Fork",
|
||||
"he" to "Syncthing-Fork",
|
||||
"pt-PT" to "Syncthing-Fork",
|
||||
"zh-CN" to "Syncthing-Fork",
|
||||
"ru-RU" to "Syncthing-Fork",
|
||||
"es-419" to "Syncthing-Fork",
|
||||
"fr-FR" to "Syncthing-Fork",
|
||||
"es-ES" to "Syncthing-Fork",
|
||||
"be" to "Syncthing-Fork",
|
||||
"tr-TR" to "Syncthing-Fork",
|
||||
"ro" to "Syncthing-Fork",
|
||||
"ca" to "Syncthing-Fork",
|
||||
"it-IT" to "Syncthing-Fork",
|
||||
"uk" to "Syncthing-Fork",
|
||||
"zh-TW" to "Syncthing-Fork",
|
||||
"bg" to "Syncthing-Fork",
|
||||
"cs-CZ" to "Syncthing-Fork",
|
||||
"nl-NL" to "Syncthing-Fork",
|
||||
"de-DE" to "Syncthing-Fork",
|
||||
"ja-JP" to "Syncthing-Fork",
|
||||
"da-DK" to "Syncthing-Fork",
|
||||
"ko-KR" to "Syncthing-Fork",
|
||||
"id" to "Syncthing-Fork",
|
||||
"sr" to "Syncthing-Fork",
|
||||
"hu-HU" to "Syncthing-Fork",
|
||||
"sv-SE" to "Syncthing-Fork",
|
||||
"et" to "Syncthing-Fork",
|
||||
"pl-PL" to "Syncthing-Fork",
|
||||
"pt-BR" to "Syncthing-Fork",
|
||||
"ar" to "Syncthing-Fork",
|
||||
"sk" to "Syncthing-Fork",
|
||||
"es-US" to "Syncthing-Fork",
|
||||
"fi-FI" to "Syncthing-Fork",
|
||||
)
|
||||
.getBestLocale(localeList) ?: "Unknown App",
|
||||
installedVersionName = "2.1.0.0",
|
||||
installedVersionCode = 1,
|
||||
lastUpdated = 1778740722978L,
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/com.github.catfriend1.syncthingfork/en-US/icon_egWOwTWZpQ_1CxmdrwP5wRta5EVmCCuzQWxjI5JTs0w=.png",
|
||||
),
|
||||
InstalledAppItem(
|
||||
packageName = "com.github.libretube",
|
||||
name = mapOf("en-US" to "LibreTube").getBestLocale(localeList) ?: "Unknown App",
|
||||
installedVersionName = "0.30.0",
|
||||
installedVersionName = "31.4",
|
||||
installedVersionCode = 1,
|
||||
lastUpdated = 1769702789000L,
|
||||
lastUpdated = 1780094298321L,
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/com.github.libretube/en-US/icon_p6_cfoYk-2IlerJpH4rKIQmkI76zXtS3R9-RZp-3Ggk=.png",
|
||||
),
|
||||
InstalledAppItem(
|
||||
packageName = "com.inspiredandroid.linuxcommandbibliotheca",
|
||||
name = mapOf("en-US" to "Linux Command Library").getBestLocale(localeList) ?: "Unknown App",
|
||||
installedVersionName = "3.5.13",
|
||||
installedVersionName = "4.0.6",
|
||||
installedVersionCode = 1,
|
||||
lastUpdated = 1772463524000L,
|
||||
lastUpdated = 1780012218733L,
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/com.inspiredandroid.linuxcommandbibliotheca/en-US/icon_DrA_e_52nvGa_kTMSapBw4MCqKpccl8WZqrG5enB7rI=.png",
|
||||
),
|
||||
@@ -257,48 +413,4 @@ fun getInstalledApps(localeList: LocaleListCompat) =
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/com.junkfood.seal/en-US/icon_j8mCLA_OX-sJn7TRAdvoaUMW1f6djRv6RMzAnNdaG4I=.png",
|
||||
),
|
||||
InstalledAppItem(
|
||||
packageName = "com.kunzisoft.keepass.libre",
|
||||
name =
|
||||
mapOf(
|
||||
"ar" to "KeePassDX Passkey Vault",
|
||||
"cs-CZ" to "Trezor pro klíče KeePassDX",
|
||||
"de-DE" to "KeePassDX Passkey-Tresor",
|
||||
"en-US" to "KeePassDX Passkey Vault",
|
||||
"es-ES" to "KeePassDX Passkey Vault",
|
||||
"et" to "KeePassDX salasõnahoidla",
|
||||
"fr-FR" to "KeePassDX - Passkey local",
|
||||
"hr" to "KeePassDX Passkey Vault",
|
||||
"hu-HU" to "KeePassDX jelszótároló",
|
||||
"id" to "KeePassDX Passkey Vault",
|
||||
"it-IT" to "Cassaforte passkey KeePassDX",
|
||||
"ja-JP" to "KeePassDX パスワード管理ツール",
|
||||
"lt" to "KeePassDX slaptažodžių seifas",
|
||||
"lv" to "KeePassDX: paroļu pārvaldnieks",
|
||||
"mk-MK" to "KeePassDX Passkey Vault",
|
||||
"nl-NL" to "KeePassDX Passkey-kluis",
|
||||
"pl-PL" to "KeePassDX – Bezpieczny sejf",
|
||||
"ru-RU" to "KeePassDX - менеджер паролей",
|
||||
"sq" to "Kasafortë Kyçklm. KeePassDX",
|
||||
"th" to "ตู้นิรภัยพาสคีย์คียพาสดีเอ็กซ์",
|
||||
"tr-TR" to "KeePassDX Passkey Vault",
|
||||
"zh-CN" to "KeePassDX 密码库",
|
||||
"zh-TW" to "KeePassDX 密碼(金鑰/單字)保險庫",
|
||||
)
|
||||
.getBestLocale(localeList) ?: "Unknown App",
|
||||
installedVersionName = "4.3.2",
|
||||
installedVersionCode = 1,
|
||||
lastUpdated = 1768680637000L,
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/com.kunzisoft.keepass.libre/en-US/icon_eLwXEQD9l2URrUS3t8esDXnsKGBaH02E-ddEYhV_i7Q=.png",
|
||||
),
|
||||
InstalledAppItem(
|
||||
packageName = "com.looker.droidify",
|
||||
name = mapOf("en-US" to "Droid-ify").getBestLocale(localeList) ?: "Unknown App",
|
||||
installedVersionName = "0.7.0",
|
||||
installedVersionCode = 1,
|
||||
lastUpdated = 1771667689000L,
|
||||
iconModel =
|
||||
"https://f-droid.org/repo/com.looker.droidify/en-US/icon_lApsnfhrMqGkCaW-IdnYwx86CUjdTutncPvXPJythaM=.png",
|
||||
),
|
||||
)
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
<!-- drawable/check.xml -->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:height="24dp"
|
||||
android:width="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#000"
|
||||
android:pathData="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" />
|
||||
</vector>
|
||||
@@ -1,10 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:pathData="M12,7c-0.55,0 -1,0.45 -1,1v3L8,11c-0.55,0 -1,0.45 -1,1s0.45,1 1,1h3v3c0,0.55 0.45,1 1,1s1,-0.45 1,-1v-3h3c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1h-3L13,8c0,-0.55 -0.45,-1 -1,-1zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z" />
|
||||
</vector>
|
||||
@@ -1,97 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="?attr/listPreferredItemHeight"
|
||||
android:paddingBottom="2dip"
|
||||
android:paddingTop="2dip">
|
||||
|
||||
<ImageView
|
||||
android:id="@android:id/icon"
|
||||
android:layout_width="48dip"
|
||||
android:layout_height="48dip"
|
||||
android:layout_marginStart="?attr/listPreferredItemPaddingStart"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="6dip"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
tools:src="@drawable/ic_launcher" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/button_or_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerInParent="true"
|
||||
android:orientation="vertical"
|
||||
android:gravity="end"
|
||||
android:layout_marginEnd="?attr/listPreferredItemPaddingEnd"
|
||||
android:layout_marginRight="10dp">
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_install"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:backgroundTint="@color/swap_light_blue"
|
||||
android:textColor="@android:color/white"
|
||||
android:maxEms="10"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:text="@string/menu_install"
|
||||
tools:ignore="UnusedAttribute" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/status_installed"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textStyle="italic"
|
||||
android:text="@string/app_installed" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/status_incompatible"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textStyle="italic"
|
||||
android:textColor="@color/swap_incompatible"
|
||||
android:text="@string/app_incompatible" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/name"
|
||||
android:layout_toEndOf="@android:id/icon"
|
||||
android:layout_toRightOf="@android:id/icon"
|
||||
android:layout_toStartOf="@+id/button_or_text"
|
||||
android:layout_toLeftOf="@+id/button_or_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="?attr/listPreferredItemPaddingStart"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="6dip"
|
||||
android:layout_marginBottom="6dip"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
tools:text="F-Droid" />
|
||||
|
||||
<com.google.android.material.progressindicator.LinearProgressIndicator
|
||||
android:id="@+id/progress"
|
||||
android:visibility="gone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingLeft="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:paddingRight="5dp"
|
||||
android:layout_toEndOf="@android:id/icon"
|
||||
android:layout_toRightOf="@android:id/icon"
|
||||
android:layout_toStartOf="@+id/button_or_text"
|
||||
android:layout_toLeftOf="@+id/button_or_text"
|
||||
android:layout_below="@+id/name"
|
||||
app:showAnimationBehavior="inward"
|
||||
app:hideAnimationBehavior="outward"
|
||||
app:trackCornerRadius="@dimen/mtrl_progress_indicator_full_rounded_corner_radius" />
|
||||
|
||||
</RelativeLayout>
|
||||
@@ -1,7 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="fdroid_error">#ffcf6679</color>
|
||||
<color name="fdroid_caption">#ffb8b8b8</color>
|
||||
|
||||
|
||||
<!-- Generated by Material Theme Builder from fdroid_blue and fdroid_green with modifications -->
|
||||
|
||||
@@ -68,8 +68,4 @@
|
||||
<item name="colorSurfaceContainerHighest">@color/md_theme_surfaceContainerHighest</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.App.Black" parent="Theme.App">
|
||||
<item name="backgroundColor">@android:color/black</item>
|
||||
<item name="android:colorBackground">@android:color/black</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<color name="unsigned">#ffCC0000</color>
|
||||
<color name="unverified">#ff999999</color>
|
||||
<color name="red" >#ffdd2c00</color>
|
||||
|
||||
<color name="fdroid_blue">#ff1976d2</color>
|
||||
<color name="fdroid_green">#ff8ab000</color>
|
||||
@@ -10,10 +7,6 @@
|
||||
<color name="fdroid_error">@color/fdroid_red</color>
|
||||
<color name="fdroid_caption">#ff757575</color>
|
||||
|
||||
<color name="shadow">#cc222222</color>
|
||||
|
||||
<color name="perms_costs_money">#fff4511e</color>
|
||||
|
||||
<!-- Generated by Material Theme Builder from fdroid_blue and fdroid_green -->
|
||||
<!-- https://www.figma.com/community/plugin/1034969338659738588-->
|
||||
<color name="md_theme_primary">#005197</color>
|
||||
@@ -63,11 +56,6 @@
|
||||
<color name="md_theme_surfaceContainerHigh">#E6E8F0</color>
|
||||
<color name="md_theme_surfaceContainerHighest">#E0E2EA</color>
|
||||
|
||||
<color name="call_to_action_banner__background">#FFB9B9</color>
|
||||
<color name="call_to_action_banner__text">#540303</color>
|
||||
<color name="call_to_action_banner__link">#0000ff</color>
|
||||
|
||||
<color name="swap_incompatible">#ff7900</color>
|
||||
<color name="swap_light_blue">#27aae1</color>
|
||||
<color name="swap_blue">#1c6bbc</color>
|
||||
<color name="swap_deny">#ff21488c</color>
|
||||
|
||||
@@ -1,52 +1,19 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!--Button-->
|
||||
<style name="ThemeOverlay.App.Button" parent="Widget.Material3.Button">
|
||||
<item name="colorPrimary">@color/fdroid_green</item>
|
||||
</style>
|
||||
|
||||
<style name="ThemeOverlay.App.Button.TextButton" parent="Widget.Material3.Button.TextButton">
|
||||
<item name="colorPrimary">@color/fdroid_green</item>
|
||||
<item name="android:textColor">@color/fdroid_green</item>
|
||||
</style>
|
||||
|
||||
<!--Dialog-->
|
||||
<style name="MaterialAlertDialog.App.Title.Text" parent="MaterialAlertDialog.Material3.Title.Text">
|
||||
<item name="android:textColor">@color/fdroid_green</item>
|
||||
</style>
|
||||
|
||||
|
||||
<!-- All our cards are Elevated -->
|
||||
<style name="Widget.App.CardView" parent="Widget.Material3.CardView.Elevated" />
|
||||
|
||||
<style name="Widget.App.Button.Dialog" parent="Widget.Material3.Button.TextButton.Dialog">
|
||||
<item name="materialThemeOverlay">@style/ThemeOverlay.App.Button.TextButton</item>
|
||||
<item name="colorPrimary">@color/fdroid_green</item>
|
||||
<item name="android:textColor">@color/fdroid_green</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.App.Button.TextButton" parent="Widget.Material3.Button.TextButton"></style>
|
||||
|
||||
<style name="Widget.App.Button.OutlinedButton" parent="Widget.Material3.Button.OutlinedButton"></style>
|
||||
|
||||
<style name="Widget.App.Button" parent="Widget.Material3.Button"></style>
|
||||
|
||||
<style name="Widget.App.Button.ElevatedButton" parent="Widget.Material3.Button.ElevatedButton"></style>
|
||||
|
||||
<style name="MinWithDialogBaseThemeDark" parent="Theme.Material3.DayNight.Dialog.MinWidth">
|
||||
<item name="colorSecondary">@color/fdroid_green</item>
|
||||
|
||||
<item name="windowActionBar">false</item>
|
||||
<item name="windowNoTitle">true</item>
|
||||
</style>
|
||||
|
||||
<style name="MinWithDialogBaseThemeLight" parent="Theme.Material3.Light.Dialog.MinWidth">
|
||||
<item name="colorSecondary">@color/fdroid_green</item>
|
||||
|
||||
<item name="windowActionBar">false</item>
|
||||
<item name="windowNoTitle">true</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.App.BottomNavigationView" parent="Widget.Material3.BottomNavigationView">
|
||||
<item name="materialThemeOverlay">@style/ThemeOverlay.App.BottomNavigationView</item>
|
||||
</style>
|
||||
@@ -66,130 +33,19 @@
|
||||
</style>
|
||||
|
||||
<!-- use this style for a text view that is a caption to a paragraph of text -->
|
||||
<style name="CaptionText">
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:paddingTop">16dp</item>
|
||||
<item name="android:paddingBottom">4dp</item>
|
||||
<item name="android:textAppearance">@style/TextAppearance.AppCompat.Caption</item>
|
||||
<item name="android:textColor">?android:attr/textColorSecondary</item>
|
||||
<item name="android:textDirection">locale</item>
|
||||
</style>
|
||||
|
||||
<!-- use this style for a text views that is a paragraph of text -->
|
||||
<style name="BodyText">
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:textAppearance">@style/TextAppearance.AppCompat.Body1</item>
|
||||
<item name="android:lineSpacingMultiplier">1.25</item>
|
||||
<item name="android:textDirection">locale</item>
|
||||
</style>
|
||||
|
||||
<style name="AppListEmptyText">
|
||||
<item name="android:id">@android:id/empty</item>
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:padding">48dp</item>
|
||||
<item name="android:textSize">20sp</item>
|
||||
</style>
|
||||
|
||||
<!-- Used for supplementary information to show below an app name in app lists, such as
|
||||
whether it is incompatible, what version is installed, etc -->
|
||||
<style name="AppListItemStatusText">
|
||||
<item name="android:textStyle">italic</item>
|
||||
<item name="android:textSize">14sp</item>
|
||||
<item name="android:maxLines">1</item>
|
||||
<item name="android:ellipsize">end</item>
|
||||
<item name="fontFamily">sans-serif-light</item>
|
||||
</style>
|
||||
|
||||
<style name="AppDetailsLinkBase">
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:drawablePadding">12dp</item>
|
||||
<item name="android:gravity">center_vertical</item>
|
||||
</style>
|
||||
|
||||
<style name="AppDetailsLink" parent="AppDetailsLinkBase" />
|
||||
|
||||
<style name="AppDetailsSubheaderTextBase">
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:textSize">16sp</item>
|
||||
<item name="android:textColor">?android:textColorPrimary</item>
|
||||
<item name="android:singleLine">true</item>
|
||||
<item name="android:gravity">center_vertical</item>
|
||||
<item name="android:drawablePadding">12dp</item>
|
||||
</style>
|
||||
|
||||
<style name="AppVersionStatus">
|
||||
<item name="android:layout_width">wrap_content</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:layout_marginTop">1dp</item>
|
||||
<item name="android:layout_marginLeft">6dp</item>
|
||||
<item name="android:paddingLeft">4dp</item>
|
||||
<item name="android:paddingRight">4dp</item>
|
||||
<item name="android:paddingBottom">1dp</item>
|
||||
<item name="android:maxLines">1</item>
|
||||
<item name="android:textSize">12sp</item>
|
||||
</style>
|
||||
|
||||
<style name="AppDetailsSubheaderText" parent="AppDetailsSubheaderTextBase" />
|
||||
|
||||
|
||||
<style name="DiscreteSeekBar" parent="Base.Widget.AppCompat.SeekBar.Discrete">
|
||||
<!-- Disable default tickMarks. We draw our own in SeekBarForegroundThumb -->
|
||||
<item name="tickMark">@null</item>
|
||||
</style>
|
||||
|
||||
<style name="StatusBanner" parent="Widget.Material3.CardView.Elevated">
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:background">?colorSurfaceContainerHighest</item>
|
||||
<item name="android:textColor">?colorOnSurface</item>
|
||||
</style>
|
||||
|
||||
|
||||
<style name="SwapTheme.Wizard" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<item name="colorButtonNormal">#04b9e6</item>
|
||||
</style>
|
||||
|
||||
<style name="SwapTheme.StartSwap" parent="Theme.MaterialComponents.DayNight" />
|
||||
|
||||
<style name="SwapTheme.StartSwap.Text" parent="@style/SwapTheme.StartSwap"></style>
|
||||
|
||||
<style name="SwapTheme.BluetoothDeviceList" parent="@style/SwapTheme.Wizard"></style>
|
||||
|
||||
<style name="SwapTheme.AppList" parent="Theme.MaterialComponents.DayNight"></style>
|
||||
|
||||
<style name="SwapTheme.AppList.ListItem" parent="Theme.MaterialComponents.DayNight"></style>
|
||||
|
||||
<style name="SwapTheme.AppList.SwapSuccessBase">
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:textSize">25.7sp</item> <!-- 46px * 96dpi / 160dpi -->
|
||||
<item name="android:paddingTop">28dp</item> <!-- 50px * 96dpi / 160dpi -->
|
||||
<item name="android:paddingBottom">20.1dp</item> <!-- 36px * 96dpi / 160dpi -->
|
||||
</style>
|
||||
|
||||
<style name="SwapTheme.AppList.SwapSuccess" parent="SwapTheme.AppList.SwapSuccessBase" />
|
||||
|
||||
<style name="SwapTheme.AppList.SwapSuccessDetailsBase">
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:textSize">20.1sp</item> <!-- 36px * 96dpi / 160dpi -->
|
||||
<item name="android:paddingTop">20.1dp</item> <!-- 36px * 96dpi / 160dpi -->
|
||||
<item name="android:paddingBottom">20.1dp</item> <!-- 36px * 96dpi / 160dpi -->
|
||||
<item name="android:textStyle">bold</item>
|
||||
</style>
|
||||
|
||||
<style name="SwapTheme.AppList.SwapSuccessDetails" parent="SwapTheme.AppList.SwapSuccessDetailsBase" />
|
||||
|
||||
<style name="SwapTheme.StartSwap.MainTextBase">
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:textSize">20.1sp</item> <!-- 36px * 96dpi / 160dpi -->
|
||||
<item name="android:paddingLeft">28dp</item> <!-- 50px * 96dpi / 160dpi -->
|
||||
<item name="android:paddingRight">28dp</item> <!-- 50px * 96dpi / 160dpi -->
|
||||
<item name="android:paddingTop">28dp</item> <!-- 50px * 96dpi / 160dpi -->
|
||||
<item name="android:paddingBottom">16.8dp</item> <!-- 30px * 96dpi / 160dpi -->
|
||||
</style>
|
||||
|
||||
<style name="SwapTheme.StartSwap.MainText" parent="SwapTheme.StartSwap.MainTextBase"></style>
|
||||
|
||||
<style name="SwapTheme.Wizard.TextBase">
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:textColor">#fff</item>
|
||||
@@ -199,18 +55,6 @@
|
||||
|
||||
<style name="SwapTheme.Wizard.Text" parent="SwapTheme.Wizard.TextBase" />
|
||||
|
||||
<style name="SwapTheme.Wizard.Text.Toolbar" parent="SwapTheme.Wizard.Text">
|
||||
<item name="android:textSize">22sp</item>
|
||||
</style>
|
||||
|
||||
<style name="SwapTheme.Wizard.ActionButton" parent="Widget.AppCompat.ActionButton">
|
||||
<item name="android:textAppearance">@style/SwapTheme.Wizard.Text</item>
|
||||
<item name="android:paddingLeft">10dp</item>
|
||||
<item name="android:paddingRight">10dp</item>
|
||||
<item name="android:paddingTop">5dp</item>
|
||||
<item name="android:paddingBottom">5dp</item>
|
||||
</style>
|
||||
|
||||
<style name="SwapTheme.Wizard.MainTextBase" parent="@style/SwapTheme.Wizard.Text">
|
||||
<item name="android:paddingLeft">40dp</item>
|
||||
<item name="android:paddingRight">40dp</item>
|
||||
@@ -254,8 +98,6 @@
|
||||
<item name="android:layout_margin">0dp</item>
|
||||
</style>
|
||||
|
||||
<style name="SwapTheme.Wizard.ReceiveSwap" parent="SwapTheme.Wizard"></style>
|
||||
|
||||
<!--
|
||||
Buttons used to ask the user to confirm they want to receive a swap repo from someone
|
||||
-->
|
||||
|
||||
@@ -85,15 +85,4 @@
|
||||
<!-- customizations that are not API-level specific go here. -->
|
||||
</style>
|
||||
|
||||
<!-- Same as Theme.App except a black background in Dark mode -->
|
||||
<style name="Theme.App.Black" parent="Theme.App" />
|
||||
|
||||
<style name="Theme.App.Transparent" parent="Base.Theme.App">
|
||||
<item name="android:windowBackground">@android:color/transparent</item>
|
||||
<item name="android:colorBackgroundCacheHint">@null</item>
|
||||
<item name="android:windowIsTranslucent">true</item>
|
||||
<item name="android:windowAnimationStyle">@android:style/Animation</item>
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
@@ -35,7 +35,9 @@
|
||||
android:name="org.fdroid.App"
|
||||
android:allowBackup="true"
|
||||
android:banner="@mipmap/ic_banner"
|
||||
android:dataExtractionRules="@xml/backup_extraction_rules"
|
||||
android:enableOnBackInvokedCallback="true"
|
||||
android:fullBackupContent="@xml/backup_rules"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:localeConfig="@xml/locales_config"
|
||||
@@ -163,7 +165,7 @@
|
||||
</receiver>
|
||||
|
||||
<receiver
|
||||
android:name="org.fdroid.install.AppUpdateReceiver"
|
||||
android:name="org.fdroid.updates.SelfUpdateReceiver"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
|
||||
|
||||
@@ -38,6 +38,7 @@ import org.fdroid.ui.crash.CrashActivity
|
||||
import org.fdroid.ui.crash.NoRetryPolicy
|
||||
import org.fdroid.ui.utils.applyNewTheme
|
||||
import org.fdroid.updates.AppUpdateWorker
|
||||
import org.fdroid.updates.SelfUpdateReceiver
|
||||
|
||||
@HiltAndroidApp
|
||||
class App : Application(), Configuration.Provider, SingletonImageLoader.Factory {
|
||||
@@ -100,6 +101,9 @@ class App : Application(), Configuration.Provider, SingletonImageLoader.Factory
|
||||
// bail out here if we are the ACRA process to not initialize anything in crash process
|
||||
if (isAcraProces()) return
|
||||
|
||||
// don't show self-update notification unless we enable it first
|
||||
SelfUpdateReceiver.disable(this)
|
||||
|
||||
RepoUpdateWorker.scheduleOrCancel(applicationContext, settingsManager.repoUpdates)
|
||||
AppUpdateWorker.scheduleOrCancel(applicationContext, settingsManager.autoUpdateApps)
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ fun About(version: String = VERSION_NAME, onBackClicked: (() -> Unit)?) {
|
||||
)
|
||||
}
|
||||
},
|
||||
title = { Text(stringResource(R.string.about_title_full)) },
|
||||
title = { Text(stringResource(R.string.about_title_full), maxLines = 1) },
|
||||
scrollBehavior = scrollBehavior,
|
||||
)
|
||||
},
|
||||
|
||||
@@ -93,7 +93,7 @@ fun MyApps(
|
||||
}
|
||||
} else
|
||||
TopAppBar(
|
||||
title = { Text(stringResource(R.string.menu_apps_my)) },
|
||||
title = { Text(stringResource(R.string.menu_apps_my), maxLines = 1) },
|
||||
actions = {
|
||||
TopAppBarButton(
|
||||
imageVector = Icons.AutoMirrored.Default.ManageSearch,
|
||||
|
||||
@@ -4,6 +4,7 @@ import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.Icons.AutoMirrored
|
||||
import androidx.compose.material.icons.automirrored.filled.MenuBook
|
||||
import androidx.compose.material.icons.automirrored.filled.Message
|
||||
import androidx.compose.material.icons.automirrored.filled.QueueMusic
|
||||
import androidx.compose.material.icons.filled.AccessTime
|
||||
import androidx.compose.material.icons.filled.AccountBalanceWallet
|
||||
import androidx.compose.material.icons.filled.Airplay
|
||||
@@ -17,6 +18,7 @@ import androidx.compose.material.icons.filled.BrowserUpdated
|
||||
import androidx.compose.material.icons.filled.Brush
|
||||
import androidx.compose.material.icons.filled.Calculate
|
||||
import androidx.compose.material.icons.filled.CalendarMonth
|
||||
import androidx.compose.material.icons.filled.CameraAlt
|
||||
import androidx.compose.material.icons.filled.Casino
|
||||
import androidx.compose.material.icons.filled.Castle
|
||||
import androidx.compose.material.icons.filled.Category
|
||||
@@ -39,6 +41,7 @@ import androidx.compose.material.icons.filled.EditNote
|
||||
import androidx.compose.material.icons.filled.EnhancedEncryption
|
||||
import androidx.compose.material.icons.filled.Extension
|
||||
import androidx.compose.material.icons.filled.Fastfood
|
||||
import androidx.compose.material.icons.filled.FiberSmartRecord
|
||||
import androidx.compose.material.icons.filled.FileCopy
|
||||
import androidx.compose.material.icons.filled.FitnessCenter
|
||||
import androidx.compose.material.icons.filled.FlashlightOn
|
||||
@@ -80,6 +83,7 @@ import androidx.compose.material.icons.filled.SignalCellularAlt
|
||||
import androidx.compose.material.icons.filled.Sos
|
||||
import androidx.compose.material.icons.filled.SportsMartialArts
|
||||
import androidx.compose.material.icons.filled.SportsSoccer
|
||||
import androidx.compose.material.icons.filled.StackedLineChart
|
||||
import androidx.compose.material.icons.filled.Storefront
|
||||
import androidx.compose.material.icons.filled.Style
|
||||
import androidx.compose.material.icons.filled.TaskAlt
|
||||
@@ -111,6 +115,7 @@ data class CategoryItem(val id: String, val name: String, val description: Strin
|
||||
"Browser" -> Icons.Default.OpenInBrowser
|
||||
"Calculator" -> Icons.Default.Calculate
|
||||
"Calendar & Agenda" -> Icons.Default.CalendarMonth
|
||||
"Camera" -> Icons.Default.CameraAlt
|
||||
"Card Game" -> Icons.Default.Style
|
||||
"Casual Game" -> Icons.Default.Gamepad
|
||||
"Clock" -> Icons.Default.AccessTime
|
||||
@@ -146,6 +151,8 @@ data class CategoryItem(val id: String, val name: String, val description: Strin
|
||||
"Launcher" -> Icons.Default.Home
|
||||
"Local Media Player" -> Icons.Default.LocalPlay
|
||||
"Location Tracker & Sharer" -> Icons.Default.MyLocation
|
||||
"Lyrics" -> AutoMirrored.Default.QueueMusic
|
||||
"Market & Price" -> Icons.Default.StackedLineChart
|
||||
"Meditation" -> Icons.Default.SelfImprovement
|
||||
"Messaging" -> AutoMirrored.Default.Message
|
||||
"Money" -> Icons.Default.Money
|
||||
@@ -167,6 +174,7 @@ data class CategoryItem(val id: String, val name: String, val description: Strin
|
||||
"Radio" -> Icons.Default.Radio
|
||||
"Reading" -> AutoMirrored.Default.MenuBook
|
||||
"Recipe Manager" -> Icons.Default.RestaurantMenu
|
||||
"Recorder" -> Icons.Default.FiberSmartRecord
|
||||
"Religion" -> Icons.Default.Church
|
||||
"Role-Playing Game" -> Icons.Default.Diversity3
|
||||
"Remote Access" -> Icons.Default.BrowserUpdated
|
||||
@@ -215,6 +223,7 @@ data class CategoryItem(val id: String, val name: String, val description: Strin
|
||||
"Browser" -> CategoryGroups.network
|
||||
"Calculator" -> CategoryGroups.tools
|
||||
"Calendar & Agenda" -> CategoryGroups.productivity
|
||||
"Camera" -> CategoryGroups.device
|
||||
"Card Game" -> CategoryGroups.games
|
||||
"Casual Game" -> CategoryGroups.games
|
||||
"Clock" -> CategoryGroups.productivity
|
||||
@@ -250,6 +259,8 @@ data class CategoryItem(val id: String, val name: String, val description: Strin
|
||||
"Launcher" -> CategoryGroups.device
|
||||
"Local Media Player" -> CategoryGroups.media
|
||||
"Location Tracker & Sharer" -> CategoryGroups.tools
|
||||
"Lyrics" -> CategoryGroups.interests
|
||||
"Market & Price" -> CategoryGroups.interests
|
||||
"Meditation" -> CategoryGroups.interests
|
||||
"Messaging" -> CategoryGroups.communication
|
||||
"Money" -> CategoryGroups.wallets
|
||||
@@ -271,6 +282,7 @@ data class CategoryItem(val id: String, val name: String, val description: Strin
|
||||
"Radio" -> CategoryGroups.media
|
||||
"Reading" -> CategoryGroups.media
|
||||
"Recipe Manager" -> CategoryGroups.interests
|
||||
"Recorder" -> CategoryGroups.tools
|
||||
"Religion" -> CategoryGroups.interests
|
||||
"Role-Playing Game" -> CategoryGroups.games
|
||||
"Remote Access" -> CategoryGroups.network
|
||||
|
||||
@@ -48,7 +48,7 @@ fun Discover(
|
||||
Scaffold(
|
||||
topBar = {
|
||||
TopAppBar(
|
||||
title = { Text(stringResource(R.string.app_name)) },
|
||||
title = { Text(stringResource(R.string.app_name), maxLines = 1) },
|
||||
actions = {
|
||||
topBarMenuItems.forEach { dest ->
|
||||
BadgedBox(
|
||||
|
||||
@@ -42,7 +42,7 @@ fun History(
|
||||
topBar = {
|
||||
TopAppBar(
|
||||
navigationIcon = { if (onBackClicked != null) BackButton(onClick = onBackClicked) },
|
||||
title = { Text(stringResource(R.string.install_history)) },
|
||||
title = { Text(stringResource(R.string.install_history), maxLines = 1) },
|
||||
actions = {
|
||||
if (!items.isNullOrEmpty())
|
||||
TopAppBarButton(
|
||||
|
||||
@@ -66,7 +66,8 @@ fun AddRepo(
|
||||
}
|
||||
} else {
|
||||
stringResource(R.string.repo_add_new_title)
|
||||
}
|
||||
},
|
||||
maxLines = 1,
|
||||
)
|
||||
},
|
||||
)
|
||||
|
||||
@@ -94,7 +94,7 @@ fun Settings(model: SettingsModel, onSaveLogcat: (Uri?) -> Unit, onBackClicked:
|
||||
topBar = {
|
||||
TopAppBar(
|
||||
navigationIcon = { BackButton(onClick = onBackClicked) },
|
||||
title = { Text(stringResource(R.string.menu_settings)) },
|
||||
title = { Text(stringResource(R.string.menu_settings), maxLines = 1) },
|
||||
)
|
||||
}
|
||||
) { paddingValues ->
|
||||
|
||||
@@ -21,7 +21,7 @@ fun TopAppBarOverflowButton(
|
||||
var menuExpanded by remember { mutableStateOf(false) }
|
||||
TopAppBarButton(
|
||||
Icons.Default.MoreVert,
|
||||
contentDescription = stringResource(R.string.abc_action_menu_overflow_description),
|
||||
contentDescription = stringResource(R.string.menu_overflow_description),
|
||||
onClick = { menuExpanded = !menuExpanded },
|
||||
)
|
||||
DropdownMenu(expanded = menuExpanded, onDismissRequest = { menuExpanded = false }) {
|
||||
|
||||
@@ -1,32 +1,53 @@
|
||||
package org.fdroid.install
|
||||
package org.fdroid.updates
|
||||
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.ComponentName
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.Intent.ACTION_MY_PACKAGE_REPLACED
|
||||
import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
import android.os.Build.VERSION.SDK_INT
|
||||
import android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED
|
||||
import android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED
|
||||
import android.content.pm.PackageManager.DONT_KILL_APP
|
||||
import android.os.Build
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import javax.inject.Inject
|
||||
import mu.KotlinLogging
|
||||
import org.fdroid.NotificationManager
|
||||
|
||||
@AndroidEntryPoint
|
||||
class AppUpdateReceiver : BroadcastReceiver() {
|
||||
class SelfUpdateReceiver : BroadcastReceiver() {
|
||||
|
||||
private val log = KotlinLogging.logger {}
|
||||
|
||||
@Inject lateinit var notificationManager: NotificationManager
|
||||
|
||||
companion object {
|
||||
fun enable(context: Context) {
|
||||
setEnabledState(context, COMPONENT_ENABLED_STATE_ENABLED)
|
||||
}
|
||||
|
||||
fun disable(context: Context) {
|
||||
setEnabledState(context, COMPONENT_ENABLED_STATE_DISABLED)
|
||||
}
|
||||
|
||||
private fun setEnabledState(context: Context, state: Int) {
|
||||
val component = ComponentName(context, SelfUpdateReceiver::class.java)
|
||||
context.packageManager.setComponentEnabledSetting(
|
||||
component,
|
||||
state,
|
||||
DONT_KILL_APP,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
if (intent.action != ACTION_MY_PACKAGE_REPLACED) {
|
||||
if (intent.action != Intent.ACTION_MY_PACKAGE_REPLACED) {
|
||||
log.warn { "Unknown action: ${intent.action}" }
|
||||
return
|
||||
}
|
||||
log.info { "Intent received, we just updated ourselves!" }
|
||||
val intent =
|
||||
context.packageManager.getLaunchIntentForPackage(context.packageName)?.apply {
|
||||
addFlags(FLAG_ACTIVITY_NEW_TASK)
|
||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
}
|
||||
if (intent == null) {
|
||||
log.error { "Could not get launch intent for ourselves" }
|
||||
@@ -39,6 +60,6 @@ class AppUpdateReceiver : BroadcastReceiver() {
|
||||
}
|
||||
// show notification on Android 10+, because we aren't allowed to start activity from background
|
||||
// see: https://developer.android.com/guide/components/activities/background-starts
|
||||
if (SDK_INT >= 29) notificationManager.showSelfUpdateNotification()
|
||||
if (Build.VERSION.SDK_INT >= 29) notificationManager.showSelfUpdateNotification()
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@ import org.fdroid.database.FDroidDatabase
|
||||
import org.fdroid.index.RepoManager
|
||||
import org.fdroid.install.AppInstallManager
|
||||
import org.fdroid.ui.apps.AppUpdateItem
|
||||
import org.fdroid.ui.utils.isAppInForeground
|
||||
import org.fdroid.utils.IoDispatcher
|
||||
|
||||
/**
|
||||
@@ -67,7 +68,15 @@ constructor(
|
||||
// Update all non-self apps first, then our own package at the end.
|
||||
updateAppsInParallel(otherApps, canRequestPreApproval)
|
||||
|
||||
ownApp?.let { update -> updateApp(update, canRequestPreApproval) }
|
||||
// If available, we update ourselves last
|
||||
ownApp?.let { update ->
|
||||
if (context.isAppInForeground()) {
|
||||
// enable the receiver only if the app is currently in the foreground,
|
||||
// so the user can easily re-launch it. It will get disabled again in the app's onCreate
|
||||
SelfUpdateReceiver.enable(context)
|
||||
}
|
||||
updateApp(update, canRequestPreApproval)
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun updateAppsInParallel(
|
||||
@@ -114,13 +123,13 @@ constructor(
|
||||
private suspend fun updateApp(update: AppUpdateItem, canAskPreApprovalNow: Boolean) {
|
||||
val app = db.getAppDao().getApp(update.repoId, update.packageName)
|
||||
appInstallManager.install(
|
||||
packageName = update.packageName,
|
||||
appMetadata = app?.metadata,
|
||||
version = update.update as AppVersion,
|
||||
currentVersionName = update.installedVersionName,
|
||||
repo = repoManager.getRepository(update.repoId),
|
||||
iconModel = update.iconModel,
|
||||
canAskPreApprovalNow = canAskPreApprovalNow,
|
||||
packageName = update.packageName,
|
||||
appMetadata = app?.metadata,
|
||||
version = update.update as AppVersion,
|
||||
currentVersionName = update.installedVersionName,
|
||||
repo = repoManager.getRepository(update.repoId),
|
||||
iconModel = update.iconModel,
|
||||
canAskPreApprovalNow = canAskPreApprovalNow,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import io.ktor.client.engine.ProxyConfig
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlin.time.measureTimedValue
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.delay
|
||||
@@ -76,7 +77,7 @@ constructor(
|
||||
init {
|
||||
coroutineScope.launch {
|
||||
// delay initial check for updates a bit, so we don't hammer the DB during start-up
|
||||
delay(1500)
|
||||
delay(1500.milliseconds)
|
||||
// Auto-refresh updates when installed apps change.
|
||||
installedAppsCache.installedApps.collect { loadUpdates(it) }
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
<string name="links">Skakels</string>
|
||||
<string name="versions">Weergawes</string>
|
||||
<string name="more">Meer</string>
|
||||
<string name="abc_action_menu_overflow_description">Nog opsies</string>
|
||||
<string name="menu_overflow_description">Nog opsies</string>
|
||||
<string name="less">Minder</string>
|
||||
<string name="back">Terug</string>
|
||||
<string name="cancel">Kanselleer</string>
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
<string name="added_on">أُضيفت في %s</string>
|
||||
<string name="links">الروابط</string>
|
||||
<string name="more">المزيد</string>
|
||||
<string name="abc_action_menu_overflow_description">خيارات أكثر</string>
|
||||
<string name="menu_overflow_description">خيارات أكثر</string>
|
||||
<string name="less">تقليل</string>
|
||||
<string name="back">ارجع</string>
|
||||
<string name="overwrite">استبدال</string>
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
<string name="app_list__name__successfully_installed">%1$s quraşdırıldı</string>
|
||||
<string name="updates__tts__download_app">Yüklə</string>
|
||||
<string name="more">Daha çox</string>
|
||||
<string name="abc_action_menu_overflow_description">Digər seçimlər</string>
|
||||
<string name="menu_overflow_description">Digər seçimlər</string>
|
||||
<string name="less">Daha az</string>
|
||||
<string name="antitracklist">Bu tətbiq fəaliyyətinizi izləyir və bu barədə hesabat verir</string>
|
||||
<string name="warning_no_internet">Yeniləmə uğursuz oldu. İnternetə qoşulmusunuzmu?</string>
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
<string name="links">Спасылкі</string>
|
||||
<string name="versions">Версіі</string>
|
||||
<string name="more">Падрабязней</string>
|
||||
<string name="abc_action_menu_overflow_description">Дадатковыя параметры</string>
|
||||
<string name="menu_overflow_description">Дадатковыя параметры</string>
|
||||
<string name="less">Схаваць</string>
|
||||
<string name="back">Назад</string>
|
||||
<string name="cancel">Скасаваць</string>
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
<string name="app_incompatible">Несъвместимо</string>
|
||||
<string name="all_other_repos_fine">Всички останали хранилища са наред.</string>
|
||||
<string name="more">Повече</string>
|
||||
<string name="abc_action_menu_overflow_description">Още опции</string>
|
||||
<string name="menu_overflow_description">Още опции</string>
|
||||
<string name="less">По-малко</string>
|
||||
<string name="menu_settings">Настройки</string>
|
||||
<string name="menu_bitcoin">Биткойн</string>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<string name="enable">সক্ষম করো</string>
|
||||
<string name="less">কম</string>
|
||||
<string name="more">আরো</string>
|
||||
<string name="abc_action_menu_overflow_description">আরও বিকল্প</string>
|
||||
<string name="menu_overflow_description">আরও বিকল্প</string>
|
||||
<string name="versions">সংস্করণ</string>
|
||||
<string name="links">লিঙ্ক</string>
|
||||
<string name="repo_add_add">যোগ করো</string>
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
<string name="menu_flattr">Flattr</string>
|
||||
<string name="banner_updating_repositories">Actualitzant dipòsits</string>
|
||||
<string name="more">Més</string>
|
||||
<string name="abc_action_menu_overflow_description">Més opcions</string>
|
||||
<string name="menu_overflow_description">Més opcions</string>
|
||||
<string name="less">Menys</string>
|
||||
<string name="permissions">Permisos</string>
|
||||
<string name="unstable_updates_summary">Suggerir actualitzacions a versions inestables</string>
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
<string name="unstable_updates">Nestabilní aktualizace</string>
|
||||
<string name="unstable_updates_summary">Doporučovat aktualizace na nestabilní verze</string>
|
||||
<string name="more">Více</string>
|
||||
<string name="abc_action_menu_overflow_description">Další možnosti</string>
|
||||
<string name="menu_overflow_description">Další možnosti</string>
|
||||
<string name="less">Méně</string>
|
||||
<string name="bad_fingerprint">Špatný otisk</string>
|
||||
<string name="menu_settings">Nastavení</string>
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<string name="repo_add_add">Tilføj</string>
|
||||
<string name="links">Links</string>
|
||||
<string name="more">Mere</string>
|
||||
<string name="abc_action_menu_overflow_description">Flere valgmuligheder</string>
|
||||
<string name="menu_overflow_description">Flere valgmuligheder</string>
|
||||
<string name="less">Mindre</string>
|
||||
<string name="back">Tilbage</string>
|
||||
<string name="cancel">Annuller</string>
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
<string name="interval_1d">Täglich nach Aktualisierungen suchen</string>
|
||||
<string name="interval_1w">Wöchentlich nach Aktualisierungen suchen</string>
|
||||
<string name="more">Mehr</string>
|
||||
<string name="abc_action_menu_overflow_description">Mehr Optionen</string>
|
||||
<string name="menu_overflow_description">Mehr Optionen</string>
|
||||
<string name="less">Weniger</string>
|
||||
<string name="empty_installed_app_list">Keine Apps installiert. \n \nEs sind Apps auf deinem Gerät installiert, aber keine davon ist von F-Droid abrufbar. Das könnte daran liegen, dass du deine Paketquellen aktualisieren musst oder diese tatsächlich keine deiner Apps beinhalten.</string>
|
||||
<string name="empty_can_update_app_list">Glückwunsch! \nDeine Apps sind auf dem neuesten Stand.</string>
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
<string name="app_inst_unknown_source">Εγκαταστημένο (από άγνωστη πηγή)</string>
|
||||
<string name="links">Σύνδεσμοι</string>
|
||||
<string name="more">Περισσότερα</string>
|
||||
<string name="abc_action_menu_overflow_description">Περισσότερες επιλογές</string>
|
||||
<string name="menu_overflow_description">Περισσότερες επιλογές</string>
|
||||
<string name="less">Λιγότερα</string>
|
||||
<string name="back">Επιστροφή</string>
|
||||
<string name="bad_fingerprint">Λανθασμένο δακτυλικό αποτύπωμα</string>
|
||||
|
||||
@@ -430,7 +430,7 @@
|
||||
<string name="antitracklist">This app tracks and reports your activity</string>
|
||||
<string name="less">Less</string>
|
||||
<string name="more">More</string>
|
||||
<string name="abc_action_menu_overflow_description">More options</string>
|
||||
<string name="menu_overflow_description">More options</string>
|
||||
<string name="updates__tts__download_app">Download</string>
|
||||
<string name="app_list__name__successfully_installed">%1$s installed</string>
|
||||
<string name="app_list__name__downloading_in_progress">Downloading %1$s</string>
|
||||
|
||||
@@ -804,7 +804,7 @@
|
||||
<string name="category_group_summary_games">Tabulaj, kartaj kaj plurpersonaj ludoj</string>
|
||||
<string name="pref_auto_updates_only_only_when_open_app">Nur kiam malfermi la aplikaĵon</string>
|
||||
<string name="pref_repo_updates_summary_only_when_open_app">Kontrolas pri ĝisdatigoj nur je starto • Aplikaĵoj povas iĝi neaktualaj</string>
|
||||
<string name="abc_action_menu_overflow_description">Pliaj ebloj</string>
|
||||
<string name="menu_overflow_description">Pliaj ebloj</string>
|
||||
<string name="notification_channel_self_update_title">Mem-ĝisdatigo</string>
|
||||
<string name="notification_channel_self_update_description">Montras sciigon post kiam la aplikaĵo estas ĝisdatiginta sin mem por ke vi povu facile restarti ĝin.</string>
|
||||
<string name="notification_self_update_title">%s estas ĝisdatigita. Frapetu por ekigi ĝin</string>
|
||||
|
||||
@@ -212,7 +212,7 @@
|
||||
<string name="install_confirm_update_system">¿Quieres instalar una actualización de esta aplicación integrada? Tus datos no se perderán. La aplicación actualizada podrá acceder a:</string>
|
||||
<string name="install_confirm_update_system_no_perms">¿Quieres instalar una actualización de esta aplicación integrada? Tus datos no se perderán. No requiere ningún acceso especial.</string>
|
||||
<string name="more">Más</string>
|
||||
<string name="abc_action_menu_overflow_description">Más opciones</string>
|
||||
<string name="menu_overflow_description">Más opciones</string>
|
||||
<string name="less">Menos</string>
|
||||
<string name="menu_bitcoin">Bitcoin</string>
|
||||
<string name="menu_litecoin">Litecoin</string>
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<string name="repo_add_add">Lisa</string>
|
||||
<string name="links">Lingid</string>
|
||||
<string name="more">Rohkem</string>
|
||||
<string name="abc_action_menu_overflow_description">Lisavalikud</string>
|
||||
<string name="menu_overflow_description">Lisavalikud</string>
|
||||
<string name="less">Vähem</string>
|
||||
<string name="back">Tagasi</string>
|
||||
<string name="cancel">Tühista</string>
|
||||
|
||||
@@ -218,7 +218,7 @@
|
||||
<string name="download_error">Deskargak huts egin du!</string>
|
||||
<string name="perms_description_app">%1$sk hornitua.</string>
|
||||
<string name="more">Gehiago</string>
|
||||
<string name="abc_action_menu_overflow_description">Aukera gehiago</string>
|
||||
<string name="menu_overflow_description">Aukera gehiago</string>
|
||||
<string name="less">Gutxiago</string>
|
||||
<string name="status_download_unknown_size">%2$s
|
||||
\ndeskargatzen\n%1$s(e)tik
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
<string name="app_inst_unknown_source">نصب شده (از منبع ناشناس)</string>
|
||||
<string name="links">پیوندها</string>
|
||||
<string name="more">بیشتر</string>
|
||||
<string name="abc_action_menu_overflow_description">گزینههای بیشتر</string>
|
||||
<string name="menu_overflow_description">گزینههای بیشتر</string>
|
||||
<string name="less">کمتر</string>
|
||||
<string name="back">بازگشت</string>
|
||||
<string name="bad_fingerprint">اثر انگشت بد</string>
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
<string name="swap_choose_apps">Valitse sovellukset</string>
|
||||
<string name="links">Linkit</string>
|
||||
<string name="more">Lisää</string>
|
||||
<string name="abc_action_menu_overflow_description">Lisäasetukset</string>
|
||||
<string name="menu_overflow_description">Lisäasetukset</string>
|
||||
<string name="less">Vähemmän</string>
|
||||
<string name="update_auto_download">Lataa päivitykset automaattisesti</string>
|
||||
<string name="update_auto_download_summary">Päivitykset ladataan automaattisesti ja sinua pyydetään asentamaan ne</string>
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
<string name="swap_connection_misc_error">Une erreur a eu lieu lors de la connexion à l\'appareil, impossible de faire l\'échange !</string>
|
||||
<string name="category_Time">Temps</string>
|
||||
<string name="more">Plus</string>
|
||||
<string name="abc_action_menu_overflow_description">Plus d\'options</string>
|
||||
<string name="menu_overflow_description">Plus d\'options</string>
|
||||
<string name="less">Moins</string>
|
||||
<string name="permissions">Autorisations</string>
|
||||
<string name="menu_settings">Paramètres</string>
|
||||
|
||||
@@ -873,7 +873,7 @@
|
||||
<string name="category_group_summary_games">Cluichí boird, cártaí agus cóisire</string>
|
||||
<string name="pref_auto_updates_only_only_when_open_app">Nuair a osclaítear an aip amháin</string>
|
||||
<string name="pref_repo_updates_summary_only_when_open_app">Seiceáil le haghaidh nuashonruithe ach amháin nuair a osclaítear iad • Beidh aipeanna as dáta</string>
|
||||
<string name="abc_action_menu_overflow_description">Tuilleadh roghanna</string>
|
||||
<string name="menu_overflow_description">Tuilleadh roghanna</string>
|
||||
<string name="notification_channel_self_update_title">Féinnuashonrú</string>
|
||||
<string name="notification_channel_self_update_description">Tugann sé fógra nuair a rinneadh an aip a nuashonrú agus a dhúnadh í, ionas gur féidir leat í a sheoladh arís go héasca</string>
|
||||
<string name="notification_self_update_title">Nuashonraíodh %s. Tapáil le hoscailt</string>
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
<string name="app_inst_unknown_source">Instalado (dende unha fonte descoñecida)</string>
|
||||
<string name="links">Ligazóns</string>
|
||||
<string name="more">Máis</string>
|
||||
<string name="abc_action_menu_overflow_description">Máis opcións</string>
|
||||
<string name="menu_overflow_description">Máis opcións</string>
|
||||
<string name="less">Menos</string>
|
||||
<string name="back">Volver</string>
|
||||
<string name="enable">Activar</string>
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
<string name="app_details">અનુપ્રયોગની વિગતો</string>
|
||||
<string name="app_list__name__successfully_installed">%1$s સ્થાપિત થઇ ગયેલ છે</string>
|
||||
<string name="more">વધુ</string>
|
||||
<string name="abc_action_menu_overflow_description">વધુ વિકલ્પો</string>
|
||||
<string name="menu_overflow_description">વધુ વિકલ્પો</string>
|
||||
<string name="less">ઓછુ</string>
|
||||
<string name="notification_action_install">સ્થાપિત કરો</string>
|
||||
<string name="app_list__name__downloading_in_progress">ડાઉનલોડ થાય છે, %1$s</string>
|
||||
|
||||
@@ -217,7 +217,7 @@
|
||||
<string name="menu_flattr">Flattr</string>
|
||||
<string name="download_error">ההורדה נכשלה!</string>
|
||||
<string name="more">עוד</string>
|
||||
<string name="abc_action_menu_overflow_description">עוד אפשרויות</string>
|
||||
<string name="menu_overflow_description">עוד אפשרויות</string>
|
||||
<string name="less">פחות</string>
|
||||
<string name="menu_settings">הגדרות</string>
|
||||
<string name="status_download_unknown_size">מתבצעת הורדה
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<string name="repo_add_add">जोड़े</string>
|
||||
<string name="links">संधियां</string>
|
||||
<string name="more">ज़्यादा</string>
|
||||
<string name="abc_action_menu_overflow_description">ज़्यादा विकल्प</string>
|
||||
<string name="menu_overflow_description">ज़्यादा विकल्प</string>
|
||||
<string name="less">कम</string>
|
||||
<string name="back">पीछे</string>
|
||||
<string name="cancel">रद्द करें</string>
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
<string name="repo_add_add">Dodaj</string>
|
||||
<string name="links">Poveznice</string>
|
||||
<string name="more">Više</string>
|
||||
<string name="abc_action_menu_overflow_description">Više opcija</string>
|
||||
<string name="menu_overflow_description">Više opcija</string>
|
||||
<string name="less">Manje</string>
|
||||
<string name="back">Natrag</string>
|
||||
<string name="cancel">Odustani</string>
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
<string name="app_inst_unknown_source">Telepítve (ismeretlen forrásból)</string>
|
||||
<string name="links">Hivatkozások</string>
|
||||
<string name="more">Több</string>
|
||||
<string name="abc_action_menu_overflow_description">További lehetőségek</string>
|
||||
<string name="menu_overflow_description">További lehetőségek</string>
|
||||
<string name="less">Kevesebb</string>
|
||||
<string name="back">Vissza</string>
|
||||
<string name="bad_fingerprint">Rossz ujjlenyomat</string>
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
<string name="links">Հղումներ</string>
|
||||
<string name="versions">Տարբերակներ</string>
|
||||
<string name="more">Ավել</string>
|
||||
<string name="abc_action_menu_overflow_description">Այլ ընտրանքներ</string>
|
||||
<string name="menu_overflow_description">Այլ ընտրանքներ</string>
|
||||
<string name="less">Պակաս</string>
|
||||
<string name="back">Ետ</string>
|
||||
<string name="cancel">Չեղարկել</string>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<string name="repo_add_add">Tambahkan</string>
|
||||
<string name="links">Tautan</string>
|
||||
<string name="more">Lebih banyak</string>
|
||||
<string name="abc_action_menu_overflow_description">Pilihan lainnya</string>
|
||||
<string name="menu_overflow_description">Pilihan lainnya</string>
|
||||
<string name="less">Lebih sedikit</string>
|
||||
<string name="back">Kembali</string>
|
||||
<string name="cancel">Batalkan</string>
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
<string name="repo_add_add">Bæta við</string>
|
||||
<string name="links">Tenglar</string>
|
||||
<string name="more">Meira</string>
|
||||
<string name="abc_action_menu_overflow_description">Fleiri valkostir</string>
|
||||
<string name="menu_overflow_description">Fleiri valkostir</string>
|
||||
<string name="less">Minna</string>
|
||||
<string name="back">Til baka</string>
|
||||
<string name="cancel">Hætta við</string>
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
<string name="app_inst_known_source">Installato (da %s)</string>
|
||||
<string name="app_inst_unknown_source">Installato (da fonte sconosciuta)</string>
|
||||
<string name="more">Altro</string>
|
||||
<string name="abc_action_menu_overflow_description">Altre opzioni</string>
|
||||
<string name="menu_overflow_description">Altre opzioni</string>
|
||||
<string name="back">Indietro</string>
|
||||
<string name="less">Riduci</string>
|
||||
<string name="bad_fingerprint">Impronta digitale non corrispondente</string>
|
||||
|
||||
@@ -214,7 +214,7 @@
|
||||
<string name="menu_flattr">Flattr</string>
|
||||
<string name="repo_details">リポジトリ</string>
|
||||
<string name="more">詳細を表示</string>
|
||||
<string name="abc_action_menu_overflow_description">その他のオプション</string>
|
||||
<string name="menu_overflow_description">その他のオプション</string>
|
||||
<string name="less">詳細を隠す</string>
|
||||
<string name="status_download_unknown_size">ダウンロード中
|
||||
\n%2$s
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<string name="cache_downloaded">დაქეშილი აპების დატოვება</string>
|
||||
<string name="app_list__name__downloading_in_progress">%1$s-ის გადმოწერა</string>
|
||||
<string name="more">მეტი</string>
|
||||
<string name="abc_action_menu_overflow_description">სხვა ვარიანტები</string>
|
||||
<string name="menu_overflow_description">სხვა ვარიანტები</string>
|
||||
<string name="less">ნაკლები</string>
|
||||
<string name="menu_uninstall">წაშლა</string>
|
||||
<string name="menu_upgrade">განახლება</string>
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
<string name="less">Азырақ</string>
|
||||
<string tools:ignore="UnusedResources" name="category_Writing">Мәтін</string>
|
||||
<string name="more">Толығырақ</string>
|
||||
<string name="abc_action_menu_overflow_description">Басқа опциялар</string>
|
||||
<string name="menu_overflow_description">Басқа опциялар</string>
|
||||
<string name="uninstall_error_notify_title">%s жойылмады</string>
|
||||
<string name="icon">Таңбаша</string>
|
||||
<string name="use_pure_black_dark_theme_summary">Тек OLED экрандары үшін ұсынылады.</string>
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
<string name="app_incompatible">호환되지 않음</string>
|
||||
<string name="links">링크</string>
|
||||
<string name="more">더 보기</string>
|
||||
<string name="abc_action_menu_overflow_description">추가 옵션</string>
|
||||
<string name="menu_overflow_description">추가 옵션</string>
|
||||
<string name="less">덜 보기</string>
|
||||
<string name="back">뒤로</string>
|
||||
<string name="bad_fingerprint">잘못된 지문</string>
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
<string name="app_list__name__successfully_installed">%1$s ir uzstādīta</string>
|
||||
<string name="updates__tts__download_app">Lejupielādēt</string>
|
||||
<string name="more">Vairāk</string>
|
||||
<string name="abc_action_menu_overflow_description">Citas opcijas</string>
|
||||
<string name="menu_overflow_description">Citas opcijas</string>
|
||||
<string name="less">Mazāk</string>
|
||||
<string name="warning_no_internet">Nevar atjaunināt. Vai ierīcei ir savienojums ar internetu?</string>
|
||||
<string name="unsigned">Neparakstīts</string>
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
<string name="antitracklist">Оваа апликација ја следи и јавува вашата активност</string>
|
||||
<string name="less">Помалку</string>
|
||||
<string name="more">Повеќе</string>
|
||||
<string name="abc_action_menu_overflow_description">Повеќе опции</string>
|
||||
<string name="menu_overflow_description">Повеќе опции</string>
|
||||
<string name="repo_add_url">Адреса на складиштето</string>
|
||||
<string name="choose_bt_send">Изберете Bluetooth метод за испраќање</string>
|
||||
<string name="bluetooth_activity_not_found">Не е пронајден метод за испраќање преке Bluetooth, изберете еден!</string>
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
<string name="app_list__name__successfully_installed">%1$s നെ സ്ഥാപിച്ചു</string>
|
||||
<string name="updates__tts__download_app">ഡൗൺലോഡ് ചെയ്യുക</string>
|
||||
<string name="more">കൂടുതല്</string>
|
||||
<string name="abc_action_menu_overflow_description">കൂടുതൽ ഓപ്ഷനുകൾ</string>
|
||||
<string name="menu_overflow_description">കൂടുതൽ ഓപ്ഷനുകൾ</string>
|
||||
<string name="less">കുറവ്</string>
|
||||
<string name="antitracklist">ഈ പ്രയോഗം നിങ്ങളുടെ പ്രവര്ത്തനങ്ങള് നിരീക്ഷിക്കുകയും പ്രസിദ്ധപ്പെടുത്തുകയും ചെയ്യുന്നു</string>
|
||||
<string name="warning_no_internet">പുതുക്കാന് കഴിയുന്നില്ലേ, നിങ്ങൾ ഇന്റർനെറ്റിലേക്ക് കണക്റ്റുചെയ്തിട്ടുണ്ടോ?</string>
|
||||
|
||||
@@ -440,7 +440,7 @@
|
||||
<string name="antitracklist">Энэ апп нь таны үйл ажиллагааг хянах, мэдээлэх</string>
|
||||
<string name="less">Бага</string>
|
||||
<string name="more">Дэлгэрэнгүй</string>
|
||||
<string name="abc_action_menu_overflow_description">Бусад сонголт</string>
|
||||
<string name="menu_overflow_description">Бусад сонголт</string>
|
||||
<string name="updates__tts__download_app">Татаж авах</string>
|
||||
<string name="app_list__name__successfully_installed">%1$s суулгасан</string>
|
||||
<string name="app_list__name__downloading_in_progress">Татаж байна %1$s</string>
|
||||
|
||||
@@ -329,7 +329,7 @@
|
||||
<string name="yes">होय</string>
|
||||
<string name="less">कमी</string>
|
||||
<string name="more">अधिक</string>
|
||||
<string name="abc_action_menu_overflow_description">आणखी पर्याय</string>
|
||||
<string name="menu_overflow_description">आणखी पर्याय</string>
|
||||
<string name="menu_search">शोध</string>
|
||||
<string name="no">नाही</string>
|
||||
<string name="installing">इंस्टॉल करत आहे…</string>
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
<string name="repo_add_add">ေပါင္းထည့္မည္</string>
|
||||
<string name="links">လင့္ခ္</string>
|
||||
<string name="more">ေနာက္ထပ္</string>
|
||||
<string name="abc_action_menu_overflow_description">နောက်ထပ် ရွေးစရာများ</string>
|
||||
<string name="menu_overflow_description">နောက်ထပ် ရွေးစရာများ</string>
|
||||
<string name="less">ခ်ံဳမည္</string>
|
||||
<string name="back">ေနာက္သို႔</string>
|
||||
<string name="cancel">မလုပ်တော့</string>
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
<string name="interval_2w">Sjekk etter oppdateringer annenhver uke</string>
|
||||
<string name="theme_light">Lyst</string>
|
||||
<string name="more">Mer</string>
|
||||
<string name="abc_action_menu_overflow_description">Flere alternativer</string>
|
||||
<string name="menu_overflow_description">Flere alternativer</string>
|
||||
<string name="less">Mindre</string>
|
||||
<string name="menu_settings">Innstillinger</string>
|
||||
<string name="status_download_unknown_size">Laster ned\n%2$s fra\n%1$s</string>
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
<string name="unstable_updates">Instabiele updates</string>
|
||||
<string name="unstable_updates_summary">Stel updates voor instabiele versies voor</string>
|
||||
<string name="more">Meer</string>
|
||||
<string name="abc_action_menu_overflow_description">Meer opties</string>
|
||||
<string name="menu_overflow_description">Meer opties</string>
|
||||
<string name="less">Minder</string>
|
||||
<string name="menu_bitcoin">Bitcoin</string>
|
||||
<string name="menu_litecoin">Litecoin</string>
|
||||
|
||||
@@ -211,7 +211,7 @@
|
||||
<string name="download_error">Pobieranie nie powiodło się!</string>
|
||||
<string name="repo_details">Repozytorium</string>
|
||||
<string name="more">Więcej</string>
|
||||
<string name="abc_action_menu_overflow_description">Więcej opcji</string>
|
||||
<string name="menu_overflow_description">Więcej opcji</string>
|
||||
<string name="less">Mniej</string>
|
||||
<string name="status_download_unknown_size">Pobieranie\n%2$s z\n%1$s</string>
|
||||
<string name="permissions">Uprawnienia</string>
|
||||
|
||||
@@ -202,7 +202,7 @@
|
||||
<string name="menu_flattr">Flattr</string>
|
||||
<string name="download_error">Falha ao baixar!</string>
|
||||
<string name="more">Mais</string>
|
||||
<string name="abc_action_menu_overflow_description">Mais opções</string>
|
||||
<string name="menu_overflow_description">Mais opções</string>
|
||||
<string name="less">Menos</string>
|
||||
<string name="status_download_unknown_size">Baixando\n%2$s de\n%1$s</string>
|
||||
<string name="permissions">Permissões</string>
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
<string name="swap_connection_misc_error">Ocorreu um erro ao estabelecer a ligação e não será possível a troca!</string>
|
||||
<string name="install_confirm">precisa de acesso a</string>
|
||||
<string name="more">Mais</string>
|
||||
<string name="abc_action_menu_overflow_description">Mais opções</string>
|
||||
<string name="menu_overflow_description">Mais opções</string>
|
||||
<string name="less">Menos</string>
|
||||
<string name="permissions">Permissões</string>
|
||||
<string name="install_confirm_update">Quer instalar uma atualização desta app? Os dados existentes não serão perdidos. A app atualizada terá acesso a:</string>
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
<string name="app_list__name__successfully_installed">%1$s foi instalado</string>
|
||||
<string name="updates__tts__download_app">Descarregar</string>
|
||||
<string name="more">Mais</string>
|
||||
<string name="abc_action_menu_overflow_description">Mais opções</string>
|
||||
<string name="menu_overflow_description">Mais opções</string>
|
||||
<string name="less">Menos</string>
|
||||
<string name="antitracklist">Esta aplicação monitora e reporta a sua atividade</string>
|
||||
<string name="warning_no_internet">Não é possível atualizar. Você está conectado à Internet?</string>
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
<string name="app_inst_unknown_source">Instalat (din sursă necunoscută)</string>
|
||||
<string name="added_on">Adăugat pe %s</string>
|
||||
<string name="more">Mai mult</string>
|
||||
<string name="abc_action_menu_overflow_description">Mai multe opțiuni</string>
|
||||
<string name="menu_overflow_description">Mai multe opțiuni</string>
|
||||
<string name="less">Mai puțin</string>
|
||||
<string name="back">Înapoi</string>
|
||||
<string name="links">Legături</string>
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
<string name="menu_settings">Настройки</string>
|
||||
<string name="app_incompatible">Несовместима</string>
|
||||
<string name="more">Подробнее</string>
|
||||
<string name="abc_action_menu_overflow_description">Дополнительные параметры</string>
|
||||
<string name="menu_overflow_description">Дополнительные параметры</string>
|
||||
<string name="less">Свернуть</string>
|
||||
<string name="back">Назад</string>
|
||||
<string name="bad_fingerprint">Неверный отпечаток</string>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<string name="updates">යාවත්කාලීන</string>
|
||||
<string name="app_name_full">එෆ්-ඩ්රොයිඩ්</string>
|
||||
<string name="more">තව</string>
|
||||
<string name="abc_action_menu_overflow_description">තවත් විකල්ප</string>
|
||||
<string name="menu_overflow_description">තවත් විකල්ප</string>
|
||||
<string name="updates__tts__download_app">බාගන්න</string>
|
||||
<string name="app_list__name__successfully_installed">%1$s ස්ථාපිතයි</string>
|
||||
<string name="app_list__name__downloading_in_progress">%1$s බාගත වෙමින්</string>
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
<string name="repo_error_empty_username">Prihlasovacie meno neuvedené, prihlasovacie údaje sa nezmenili</string>
|
||||
<string name="about_license">Licencia</string>
|
||||
<string name="more">Viac</string>
|
||||
<string name="abc_action_menu_overflow_description">Ďalšie možnosti</string>
|
||||
<string name="menu_overflow_description">Ďalšie možnosti</string>
|
||||
<string name="less">Menej</string>
|
||||
<string name="menu_settings">Nastavenia</string>
|
||||
<string name="menu_email">Poslať e-mail autorovi</string>
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
<string name="app_list__name__downloading_in_progress">Prenašanje %1$s</string>
|
||||
<string name="app_list__name__successfully_installed">%1$s nameščen</string>
|
||||
<string name="more">Več</string>
|
||||
<string name="abc_action_menu_overflow_description">Več možnosti</string>
|
||||
<string name="menu_overflow_description">Več možnosti</string>
|
||||
<string name="less">Manj</string>
|
||||
<string name="antitracklist">Ta aplikacija vam sledi in poroča o vaši aktivnosti</string>
|
||||
<string name="warning_no_internet">Ni možno posodobiti, ste povezani na internet?</string>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<string name="no">Jo</string>
|
||||
<string name="repo_add_add">Shtoje</string>
|
||||
<string name="more">Më tepër</string>
|
||||
<string name="abc_action_menu_overflow_description">Mundësi të tjera</string>
|
||||
<string name="menu_overflow_description">Mundësi të tjera</string>
|
||||
<string name="less">Më pak</string>
|
||||
<string name="back">Mbrapsht</string>
|
||||
<string name="cancel">Anuloje</string>
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
<string name="download_error">Преузимање није успело</string>
|
||||
<string name="perms_description_app">Омогућује %1$s.</string>
|
||||
<string name="more">Више</string>
|
||||
<string name="abc_action_menu_overflow_description">Још опција</string>
|
||||
<string name="menu_overflow_description">Још опција</string>
|
||||
<string name="less">Мање</string>
|
||||
<string name="status_download_unknown_size">Преузимање\n%2$s од\n%1$s</string>
|
||||
<string name="permissions">Дозволе</string>
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
<string name="links">Länkar</string>
|
||||
<string name="about_source">Källkod</string>
|
||||
<string name="more">Mer</string>
|
||||
<string name="abc_action_menu_overflow_description">Fler alternativ</string>
|
||||
<string name="menu_overflow_description">Fler alternativ</string>
|
||||
<string name="less">Mindre</string>
|
||||
<string name="back">Bakåt</string>
|
||||
<string name="bad_fingerprint">Felaktigt fingeravtryck</string>
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
<string name="updates__tts__download_app">Pakua</string>
|
||||
<string name="update_all">Sasisha yote</string>
|
||||
<string name="more">Zaidi</string>
|
||||
<string name="abc_action_menu_overflow_description">Chaguo zaidi</string>
|
||||
<string name="menu_overflow_description">Chaguo zaidi</string>
|
||||
<string name="less">Kidogo</string>
|
||||
<string name="repo_add_mirror">Ongeza kioo</string>
|
||||
<string name="versions">Matoleo</string>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<string name="repo_add_add">சேர்</string>
|
||||
<string name="links">இணைப்புகள்</string>
|
||||
<string name="more">மேலும்</string>
|
||||
<string name="abc_action_menu_overflow_description">மேலும் விருப்பங்கள்</string>
|
||||
<string name="menu_overflow_description">மேலும் விருப்பங்கள்</string>
|
||||
<string name="less">குறைவான</string>
|
||||
<string name="back">பின்செல்க</string>
|
||||
<string name="cancel">ரத்துசெய்</string>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<string name="app_details">యాప్ వివరాలు</string>
|
||||
<string name="about_title_full">F-డ్రాయిడ్ గురించి</string>
|
||||
<string name="more">మరింత</string>
|
||||
<string name="abc_action_menu_overflow_description">మరిన్ని ఆప్షన్లు</string>
|
||||
<string name="menu_overflow_description">మరిన్ని ఆప్షన్లు</string>
|
||||
<string name="wifi">Wi-Fi</string>
|
||||
<string name="category_Sports_Health">క్రీడలు & ఆరోగ్యం</string>
|
||||
<string name="delete">తొలగించు</string>
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
<string name="repo_add_add">เพิ่ม</string>
|
||||
<string name="links">ลิ้งก์</string>
|
||||
<string name="more">มากกว่า</string>
|
||||
<string name="abc_action_menu_overflow_description">ตัวเลือกอื่น</string>
|
||||
<string name="menu_overflow_description">ตัวเลือกอื่น</string>
|
||||
<string name="less">น้อยกว่า</string>
|
||||
<string name="back">กลับ</string>
|
||||
<string name="cancel">ยกเลิก</string>
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
<string name="app_incompatible">Uyumsuz</string>
|
||||
<string name="links">Bağlantılar</string>
|
||||
<string name="more">Daha fazla</string>
|
||||
<string name="abc_action_menu_overflow_description">Diğer seçenekler</string>
|
||||
<string name="menu_overflow_description">Diğer seçenekler</string>
|
||||
<string name="less">Daha az</string>
|
||||
<string name="back">Geri</string>
|
||||
<string name="bad_fingerprint">Yanlış parmak izi</string>
|
||||
|
||||
@@ -201,7 +201,7 @@
|
||||
<string name="status_download_unknown_size">Завантаження \n%2$s з \n%1$s</string>
|
||||
<string name="repo_searching_address">Пошук пакунків репозиторію в \n%1$s</string>
|
||||
<string name="more">Докладніше</string>
|
||||
<string name="abc_action_menu_overflow_description">Більше опцій</string>
|
||||
<string name="menu_overflow_description">Більше опцій</string>
|
||||
<string name="less">Згорнути</string>
|
||||
<string name="menu_settings">Налаштування</string>
|
||||
<string name="permissions">Дозволи</string>
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
<string name="antitracklist">یہ ایپ آپ کی سرگرمیوں کو ٹریک اور رپورٹ کرتی ہے۔</string>
|
||||
<string name="less">کم</string>
|
||||
<string name="more">مزید</string>
|
||||
<string name="abc_action_menu_overflow_description">مزید اختیارات</string>
|
||||
<string name="menu_overflow_description">مزید اختیارات</string>
|
||||
<string name="updates__tts__download_app">ڈاؤن لوڈ کریں</string>
|
||||
<string name="app_list__name__successfully_installed">%1$s انسٹال ہو گیا</string>
|
||||
<string name="about_title_full">F-Droid کے بارے میں</string>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="no">Yoʻq</string>
|
||||
<string name="more">Batafsil</string>
|
||||
<string name="abc_action_menu_overflow_description">Yana</string>
|
||||
<string name="menu_overflow_description">Yana</string>
|
||||
<string name="less">Ozroq</string>
|
||||
<string name="menu_launch">Ochish</string>
|
||||
<string name="main_menu__swap_nearby">Yaqin atrofda</string>
|
||||
|
||||
@@ -205,7 +205,7 @@
|
||||
<string name="all_other_repos_fine">Tất cả kho khác không có lỗi.</string>
|
||||
<string name="swap_join_this_hotspot">Giúp bạn của bạn vào điểm truy cập</string>
|
||||
<string name="more">Mở rộng</string>
|
||||
<string name="abc_action_menu_overflow_description">Lựa chọn khác</string>
|
||||
<string name="menu_overflow_description">Lựa chọn khác</string>
|
||||
<string name="less">Thu gọn</string>
|
||||
<string name="status_download_unknown_size">Đang tải\n%2$s từ\n%1$s</string>
|
||||
<string name="permissions">Quyền</string>
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
<string name="app_inst_unknown_source">已安装(来自未知来源)</string>
|
||||
<string name="links">链接</string>
|
||||
<string name="more">展开</string>
|
||||
<string name="abc_action_menu_overflow_description">更多选项</string>
|
||||
<string name="menu_overflow_description">更多选项</string>
|
||||
<string name="less">收起</string>
|
||||
<string name="back">返回</string>
|
||||
<string name="bad_fingerprint">指纹无效</string>
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
<string name="SignatureMismatch">新版的應用程式使用了一個不相同的鑰匙簽署。若要安裝新版本,你必須先卸載舊版本。(註:卸載將會刪除應用程式內的資料)</string>
|
||||
<string name="download_error">下載失敗!</string>
|
||||
<string name="more">顯示更多</string>
|
||||
<string name="abc_action_menu_overflow_description">更多選項</string>
|
||||
<string name="menu_overflow_description">更多選項</string>
|
||||
<string name="less">顯示較少</string>
|
||||
<string name="swap_connection_misc_error">與裝置連接時發生了問題,未能進行交換!</string>
|
||||
<string name="loading">正在載入…</string>
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
<string name="repo_add_add">新增</string>
|
||||
<string name="links">連結</string>
|
||||
<string name="more">展開</string>
|
||||
<string name="abc_action_menu_overflow_description">更多選項</string>
|
||||
<string name="menu_overflow_description">更多選項</string>
|
||||
<string name="less">摺疊</string>
|
||||
<string name="back">返回</string>
|
||||
<string name="cancel">取消</string>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<resources>
|
||||
|
||||
<!-- The Android strings follow the Material Design writing style: https://m3.material.io/foundations/content-design and https://m1.material.io/style/writing.html The guidelines are only available in English, but they are intended to apply to all languages. -->
|
||||
<string name="app_name_full">F-Droid</string>
|
||||
@@ -53,7 +53,6 @@
|
||||
<string name="filter">Filter</string>
|
||||
<!-- Used for filter chips (e.g. categories) when they are currently selected -->
|
||||
<string name="filter_selected">selected</string>
|
||||
<string name="category">Category</string>
|
||||
<string name="filter_antifeatures">Hide anti-features</string>
|
||||
<string name="onboarding_app_list_filter_title">Filter</string>
|
||||
<string name="onboarding_app_list_filter_message">Use filters to only show apps from specific categories or repositories. You can also change the sort order.</string>
|
||||
@@ -107,79 +106,20 @@
|
||||
<!-- Used in app details page to show who is the author of the app -->
|
||||
<string name="by_author_format">by %s</string>
|
||||
<string name="delete">Delete</string>
|
||||
<string name="prompt_to_send_crash_reports">Prompt to send crash reports</string>
|
||||
<string name="prompt_to_send_crash_reports_summary">Gather data about crashes and ask to send them to the
|
||||
developer
|
||||
</string>
|
||||
<string name="cache_downloaded">Keep cached apps</string>
|
||||
<!-- as in software updates -->
|
||||
<string name="updates">Updates</string>
|
||||
<!-- as in software updates -->
|
||||
<string name="unstable_updates">Unstable updates</string>
|
||||
<!-- as in software updates -->
|
||||
<string name="unstable_updates_summary">Suggest updates to unstable versions</string>
|
||||
<string name="hide_all_notifications">Hide all notifications</string>
|
||||
<string name="hide_all_notifications_summary">Prevent all actions from showing in the status bar and notification
|
||||
drawer.
|
||||
</string>
|
||||
<string name="send_install_history">Send install history</string>
|
||||
<string name="send_fdroid_metrics_report">Send %s Metrics report</string>
|
||||
<string name="send_history_csv">%s install history as CSV file</string>
|
||||
<string name="send_fdroid_metrics_json">%s Metrics report as JSON file</string>
|
||||
<string name="install_history">Install history</string>
|
||||
<string name="install_history_and_metrics">Install history and metrics</string>
|
||||
<string name="fdroid_metrics_report">%s Metrics report</string>
|
||||
<string name="install_history_summary">View the private log of all installs and uninstalls</string>
|
||||
<string name="keep_install_history">Keep install history</string>
|
||||
<string name="keep_install_history_summary">Store a log of all installs and uninstalls in a private store</string>
|
||||
<string name="send_to_fdroid_metrics">Send usage data</string>
|
||||
<string name="send_to_fdroid_metrics_summary">Sends anonymous data weekly to F-Droid Metrics (requires "Keep install history")</string>
|
||||
<!-- message shown as a "toast" when the user enables the Send to F-Droid Metrics preference -->
|
||||
<string name="toast_metrics_in_install_history">The %s Metrics report is viewable in the install history viewer</string>
|
||||
<string name="send_version_and_uuid">Send version and UUID to servers</string>
|
||||
<string name="send_version_and_uuid_summary">Include this app\'s version and a random, unique ID when
|
||||
downloading, takes effect next app restart.</string>
|
||||
<string name="force_old_index">Force old index format</string>
|
||||
<string name="force_old_index_summary">In case there are bugs or compatibility issues, use the XML app index</string>
|
||||
<string name="other">Other</string>
|
||||
<string name="pref_export_log_title">Debug log</string>
|
||||
<string name="pref_export_log_summary">Creates a file with logcat output useful for debugging. Careful, it could contain sensitive information!</string>
|
||||
<string name="export_log_success">Logcat saved successfully</string>
|
||||
<string name="export_log_error">Error saving logcat</string>
|
||||
|
||||
<string name="update_interval">Automatic update interval</string>
|
||||
<string name="over_wifi">Over Wi-Fi</string>
|
||||
<!-- "data" as in cellular internet service -->
|
||||
<string name="over_data">Over data</string>
|
||||
<string name="over_network_always_summary">Always use this connection when available</string>
|
||||
<string name="over_network_on_demand_summary">Only use this connection when I click to download</string>
|
||||
<string name="over_network_never_summary">Never download anything using this connection</string>
|
||||
<!-- as in software updates -->
|
||||
<string name="update_auto_download">Automatically download updates</string>
|
||||
<!-- as in software updates -->
|
||||
<string name="update_auto_download_summary">Updates are downloaded automatically and you are notified to install
|
||||
them
|
||||
</string>
|
||||
<!-- as in software updates -->
|
||||
<string name="update_auto_install">Automatically install updates</string>
|
||||
<!-- as in software updates -->
|
||||
<string name="update_auto_install_summary">Download and update apps in the background, showing a notification</string>
|
||||
<!-- as in software updates -->
|
||||
<string name="notify">Show available updates</string>
|
||||
<!-- as in software updates -->
|
||||
<string name="notify_on">Show a notification when updates are available</string>
|
||||
<string name="force_old_installer_title">Force old installer</string>
|
||||
<string name="force_old_installer_summary">Disable the Session Installer, including support for automatic background updates.</string>
|
||||
<string name="system_installer">Privileged Extension</string>
|
||||
<string name="system_installer_on">Use Privileged Extension to install, update, and remove packages</string>
|
||||
<string name="local_repo_name">Name of your Local Repo</string>
|
||||
<string name="local_repo_name_summary">The advertised title of your Local Repo: %s</string>
|
||||
<string name="local_repo_https_on">Use encrypted HTTPS:// connection for Local Repo</string>
|
||||
<string name="scan_removable_storage_title">Scan removable storage</string>
|
||||
<string name="scan_removable_storage_toast">Scanning %s…</string>
|
||||
<string name="scan_removable_storage_summary">Look for package repos on removable storage like SD Cards
|
||||
and USB thumb drives
|
||||
</string>
|
||||
|
||||
<string name="pref_dyn_colors_title">Use system colors</string>
|
||||
<string name="pref_dyn_colors_summary">Apply dynamic colors from your system settings</string>
|
||||
@@ -206,13 +146,6 @@
|
||||
<string name="pref_proxy_hint">Proxy is expected in host:port format</string>
|
||||
<string name="pref_proxy_error">Invalid proxy format</string>
|
||||
|
||||
<string name="login_title">Authentication required</string>
|
||||
<string name="login_name">Username</string>
|
||||
<string name="login_password">Password</string>
|
||||
<string name="repo_edit_credentials">Change password</string>
|
||||
<string name="repo_error_empty_username">Empty username, credentials not changed</string>
|
||||
|
||||
<string name="app_details">App details</string>
|
||||
<string name="no_such_app">No such app found.</string>
|
||||
<!-- Shown above the repository an app is in -->
|
||||
<string name="app_details_repository">Repository</string>
|
||||
@@ -230,18 +163,6 @@
|
||||
<string name="app_details_repository_button_prefer">Prefer repository</string>
|
||||
<string name="app_details_repository_expand">Expand repository list</string>
|
||||
|
||||
<string name="app_details_donate_prompt_unknown_author">Buy the developers of %1$s a coffee!</string>
|
||||
<string name="app_details_donate_prompt">%1$s is created by %2$s. Buy them a coffee!</string>
|
||||
|
||||
<string name="app_details__incompatible_mismatched_signers">Different signer to installed version</string>
|
||||
<string name="app_details__no_versions__show_incompat_versions">To show incompatible versions here anyway, enable the \"%1$s\" setting.</string>
|
||||
<string name="app_details__no_versions__no_compatible_signers">No versions with compatible signer</string>
|
||||
<string name="app_details__no_versions__none_compatible_with_device">No versions compatible with device</string>
|
||||
<string name="app_details__no_versions__explain_incompatible_signers">The installed version is not compatible with any available versions. Uninstalling the app will enable you to view and install compatible versions.
|
||||
|
||||
This often occurs with apps installed via Google Play or other sources, if they are signed by a different certificate.</string>
|
||||
|
||||
<string name="app_details_more_apps_interesting">This might also be interesting to you:</string>
|
||||
<string name="app_details_more_apps_by_author">More apps by %1$s</string>
|
||||
|
||||
<string name="app_details_anti_features_title">What are Anti-Features?</string>
|
||||
@@ -253,7 +174,6 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
<string name="about_text">Apps on F-Droid are free and open source software (FOSS), they respect your privacy, and they\'re available for anyone to see the source code, build on and improve.\n\nApp distribution is transparent, privacy-respecting, and accountable, setting a standard that challenges the mobile ecosystem to do better.\n\nF-Droid\'s impact is measured not just in apps published, but in the freedom, trust, and digital rights it helps protect.\n\nHelp F-Droid to protect community-powered innovation and continue our mission of openness, privacy, and user empowerment.</string>
|
||||
<string name="about_license_text">This program is Free Software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.</string>
|
||||
<string name="about_version">Version</string>
|
||||
<string name="about_site">Website</string>
|
||||
<string name="about_forum">Support forum</string>
|
||||
<string name="about_source">Source code</string>
|
||||
<string name="about_license">License</string>
|
||||
@@ -269,20 +189,9 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
<string name="app_suggested">Suggested</string>
|
||||
<string name="app_incompatible">Incompatible</string>
|
||||
<string name="app_installed">Installed</string>
|
||||
<string name="app_new">New</string>
|
||||
<string name="app_not_installed">Not installed</string>
|
||||
<string name="app_inst_known_source">Installed (from %s)</string>
|
||||
<string name="app_inst_unknown_source">Installed (from unknown source)</string>
|
||||
<string name="app_version_x_available">Version %1$s available</string>
|
||||
<string name="app_version_x_installed">Version %1$s</string>
|
||||
<string name="app_recommended_version_installed">Version %1$s (recommended)</string>
|
||||
<string name="added_on">Added on %s</string>
|
||||
<string name="app__tts__cancel_download">Cancel download</string>
|
||||
<string name="app__install_downloaded_update">Update</string>
|
||||
<string name="app_installed_media">File installed to %s</string>
|
||||
<string name="app_permission_storage">F-Droid needs the storage permission to install this to storage. Please allow it on the next screen to proceed with installation.</string>
|
||||
<string name="app_size">Size: %1$s</string>
|
||||
<string name="app_error_open">Could not launch app.</string>
|
||||
<string name="copy_link">Copy link</string>
|
||||
<string name="app_no_compatible_versions">This app is not compatible with your device</string>
|
||||
<string name="app_no_compatible_signer">Can\'t update this app, because all versions have an incompatible signature\n\nIf you don\'t receive updates through other means, you may need to uninstall and then reinstall this app. The app\'s data will be lost.</string>
|
||||
@@ -309,43 +218,14 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
<string name="app_details_incompatible_signer">Signature mismatch, can\'t install</string>
|
||||
<string name="app_details_install_error_text">Sorry! There was an unexpected error installing this app</string>
|
||||
|
||||
<string name="app_list_results_hidden_antifeature_settings">Some apps are hidden based on your Anti-Features settings. Touch to change.</string>
|
||||
<string name="app_list_no_suggested_version">No version recommended for installation.</string>
|
||||
<string name="app_list__name__downloading_in_progress">Downloading %1$s</string>
|
||||
<string name="app_list__name__successfully_installed">%1$s installed</string>
|
||||
<string name="app_list_download_ready">Downloaded, ready to install</string>
|
||||
<string name="app_list__dismiss_app_update">Update ignored</string>
|
||||
<string name="app_list__dismiss_vulnerable_app">Vulnerability ignored</string>
|
||||
<string name="app_list__dismiss_downloading_app">Download canceled</string>
|
||||
|
||||
<string name="installed_apps__activity_title">Installed apps</string>
|
||||
<string name="apps_updates_hint_title">Congratulations 🥳</string>
|
||||
<string name="apps_updates_hint_text">All your apps are up to date</string>
|
||||
<!-- Should be exactly the same as the standard word for "Share" throughout Android and apps -->
|
||||
<string name="send_installed_apps">Share installed apps</string>
|
||||
<string name="send_installed_apps_csv">Apps installed by F-Droid as CSV file</string>
|
||||
<string name="installed_app__updates_ignored">Updates ignored</string>
|
||||
<string name="installed_app__updates_ignored_for_suggested_version">Updates ignored for version %1$s</string>
|
||||
|
||||
<string name="updates__app_with_known_vulnerability__prompt_uninstall">We found a vulnerability with %1$s. Touch to read more in the Anti-Features section.</string>
|
||||
<string name="updates__app_with_known_vulnerability__prompt_upgrade">We found a vulnerability with %1$s. We recommend updating to the newest version immediately.</string>
|
||||
<string name="updates__app_with_known_vulnerability__ignore">Ignore</string>
|
||||
|
||||
<!-- The inline download button shown in the "Updates" screen only uses an icon and so requires
|
||||
some descriptive text for the TTS engine -->
|
||||
<string name="updates__tts__download_app">Download</string>
|
||||
<!-- This is a button label, it must be the right size, or the layout gets messed up. It should ideally be 10-20 characters. -->
|
||||
<string name="update_all">Update all</string>
|
||||
<!-- This is a button label, it must be the right size, or the layout gets messed up. It should ideally be 10-20 characters. -->
|
||||
<string name="updates__hide_updateable_apps">Hide apps</string>
|
||||
<!-- This is a button label, it must be the right size, or the layout gets messed up. It should ideally be 10-20 characters. -->
|
||||
<string name="updates__show_updateable_apps">Show apps</string>
|
||||
<plurals name="updates__download_updates_for_apps">
|
||||
<item quantity="one">Download update for %1$d app:</item>
|
||||
<item quantity="other">Download updates for %1$d apps:</item>
|
||||
</plurals>
|
||||
<!-- "updates" as in software updates, "Data" as in cellular internet service -->
|
||||
<string name="updates_disabled_by_settings">All updates disabled by data/Wi-Fi settings</string>
|
||||
|
||||
<!-- This should be exactly the same as the standard word for Cancel throughout OK and apps -->
|
||||
<string name="ok">OK</string>
|
||||
@@ -360,62 +240,42 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
<string name="links">Links</string>
|
||||
<string name="versions">Versions</string>
|
||||
<string name="more">More</string>
|
||||
<string name="abc_action_menu_overflow_description">More options</string>
|
||||
<string name="menu_overflow_description">More options</string>
|
||||
<string name="less">Less</string>
|
||||
|
||||
<string name="back">Back</string>
|
||||
<!-- This should be exactly the same as the standard word for Cancel throughout Android and apps -->
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="enable">Enable</string>
|
||||
<string name="add_key">Add key</string>
|
||||
<string name="overwrite">Overwrite</string>
|
||||
<string name="clear_search">Clear search</string>
|
||||
<string name="sort_search">Sort search</string>
|
||||
|
||||
<string name="bluetooth_activity_not_found">No Bluetooth send method found, choose one!</string>
|
||||
<string name="choose_bt_send">Choose Bluetooth send method</string>
|
||||
|
||||
<string name="repo_intro">A repository is an additional source of apps. Third-party ones you add here have different standards than those providing apps built by F-Droid itself.\n\nPlease ensure that the repository you are adding is trustworthy.</string>
|
||||
<string name="repo_scan_qr_code">Scan QR code</string>
|
||||
<string name="repo_state_fetching">Fetching repository…</string>
|
||||
<string name="repo_state_adding">Adding repository…</string>
|
||||
<string name="repo_enter_url">Enter repository URL manually</string>
|
||||
<string name="repo_add_url">Repository address</string>
|
||||
<string name="repo_add_fingerprint">Fingerprint (optional)</string>
|
||||
<string name="repo_preview_included_apps">Included apps:</string>
|
||||
<string name="repo_exists">This repository was already added.</string>
|
||||
<string name="repo_exists_add_fingerprint">%1$s is already setup, this will add new key information.</string>
|
||||
<string name="repo_exists_enable">%1$s is already setup, confirm that you want to re-enable it.</string>
|
||||
<string name="repo_exists_and_enabled">%1$s is already setup and enabled.</string>
|
||||
<string name="repo_delete_to_overwrite">First delete %1$s in order to add this with a conflicting key.</string>
|
||||
<string name="repo_exists_add_mirror">This is a copy of %1$s, add it as a mirror?</string>
|
||||
<string name="repo_invalid">Invalid repository.\n\nContact the maintainer and let them know about the issue.</string>
|
||||
<string name="repo_io_error">Error connecting to the repository.</string>
|
||||
<string name="repo_error_adding_archive">Archive repositories can not be added directly. Tap the repository in the list and enable the archive there.</string>
|
||||
<string name="repo_share_not_found">Could not find repo address in shared text.</string>
|
||||
<string name="repo_mirror_exists">This mirror was already added (%s).</string>
|
||||
<string name="repo_mirror_add_info">The URL you are trying to add (%s) is a mirror of an existing repository.</string>
|
||||
<string name="repo_and_mirror_add_both_info">The URL you are trying to add (%s) is a mirror of a new repository. Both the original repository and the mirror will be added.</string>
|
||||
<string name="bad_fingerprint">Bad fingerprint</string>
|
||||
<string name="invalid_url">This is not a valid URL.</string>
|
||||
<string name="malformed_repo_uri">Ignoring malformed repo URI: %s</string>
|
||||
<!-- Message presented in a dialog box when the device-wide management policy restricts adding new repos, e.g. "Unknown Sources". -->
|
||||
<string name="has_disallow_install_unknown_sources_globally">Your device admin doesn\'t allow installing apps from unknown sources, that includes new repos</string>
|
||||
<!-- Message presented in a dialog box when the user restriction set by the system restricts adding new repos, e.g. "Unknown Sources". -->
|
||||
<string name="has_disallow_install_unknown_sources">Unknown sources can\'t be added by this user, that includes new repos</string>
|
||||
|
||||
<string name="menu_manage">Repositories</string>
|
||||
<string name="repositories_last_update">Last update: %s</string>
|
||||
<string name="repositories_last_update_never">never</string>
|
||||
<string name="repositories_summary">Add additional sources of apps</string>
|
||||
<!-- This should be exactly the same as the standard word for Settings throughout Android and apps -->
|
||||
<string name="menu_settings">Settings</string>
|
||||
<!-- This should be exactly the same as the standard word for a Search action throughout Android and apps -->
|
||||
<string name="menu_search">Search</string>
|
||||
<string name="menu_add_repo">New repository</string>
|
||||
|
||||
<!-- This should be exactly the same as the standard word for Open throughout Android and apps -->
|
||||
<string name="menu_launch">Open</string>
|
||||
<!-- This is like "launch" but for files and documents rather than apps -->
|
||||
<string name="menu_open">Open</string>
|
||||
<!-- This should be exactly the same as the standard word for Share throughout Android and apps -->
|
||||
@@ -425,7 +285,6 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
<string name="menu_install">Install</string>
|
||||
<!-- This is a button label, it must be the right size, or the layout gets messed up. It should ideally be 10-20 characters. -->
|
||||
<string name="menu_uninstall">Uninstall</string>
|
||||
<string name="menu_select_for_wipe">Select for wipe</string>
|
||||
<string name="menu_ignore_all">Ignore all updates</string>
|
||||
<string name="menu_ignore_this">Ignore this update</string>
|
||||
<string name="menu_release_channel_beta">Allow beta updates</string>
|
||||
@@ -446,118 +305,32 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
<string name="menu_upgrade">Update</string>
|
||||
<string name="menu_bitcoin">Bitcoin</string>
|
||||
<string name="menu_litecoin">Litecoin</string>
|
||||
<!-- This is a brand name, it should only be translated if the company does so -->
|
||||
<string name="menu_flattr">Flattr</string>
|
||||
<!-- This is a brand name, it should only be translated if the company does so -->
|
||||
<string name="menu_liberapay">Liberapay</string>
|
||||
<!-- This is a brand name, it should only be translated if the company does so -->
|
||||
<string name="menu_opencollective">OpenCollective</string>
|
||||
<!-- The bottom bar button label -->
|
||||
<string name="main_menu__latest_apps">Latest</string>
|
||||
<!-- The bottom bar button label -->
|
||||
<!-- The button label -->
|
||||
<string name="main_menu__categories">Categories</string>
|
||||
<!-- The bottom bar button label. Should be the same term used in the Google Nearby Settings -->
|
||||
<!-- The button label. Should be the same term used in the Google Nearby Settings -->
|
||||
<string name="main_menu__swap_nearby">Nearby</string>
|
||||
<!-- The bottom bar button label. The updates tab isn't only about software updates. It is also about queued offline installs, in progress installs, known vulnerabilities, and in the future, also donation reminders and other things. In English, you can also say "do you have an update on your progress?" or "Keep me updated on how things are going". That combined with "software updates" is why the tab is called "Updates". Ideally, the Updates Tab would actually be a different word than the word used for "software update" to highlight that the Updates Tab is more than just software updates. -->
|
||||
<string name="main_menu__updates">Updates</string>
|
||||
|
||||
<!-- Used to switch the Install History viewer to showing the FDroid Metrics report -->
|
||||
<string name="menu_show_fdroid_metrics_report">Show metrics report</string>
|
||||
<!-- Used to switch the FDroid Metrics report to showing the Install History viewer -->
|
||||
<string name="menu_show_install_history">Show install history</string>
|
||||
|
||||
<string name="latest__empty_state__no_recent_apps">No recent apps found</string>
|
||||
<string name="latest__empty_state__upgrading">Upgrading database…</string>
|
||||
<string name="latest__empty_state__never_updated">Once your list of apps has been updated, the latest apps should
|
||||
show here
|
||||
</string>
|
||||
<string name="latest__empty_state__no_enabled_repos">Once you enable a repository and let it update, the latest apps
|
||||
should show here
|
||||
</string>
|
||||
|
||||
<string name="categories__empty_state__no_categories">No categories to display</string>
|
||||
|
||||
<string name="preference_category__my_apps">My apps</string>
|
||||
<string name="preference_manage_installed_apps">Manage installed apps</string>
|
||||
|
||||
|
||||
<string name="details_notinstalled">Not installed</string>
|
||||
<string name="details_new_in_version">New in version %s</string>
|
||||
|
||||
<string name="antifeatureswarning">This app has features you may not like.</string>
|
||||
<string name="antifeatures">Anti-features</string>
|
||||
<string name="antiads">Ads</string>
|
||||
<string name="antitrack">Tracking</string>
|
||||
<string name="antinonfreead">Non-Free Addons</string>
|
||||
<string name="antinonfreenet">Non-Free Network Services</string>
|
||||
<string name="antitetherednet">Tethered Network Services</string>
|
||||
<string name="antinonfreedep">Non-Free Dependencies</string>
|
||||
<string name="antinonfreeassets">Non-Free Assets</string>
|
||||
<string name="antidisabledalgorithm">Signed Using An Unsafe Algorithm</string>
|
||||
<string name="antiknownvuln">Known Vulnerability</string>
|
||||
<string name="antinosource">Source Code No Longer Available</string>
|
||||
<string name="antinsfw">Not Safe for Work</string>
|
||||
<string name="antiothers">Other Anti-Features</string>
|
||||
<string name="antiadslist">This app contains advertising</string>
|
||||
<string name="antitracklist">This app tracks and reports your activity</string>
|
||||
<string name="antinonfreeadlist">This app promotes non-free add-ons</string>
|
||||
<string name="antinonfreenetlist">This app promotes or depends entirely on a non-free network service</string>
|
||||
<string name="antitetherednetlist">This app depends entirely on a certain instance of a network service</string>
|
||||
<string name="antinonfreedeplist">This app depends on other non-free apps</string>
|
||||
<string name="antinonfreeassetslist">This app contains non-free assets</string>
|
||||
<string name="antidisabledalgorithmlist">This app has a weak security signature</string>
|
||||
<string name="antiknownvulnlist">This app contains a known security vulnerability</string>
|
||||
<string name="antinosourcesince">The source code is no longer available, no updates possible</string>
|
||||
<string name="antinsfwlist">This app contains content that should not be publicized or visible everywhere</string>
|
||||
<string name="display">Display</string>
|
||||
|
||||
<string name="expert">Expert mode</string>
|
||||
<string name="expert_on">Show extra info and enable extra settings</string>
|
||||
|
||||
<string name="search_hint">Search apps</string>
|
||||
<string name="search_my_apps_hint">Search installed apps</string>
|
||||
|
||||
<string name="appcompatibility">App compatibility</string>
|
||||
<string name="show_incompat_versions">Include incompatible versions</string>
|
||||
<string name="show_incompat_versions_on">Show app versions that are incompatible with the device</string>
|
||||
<string name="show_anti_feature_apps">Include Anti-Features</string>
|
||||
<string name="show_anti_feature_apps_on">Show apps that have known Anti-Features</string>
|
||||
<string name="force_touch_apps">Include touchscreen apps</string>
|
||||
<string name="force_touch_apps_on">Show apps that require touchscreen regardless of hardware support</string>
|
||||
|
||||
<string name="local_repo">Local Repo</string>
|
||||
<string name="local_repo_running">F-Droid is ready to swap</string>
|
||||
<string name="touch_to_configure_local_repo">Touch to view details and allow others to swap your apps.</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="linking_apks">Linking APKs into the repo…</string>
|
||||
<string name="copying_icons">Copying app icons into the repo…</string>
|
||||
<string name="icon">Icon</string>
|
||||
<string name="next">Next</string>
|
||||
<string name="skip">Skip</string>
|
||||
<string name="try_again">Try again</string>
|
||||
|
||||
<string name="useDnsCache">Use DNS cache</string>
|
||||
<string name="useDnsCacheSummary">Use cached results to minimize DNS queries.</string>
|
||||
<string name="preferForeign">Prefer foreign mirrors</string>
|
||||
<string name="preferForeignSummary">Try mirrors that are located outside your country first, e.g. if foreign protections are stronger.</string>
|
||||
<string name="useTor">Use Tor</string>
|
||||
<string name="useTorSummary">Force download traffic through Tor for increased privacy. Requires Orbot</string>
|
||||
<string name="proxy">Proxy</string>
|
||||
<string name="enable_proxy_title">Enable HTTP proxy</string>
|
||||
<string name="enable_proxy_summary">Configure HTTP proxy for all network requests</string>
|
||||
<string name="proxy_host">Proxy host</string>
|
||||
<string name="proxy_host_summary">Your proxy\'s hostname (e.g. 127.0.0.1)</string>
|
||||
<string name="proxy_port">Proxy port</string>
|
||||
<string name="proxy_port_summary">Your proxy\'s port number (e.g. 8118)</string>
|
||||
|
||||
<string name="privacy">Privacy</string>
|
||||
<string name="preventScreenshots_title">Prevent screenshots</string>
|
||||
<string name="preventScreenshots_summary">Blocks screenshots from being taken and hides app content from recent apps screen</string>
|
||||
|
||||
<string name="panic_app_setting_title">Panic button app</string>
|
||||
<string name="panic_app_unknown_app">an unknown app</string>
|
||||
<string name="panic_app_setting_summary">No app has been set</string>
|
||||
<string name="panic_app_setting_none">None</string>
|
||||
<string name="panic_app_dialog_title">Confirm panic app</string>
|
||||
@@ -570,82 +343,30 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
<string name="panic_exit_title">Exit app</string>
|
||||
<string name="panic_exit_summary">This app will be closed</string>
|
||||
<string name="panic_destructive_actions">Destructive actions</string>
|
||||
<string name="panic_will_be_wiped">Will be uninstalled and all data deleted</string>
|
||||
<string name="panic_apps_to_uninstall">Apps to be uninstalled and all data wiped</string>
|
||||
<string name="panic_add_apps_to_uninstall">Add apps to be uninstalled and wiped</string>
|
||||
<string name="panic_hide_title">Hide %s</string>
|
||||
<string name="panic_hide_summary">App will hide itself</string>
|
||||
<string name="panic_hide_warning_title">Remember how to restore</string>
|
||||
<string name="panic_hide_warning_message">In a panic event, this will remove %1$s from the launcher. Only typing \"%2$d\" in the fake %3$s app can restore it.</string>
|
||||
<string name="panic_reset_repos_title">Reset repos</string>
|
||||
<string name="panic_reset_repos_summary">Force the repo setup back to defaults</string>
|
||||
|
||||
<!-- The name of a fake calculator app used as a disguise -->
|
||||
<string name="hiding_calculator">Calculator</string>
|
||||
<string name="hiding_dialog_title">Hide %s now</string>
|
||||
<string name="hiding_dialog_message">Are you sure you want to remove %1$s from the launcher? Only typing \"%2$d\" in the fake %3$s app can restore it.</string>
|
||||
<string name="hiding_dialog_warning">Warning: Any app shortcut on the home screen will also be removed and needs to be re-added manually.</string>
|
||||
<string name="hide_on_long_search_press_title">Hide with search button</string>
|
||||
<string name="hide_on_long_search_press_summary">Long pressing the search button will hide the app</string>
|
||||
|
||||
<!--
|
||||
status_download takes four parameters:
|
||||
- Repository (url)
|
||||
- Downloaded size (human readable)
|
||||
- Total size (human readable)
|
||||
- Percentage complete (int between 0-100)
|
||||
-->
|
||||
<string name="status_download">Downloading\n%2$s / %3$s (%4$d%%) from\n%1$s</string>
|
||||
<!-- placeholder is for download speed. Note that %s is the placeholder that needs to stay and /s is part of the speed unit and doesn't need translating in most languages. Example: Downloading at 2.3 MB/s -->
|
||||
<string name="status_downloading">Downloading at %s/s</string>
|
||||
<!-- placeholder is for how much is left to download. Example: 23 MB remaining -->
|
||||
<string name="status_downloading_remaining">%1$s remaining</string>
|
||||
|
||||
<!--
|
||||
status_download_unknown_size takes two parameters:
|
||||
- Repository (url)
|
||||
- Downloaded size (human readable)
|
||||
-->
|
||||
<string name="status_download_unknown_size">Downloading\n%2$s from\n%1$s</string>
|
||||
<string name="download_404">The requested file was not found.</string>
|
||||
<!-- This is a banner title, it should be maximum 30 characters -->
|
||||
<string name="banner_updating_repositories">Updating repositories</string>
|
||||
<string name="banner_updating_apps">Updating apps</string>
|
||||
<!-- This is a banner title, it should be maximum 30 characters -->
|
||||
<string name="banner_no_internet">No internet</string>
|
||||
<!-- This is a banner title, it should be maximum 30 characters -->
|
||||
<string name="banner_no_data_or_wifi">No data or Wi-Fi enabled</string>
|
||||
<string name="status_processing_xml_percent">Processing %2$s / %3$s (%4$d%%) from %1$s</string>
|
||||
<string name="status_connecting_to_repo">Connecting to\n%1$s</string>
|
||||
<string name="status_inserting_apps">Saving app details</string>
|
||||
<string name="status_inserting_x_apps">Saving app details (%1$d/%2$d) from %3$s</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: %s</string>
|
||||
<string name="warning_no_internet">Cannot update, are you connected to the internet?</string>
|
||||
<!-- Should be exactly the same as the standard word for Permissions throughout Android and apps -->
|
||||
<string name="no_permissions">No permissions</string>
|
||||
<!-- Should be exactly the same as the standard word for Permissions throughout Android and apps -->
|
||||
<string name="permissions">Permissions</string>
|
||||
<string name="apk_permissions_mismatch">App has unexpected permission: %s</string>
|
||||
<string name="no_handler_app">You don\'t have any available app that can handle %s.</string>
|
||||
<string name="no_handler_app_generic">You don\'t have any available app that can handle this.</string>
|
||||
<string name="theme">Theme</string>
|
||||
<string name="use_pure_black_dark_theme">Use pure black background in dark theme</string>
|
||||
<string name="use_pure_black_dark_theme_summary">Recommended only for OLED screens.</string>
|
||||
<string name="unsigned">Unsigned</string>
|
||||
<string name="unverified">Unverified</string>
|
||||
<string name="repo_list_info_title">Repository list</string>
|
||||
<string name="repo_list_info_text">A repository is a source of apps. This list shows all currently added repositories. Disabled repositories are not used.\n\nIf an app is in more than one repository, the repository higher in the list is automatically preferred. You can reorder repositories by long pressing and dragging them.</string>
|
||||
<string name="repo_details">Repository</string>
|
||||
<string name="repo_details_info_text">A repository is a source of apps.\n\nMirrors are used to distribute the load of downloading apps across multiple servers. Mirrors closer to you may be faster.\n\nOfficial mirrors are defined by the repository owner. They cannot be deleted, only disabled. You can define additional custom mirrors by adding them just like a normal repository.</string>
|
||||
<string name="repo_num_apps_button">Show apps</string>
|
||||
<string name="repo_archive_toggle">Repository archive</string>
|
||||
<string name="repo_archive_toggle_description">Show archived apps and outdated versions of apps</string>
|
||||
<string name="repo_archive_unknown">This repository does not appear to have an archive.</string>
|
||||
<string name="repo_archive_check">Check for archive</string>
|
||||
<string name="repo_fingerprint">Signing key fingerprint (SHA-256)</string>
|
||||
<string name="repo_description">Description</string>
|
||||
<string name="repo_official_mirrors">Official mirrors</string>
|
||||
<string name="repo_user_mirrors">User mirrors</string>
|
||||
<plurals name="repo_num_apps_text">
|
||||
@@ -653,10 +374,7 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
<item quantity="one">1 app</item>
|
||||
<item quantity="other">%d apps</item>
|
||||
</plurals>
|
||||
<string name="repo_last_update_index">Last repo update: %s</string>
|
||||
<string name="repo_last_update_check">Last check for repo update: %s</string>
|
||||
<string name="unknown">Unknown</string>
|
||||
<string name="repo_archive_failed">Archive repo currently not available</string>
|
||||
<string name="repo_confirm_delete_title">Delete repository?</string>
|
||||
<string name="repo_confirm_delete_body">Deleting a repository means
|
||||
apps from it will no longer be available.\n\nNote: All
|
||||
@@ -664,23 +382,15 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
</string>
|
||||
<string name="repo_confirm_delete_mirror_title">Delete mirror?</string>
|
||||
<string name="repo_confirm_delete_mirror_body">You can continue to install apps from this repository using the other mirrors.</string>
|
||||
<string name="repo_disabled_notification">Disabled "%1$s".\n\nYou will
|
||||
need to re-enable this repository to install apps from it.
|
||||
</string>
|
||||
<string name="repo_disable_dialog_title">Disable repository</string>
|
||||
<string name="repo_disable_dialog_warning">If you\'ve set this repository as preferred for any apps, that preference will be lost</string>
|
||||
<string name="repo_disable_dialog_text">All apps from this repository will disappear. Already installed apps won\'t be affected.</string>
|
||||
<string name="repo_disable_warning_button">Disable</string>
|
||||
<string name="repo_added">Saved package repository %1$s.</string>
|
||||
<string name="repo_searching_address">Looking for package repository at\n%1$s</string>
|
||||
<!-- Should be exactly the same as the standard word for "Share" throughout Android and apps -->
|
||||
<string name="share_repository">Share repository</string>
|
||||
<string name="share_mirror">Share mirror</string>
|
||||
<string name="show_repository_qr">Show repository QR code</string>
|
||||
<string name="repo_basic_auth_title">Basic auth</string>
|
||||
<string name="repo_basic_auth_username">Username: %s</string>
|
||||
<string name="repo_basic_auth_password">Password: ***</string>
|
||||
<string name="repo_basic_auth_edit">Edit</string>
|
||||
|
||||
<!-- This is used as a content description for visually impaired users in the list of repositories for those repos that had errors updating -->
|
||||
<string name="repo_has_update_error">Update errors</string>
|
||||
@@ -695,51 +405,11 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
<string name="not_on_same_wifi">Your device is not on the same Wi-Fi as the Local Repo you just added! Try joining
|
||||
this network: %s
|
||||
</string>
|
||||
<string name="requires_features">Requires: %1$s</string>
|
||||
<string name="targetsdk_or_later">targets %s</string>
|
||||
<string name="pref_language">Language</string>
|
||||
<string name="pref_language_default">System default</string>
|
||||
|
||||
<string name="wifi">Wi-Fi</string>
|
||||
<string name="wifi_ap">Hotspot</string>
|
||||
|
||||
<string name="category_Connectivity" tools:ignore="UnusedResources">Connectivity</string>
|
||||
<string name="category_Development" tools:ignore="UnusedResources">Development</string>
|
||||
<string name="category_Games" tools:ignore="UnusedResources">Games</string>
|
||||
<string name="category_Graphics" tools:ignore="UnusedResources">Graphics</string>
|
||||
<string name="category_Internet" tools:ignore="UnusedResources">Internet</string>
|
||||
<string name="category_Money" tools:ignore="UnusedResources">Money</string>
|
||||
<string name="category_Multimedia" tools:ignore="UnusedResources">Multimedia</string>
|
||||
<string name="category_Navigation" tools:ignore="UnusedResources">Navigation</string>
|
||||
<string name="category_Phone_SMS" tools:ignore="UnusedResources">Phone & SMS</string>
|
||||
<string name="category_Reading" tools:ignore="UnusedResources">Reading</string>
|
||||
<string name="category_Science_Education" tools:ignore="UnusedResources">Science & Education</string>
|
||||
<string name="category_Security" tools:ignore="UnusedResources">Security</string>
|
||||
<string name="category_Sports_Health" tools:ignore="UnusedResources">Sports & Health</string>
|
||||
<string name="category_System" tools:ignore="UnusedResources">System</string>
|
||||
<string name="category_Theming" tools:ignore="UnusedResources">Theming</string>
|
||||
<string name="category_Time" tools:ignore="UnusedResources">Time</string>
|
||||
<string name="category_Writing" tools:ignore="UnusedResources">Writing</string>
|
||||
<string name="category_Nightly" tools:ignore="UnusedResources">nightly</string>
|
||||
|
||||
<plurals name="button_view_all_apps_in_category">
|
||||
<item quantity="one">View %d</item>
|
||||
<item quantity="other">View all %d</item>
|
||||
</plurals>
|
||||
|
||||
<string name="empty_installed_app_list">No apps installed.\n\nThere are apps on your device, but they are not
|
||||
available from F-Droid. This could be because you need to update your repositories, or the repositories
|
||||
genuinely don\'t have your apps available.
|
||||
</string>
|
||||
<string name="empty_can_update_app_list">Congratulations!\nYour apps are up to date.</string>
|
||||
|
||||
<string name="empty_search_available_app_list">No matching applications available.</string>
|
||||
|
||||
<string name="install_error_unknown">Failed to install due to an unknown error</string>
|
||||
<string name="uninstall_error_unknown">Failed to uninstall due to an unknown error</string>
|
||||
|
||||
<string name="share_apk_error">Could not share app file</string>
|
||||
|
||||
<string name="nearby_splash__download_apps_from_people_nearby">No internet? Get apps from people near you!</string>
|
||||
<!-- The word "nearby" should be the same as used for Google/Android Nearby. This is a button label, it should ideally be 10-20 characters. -->
|
||||
<string name="nearby_splash__find_people_button">Find people nearby</string>
|
||||
@@ -766,14 +436,11 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
<string name="swap_visible_hotspot">Visible via hotspot</string>
|
||||
<string name="swap_blank_wifi_ssid">(blank)</string>
|
||||
<string name="swap_hidden_wifi_ssid">(hidden)</string>
|
||||
<string name="swap_setting_up_hotspot">Setting up hotspot…</string>
|
||||
<string name="swap_stopping_hotspot">Stopping hotspot…</string>
|
||||
<string name="swap_view_available_networks">Tap to open available networks</string>
|
||||
<string name="swap_switch_to_wifi">Tap to switch to a Wi-Fi network</string>
|
||||
<string name="open_qr_code_scanner">Open QR scanner</string>
|
||||
<string name="swap_welcome">Welcome to F-Droid!</string>
|
||||
<string name="swap_confirm_connect">Do you want to get apps from %1$s now?</string>
|
||||
<string name="swap_dont_show_again">Don\'t show this again</string>
|
||||
<string name="swap_scan_or_type_url">One person needs to scan the code, or type the URL of the other in a browser.
|
||||
</string>
|
||||
<!-- This is a screen title, it should be maximum 25 characters -->
|
||||
@@ -803,99 +470,34 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
<!-- This is a button label, it must be the right size, or the layout gets messed up. It should be less than 15 characters. -->
|
||||
<string name="swap_send_fdroid">Send F-Droid</string>
|
||||
<string name="apps">Apps</string>
|
||||
<string name="swap_no_peers_nearby">Could not find people nearby to swap with.</string>
|
||||
<!-- This is a screen title, it should be maximum 25 characters -->
|
||||
<string name="swap_connecting">Connecting</string>
|
||||
<!-- This is a screen title, it should be maximum 25 characters -->
|
||||
<string name="swap_confirm">Confirm swap</string>
|
||||
<string name="swap_qr_isnt_for_swap">The QR code you scanned doesn\'t look like a swap code.</string>
|
||||
<string name="use_bluetooth">Use Bluetooth</string>
|
||||
<string name="loading">Loading…</string>
|
||||
<string name="swap_connection_misc_error">Error occurred while connecting to device, can\'t swap with it!</string>
|
||||
<string name="swap_connection_indexv0_error">You\'re trying to connect to someone with an outdated version of F-Droid. To connect they have to upgrade their F-Droid app. They can use swap to update their F-Droid app from you.</string>
|
||||
<string name="not_visible_nearby">Nearby not enabled</string>
|
||||
<string name="not_visible_nearby_description">Before swapping with nearby devices, make your device visible.</string>
|
||||
<string name="swap_toast_using_path">Using %1$s</string>
|
||||
<string name="swap_toast_not_removable_storage">That choice did not match any removable storage devices, try
|
||||
again!</string>
|
||||
<string name="swap_toast_find_removeable_storage">Choose your removable SD card or USB</string>
|
||||
<string name="swap_toast_invalid_url">Invalid URL for swapping: %1$s</string>
|
||||
<string name="swap_toast_hotspot_enabled">Wi-Fi hotspot enabled</string>
|
||||
<string name="swap_toast_could_not_enable_hotspot">Could not enable Wi-Fi hotspot!</string>
|
||||
<string name="swap_toast_closing_nearby_after_timeout">Nearby closed since it was idle.</string>
|
||||
|
||||
<string name="install_confirm">needs access to</string>
|
||||
<string name="install_confirm_update">Do you want to install an update
|
||||
to this existing app? Your existing data will not
|
||||
be lost. The updated app will get access to:
|
||||
</string>
|
||||
<string name="install_confirm_update_system">Do you want to install an update
|
||||
to this built-in app? Your existing data will not
|
||||
be lost. The updated app will get access to:
|
||||
</string>
|
||||
<string name="install_confirm_update_no_perms">Do you want to install an update
|
||||
to this existing app? Your existing data will not
|
||||
be lost. It does not require any special access.
|
||||
</string>
|
||||
<string name="install_confirm_update_system_no_perms">Do you want to install an update
|
||||
to this built-in app? Your existing data will not
|
||||
be lost. It does not require any special access.
|
||||
</string>
|
||||
<string name="newPerms">New</string>
|
||||
<string name="allPerms">All</string>
|
||||
<string name="perm_costs_money">This may cost you money</string>
|
||||
<string name="uninstall_update_confirm">Do you want to replace this app with the factory version? All data will be removed.</string>
|
||||
<string name="uninstall_confirm">Do you want to uninstall this app?</string>
|
||||
<string name="download_error">Download failed!</string>
|
||||
<string name="download_pending">Waiting to start download…</string>
|
||||
<string name="install_error_notify_title">Error installing %s</string>
|
||||
<string name="uninstall_error_notify_title">Error uninstalling %s</string>
|
||||
|
||||
|
||||
<string name="perms_new_perm_prefix">New:</string>
|
||||
<string name="perms_description_app">Provided by %1$s.</string>
|
||||
<string name="downloading">Downloading…</string>
|
||||
<string name="app__tts__downloading_progress">Downloading, %1$d%% complete</string>
|
||||
<!-- [CHAR LIMIT=50] -->
|
||||
<string name="installing">Installing…</string>
|
||||
<!-- [CHAR LIMIT=50] -->
|
||||
<string name="uninstalling">Uninstalling…</string>
|
||||
<!-- "updates" as in software updates -->
|
||||
<string name="interval_never">No automatic app updates</string>
|
||||
<!-- "updates" as in software updates -->
|
||||
<string name="interval_1h">Check for updates hourly</string>
|
||||
<!-- "updates" as in software updates -->
|
||||
<string name="interval_4h">Check for updates every 4 hours</string>
|
||||
<!-- "updates" as in software updates -->
|
||||
<string name="interval_12h">Check for updates every 12 hours</string>
|
||||
<!-- "updates" as in software updates -->
|
||||
<string name="interval_1d">Check for updates daily</string>
|
||||
<!-- "updates" as in software updates -->
|
||||
<string name="interval_1w">Check for updates weekly</string>
|
||||
<!-- "updates" as in software updates -->
|
||||
<string name="interval_2w">Check for updates every 2 weeks</string>
|
||||
|
||||
<!-- "updates" as in software updates -->
|
||||
<string name="auto_update_time">Earliest next update: %s</string>
|
||||
<string name="auto_update_time_past">Next update when conditions are fulfilled</string>
|
||||
|
||||
<string name="keep_hour">1 hour</string>
|
||||
<string name="keep_day">1 day</string>
|
||||
<string name="keep_week">1 week</string>
|
||||
<string name="keep_month">1 month</string>
|
||||
<string name="keep_year">1 year</string>
|
||||
<string name="keep_forever">Forever</string>
|
||||
|
||||
<string name="theme_light">Light</string>
|
||||
<string name="theme_dark">Dark</string>
|
||||
<string name="theme_follow_system">Follow system</string>
|
||||
|
||||
<string name="crash_dialog_title">F-Droid has crashed</string>
|
||||
<string name="crash_dialog_title_old">F-Droid had crashed</string>
|
||||
<string name="crash_dialog_text">An unexpected error occurred
|
||||
forcing the app to stop. Would you like to e-mail the
|
||||
details to help fix the issue?
|
||||
</string>
|
||||
<string name="crash_dialog_comment_prompt">You can add extra information and comments here:</string>
|
||||
|
||||
<string name="crash_report_text">An unexpected error occurred.
|
||||
This is not your fault.
|
||||
@@ -909,44 +511,14 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
<string name="crash_report_error_saving">Error saving crash report to file</string>
|
||||
|
||||
<!-- notifications -->
|
||||
<plurals name="notification_summary_more">
|
||||
<item quantity="one">+%1$d more…</item>
|
||||
<item quantity="other">+%1$d more…</item>
|
||||
</plurals>
|
||||
<string name="notification_title_single_update_available">Update available</string>
|
||||
<string name="notification_title_single_ready_to_install">Ready to install</string>
|
||||
<string name="notification_title_single_ready_to_install_update">Update ready to install</string>
|
||||
<string name="notification_title_single_install_error">Install failed</string>
|
||||
<string name="notification_content_single_downloading">Downloading \"%1$s\"…</string>
|
||||
<string name="notification_content_single_downloading_update">Downloading update for \"%1$s\"…</string>
|
||||
<string name="notification_content_single_installing">Installing \"%1$s\"…</string>
|
||||
<string name="notification_content_single_installed">Successfully installed</string>
|
||||
<!-- as in software updates -->
|
||||
<plurals name="notification_summary_updates">
|
||||
<item quantity="one">%1$d update</item>
|
||||
<item quantity="other">%1$d updates</item>
|
||||
</plurals>
|
||||
<!-- as in software updates -->
|
||||
<plurals name="notification_summary_app_updates">
|
||||
<item quantity="one">%1$d update available</item>
|
||||
<item quantity="other">%1$d updates available</item>
|
||||
</plurals>
|
||||
<plurals name="notification_summary_installed">
|
||||
<item quantity="one">%1$d app installed</item>
|
||||
<item quantity="other">%1$d apps installed</item>
|
||||
</plurals>
|
||||
<string name="notification_title_summary_app_update_available">Tap to update all</string>
|
||||
<string name="notification_title_summary_update_available">Update available</string>
|
||||
<string name="notification_title_summary_downloading">Downloading…</string>
|
||||
<string name="notification_title_summary_downloading_update">Downloading update…</string>
|
||||
<string name="notification_title_summary_ready_to_install">Ready to install</string>
|
||||
<string name="notification_title_summary_ready_to_install_update">Update ready to install</string>
|
||||
<string name="notification_title_summary_installing">Installing</string>
|
||||
<string name="notification_title_summary_installed">Successfully installed</string>
|
||||
<string name="notification_title_summary_install_error">Install failed</string>
|
||||
<string name="notification_action_update">Update</string>
|
||||
<string name="notification_action_cancel">Cancel</string>
|
||||
<string name="notification_action_install">Install</string>
|
||||
|
||||
<string name="notification_channel_installs_title">Installations</string>
|
||||
<string name="notification_channel_installs_description">Displays app installation notifications.</string>
|
||||
@@ -989,53 +561,16 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
<!-- The placeholder %s will be replaced with the name of this app -->
|
||||
<string name="notification_self_update_title">%s was updated. Tap to open</string>
|
||||
|
||||
<!-- Used by the TTS engine when showing a filter "chip" in the search box -->
|
||||
<string name="tts_category_name">Category %1$s</string>
|
||||
<string name="tts_repo_name">Repository %1$s</string>
|
||||
<string name="tts_author_name">Author %1$s</string>
|
||||
|
||||
<plurals name="tts_view_all_in_category">
|
||||
<item quantity="one">View %1$d app in the %2$s category</item>
|
||||
<item quantity="other">View all %1$d apps from the %2$s category</item>
|
||||
</plurals>
|
||||
|
||||
<string name="details_last_updated_today">Updated today</string>
|
||||
<string name="warning_scaning_qr_code">Your camera doesn\'t seem to have an autofocus. It might be difficult to scan the code.</string>
|
||||
<string name="permission_camera_denied">Grant camera permission to scan the QR code. Tap to grant camera permission in settings.</string>
|
||||
<string name="warning_target_sdk">This app was built for an older version of Android and cannot be updated automatically.</string>
|
||||
<string name="warning_no_compat_versions">The selected repository has no compatible app versions. To receive updates, select a preferred repository with compatible versions.</string>
|
||||
<string name="undo">Undo</string>
|
||||
<string name="error">Error</string>
|
||||
<string name="app_list__dismiss_installing_app">Installation cancelled</string>
|
||||
<string name="turn_on_wifi">Turn on Wi-Fi</string>
|
||||
<plurals name="details_last_update_days">
|
||||
<item quantity="one">Updated %1$d day ago</item>
|
||||
<item quantity="other">Updated %1$d days ago</item>
|
||||
</plurals>
|
||||
<plurals name="details_last_update_weeks">
|
||||
<item quantity="one">Updated %1$d week ago</item>
|
||||
<item quantity="other">Updated %1$d weeks ago</item>
|
||||
</plurals>
|
||||
<plurals name="details_last_update_months">
|
||||
<item quantity="one">Updated %1$d month ago</item>
|
||||
<item quantity="other">Updated %1$d months ago</item>
|
||||
</plurals>
|
||||
<plurals name="details_last_update_years">
|
||||
<item quantity="one">Updated %1$d year ago</item>
|
||||
<item quantity="other">Updated %1$d years ago</item>
|
||||
</plurals>
|
||||
<string name="copied_to_clipboard">Copied to clipboard</string>
|
||||
<string name="copied_url_to_clipboard">Copied URL to clipboard</string>
|
||||
<string name="copied_permission_to_clipboard">Copied permission name to clipboard</string>
|
||||
|
||||
<string name="paste">Paste</string>
|
||||
|
||||
<string name="ipfsgw_title">IPFS gateways</string>
|
||||
<string name="ipfsgw_explainer">Download apps from IPFS web endpoints. (Only works for F-Droid repositories with IPFS support.)</string>
|
||||
<plurals name="ipfsgw_summary">
|
||||
<item quantity="other">Download apps using IPFS web endpoints: %1$d enabled</item>
|
||||
</plurals>
|
||||
<string name="ipfsgw_summary_disabled">Download apps using IPFS web endpoints: disabled</string>
|
||||
<string name="ipfsgw_summary_new">Download apps using IPFS web endpoints</string>
|
||||
<string name="ipfsgw_add_title">Add IPFS gateway</string>
|
||||
<string name="ipfsgw_add_add">Add</string>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user