Compare commits

..

2 Commits

Author SHA1 Message Date
Imran Remtulla
2c6e95f902 Updates 2025-07-02 16:00:29 -04:00
Imran Remtulla
7dbf3ac102 Try using foreground tasks for reliability 2025-07-01 15:05:26 -04:00
62 changed files with 441 additions and 1322 deletions

5
.gitignore vendored
View File

@@ -11,8 +11,7 @@
.svn/
.swiftpm/
migrate_working_dir/
.vscode/*
!.vscode/launch.json
.vscode/
# IntelliJ related
*.iml
@@ -47,8 +46,6 @@ app.*.map.json
/android/app/profile
/android/app/release
/android/app/.cxx
/android/build/reports
/android/.kotlin
# Custom
TODO.txt

28
.vscode/launch.json vendored
View File

@@ -1,28 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Obtainium",
"request": "launch",
"type": "dart",
"args":[ "--flavor", "normal" ]
},
{
"name": "Obtainium (profile mode)",
"request": "launch",
"type": "dart",
"flutterMode": "profile",
"args":[ "--flavor", "normal" ]
},
{
"name": "Obtainium (release mode)",
"request": "launch",
"type": "dart",
"flutterMode": "release",
"args":[ "--flavor", "normal" ]
}
]
}

View File

@@ -33,7 +33,6 @@ Currently supported App sources:
- [CoolApk](https://coolapk.com/)
- [vivo App Store (CN)](https://h5.appstore.vivo.com.cn/)
- [RuStore](https://rustore.ru/)
- [Farsroid](https://www.farsroid.com)
- Jenkins Jobs
- [APKMirror](https://apkmirror.com/) (Track-Only)
- Other - App-Specific:

Binary file not shown.

After

Width:  |  Height:  |  Size: 965 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 843 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "تعطيل تصحيح الإصدار (يبدو أن الملحق لا يعمل)",
"unknown": "غير معروف",
"none": "لا شيء",
"all": "الكل",
"never": "أبدًا",
"latestVersionX": "الأحدث: {}",
"installedVersionX": "المثبت: {}",
@@ -331,10 +330,6 @@
"documentationLinksNote": "تحتوي صفحة Obtainium على GitHub المرتبطة أدناه على روابط لمقاطع فيديو، مقالات، مناقشات وموارد أخرى ستساعدك على فهم كيفية استخدام التطبيق.",
"batteryOptimizationNote": "لاحظ أن التنزيلات في الخلفية قد تعمل بشكل أكثر موثوقية إذا قمت بتعطيل تحسينات بطارية النظام لـ Obtainium.",
"fileDeletionError": "فشل حذف الملف (حاول حذفه يدويًا ثم حاول مرة أخرى): \"{}\"",
"foregroundService": "الحصول على خدمة الحصول على خدمة المقدمة",
"foregroundServiceExplanation": "استخدام خدمة مقدمة للتحقق من التحديثات (أكثر موثوقية وتستهلك طاقة أكبر)",
"fgServiceNotice": "هذا الإشعار مطلوب للتحقق من التحديث في الخلفية (يمكن إخفاؤه في إعدادات نظام التشغيل)",
"excludeSecrets": "استبعاد الأسرار",
"removeAppQuestion": {
"one": "إزالة التطبيق؟",
"other": "إزالة التطبيقات؟"

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Ispravka verzije je onemogućena (izgleda da plugin ne radi)",
"unknown": "Nepoznato",
"none": "Ništa",
"all": "All",
"never": "Nikad",
"latestVersionX": "Najnovija verzija: {}",
"installedVersionX": "Instalirana verzija: {}",
@@ -328,13 +327,9 @@
"smartname": "Name (Smart)",
"sortMethod": "Sort Method",
"welcome": "Welcome",
"documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions, and other resources that will help you understand how to use the app.",
"documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions and other resources that will help you understand how to use the app.",
"batteryOptimizationNote": "Note that background downloads may work more reliably if you disable OS battery optimizations for Obtainium.",
"fileDeletionError": "Failed to delete file (try deleting it manually then try again): \"{}\"",
"foregroundService": "Obtainium foreground service",
"foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
"fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
"excludeSecrets": "Exclude secrets",
"removeAppQuestion": {
"one": "Želite li ukloniti aplikaciju?",
"other": "Želite li ukloniti aplikacije?"

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Correcció de versions desactivada (el plugin sembla que no funciona)",
"unknown": "Desconegut",
"none": "Cap",
"all": "All",
"never": "Mai",
"latestVersionX": "Última versió: {}",
"installedVersionX": "Versió instal·lada: {}",
@@ -319,11 +318,11 @@
"crowdsourcedConfigsShort": "Configuració de les aplicacions crowdsourcing",
"allowInsecure": "Permet les sol·licituds HTTP insegures",
"stayOneVersionBehind": "Roman a la versió anterior a l'última",
"useFirstApkOfVersion": "Tria automàticament la primera aplicació entre moltes",
"useFirstApkOfVersion": "Auto-select first of multiple APKs",
"refreshBeforeDownload": "Actualitza les dades de l'aplicació abans de descarregar-la",
"tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"vivoAppStore": "Vivo App Store (CN)",
"vivoAppStore": "vivo App Store (CN)",
"name": "Nom",
"smartname": "Nom (smart)",
"sortMethod": "Mètode d'ordenació",
@@ -331,10 +330,6 @@
"documentationLinksNote": "La pàgina GitHub d'Obtainium enllaçada a sota conté enllaços a vídeos, articles, debats i altres recursos que t'ajudaran a entendre com usar l'aplicació.",
"batteryOptimizationNote": "Tingues present que les descàrregues en segon pla funcionaran millor si inhabilites l'optimització de bateria per a Obtainium.",
"fileDeletionError": "No s'ha pogut suprimir el fitxer (intenta suprimir-lo manualment i torna-ho a provar): \"{}\"",
"foregroundService": "Servei d'Obtainium en primer pla",
"foregroundServiceExplanation": "Usa el servei d'Obtainium en primer pla per comprovar les actualitzacions (és més fiable però consumeix més bateria)",
"fgServiceNotice": "Aquesta notificació és necessària per comprovar les actualitzacions en segon pla (la pots ocultar als paràmetres del Sistema Operatiu)",
"excludeSecrets": "Exclude secrets",
"removeAppQuestion": {
"one": "¿Suprimeixo l'aplicació?",
"other": "¿Suprimeixo les aplicacions?"
@@ -360,16 +355,16 @@
"other": "{} URLs"
},
"minute": {
"one": "{} minut",
"other": "{} minuts"
"one": "{} Minut",
"other": "{} Minuts"
},
"hour": {
"one": "{} hora",
"other": "{} hores"
"one": "{} Hora",
"other": "{} Hores"
},
"day": {
"one": "{} dia",
"other": "{} dies"
"one": "{} Dia",
"other": "{} Dies"
},
"clearedNLogsBeforeXAfterY": {
"one": "Suprimit {n} registre (anterior a = {before}, posterior a = {after})",

View File

@@ -1,5 +1,5 @@
{
"invalidURLForSource": "Žádná platná adresa URL aplikace {}",
"invalidURLForSource": "Žádná platná {} adresa URL aplikace",
"noReleaseFound": "Nebyla nalezena odpovídající verze",
"noVersionFound": "Nelze určit verzi vydání",
"urlMatchesNoSource": "URL neodpovídá žádnému známému zdroji",
@@ -7,33 +7,33 @@
"appIdMismatch": "ID staženého balíčku neodpovídá ID existující aplikace",
"functionNotImplemented": "Tato třída nemá implementovánu tuto funkci",
"placeholder": "Zástupce",
"someErrors": "Došlo k chybám",
"someErrors": "Vyskytly se nějaké chyby",
"unexpectedError": "Neočekávaná chyba",
"ok": "OK",
"ok": "Ok",
"and": "a",
"githubPATLabel": "Osobní přístupový token GitHub (zvyšuje limit požadavků)",
"includePrereleases": "Zahrnout předběžná vydání",
"githubPATLabel": "GitHub Personal Access Token (zvyšuje limit rychlosti)",
"includePrereleases": "Zahrnout předběžné verze",
"fallbackToOlderReleases": "Přechod na starší verze",
"filterReleaseTitlesByRegEx": "Filtrovat názvy verzí podle regulárního výrazu",
"invalidRegEx": "Neplatný regulární výraz",
"noDescription": "Žádný popis",
"cancel": "Zrušit",
"continue": "Pokračovat",
"requiredInBrackets": "(vyžadováno)",
"dropdownNoOptsError": "CHYBA: ROZBALOVACÍ NABÍDKA MUSÍ MÍT ALESPOŇ JEDNU MOŽNOST",
"colour": "Barvu",
"requiredInBrackets": "(Požadované)",
"dropdownNoOptsError": "ERROR: DROPDOWN MUSÍ MÍT AŽ JEDNU MOŽNOST",
"colour": "Barva",
"standard": "Standardní",
"custom": "Vlastní",
"useMaterialYou": "Použít Material You",
"githubStarredRepos": "Repozitáře na GitHubu označené hvězdičkou",
"useMaterialYou": "Použijte materiál, který jste",
"githubStarredRepos": "GitHub označená hvězdičkou",
"uname": "Uživatelské jméno",
"wrongArgNum": "Nesprávný počet zadaných argumentů",
"xIsTrackOnly": "{} je určeno pouze pro sledování",
"source": "Zdroj",
"app": "Aplikace",
"appsFromSourceAreTrackOnly": "Aplikace z tohoto zdroje jsou „pouze pro sledování“.",
"youPickedTrackOnly": "Vybrali jste možnost „pouze sledovat.",
"trackOnlyAppDescription": "Aplikace bude sledována kvůli aktualizacím, ale Obtainium ji nebude stahovat ani instalovat.",
"appsFromSourceAreTrackOnly": "Aplikace z tohoto zdroje jsou Jen sledovány.",
"youPickedTrackOnly": "Vybrali jste možnost Jen sledovat.",
"trackOnlyAppDescription": "Aplikace je sledována kvůli aktualizacím, ale Obtainium ji nebude stahovat ani instalovat.",
"cancelled": "Zrušeno",
"appAlreadyAdded": "Aplikace již přidána",
"alreadyUpToDateQuestion": "Aplikace je již aktualizovaná?",
@@ -45,9 +45,9 @@
"search": "Hledat",
"additionalOptsFor": "Další možnosti pro {}",
"supportedSources": "Podporované zdroje",
"trackOnlyInBrackets": "(pouze sledování)",
"trackOnlyInBrackets": "(Pouze stopy)",
"searchableInBrackets": "(s možností vyhledávání)",
"appsString": "Aplikace",
"appsString": "Apky",
"noApps": "Žádné aplikace",
"noAppsForFilter": "Žádné aplikace pro vybraný filtr",
"byX": "Od {}",
@@ -57,73 +57,73 @@
"notInstalled": "Není nainstalováno",
"pseudoVersion": "pseudoverze",
"selectAll": "Vybrat vše",
"deselectX": "Zrušit výběr {}",
"xWillBeRemovedButRemainInstalled": "Aplikace {} bude odstraněna z aplikace Obtainium, ale zůstane nainstalována v zařízení.",
"removeSelectedAppsQuestion": "Odstranit vybrané aplikace?",
"removeSelectedApps": "Odstranit vybrané aplikace",
"deselectX": "{} deselected",
"xWillBeRemovedButRemainInstalled": "{} bude odstraněn z Obtainium, ale zůstane nainstalován v zařízení.",
"removeSelectedAppsQuestion": "Odebrat vybrané aplikace?",
"removeSelectedApps": "Odebrat vybrané aplikace",
"updateX": "Aktualizovat {}",
"installX": "Instalovat {}",
"markXTrackOnlyAsUpdated": "Označit aplikaci {}\n(pouze sledování)\njako aktualizovanou",
"markXTrackOnlyAsUpdated": "Označit {}\n(Jen sledované)\njako aktualizované",
"changeX": "Změnit {}",
"installUpdateApps": "Instalovat/aktualizovat aplikace",
"installUpdateSelectedApps": "Instalovat/aktualizovat vybrané aplikace",
"markXSelectedAppsAsUpdated": "Označit {} vybraných aplikací jako aktuální?",
"markXSelectedAppsAsUpdated": "Označit {} vybrané aplikace jako aktuální?",
"no": "Ne",
"yes": "Ano",
"markSelectedAppsUpdated": "Označit vybrané aplikace jako aktuální",
"pinToTop": "Připnout nahoru",
"unpinFromTop": "Odepnout shora",
"resetInstallStatusForSelectedAppsQuestion": "Obnovit stav instalace vybraných aplikací?",
"installStatusOfXWillBeResetExplanation": "Stav instalace vybraných aplikací bude resetován.\n\nTo může být užitečné, pokud je verze aplikace zobrazená v aplikaci Obtainium nesprávná z důvodu neúspěšných aktualizací nebo jiných problémů.",
"installStatusOfXWillBeResetExplanation": "Stav instalace vybraných aplikací bude resetován. To může být užitečné, pokud je verze aplikace zobrazená v Obtainium nesprávná z důvodu neúspěšných aktualizací nebo jiných problémů.",
"customLinkMessage": "Tyto odkazy fungují na zařízeních s nainstalovaným Obtainium",
"shareAppConfigLinks": "Sdílet konfiguraci aplikace jako odkaz HTML",
"shareSelectedAppURLs": "Sdílet adresy URL vybraných aplikací",
"resetInstallStatus": "Obnovit stav instalace",
"more": "Více",
"removeOutdatedFilter": "Odstranit filtr neaktuálních aplikací",
"removeOutdatedFilter": "Odstranit filtr Neaktuální",
"showOutdatedOnly": "Zobrazovat pouze zastaralé aplikace",
"filter": "Filtr",
"filterApps": "Filtrovat aplikace",
"appName": "Název aplikace",
"author": "Autor",
"upToDateApps": "Aktuální aplikace",
"nonInstalledApps": "Nenainstalované aplikace",
"importExport": "Import/export",
"upToDateApps": "Aktuální apky",
"nonInstalledApps": "Neinstalované apky",
"importExport": "Import Export",
"settings": "Nastavení",
"exportedTo": "Exportováno do {}",
"obtainiumExport": "Export aplikace Obtainium",
"obtainiumExport": "Export obtainia",
"invalidInput": "Neplatný vstup",
"importedX": "Importováno {}",
"obtainiumImport": "Import aplikace Obtainium",
"importFromURLList": "Importovat ze seznamu adres",
"obtainiumImport": "Dovoz obtainia",
"importFromURLList": "Import ze seznamu URL",
"searchQuery": "Vyhledávací dotaz",
"appURLList": "Seznam adres aplikací",
"line": "Linka",
"searchX": "Vyhledávání {}",
"noResults": "Nebyly nalezeny žádné výsledky",
"importX": "Importovat {}",
"importedAppsIdDisclaimer": "Importované aplikace mohou být nesprávně zobrazeny jako „nenainstalované“.\nChcete-li to opravit, nainstalujte je znovu prostřednictvím aplikace Obtainium.\nNemá vliv na data aplikací.\n\nOvlivňuje pouze způsoby importu URL a třetích stran.",
"importX": "Import {}",
"importedAppsIdDisclaimer": "Importované aplikace mohou být nesprávně zobrazeny jako \"Neinstalovány\". Chcete-li to opravit, nainstalujte je znovu prostřednictvím Obtainium. To nemá vliv na data aplikací. Ovlivňuje pouze metody importu URL a třetích stran.",
"importErrors": "Chyba importu",
"importedXOfYApps": "Importováno {} z {} aplikací.",
"importedXOfYApps": "{}importováno z {} aplikací.",
"followingURLsHadErrors": "U následujících adres došlo k chybám:",
"selectURL": "Vybrat adresu",
"selectURLs": "Select adresy",
"pick": "Vybrat",
"theme": "Motiv",
"theme": "Téma",
"dark": "Tmavé",
"light": "Světlé",
"followSystem": "Podle systému",
"followSystemThemeExplanation": "Používání motivu systému je možné pouze pomocí aplikací třetích stran",
"useBlackTheme": "Použít čistě černý tmavý motiv",
"followSystem": "Jako systém",
"followSystemThemeExplanation": "Sledování motivu systému je možné pouze pomocí aplikací třetích stran.",
"useBlackTheme": "Použít čistě černé tmavé téma",
"appSortBy": "Seřadit podle",
"authorName": "Autor/jméno",
"nameAuthor": "Jméno/autor",
"authorName": "Autor/Jméno",
"nameAuthor": "Jméno/Autor",
"asAdded": "Přidáno",
"appSortOrder": "Seřadit",
"ascending": "Vzestupně",
"descending": "Sestupně",
"bgUpdateCheckInterval": "Interval kontroly aktualizace na pozadí",
"neverManualOnly": "Nikdy pouze ručně",
"neverManualOnly": "Nikdy - pouze ručně",
"appearance": "Vzhled",
"showWebInAppView": "Zobrazit zdrojové webové stránky v zobrazení aplikace",
"pinUpdates": "Připnout aplikace s aktualizacemi nahoru",
@@ -131,7 +131,7 @@
"sourceSpecific": "Specifické pro zdroj",
"appSource": "Zdroj aplikace",
"noLogs": "Žádné protokoly",
"appLogs": "Protokoly aplikace",
"appLogs": "Záznamy apky",
"close": "Zavřít",
"share": "Sdílet",
"appNotFound": "Aplikace nenalezena",
@@ -141,7 +141,7 @@
"deviceSupportsXArch": "Vaše zařízení podporuje architekturu CPU {}.",
"deviceSupportsFollowingArchs": "Vaše zařízení podporuje následující architektury CPU:",
"warning": "Varování",
"sourceIsXButPackageFromYPrompt": "Zdroj aplikace je {}, ale balíček pro vydání pochází z {}. Pokračovat?",
"sourceIsXButPackageFromYPrompt": "Zdroj aplikace je '{}', ale balíček pro vydání je z '{}'. Pokračovat?",
"updatesAvailable": "Dostupné aktualizace",
"updatesAvailableNotifDescription": "Upozorňuje uživatele, že jsou k dispozici aktualizace pro jednu nebo více aplikací sledovaných Obtainium",
"noNewUpdates": "Žádné nové aktualizace.",
@@ -149,7 +149,7 @@
"appsUpdated": "Aplikace aktualizovány",
"appsNotUpdated": "Nepodařilo se aktualizovat aplikace",
"appsUpdatedNotifDescription": "Upozornit, že byly provedeny aktualizace jedné nebo více aplikací na pozadí",
"xWasUpdatedToY": "Aplikace {} byla aktualizována na {}.",
"xWasUpdatedToY": "{} byla aktualizována na {}",
"xWasNotUpdatedToY": "Nepodařilo se aktualizovat {} na {}.",
"errorCheckingUpdates": "Chyba kontroly aktualizací",
"errorCheckingUpdatesNotifDescription": "Zobrazit oznámení při neúspěšné kontrole aktualizací na pozadí",
@@ -161,26 +161,25 @@
"completeAppInstallationNotifDescription": "Vyzvat k návratu do Obtainium pro dokončení instalace aplikací",
"checkingForUpdates": "Zkontrolovat aktualizace",
"checkingForUpdatesNotifDescription": "Dočasné oznámení zobrazené při kontrole aktualizací",
"pleaseAllowInstallPerm": "Povolte prosím aplikaci Obtainium instalovat aplikace",
"trackOnly": "Pouze sledovat",
"pleaseAllowInstallPerm": "Povolte prosím Obtainium instalovat aplikace",
"trackOnly": "Jen sledovat",
"errorWithHttpStatusCode": "Chyba {}",
"versionCorrectionDisabled": "Oprava verze zakázána (zásuvný modul zřejmě nefunguje)",
"unknown": "Neznám",
"none": "Žádný",
"all": "Všechny",
"never": "Nikdy",
"latestVersionX": "Nejnovější verze: {}",
"installedVersionX": "Nainstalovaná verze: {}",
"lastUpdateCheckX": "Poslední kontrola aktualizací: {}",
"lastUpdateCheckX": "Poslední kontrola aktualizace: {}",
"remove": "Odebrat",
"yesMarkUpdated": "Ano, označit jako aktualizované",
"fdroid": "Oficiální repozitář F-Droid",
"appIdOrName": "ID nebo název aplikace",
"appIdOrName": "ID nebo název apky",
"appId": "ID aplikace",
"appWithIdOrNameNotFound": "Žádná aplikace s tímto ID nebo názvem nebyla nalezena",
"reposHaveMultipleApps": "Repozitáře mohou obsahovat více aplikací",
"fdroidThirdPartyRepo": "F-Droid repozitář třetí strany",
"install": "Instalovat",
"install": "Nainstalujte",
"markInstalled": "Označit jako nainstalovaný",
"update": "Aktualizovat",
"markUpdated": "Označit jako aktuální",
@@ -190,7 +189,7 @@
"downloadingX": "Stáhnout {}",
"downloadX": "Stáhnout {}",
"downloadedX": "Staženo {}",
"releaseAsset": "Soubor vydání",
"releaseAsset": "Vydání aktiva",
"downloadNotifDescription": "Informuje uživatele o průběhu stahování aplikace",
"noAPKFound": "Žádná APK nebyla nalezena",
"noVersionDetection": "Žádná detekce verze",
@@ -202,17 +201,17 @@
"deleteCategoriesQuestion": "Smazat kategorie?",
"categoryDeleteWarning": "Všechny aplikace v odstraněných kategoriích budou nastaveny na nekategorizované.",
"addCategory": "Přidat kategorii",
"label": "Popisek",
"label": "Štítek",
"language": "Jazyk",
"copiedToClipboard": "Zkopírováno do schránky",
"storagePermissionDenied": "Oprávnění k ukládání odepřeno",
"selectedCategorizeWarning": "Toto nahradí všechna stávající nastavení kategorií pro vybrané aplikace.",
"filterAPKsByRegEx": "Filtrovat APK podle regulárního výrazu",
"removeFromObtainium": "Odebrat z Obtainia",
"removeFromObtainium": "Odebrat z Obtainium",
"uninstallFromDevice": "Odinstalovat ze zařízení",
"onlyWorksWithNonVersionDetectApps": "Funguje pouze pro aplikace s vypnutou detekcí verze.",
"releaseDateAsVersion": "Použít datum vydání jako verzi",
"releaseTitleAsVersion": "Použít název vydání jako řetězec verze",
"releaseTitleAsVersion": "Použít název verze jako řetězec verze",
"releaseDateAsVersionExplanation": "Tato možnost by měla být použita pouze u aplikace, kde detekce verzí nefunguje správně, ale je k dispozici datum vydání.",
"changes": "Změny",
"releaseDate": "Datum vydání",
@@ -222,16 +221,16 @@
"standardVersionDetection": "Standardní detekce verze",
"groupByCategory": "Seskupit podle kategorie",
"autoApkFilterByArch": "Pokud je to možné, pokuste se filtrovat soubory APK podle architektury procesoru",
"autoLinkFilterByArch": "Pokusit se filtrovat odkazy podle architektury procesoru, pokud je to možné",
"autoLinkFilterByArch": "Pokus o filtrování odkazů podle architektury procesoru, pokud je to možné.",
"overrideSource": "Přepsat zdroj",
"dontShowAgain": "Nezobrazovat znovu",
"dontShowTrackOnlyWarnings": "Nezobrazovat varování pro „pouze sledované",
"dontShowAPKOriginWarnings": "Nezobrazovat varování o původu APK",
"dontShowTrackOnlyWarnings": "Nezobrazovat varování pro 'Jen sledované'",
"dontShowAPKOriginWarnings": "Nezobrazovat varování pro původ APK",
"moveNonInstalledAppsToBottom": "Přesunout nenainstalované aplikace na konec zobrazení Aplikace",
"gitlabPATLabel": "Osobní přístupový token GitLab",
"about": "Informace",
"requiresCredentialsInSettings": "{} vyžaduje další pověření (v nastavení)",
"checkOnStart": "Zkontrolovat aktualizace při spuštění",
"about": "O",
"requiresCredentialsInSettings": "{}: Vyžaduje další pověření (v nastavení)",
"checkOnStart": "Zkontrolovat jednou při spuštění",
"tryInferAppIdFromCode": "Pokusit se určit ID aplikace ze zdrojového kódu",
"removeOnExternalUninstall": "Automaticky odstranit externě odinstalované aplikace",
"pickHighestVersionCode": "Automaticky vybrat nejvyšší verzi APK",
@@ -241,28 +240,28 @@
"minStarCount": "Minimální počet hvězdiček",
"addInfoBelow": "Přidat tuto informaci na konec stránky.",
"addInfoInSettings": "Přidat tuto informaci do nastavení.",
"githubSourceNote": "Limit požadavků služby GitHub lze obejít pomocí klíče API.",
"githubSourceNote": "Omezení rychlosti GitHub lze obejít pomocí klíče API.",
"sortByLastLinkSegment": "Seřadit pouze podle poslední části odkazu",
"filterReleaseNotesByRegEx": "Filtrovat seznam změn podle regulárního výrazu",
"customLinkFilterRegex": "Vlastní filtr odkazů APK podle regulárního výrazu (výchozí: „.apk$)",
"filterReleaseNotesByRegEx": "Filtrovat poznámky k vydání podle regulárního výrazu",
"customLinkFilterRegex": "Vlastní filtr odkazů APK podle regulárního výrazu (výchozí '.apk$')",
"appsPossiblyUpdated": "Byly provedeny pokusy o aktualizaci aplikací",
"appsPossiblyUpdatedNotifDescription": "Upozorňuje uživatele, že na pozadí mohly být provedeny aktualizace jedné nebo více aplikací",
"xWasPossiblyUpdatedToY": "{} mohlo být aktualizováno na {}.",
"enableBackgroundUpdates": "Povolit aktualizace na pozadí",
"backgroundUpdateReqsExplanation": "Aktualizace na pozadí nemusí být možná pro všechny aplikace.",
"backgroundUpdateLimitsExplanation": "Úspěšnost instalace na pozadí lze určit pouze v případě, že je otevřeno Obtainium.",
"verifyLatestTag": "Ověřit značku latest",
"intermediateLinkRegex": "Filtr pro návštěvu „prostředního“ odkazu",
"verifyLatestTag": "Zkontrolovat značku latest",
"intermediateLinkRegex": "Filtrovat mezipropojení, které by mělo být navštíveno jako první",
"filterByLinkText": "Filtrovat odkazy podle textu odkazu",
"intermediateLinkNotFound": "Připojený odkaz nenalezen",
"intermediateLink": "Připojený odkaz",
"exemptFromBackgroundUpdates": "Vyloučit z aktualizací na pozadí (je-li povoleno)",
"bgUpdatesOnWiFiOnly": "Zakázat aktualizace na pozadí, pokud není k dispozici Wi-Fi",
"bgUpdatesWhileChargingOnly": "Zakázat aktualizace na pozadí, pokud se zařízení nenabíjí",
"autoSelectHighestVersionCode": "Automaticky vybrat APK s nejvyšším kódem verze",
"bgUpdatesOnWiFiOnly": "Deaktivovat aktualizace na pozadí, pokud není k dispozici Wi-Fi",
"bgUpdatesWhileChargingOnly": "Zakázat aktualizace na pozadí, když se nenabíjí",
"autoSelectHighestVersionCode": "Automaticky vybrat nejvyšší verzi APK",
"versionExtractionRegEx": "Extrakce verze pomocí RegEx",
"trimVersionString": "Oříznutí řetězce verze pomocí RegEx",
"matchGroupToUseForX": "Shoda se skupinou k použi pro „{}“",
"trimVersionString": "Oříznutí řetězce verze pomocí příkazu RegEx",
"matchGroupToUseForX": "Skupina shody, která se použije pro \"{}\"",
"matchGroupToUse": "Odpovídá použité skupině",
"highlightTouchTargets": "Zvýraznit méně zjevné cíle dotyku",
"pickExportDir": "Vybrat adresář pro export",
@@ -281,128 +280,111 @@
"installing": "Instaluji",
"skipUpdateNotifications": "Neposkytovat oznámení o aktualizaci",
"updatesAvailableNotifChannel": "Dostupné aktualizace",
"appsUpdatedNotifChannel": "Aplikace aktualizovány",
"appsUpdatedNotifChannel": "Apky aktualizovány",
"appsPossiblyUpdatedNotifChannel": "Byly provedeny pokusy o aktualizace aplikací",
"errorCheckingUpdatesNotifChannel": "Chyba při kontrole aktualizací",
"appsRemovedNotifChannel": "Aplikace odstraněny",
"appsRemovedNotifChannel": "Odstraněné apky",
"downloadingXNotifChannel": "Stáhnout {}",
"completeAppInstallationNotifChannel": "Dokončit instalaci aplikace",
"checkingForUpdatesNotifChannel": "Zkontrolovat aktualizace",
"onlyCheckInstalledOrTrackOnlyApps": "Aktualizace kontrolovat pouze u nainstalovaných a sledovaných aplikací",
"onlyCheckInstalledOrTrackOnlyApps": "Na aktualizace kontrolovat pouze nainstalované aplikace a aplikace označené Track only",
"supportFixedAPKURL": "Odhadnout novější verzi na základě prvních třiceti číslic kontrolního součtu adresy URL APK, pokud není podporována jinak",
"selectX": "Vybrat {}",
"parallelDownloads": "Povolit souběžné stahování",
"useShizuku": "K instalaci použít Shizuku nebo Sui",
"useShizuku": "K instalaci použijte Shizuku nebo Sui",
"shizukuBinderNotFound": "Shizuku neběží",
"shizukuOld": "Stará verze Shizuku (<11) - aktualizujte ji",
"shizukuOldAndroidWithADB": "Shizuku běží na Androidu < 8.1 s ADB - aktualizujte Android nebo místo toho použijte Sui",
"shizukuPretendToBeGooglePlay": "Nastavit Google Play jako zdroj instalace (pokud se používá Shizuku)",
"shizukuPretendToBeGooglePlay": "Nastavení Google Play jako zdroje instalace (pokud se používá Shizuku)",
"useSystemFont": "Použít systémové písmo",
"useVersionCodeAsOSVersion": "Použít kód verze aplikace jako verzi zjištěnou OS",
"requestHeader": "Hlavička požadavku",
"useLatestAssetDateAsReleaseDate": "Použít poslední nahraný soubor jako datum vydání",
"useLatestAssetDateAsReleaseDate": "Použít poslední nahrané dílo jako datum vydání",
"defaultPseudoVersioningMethod": "Výchozí metoda pseudoverze",
"partialAPKHash": "Částečný hash APK",
"APKLinkHash": "Odkaz APK Hash",
"directAPKLink": "Přímý odkaz APK",
"pseudoVersionInUse": "Pseudoverze se používá",
"installed": "Nainstalováno",
"installed": "Instalováno",
"latest": "Nejnovější",
"invertRegEx": "Invertovat regulární výraz",
"note": "Poznámka",
"selfHostedNote": "Rozbalovací seznam „{}“ lze použít pro přístup k vlastním instancím libovolného zdroje.",
"selfHostedNote": "Rozbalovací seznam \"{}\" lze použít k dosažení vlastních/obvyklých instancí libovolného zdroje.",
"badDownload": "APK nelze analyzovat (nekompatibilní nebo částečné stažení)",
"beforeNewInstallsShareToAppVerifier": "Sdílet nové aplikace s aplikací AppVerifier (pokud je k dispozici)",
"beforeNewInstallsShareToAppVerifier": "Sdíle nových aplikací s aplikací AppVerifier (pokud je k dispozici)",
"appVerifierInstructionToast": "Sdílejte do aplikace AppVerifier a po dokončení se sem vraťte.",
"wiki": "Nápověda/Wiki",
"crowdsourcedConfigsLabel": "Komunitní konfigurace aplikací (použití na vlastní nebezpečí)",
"crowdsourcedConfigsLabel": "Konfigurace aplikací s využitím crowdsourcingu (použití na vlastní nebezpečí)",
"crowdsourcedConfigsShort": "Konfigurace aplikací s využitím crowdsourcingu",
"allowInsecure": "Povolit nezabezpečené požadavků HTTP",
"allowInsecure": "Povolení nezabezpečených požadavků HTTP",
"stayOneVersionBehind": "Zůstaňte o jednu verzi pozadu za nejnovější",
"useFirstApkOfVersion": "Automatický výběr prvního z více souborů APK",
"refreshBeforeDownload": "Obnovit údaje o aplikaci před stažením",
"refreshBeforeDownload": "Obnovení údajů o aplikaci před stažením",
"tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"vivoAppStore": "vivo App Store (CN)",
"name": "Název",
"smartname": "Název (chytrý)",
"smartname": "Název (Smart)",
"sortMethod": "Metoda třídění",
"welcome": "Vítejte na",
"documentationLinksNote": "Níže odkazovaná stránka Obtainium GitHub obsahuje odkazy na videa, články, diskuse a další zdroje, které vám pomohou pochopit, jak aplikaci používat.",
"batteryOptimizationNote": "Upozorňujeme, že stahování na pozadí může fungovat spolehlivěji, pokud v nastavení aplikace Obtainium přepnete na „službu v popředí“ a/nebo v nastavení operačního systému pro Obtainium vypnete optimalizaci baterie.",
"fileDeletionError": "Soubor se nepodařilo odstranit (zkuste jej odstranit ručně a akci opakujte): „{}“",
"foregroundService": "Služba Obtainium na popředí",
"foregroundServiceExplanation": "Použít službu v popředí pro kontrolu aktualizací (spolehlivější, spotřebovává více energie)",
"fgServiceNotice": "Toto oznámení je nutné pro kontrolu aktualizací na pozadí (lze jej skrýt v nastavení systému)",
"excludeSecrets": "Vyloučit tajemství",
"batteryOptimizationNote": "Všimněte si, že stahování na pozadí může fungovat spolehlivěji, pokud vypnete optimalizaci baterie operačního systému pro Obtainium.",
"fileDeletionError": "Soubor se nepodařilo odstranit (zkuste jej odstranit ručně a pak to zkuste znovu): \"{}\"",
"removeAppQuestion": {
"one": "Odstranit aplikaci?",
"other": "Odstranit aplikace?"
"one": "Odstranit Apku?",
"other": "Odstranit Apky?"
},
"tooManyRequestsTryAgainInMinutes": {
"one": "Příliš mnoho požadavků (limit požadavků) - zkuste to znovu za {} minutu",
"few": "Příliš mnoho požadavků (limit požadavků) - zkuste to znovu za {} minuty",
"other": "Příliš mnoho požadavků (limit požadavků) - zkuste to znovu za {} minut"
"one": "Příliš mnoho požadavků (omezená rychlost) - zkuste to znovu za {} minutu",
"other": "Příliš mnoho požadavků (omezená rychlost) - zkuste to znovu za {} minut"
},
"bgUpdateGotErrorRetryInMinutes": {
"one": "Při kontrole aktualizací na pozadí byla zjištěna {}, opakování bude naplánováno za {} minutu",
"few": "Při kontrole aktualizací na pozadí byla zjištěna {}, opakování bude naplánováno za {} minuty",
"other": "Při kontrole aktualizací na pozadí byla zjištěna {}, opakování bude naplánováno za {} minut"
"one": "Při kontrole aktualizace na pozadí byla zjištěna chyba {}, opakování bude naplánováno za {} minut",
"other": "Při kontrole aktualizací na pozadí byla zjištěna chyba {}, opakování bude naplánováno za {} minut"
},
"bgCheckFoundUpdatesWillNotifyIfNeeded": {
"one": "Při kontrole aktualizací na pozadí nalezena {} aktualizace v případě potřeby bude upozorněn uživatel",
"few": "Při kontrole aktualizací na pozadí nalezeny {} aktualizace v případě potřeby bude upozorněn uživatel",
"other": "Při kontrole aktualizací na pozadí nalezeno {} aktualizací v případě potřeby bude upozorněn uživatel"
"one": "Při kontrole aktualizací na pozadí nalezena {}aktualizace - v případě potřeby upozorní uživatele",
"other": "Kontrola aktualizací na pozadí nalezla {} aktualizací - v případě potřeby upozorní uživatele"
},
"apps": {
"one": "{} aplikace",
"few": "{} aplikace",
"other": "{} aplikací"
"one": "{} Apka",
"other": "{} Apky"
},
"url": {
"one": "{} adresa",
"few": "{} adresy",
"other": "{} adres"
"one": "{} Adresa",
"other": "{} Adres"
},
"minute": {
"one": "{} minuta",
"few": "{} minuty",
"other": "{} minut"
"one": "{} Minuta",
"other": "{} Minut"
},
"hour": {
"one": "{} hodina",
"few": "{} hodiny",
"other": "{} hodin"
"one": "{} Hodina",
"other": "{} Hodin"
},
"day": {
"one": "{} den",
"few": "{} dny",
"other": "{} dní"
"one": "{} Den",
"other": "{} Dnů"
},
"clearedNLogsBeforeXAfterY": {
"one": "Vymazán {n} záznam (před = {before}, po = {after})",
"few": "Vymazány {n} záznamy (před = {before}, po = {after})",
"other": "Vymazáno {n} záznamů (před = {before}, po = {after})"
"one": "{n} Záznam vymazán (před = {before}, po = {after})",
"other": "{n} Záznamů vymazáno (před = {before}, po = {after})"
},
"xAndNMoreUpdatesAvailable": {
"one": "{} a 1 další aplikace mají aktualizace.",
"few": "{} a {} další aplikace mají aktualizace.",
"other": "{} a {} dalších aplikací má aktualizace."
"other": "{} a {} další aplikace mají aktualizace."
},
"xAndNMoreUpdatesInstalled": {
"one": "{} a 1 další aplikace byly aktualizovány.",
"few": "{} a {} další aplikace byly aktualizovány.",
"other": "{} a {} dalších aplikací bylo aktualizováno."
"one": "{} a 1 další aplikace mají aktualizace.",
"other": "{} a {} další aplikace byly aktualizovány."
},
"xAndNMoreUpdatesFailed": {
"one": "Nepodařilo se aktualizovat {} a 1 další aplikaci.",
"few": "Nepodařilo se aktualizovat {} a {} další aplikace.",
"other": "Nepodařilo se aktualizovat {} a {} dalších aplikací."
"other": "Nepodařilo se aktualizovat {} a {} další aplikace."
},
"xAndNMoreUpdatesPossiblyInstalled": {
"one": "{} a 1 další aplikace možná byly aktualizovány.",
"few": "{} a {} další aplikace možná byly aktualizovány.",
"other": "{} a {} dalších aplikací možná bylo aktualizováno."
"one": "{} a 1 další aplikace možno aktualizovat",
"other": "{} a {} další aplikace mohou být aktualizovány."
},
"apk": {
"one": "{} APK",

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Versionskorrektion deaktiveret (plugin ser ikke ud til at virke)",
"unknown": "Ukendt",
"none": "Ingen",
"all": "Alle",
"never": "Aldrig",
"latestVersionX": "Seneste: {}",
"installedVersionX": "Installeret: {}",
@@ -331,10 +330,6 @@
"documentationLinksNote": "Obtainiums GitHub-side, som der linkes til nedenfor, indeholder links til videoer, artikler, diskussioner og andre ressourcer, som kan hjælpe dig med at forstå, hvordan du bruger appen.",
"batteryOptimizationNote": "Bemærk, at baggrundsdownloads kan fungere mere pålideligt, hvis du deaktiverer OS-batterioptimering for Obtainium.",
"fileDeletionError": "Kunne ikke slette filen (prøv at slette den manuelt og prøv igen): \"{}\"",
"foregroundService": "Obtainium forgrundstjeneste",
"foregroundServiceExplanation": "Brug en forgrundstjeneste til opdateringskontrol (mere pålidelig, bruger mere strøm)",
"fgServiceNotice": "Denne meddelelse er nødvendig for baggrundsopdateringskontrol (den kan skjules i OS-indstillingerne).",
"excludeSecrets": "Udeluk hemmeligheder",
"removeAppQuestion": {
"one": "Fjern app?",
"other": "Fjern apps?"
@@ -360,16 +355,16 @@
"other": "{} URL'er"
},
"minute": {
"one": "{} minut",
"other": "{} minutter"
"one": "{} Minut",
"other": "{} Minutter"
},
"hour": {
"one": "{} time",
"other": "{} timer"
"one": "{} Time",
"other": "{} Timer"
},
"day": {
"one": "{} dag",
"other": "{} dage"
"one": "{} Dag",
"other": "{} Dage"
},
"clearedNLogsBeforeXAfterY": {
"one": "Ryddet {n} log (før = {before}, efter = {after})",

View File

@@ -19,7 +19,7 @@
"noDescription": "Keine Beschreibung",
"cancel": "Abbrechen",
"continue": "Weiter",
"requiredInBrackets": "(notwendig)",
"requiredInBrackets": "(wird benötigt)",
"dropdownNoOptsError": "FEHLER: DROPDOWN MUSS MINDESTENS EINE OPTION HABEN",
"colour": "Farbe",
"standard": "Standard",
@@ -32,7 +32,7 @@
"source": "Quelle",
"app": "App",
"appsFromSourceAreTrackOnly": "Apps aus dieser Quelle sind nur zur Nachverfolgung.",
"youPickedTrackOnly": "Sie haben die Option „Nur nachverfolgen“ gewählt.",
"youPickedTrackOnly": "Du hast die Option „Nur nachverfolgen“ gewählt.",
"trackOnlyAppDescription": "Die App wird auf neue verfügbare Versionen überwacht, aber Obtainium wird sie nicht herunterladen oder installieren.",
"cancelled": "Abgebrochen",
"appAlreadyAdded": "App bereits hinzugefügt",
@@ -46,7 +46,7 @@
"additionalOptsFor": "Zusatzoptionen für {}",
"supportedSources": "Unterstützte Quellen",
"trackOnlyInBrackets": "(Nur nachverfolgen)",
"searchableInBrackets": "(durchsuchbar)",
"searchableInBrackets": "(Durchsuchbar)",
"appsString": "Apps",
"noApps": "Keine Apps",
"noAppsForFilter": "Keine Apps für ausgewählten Filter",
@@ -98,26 +98,26 @@
"importFromURLList": "Aus URL-Liste importieren",
"searchQuery": "Suchanfrage",
"appURLList": "App-URL-Liste",
"line": "Zeile",
"line": "Linie",
"searchX": "{} suchen",
"noResults": "Keine Ergebnisse gefunden",
"importX": "{} importieren",
"importedAppsIdDisclaimer": "Importierte Apps werden manchmal fälschlicherweise als „Nicht installiert“ angezeigt. Um dies zu beheben, installieren Sie sie erneut über Obtainium. Dies hat keine Auswirkungen auf App-Daten. Es betrifft nur URL- und Drittanbieter-Importmethoden.",
"importedAppsIdDisclaimer": "Importierte Apps werden manchmal fälschlicherweise als „Nicht installiert“ angezeigt. Um dies zu beheben, installiere sie erneut über Obtainium. Dies hat keine Auswirkungen auf App-Daten. Es betrifft nur URL- und Drittanbieter-Importmethoden.",
"importErrors": "Importfehler",
"importedXOfYApps": "{} von {} Apps importiert.",
"followingURLsHadErrors": "Bei folgenden URLs traten Fehler auf:",
"selectURL": "URL auswählen",
"selectURLs": "URLs auswählen",
"pick": "Auswählen",
"theme": "Erscheinungsbild",
"theme": "Design",
"dark": "Dunkel",
"light": "Hell",
"followSystem": "Systemstandard",
"followSystemThemeExplanation": "Das Abrufen des Systemdesigns ist unter Android < 10 nur mit Hilfe von Drittanbieterapps möglich",
"useBlackTheme": "Rein schwarzen Hintergrund verwenden",
"appSortBy": "App sortieren nach",
"authorName": "Herausgebende/Name",
"nameAuthor": "Name/Herausgebende",
"authorName": "Hrsg./Name",
"nameAuthor": "Name/Hrsg.",
"asAdded": "Wie hinzugefügt",
"appSortOrder": "App sortieren nach",
"ascending": "Aufsteigend",
@@ -138,12 +138,12 @@
"obtainiumExportHyphenatedLowercase": "Obtainium-Export",
"pickAnAPK": "APK auswählen",
"appHasMoreThanOnePackage": "{} verfügt über mehr als ein Paket:",
"deviceSupportsXArch": "Ihr Gerät unterstützt die CPU-Architektur {}.",
"deviceSupportsFollowingArchs": "Ihr Gerät unterstützt die folgenden CPU-Architekturen:",
"deviceSupportsXArch": "Dein Gerät unterstützt die CPU-Architektur {}.",
"deviceSupportsFollowingArchs": "Dein Gerät unterstützt die folgenden CPU-Architekturen:",
"warning": "Warnung",
"sourceIsXButPackageFromYPrompt": "Die App-Quelle ist '{}', aber das Release-Paket stammt von '{}'. Fortfahren?",
"updatesAvailable": "Aktualisierungen verfügbar",
"updatesAvailableNotifDescription": "Benachrichtigt, wenn Aktualisierungen für eine oder mehrere von Obtainium überwachte Apps verfügbar sind",
"updatesAvailableNotifDescription": "Benachrichtigt, wenn Aktualisierungen für eine oder mehrere von Obtainium verfolgte Apps verfügbar sind",
"noNewUpdates": "Keine neuen Aktualisierungen.",
"xHasAnUpdate": "{} hat eine Aktualisierung.",
"appsUpdated": "App wurde aktualisiert",
@@ -161,13 +161,12 @@
"completeAppInstallationNotifDescription": "Aufforderung zu Obtainium zurückzukehren, um die Installation einer App abzuschließen",
"checkingForUpdates": "Nach Aktualisierungen suchen",
"checkingForUpdatesNotifDescription": "Vorübergehende Benachrichtigung, die bei der Suche nach Aktualisierungen angezeigt wird",
"pleaseAllowInstallPerm": "Bitte erlauben Sie Obtainium die Installation von Apps",
"pleaseAllowInstallPerm": "Bitte erlaube Obtainium die Installation von Apps",
"trackOnly": "Nur nachverfolgen",
"errorWithHttpStatusCode": "Fehler {}",
"versionCorrectionDisabled": "Versionskorrektur deaktiviert (Plugin scheint nicht zu funktionieren)",
"unknown": "Unbekannt",
"none": "Keine",
"all": "Alle",
"never": "Nie",
"latestVersionX": "Neueste Version: {}",
"installedVersionX": "Installierte Version: {}",
@@ -190,8 +189,8 @@
"downloadingX": "{} wird heruntergeladen",
"downloadX": "{} herunterladen",
"downloadedX": "{} heruntergeladen",
"releaseAsset": "Release-Anhang",
"downloadNotifDescription": "Fortschrittsanzeige beim Herunterladen einer App",
"releaseAsset": "Release-Asset",
"downloadNotifDescription": "Zeigt den Fortschritt beim Herunterladen einer App",
"noAPKFound": "Keine APK gefunden",
"noVersionDetection": "Keine Versionserkennung",
"categorize": "Kategorisieren",
@@ -222,18 +221,18 @@
"standardVersionDetection": "Standardversionserkennung",
"groupByCategory": "Nach Kategorie gruppieren",
"autoApkFilterByArch": "Nach Möglichkeit versuchen, APKs nach CPU-Architektur zu filtern",
"autoLinkFilterByArch": "Nach Möglichkeit versuchen, APKs nach CPU-Architektur zu filtern",
"autoLinkFilterByArch": "Versuchen Sie, Links nach CPU-Architektur zu filtern, wenn möglich",
"overrideSource": "Quelle überschreiben",
"dontShowAgain": "Nicht noch einmal anzeigen",
"dontShowTrackOnlyWarnings": "Warnung für Nur nachverfolgen nicht anzeigen",
"dontShowTrackOnlyWarnings": "Warnung für Nur nachverfolgen nicht anzeigen",
"dontShowAPKOriginWarnings": "Warnung für APK-Herkunft nicht anzeigen",
"moveNonInstalledAppsToBottom": "Nicht installierte Apps ans Ende der App-Ansicht verschieben",
"gitlabPATLabel": "Persönlicher Zugangstoken für GitLab",
"about": "Weitere Informationen",
"about": "Über",
"requiresCredentialsInSettings": "{}: Benötigt zusätzliche Anmeldedaten (in den Einstellungen)",
"checkOnStart": "Einmalig beim Start auf Aktualisierungen prüfen",
"checkOnStart": "Einmalig beim Start überprüfen",
"tryInferAppIdFromCode": "Versuchen, die App-ID aus dem Quellcode zu ermitteln",
"removeOnExternalUninstall": "Extern deinstallierte Apps automatisch entfernen",
"removeOnExternalUninstall": "Extern deinstallierte Apps automatische entfernen",
"pickHighestVersionCode": "Automatische Auswahl des APK mit höchstem Versionscode",
"checkUpdateOnDetailPage": "Nach Aktualisierungen suchen, wenn eine App-Detailseite geöffnet wird",
"disablePageTransitions": "Animationen für Seitenübergänge deaktivieren",
@@ -247,7 +246,7 @@
"customLinkFilterRegex": "Benutzerdefinierter APK-Linkfilter durch regulären Ausdruck (Standard '.apk$')",
"appsPossiblyUpdated": "App-Aktualisierungen wurden versucht",
"appsPossiblyUpdatedNotifDescription": "Benachrichtigt, dass möglicherweise eine oder mehrere Apps im Hintergrund aktualisiert wurden",
"xWasPossiblyUpdatedToY": "{} wurde möglicherweise auf Version {} aktualisiert.",
"xWasPossiblyUpdatedToY": "{} wurde eventuell auf Version {} aktualisiert.",
"enableBackgroundUpdates": "Hintergrundaktualisierungen aktivieren",
"backgroundUpdateReqsExplanation": "Die Hintergrundaktualisierung ist unter Umständen nicht für alle Apps möglich.",
"backgroundUpdateLimitsExplanation": "Der Erfolg einer Hintergrundinstallation kann nur festgestellt werden, wenn Obtainium geöffnet wird.",
@@ -288,19 +287,19 @@
"downloadingXNotifChannel": "{} herunterladen",
"completeAppInstallationNotifChannel": "App-Installation abschließen",
"checkingForUpdatesNotifChannel": "Nach Aktualisierungen suchen",
"onlyCheckInstalledOrTrackOnlyApps": "Nur mit „Nur nachverfolgen“ markierte und installierte Apps auf Aktualisierungen prüfen",
"onlyCheckInstalledOrTrackOnlyApps": "Nur installierte und mit „Nur nachverfolgen“ markierte Apps auf Aktualisierungen prüfen",
"supportFixedAPKURL": "Unterstützung von festen APK-URLs",
"selectX": "{} wählen",
"parallelDownloads": "Parallele Downloads erlauben",
"useShizuku": "Shizuku oder Sui zur Installation verwenden",
"shizukuBinderNotFound": "Kompatibler Shizuku-Dienst wurde nicht gefunden",
"shizukuOld": "Veraltete Shizuku-Version (< 11) bitte aktualisieren Sie sie",
"shizukuOldAndroidWithADB": "Shizuku läuft auf Android < 8.1 mit ADB aktualisieren Sie die Android-Version oder verwenden Sie stattdessen Sui",
"shizukuOld": "Veraltete Shizuku-Version (< 11) - bitte aktualisiere sie",
"shizukuOldAndroidWithADB": "Shizuku läuft auf Android < 8.1 mit ADB - aktualisiere die Android-Version oder verwende stattdessen Sui",
"shizukuPretendToBeGooglePlay": "(Mittels Shizuku) Google Play als Installationsquelle registrieren",
"useSystemFont": "Systemschriftart verwenden",
"useVersionCodeAsOSVersion": "Versionscode (versionCode) als vom Betriebssystem erkannte Version verwenden",
"useVersionCodeAsOSVersion": "Versionscode (versionCode) als erkannte Version vom Betriebssystem verwenden",
"requestHeader": "Kopfzeile („Header“) anfordern",
"useLatestAssetDateAsReleaseDate": "Letzten Upload eines Release-Anhangs als Veröffentlichungsdatum verwenden",
"useLatestAssetDateAsReleaseDate": "Letzten Asset-Upload als Veröffentlichungsdatum verwenden",
"defaultPseudoVersioningMethod": "Standardmäßiges Verfahren zur Pseudo-Versionierung",
"partialAPKHash": "Partieller APK-Hash",
"APKLinkHash": "APK-Link-Hash",
@@ -315,15 +314,15 @@
"beforeNewInstallsShareToAppVerifier": "Neue Apps mit AppVerifier teilen (falls verfügbar)",
"appVerifierInstructionToast": "Teile die Daten mit AppVerifier und kehre im Anschluss hierher zurück.",
"wiki": "Hilfe/Wiki",
"crowdsourcedConfigsLabel": "Komplexe Appkonfigurationen (Verwendung auf eigene Gefahr)",
"crowdsourcedConfigsShort": "Komplexe Appkonfigurationen",
"crowdsourcedConfigsLabel": "Crowdsourced App-Konfigurationen (Verwendung auf eigene Gefahr)",
"crowdsourcedConfigsShort": "Crowdsourced App-Konfigurationen",
"allowInsecure": "Unsichere HTTP-Anfragen zulassen",
"stayOneVersionBehind": "Eine Version hinter der neuesten Version bleiben",
"useFirstApkOfVersion": "Automatische Auswahl der ersten von mehreren APKs",
"refreshBeforeDownload": "App-Details vor dem Download aktualisieren",
"tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"vivoAppStore": "vivo App Store (China)",
"vivoAppStore": "vivo App Store (CN)",
"name": "Name",
"smartname": "Name (Smart)",
"sortMethod": "Sortierverfahren",
@@ -331,17 +330,13 @@
"documentationLinksNote": "Die unten verlinkte GitHub-Seite von Obtainium enthält Links zu Videos, Artikeln, Diskussionen und anderen Ressourcen, die Ihnen helfen werden, die Verwendung der App zu verstehen.",
"batteryOptimizationNote": "Beachten Sie, dass Downloads im Hintergrund möglicherweise zuverlässiger funktionieren, wenn Sie die Batterieoptimierung des Betriebssystems für Obtainium deaktivieren.",
"fileDeletionError": "Die Datei konnte nicht gelöscht werden (versuchen Sie, sie manuell zu löschen und versuchen Sie es dann erneut): \"{}\"",
"foregroundService": "Obtainium-Vordergrunddienst",
"foregroundServiceExplanation": "Aktualisierungsprüfung im Vordergrund durchführen (zuverlässiger, verbraucht mehr Strom)",
"fgServiceNotice": "Diese Benachrichtigung ist für die Prüfung von Updates im Hintergrund erforderlich (sie kann in den Betriebssystemeinstellungen ausgeblendet werden)",
"excludeSecrets": "Geheimnisse ausschließen",
"removeAppQuestion": {
"one": "App entfernen?",
"other": "Apps entfernen?"
},
"tooManyRequestsTryAgainInMinutes": {
"one": "Zu viele Anfragen (Rate begrenzt) versuchen Sie es in {} Minute erneut",
"other": "Zu viele Anfragen (Rate begrenzt) versuchen Sie es in {} Minuten erneut"
"one": "Zu viele Anfragen (Rate begrenzt) versuche es in {} Minute erneut",
"other": "Zu viele Anfragen (Rate begrenzt) versuche es in {} Minuten erneut"
},
"bgUpdateGotErrorRetryInMinutes": {
"one": "Bei der Aktualisierungsprüfung im Hintergrund wurde ein {} festgestellt, eine erneute Prüfung wird in {} Minute geplant",

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Versiokorekto malaktivigita (ŝajnas, ke la kromaĵo ne funkcias)",
"unknown": "Nekonata",
"none": "Nenio",
"all": "All",
"never": "Neniam",
"latestVersionX": "Lasta versio: {}",
"installedVersionX": "Instalita versio: {}",
@@ -328,13 +327,9 @@
"smartname": "Name (Smart)",
"sortMethod": "Sort Method",
"welcome": "Welcome",
"documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions, and other resources that will help you understand how to use the app.",
"documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions and other resources that will help you understand how to use the app.",
"batteryOptimizationNote": "Note that background downloads may work more reliably if you disable OS battery optimizations for Obtainium.",
"fileDeletionError": "Failed to delete file (try deleting it manually then try again): \"{}\"",
"foregroundService": "Obtainium foreground service",
"foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
"fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
"excludeSecrets": "Exclude secrets",
"removeAppQuestion": {
"one": "Forigi la aplikaĵon?",
"other": "Forigi la aplikaĵojn?"
@@ -360,16 +355,16 @@
"other": "{} URLj"
},
"minute": {
"one": "{} minuto",
"other": "{} minutoj"
"one": "{} Minuto",
"other": "{} Minutoj"
},
"hour": {
"one": "{} horo",
"other": "{} horoj"
"one": "{} Horo",
"other": "{} Horoj"
},
"day": {
"one": "{} tago",
"other": "{} tagoj"
"one": "{} Tago",
"other": "{} Tagoj"
},
"clearedNLogsBeforeXAfterY": {
"one": "Purigis {n} protokolon (antaŭe = {before}, malantaŭe = {after})",

View File

@@ -25,7 +25,7 @@
"standard": "Standard",
"custom": "Custom",
"useMaterialYou": "Use Material You",
"githubStarredRepos": "GitHub starred repositories",
"githubStarredRepos": "GitHub starred repos",
"uname": "Username",
"wrongArgNum": "Wrong number of arguments provided",
"xIsTrackOnly": "{} is track-only",
@@ -37,7 +37,7 @@
"cancelled": "Cancelled",
"appAlreadyAdded": "App already added",
"alreadyUpToDateQuestion": "App already up to date?",
"addApp": "Add app",
"addApp": "Add App",
"appSourceURL": "App source URL",
"error": "Error",
"add": "Add",
@@ -88,7 +88,7 @@
"author": "Author",
"upToDateApps": "Up to date apps",
"nonInstalledApps": "Non-installed apps",
"importExport": "Import/export",
"importExport": "Import/Export",
"settings": "Settings",
"exportedTo": "Exported to {}",
"obtainiumExport": "Obtainium export",
@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Version correction disabled (plugin doesn't seem to work)",
"unknown": "Unknown",
"none": "None",
"all": "All",
"never": "Never",
"latestVersionX": "Latest: {}",
"installedVersionX": "Installed: {}",
@@ -314,7 +313,7 @@
"badDownload": "The APK could not be parsed (incompatible or partial download)",
"beforeNewInstallsShareToAppVerifier": "Share new apps with AppVerifier (if available)",
"appVerifierInstructionToast": "Share to AppVerifier, then return here when ready.",
"wiki": "Help/wiki",
"wiki": "Help/Wiki",
"crowdsourcedConfigsLabel": "Crowdsourced app configurations (use at your own risk)",
"crowdsourcedConfigsShort": "Crowdsourced app configurations",
"allowInsecure": "Allow insecure HTTP requests",
@@ -328,13 +327,11 @@
"smartname": "Name (smart)",
"sortMethod": "Sort method",
"welcome": "Welcome",
"documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions, and other resources that will help you understand how to use the app.",
"batteryOptimizationNote": "Note that background downloads may work more reliably if you switch to the \"foreground service\" in the Obtainium settings and/or disable battery optimization for Obtainium in your OS settings.",
"documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions and other resources that will help you understand how to use the app.",
"batteryOptimizationNote": "Note that background downloads may work more reliably if you disable OS battery optimizations for Obtainium.",
"fileDeletionError": "Failed to delete file (try deleting it manually then try again): \"{}\"",
"foregroundService": "Obtainium foreground service",
"foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
"fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
"excludeSecrets": "Exclude secrets",
"removeAppQuestion": {
"one": "Remove app?",
"other": "Remove apps?"
@@ -360,16 +357,16 @@
"other": "{} URLs"
},
"minute": {
"one": "{} minute",
"other": "{} minutes"
"one": "{} Minute",
"other": "{} Minutes"
},
"hour": {
"one": "{} hour",
"other": "{} hours"
"one": "{} Hour",
"other": "{} Hours"
},
"day": {
"one": "{} day",
"other": "{} days"
"one": "{} Day",
"other": "{} Days"
},
"clearedNLogsBeforeXAfterY": {
"one": "Cleared {n} log (before = {before}, after = {after})",

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Corrección de versiones desactivada (el plugin parece no funcionar)",
"unknown": "Desconocido",
"none": "Ninguno",
"all": "Todos",
"never": "Nunca",
"latestVersionX": "Última versión: {}",
"installedVersionX": "Versión instalada: {}",
@@ -331,10 +330,6 @@
"documentationLinksNote": "La página GitHub de Obtainium enlazada a continuación contiene enlaces a vídeos, artículos, debates y otros recursos que te ayudarán a entender cómo utilizar la aplicación.",
"batteryOptimizationNote": "Ten en cuenta que las descargas en segundo plano pueden funcionar de forma más fiable si desactivas las optimizaciones de batería del sistema operativo para Obtainium.",
"fileDeletionError": "No se ha podido eliminar el archivo (intente eliminarlo manualmente y vuelva a intentarlo): \"{}\"",
"foregroundService": "Obtainium servicio en primer plano",
"foregroundServiceExplanation": "Utilizar un servicio en primer plano para comprobar las actualizaciones (más fiable, consume más energía).",
"fgServiceNotice": "Esta notificación es necesaria para la comprobación de actualizaciones en segundo plano (puede ocultarse en la configuración del sistema operativo).",
"excludeSecrets": "Excluir secretos",
"removeAppQuestion": {
"one": "¿Eliminar aplicación?",
"other": "¿Eliminar aplicaciones?"

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "تصحیح نسخه غیرفعال شد (به نظر می رسد افزونه کار نمی کند)",
"unknown": "ناشناخته",
"none": "هیچ",
"all": "All",
"never": "هرگز",
"latestVersionX": "آخرین نسخه: {}",
"installedVersionX": "نسخه نصب شده: {}",
@@ -328,13 +327,9 @@
"smartname": "Name (Smart)",
"sortMethod": "Sort Method",
"welcome": "Welcome",
"documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions, and other resources that will help you understand how to use the app.",
"documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions and other resources that will help you understand how to use the app.",
"batteryOptimizationNote": "Note that background downloads may work more reliably if you disable OS battery optimizations for Obtainium.",
"fileDeletionError": "Failed to delete file (try deleting it manually then try again): \"{}\"",
"foregroundService": "Obtainium foreground service",
"foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
"fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
"excludeSecrets": "Exclude secrets",
"removeAppQuestion": {
"one": "برنامه حذف شود؟",
"other": "برنامه ها حذف شوند؟"

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Correction de version désactivée (le plugin ne semble pas fonctionner)",
"unknown": "Inconnu",
"none": "Aucun",
"all": "Tous",
"never": "Jamais",
"latestVersionX": "Dernière version : {}",
"installedVersionX": "Version installée : {}",
@@ -331,10 +330,6 @@
"documentationLinksNote": "La page GitHub d'Obtainium, dont le lien figure ci-dessous, contient des liens vers des vidéos, des articles, des discussions et d'autres ressources qui vous aideront à comprendre comment utiliser l'application.",
"batteryOptimizationNote": "Notez que les téléchargements en arrière-plan peuvent fonctionner de manière plus fiable si vous désactivez les optimisations de la batterie du système d'exploitation pour Obtainium.",
"fileDeletionError": "Échec de la suppression du fichier (essayez de le supprimer manuellement puis réessayez) : \"{}\"",
"foregroundService": "Service d'avant-plan Obtainium",
"foregroundServiceExplanation": "Utiliser un service de premier plan pour la vérification des mises à jour (plus fiable, consomme plus d'énergie)",
"fgServiceNotice": "Cette notification est nécessaire pour la vérification des mises à jour en arrière-plan (elle peut être masquée dans les paramètres du système d'exploitation).",
"excludeSecrets": "Exclure les secrets",
"removeAppQuestion": {
"one": "Supprimer l'application ?",
"other": "Supprimer les applications ?"
@@ -360,16 +355,16 @@
"other": "{} URLs"
},
"minute": {
"one": "{} minute",
"other": "{} minutes"
"one": "{} Minute",
"other": "{} Minutes"
},
"hour": {
"one": "{} heure",
"other": "{} heures"
"one": "{} Heure",
"other": "{} Heures"
},
"day": {
"one": "{} jour",
"other": "{} jours"
"one": "{} Jour",
"other": "{} Jours"
},
"clearedNLogsBeforeXAfterY": {
"one": "Nettoyage du journal {n} (avant = {before}, après = {after})",

View File

@@ -20,19 +20,19 @@
"cancel": "Mégse",
"continue": "Folytatás",
"requiredInBrackets": "(Szükséges)",
"dropdownNoOptsError": "HIBA: A LEGÖRDÜLŐ LISTÁNAK LEGALÁBB EGY KIVÁLASZTHATÓ BEÁLLÍTÁSSAL KELL RENDELKEZNIE",
"dropdownNoOptsError": "HIBA: A LEGÖRDÜLŐ LISTÁNAK LEGALÁBB EGY OPCIÓVAL KELL RENDELKEZNIE",
"colour": "Szín",
"standard": "Általános",
"custom": "Egyéni",
"useMaterialYou": "Material You használata",
"githubStarredRepos": "Csillagozott GitHub-tárolók",
"githubStarredRepos": "Csillagozott GitHub tárolók",
"uname": "Felhasználónév",
"wrongArgNum": "A megadott argumentumok száma nem megfelelő",
"xIsTrackOnly": "A(z) {} csak nyomon követhető",
"source": "Forrás",
"app": "Alkalmazás",
"appsFromSourceAreTrackOnly": "Az ebből a forrásból származó alkalmazások „csak nyomon követhetők”.",
"youPickedTrackOnly": "„Csak nyomon követés” beállítást választotta.",
"youPickedTrackOnly": "„Csak nyomon követés” opciót választotta.",
"trackOnlyAppDescription": "Az alkalmazás frissítéseit nyomon követi, de az Obtainium nem tudja letölteni vagy telepíteni.",
"cancelled": "Visszavonva",
"appAlreadyAdded": "Az alkalmazás már hozzá van adva",
@@ -114,7 +114,7 @@
"light": "Világos",
"followSystem": "Rendszerbeállítás használata",
"followSystemThemeExplanation": "A következő rendszer téma csak harmadik féltől származó alkalmazások használatával lehetséges",
"useBlackTheme": "Teljesen fekete sötét téma használata",
"useBlackTheme": "Használjon teljesen fekete sötét témát",
"appSortBy": "Rendezési szempont",
"authorName": "Szerző/Név",
"nameAuthor": "Név/Szerző",
@@ -136,12 +136,12 @@
"share": "Megosztás",
"appNotFound": "Az alkalmazás nem található",
"obtainiumExportHyphenatedLowercase": "obtainium-adat",
"pickAnAPK": "Válasszon ki egy APK-t",
"pickAnAPK": "Válasszon egy APK-t",
"appHasMoreThanOnePackage": "A(z) {} egynél több csomaggal rendelkezik:",
"deviceSupportsXArch": "Ez az eszköz támogatja a(z) {} CPU-architektúrát.",
"deviceSupportsFollowingArchs": "Ez az eszköz a következő CPU-architektúrákat támogatja:",
"deviceSupportsXArch": "Ez az eszköz támogatja a(z) {} CPU architektúrát.",
"deviceSupportsFollowingArchs": "Ez az eszköz a következő CPU architektúrákat támogatja:",
"warning": "Figyelem",
"sourceIsXButPackageFromYPrompt": "Az alkalmazás forrása a(z) „{}-tároló, de a kiadási csomag innen származik: „{}”. Folytatja?",
"sourceIsXButPackageFromYPrompt": "Az alkalmazás forrása a(z) „{}tároló, de a kiadási csomag innen származik: „{}”. Folytatja?",
"updatesAvailable": "Frissítések érhetők el",
"updatesAvailableNotifDescription": "Értesíti a felhasználót, hogy egy vagy több, az Obtainium által nyomon követett alkalmazáshoz frissítések állnak rendelkezésre",
"noNewUpdates": "Nincsenek új frissítések.",
@@ -164,10 +164,9 @@
"pleaseAllowInstallPerm": "Engedélyezze az Obtainiumnak az alkalmazások telepítését",
"trackOnly": "Csak nyomon követés",
"errorWithHttpStatusCode": "Hiba {}",
"versionCorrectionDisabled": "Verziókorrekció letiltva (úgy tűnik, hogy a bővítmény nem működik)",
"versionCorrectionDisabled": "Verzió-korrekció letiltva (úgy tűnik, hogy a bővítmény nem működik)",
"unknown": "Ismeretlen",
"none": "Semmi",
"all": "Összes",
"never": "Soha",
"latestVersionX": "Legújabb verzió: {}",
"installedVersionX": "Telepített verzió: {}",
@@ -175,25 +174,25 @@
"remove": "Eltávolítás",
"yesMarkUpdated": "Igen, megjelölés frissítettként",
"fdroid": "F-Droid hivatalos",
"appIdOrName": "Alkalmazás-azonosító vagy név",
"appIdOrName": "Az alkalmazás-azonosító vagy név",
"appId": "Alkalmazás-azonosító",
"appWithIdOrNameNotFound": "Nem található alkalmazás ezzel az azonosítóval vagy névvel",
"reposHaveMultipleApps": "Egyes tárolók több alkalmazást is tartalmazhatnak",
"fdroidThirdPartyRepo": "F-Droid-tároló (harmadik fél)",
"reposHaveMultipleApps": "A tárolók több alkalmazást is tartalmazhatnak",
"fdroidThirdPartyRepo": "F-Droid harmadik féltől származó tároló",
"install": "Telepítés",
"markInstalled": "Telepítettnek jelölés",
"update": "Frissítés",
"markUpdated": "Frissítettnek jelölés",
"additionalOptions": "További beállítások",
"disableVersionDetection": "Verzióérzékelés letiltása",
"noVersionDetectionExplanation": "Ezt a beállítást csak olyan alkalmazásoknál szabad használni, ahol a verzióérzékelés nem működik megfelelően.",
"disableVersionDetection": "Verzió-érzékelés letiltása",
"noVersionDetectionExplanation": "Ezt a beállítást csak olyan alkalmazásoknál szabad használni, ahol a verzió-érzékelés nem működik megfelelően.",
"downloadingX": "{} letöltése",
"downloadX": "{} letöltése",
"downloadedX": "{} letöltve",
"releaseAsset": "Kiadási csomag",
"downloadNotifDescription": "Értesíti a felhasználót az alkalmazás letöltésének előrehaladásáról",
"noAPKFound": "Nem található APK",
"noVersionDetection": "Nincs verzióérzékelés",
"noVersionDetection": "Nincs verzió-érzékelés",
"categorize": "Kategorizálás",
"categories": "Kategóriák",
"category": "Kategória",
@@ -207,34 +206,34 @@
"copiedToClipboard": "Másolva a vágólapra",
"storagePermissionDenied": "Tárhely engedély megtagadva",
"selectedCategorizeWarning": "Ez felváltja a kiválasztott alkalmazások meglévő kategória-beállításait.",
"filterAPKsByRegEx": "APK-k szűrése reguláris kifejezéssel",
"filterAPKsByRegEx": "Az APK-k szűrése reguláris kifejezéssel",
"removeFromObtainium": "Eltávolítás az Obtainiumból",
"uninstallFromDevice": "Eltávolítás az eszközről",
"onlyWorksWithNonVersionDetectApps": "Csak azoknál az alkalmazásoknál működik, amelyeknél a verzióérzékelés le van tiltva.",
"releaseDateAsVersion": "Kiadás dátumának használata verzió-karakterláncként",
"releaseTitleAsVersion": "Kiadás címének használata verzió-karakterláncként",
"releaseDateAsVersionExplanation": "Ezt a beállítást csak olyan alkalmazásoknál szabad használni, ahol a verzióérzékelés nem működik megfelelően, de elérhető a kiadás dátuma.",
"onlyWorksWithNonVersionDetectApps": "Csak azoknál az alkalmazásoknál működik, amelyeknél a verzió-érzékelés le van tiltva.",
"releaseDateAsVersion": "Használja a kiadás dátumát verzió-karakterláncként",
"releaseTitleAsVersion": "Használja a kiadás címét verzió-karakterláncként",
"releaseDateAsVersionExplanation": "Ezt a beállítást csak olyan alkalmazásoknál szabad használni, ahol a verzió-érzékelés nem működik megfelelően, de elérhető a kiadás dátuma.",
"changes": "Változáslista",
"releaseDate": "Kiadás dátuma",
"importFromURLsInFile": "Importálás fájlban található webcímből (például: OPML)",
"importFromURLsInFile": "Importálás fájlban található webcímből (pl. OPML)",
"versionDetectionExplanation": "A verzió-karakterlánc egyeztetése az rendszer által érzékelt verzióval",
"versionDetection": "Verzióérzékelés",
"standardVersionDetection": "Alapértelmezett verzióérzékelés",
"versionDetection": "Verzió-érzékelés",
"standardVersionDetection": "Alapértelmezett verzió-érzékelés",
"groupByCategory": "Csoportosítás kategória alapján",
"autoApkFilterByArch": "APK-k CPU-architektúra szerinti szűrése, ha lehetséges",
"autoLinkFilterByArch": "Hivatkozások CPU-architektúra szerinti szűrése, ha lehetséges",
"autoApkFilterByArch": "Ha lehetséges, próbálja meg az APK-kat CPU-architektúra szerint szűrni",
"autoLinkFilterByArch": "Ha lehetséges, próbálja meg a hivatkozásokat CPU-architektúra szerint szűrni",
"overrideSource": "Forrás felülírása",
"dontShowAgain": "Ne jelenítse meg ezt többé",
"dontShowTrackOnlyWarnings": "„Csak nyomon követés” figyelmeztetés elrejtése",
"dontShowAPKOriginWarnings": "APK eredetére vonatkozó figyelmeztetések elrejtése",
"moveNonInstalledAppsToBottom": "Nem telepített alkalmazások áthelyezése az alkalmazásnézet aljára",
"dontShowTrackOnlyWarnings": "Ne jelenítse meg a „Csak nyomon követés” figyelmeztetést",
"dontShowAPKOriginWarnings": "Ne jelenítse meg az APK eredetére vonatkozó figyelmeztetéseket",
"moveNonInstalledAppsToBottom": "Helyezze át a nem telepített alkalmazásokat az alkalmazásnézet aljára",
"gitlabPATLabel": "GitLab személyes hozzáférési token",
"about": "Névjegy",
"requiresCredentialsInSettings": "A(z) {} alkalmazásnak további hitelesítő adatokra van szüksége (a beállításokban)",
"checkOnStart": "Frissítések ellenőrzése az alkalmazás megnyitásakor",
"tryInferAppIdFromCode": "Alkalmazás azonosítójának kikövetkeztetése a forráskódból, ha lehetséges",
"removeOnExternalUninstall": "Külsőleg eltávolított alkalmazások automatikus eltávolítása",
"pickHighestVersionCode": "Legmagasabb verziókódú APK automatikus kiválasztása",
"tryInferAppIdFromCode": "Próbálja meg kikövetkeztetni az alkalmazás azonosítóját a forráskódból",
"removeOnExternalUninstall": "A külsőleg eltávolított alkalmazások automatikus eltávolítása",
"pickHighestVersionCode": "A legmagasabb verziószámú APK automatikus kiválasztása",
"checkUpdateOnDetailPage": "Frissítések ellenőrzése az alkalmazás részleteit tartalmazó oldal megnyitásakor",
"disablePageTransitions": "Lap áttűnési animációk letiltása",
"reversePageTransitions": "Fordított lap áttűnési animációk",
@@ -259,18 +258,18 @@
"exemptFromBackgroundUpdates": "Mentes a háttérben történő frissítések alól (ha engedélyezett)",
"bgUpdatesOnWiFiOnly": "Háttérfrissítések letiltása, amikor az eszköz nem csatlakozik a Wi-Fi-hez",
"bgUpdatesWhileChargingOnly": "Háttérfrissítések letiltása, amikor az eszköz nincs a töltőn",
"autoSelectHighestVersionCode": "Legmagasabb verziókódú APK automatikus kiválasztása",
"autoSelectHighestVersionCode": "A legmagasabb verziókódú APK automatikus kiválasztása",
"versionExtractionRegEx": "Verzió-karakterlánc kivonatolása reguláris kifejezéssel",
"trimVersionString": "Verzió-karakterlánc levágása reguláris kifejezéssel",
"matchGroupToUseForX": "A(z) „{}” esetén használandó csoport egyeztetése",
"matchGroupToUse": "Verzió-karakterlánc kivonatolásához használandó csoport reguláris kifejezéssel való egyeztetése",
"highlightTouchTargets": "Kevésbé nyilvánvaló érintési pontok kiemelése",
"matchGroupToUse": "A verzió-karakterlánc kivonatolásához használandó csoport reguláris kifejezéssel való egyeztetése",
"highlightTouchTargets": "A kevésbé nyilvánvaló érintési pontok kiemelése",
"pickExportDir": "Válassza ki a könyvtárat, ahová exportálni szeretne",
"autoExportOnChanges": "Automatikus exportálás a változtatások után",
"includeSettings": "Tartalmazza a beállításokat",
"filterVersionsByRegEx": "Verziók szűrése reguláris kifejezéssel",
"trySelectingSuggestedVersionCode": "Próbálja kiválasztani a „Javasolt” verziókódú APK-t",
"dontSortReleasesList": "API-ból származó kiadási sorrend megőrzése",
"dontSortReleasesList": "Az API-ból származó kiadási sorrend megőrzése",
"reverseSort": "Fordított rendezés",
"takeFirstLink": "Vegye az első hivatkozást",
"skipSort": "Rendezés kihagyása",
@@ -279,7 +278,7 @@
"runBgCheckNow": "Frissítések ellenőrzése a háttérben most",
"versionExtractWholePage": "„Verzió-karakterlánc kivonatolása reguláris kifejezéssel” alkalmazása az egész oldalra",
"installing": "Telepítés",
"skipUpdateNotifications": "Frissítési értesítések kihagyása",
"skipUpdateNotifications": "A frissítési értesítések kihagyása",
"updatesAvailableNotifChannel": "Frissítések érhetők el",
"appsUpdatedNotifChannel": "Alkalmazások frissítve",
"appsPossiblyUpdatedNotifChannel": "Megkísérelt alkalmazás-frissítések",
@@ -289,22 +288,22 @@
"completeAppInstallationNotifChannel": "Teljes alkalmazás telepítés",
"checkingForUpdatesNotifChannel": "Frissítések ellenőrzése",
"onlyCheckInstalledOrTrackOnlyApps": "Csak a telepített és a csak nyomon követhető alkalmazások frissítéseinek ellenőrzése",
"supportFixedAPKURL": "Támogatja a rögzített APK-webcímeket",
"supportFixedAPKURL": "Támogatja a rögzített APK webcímeket",
"selectX": "{} kiválasztása",
"parallelDownloads": "Párhuzamos letöltések engedélyezése",
"useShizuku": "Shizuku vagy Sui használata a telepítéshez",
"shizukuBinderNotFound": "A Shizuku szolgáltatás nem fut",
"shizukuOld": "Régi Shizuku verzió (<11) - frissítse",
"shizukuOldAndroidWithADB": "A Shizuku csak Android < 8.1 ADB-vel fut - frissítse az Androidot vagy használja a Suit helyette",
"shizukuPretendToBeGooglePlay": "Google Play beállítása telepítési forrásként (ha Shizukut használ)",
"useSystemFont": "Rendszer betűtípusának használata",
"useVersionCodeAsOSVersion": "Alkalmazás verziókódjának használata a rendszer által érzékelt verzióként",
"shizukuOldAndroidWithADB": "A Shizuku csak Android < 8.1 ADB-vel fut - frissítse az Androidot vagy használja a Sui-t helyette",
"shizukuPretendToBeGooglePlay": "A Google Play beállítása telepítési forrásként (ha Shizukut használ)",
"useSystemFont": "A rendszer betűtípusának használata",
"useVersionCodeAsOSVersion": "Az alkalmazás verziókódjának használata a rendszer által érzékelt verzióként",
"requestHeader": "Kérelemfejléc",
"useLatestAssetDateAsReleaseDate": "Legutóbbi csomagfeltöltés használata a kiadás dátumaként",
"useLatestAssetDateAsReleaseDate": "A kiadás dátumaként használja a legutóbbi csomagfeltöltést",
"defaultPseudoVersioningMethod": "Alapértelmezett pszeudoverziós módszer",
"partialAPKHash": "Részleges APK-hasítóérték",
"APKLinkHash": "APK-hivatkozás-hasítóérték",
"directAPKLink": "Közvetlen APK-hivatkozás",
"partialAPKHash": "Részleges APK hasító értéke",
"APKLinkHash": "APK hivatkozás hasító értéke",
"directAPKLink": "Közvetlen APK hivatkozás",
"pseudoVersionInUse": "Egy pszeudoverzió van használatban",
"installed": "Telepített",
"latest": "Legújabb",
@@ -319,11 +318,11 @@
"crowdsourcedConfigsShort": "Alkalmazáslista",
"allowInsecure": "Nem biztonságos HTTP-kérések engedélyezése",
"stayOneVersionBehind": "Maradjon egy verzióval a legújabb mögött",
"useFirstApkOfVersion": "Legelső APK automatikus kiválasztása, ha több APK is található",
"refreshBeforeDownload": "Alkalmazás adatainak frissítése a letöltés előtt",
"useFirstApkOfVersion": "A legelső APK automatikus kiválasztása, ha több APK is található",
"refreshBeforeDownload": "Az alkalmazás adatainak frissítése a letöltés előtt",
"tencentAppStore": "Tencent Appstore",
"coolApk": "CoolApk",
"vivoAppStore": "Vivo App Store (CN)",
"vivoAppStore": "vivo App Store (CN)",
"name": "Név",
"smartname": "Név (Okos)",
"sortMethod": "Rendezési eljárás",
@@ -331,10 +330,6 @@
"documentationLinksNote": "Az alábbi hivatkozás az Obtainium GitHub oldalára vezet, amely további videók, cikkek, beszélgetések és egyéb források hivatkozásait tartalmazza, amelyek segítenek megérteni az alkalmazás használatát.",
"batteryOptimizationNote": "Megjegyzés: A háttérfrissítések megbízhatóbban működhetnek, ha kikapcsolja a rendszer akkumulátor-optimalizálását az Obtainium számára.",
"fileDeletionError": "Nem sikerült törölni a fájlt (próbálja meg kézzel törölni, majd próbálja meg újra): \"{}\"",
"foregroundService": "Obtainium előtér-szolgáltatás",
"foregroundServiceExplanation": "Előtér-szolgáltatás használata a frissítések ellenőrzéséhez (megbízhatóbb, de több energiát fogyaszt)",
"fgServiceNotice": "Ez az értesítés a háttérben történő frissítésellenőrzéshez szükséges (a rendszer beállításaiban elrejthető).",
"excludeSecrets": "Érzékeny adatok (például: személyes hozzáférési tokenek) kihagyása",
"removeAppQuestion": {
"one": "Eltávolítja az alkalmazást?",
"other": "Eltávolítja az alkalmazásokat?"

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Koreksi versi dinonaktifkan (sepertinya plugin tidak berfungsi)",
"unknown": "Tidak diketahui",
"none": "Tidak ada",
"all": "Semua",
"never": "Tidak pernah",
"latestVersionX": "Terbaru: {}",
"installedVersionX": "Terpasang: {}",
@@ -331,10 +330,6 @@
"documentationLinksNote": "Halaman GitHub Obtainium yang ditautkan di bawah ini berisi tautan ke video, artikel, diskusi, dan sumber daya lain yang akan membantu Anda memahami cara menggunakan aplikasi.",
"batteryOptimizationNote": "Perhatikan bahwa unduhan latar belakang dapat bekerja lebih andal jika Anda menonaktifkan optimasi baterai OS untuk Obtainium.",
"fileDeletionError": "Gagal menghapus file (coba hapus secara manual, lalu coba lagi): \"{}\"",
"foregroundService": "Layanan latar depan Obtainium",
"foregroundServiceExplanation": "Gunakan layanan latar depan untuk pemeriksaan pembaruan (lebih dapat diandalkan, menghabiskan lebih banyak daya)",
"fgServiceNotice": "Pemberitahuan ini diperlukan untuk pemeriksaan pembaruan latar belakang (dapat disembunyikan dalam pengaturan OS)",
"excludeSecrets": "Mengecualikan rahasia",
"removeAppQuestion": {
"one": "Hapus aplikasi?",
"other": "Hapus aplikasi?"

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Correzione della versione disattivata (il plugin sembra non funzionare)",
"unknown": "Sconosciuto",
"none": "Nessuno",
"all": "Tutti",
"never": "Mai",
"latestVersionX": "Ultima versione: {}",
"installedVersionX": "Versione installata: {}",
@@ -331,10 +330,6 @@
"documentationLinksNote": "La pagina GitHub di Obtainium collegata qui sotto contiene collegamenti a video, articoli, discussioni e altre risorse che vi aiuteranno a capire come utilizzare l'applicazione.",
"batteryOptimizationNote": "Si noti che i download in background potrebbero funzionare in modo più affidabile se si disabilita l'ottimizzazione della batteria del sistema operativo per Obtainium.",
"fileDeletionError": "Errore nell'eliminazione del file (provare a cancellarlo manualmente e poi riprovare): \"{}\"",
"foregroundService": "Servizio Obtainium in primo piano",
"foregroundServiceExplanation": "Utilizzare un servizio in primo piano per il controllo degli aggiornamenti (più affidabile, consuma più energia)",
"fgServiceNotice": "Questa notifica è necessaria per il controllo degli aggiornamenti in background (può essere nascosta nelle impostazioni del sistema operativo).",
"excludeSecrets": "Escludere i segreti",
"removeAppQuestion": {
"one": "Rimuovere l'app?",
"other": "Rimuovere le app?"

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "バージョン補正無効 (プラグインが動作していません)",
"unknown": "不明",
"none": "なし",
"all": "すべて",
"never": "しない",
"latestVersionX": "最新のバージョン: {}",
"installedVersionX": "インストールされたバージョン: {}",
@@ -222,7 +221,7 @@
"standardVersionDetection": "標準のバージョン検出",
"groupByCategory": "カテゴリ別にグループ化する",
"autoApkFilterByArch": "可能であれば、CPUアーキテクチャによるAPKのフィルタリングを試みる",
"autoLinkFilterByArch": "可能であれば、CPUアーキテクチャによるリンクのフィルタリングを試みる",
"autoLinkFilterByArch": "可能であれば、CPUアーキテクチャによるリンクのフィルタリングを試みる",
"overrideSource": "ソースの上書き",
"dontShowAgain": "二度と表示しない",
"dontShowTrackOnlyWarnings": "「追跡のみ」の警告を表示しない",
@@ -322,19 +321,15 @@
"useFirstApkOfVersion": "複数のAPKから最初のAPKを自動選択する",
"refreshBeforeDownload": "ダウンロード前にアプリの詳細を更新する",
"tencentAppStore": "Tencent App Store",
"coolApk": "Cool Apk",
"coolApk": "クールApk",
"vivoAppStore": "vivo App Store (CN)",
"name": "アプリ名",
"smartname": "アプリ名(スマート)",
"name": "名",
"smartname": "名(スマート)",
"sortMethod": "ソート方法",
"welcome": "ようこそ",
"documentationLinksNote": "以下のリンクにあるObtainium GitHubページには、ビデオ、記事、ディスカッション、その他のリソースへのリンクがあり、アプリの使い方を理解するのに役立ちます。",
"batteryOptimizationNote": "ObtainiumのOSバッテリー最適化を無効にすると、バックグラウンドダウンロードがより確実に動作するようになります。",
"fileDeletionError": "ファイルの削除に失敗しました(手動で削除してから再試行してください):\"{}\"",
"foregroundService": "Obtainium フォアグラウンドサービス",
"foregroundServiceExplanation": "アップデート確認にフォアグラウンドサービスを使用する(より信頼性が高いが、より電力を消費する)",
"fgServiceNotice": "この通知は、バックグラウンドでアップデートを確認するために必要ですOSの設定で非表示にできます。",
"excludeSecrets": "秘密を除く",
"removeAppQuestion": {
"one": "アプリを削除しますか?",
"other": "アプリを削除しますか?"

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "버전 수정 비활성화됨 (플러그인이 작동하지 않는 것 같습니다)",
"unknown": "알 수 없음",
"none": "없음",
"all": "모두",
"never": "절대",
"latestVersionX": "최신: {}",
"installedVersionX": "설치됨: {}",
@@ -331,10 +330,6 @@
"documentationLinksNote": "아래에 링크된 Obtainium 깃허브 페이지에는 앱 사용 방법을 이해하는 데 도움이 되는 동영상, 기사, 토론 및 기타 리소스에 대한 링크가 포함되어 있습니다.",
"batteryOptimizationNote": "Obtainium의 OS 배터리 최적화를 비활성화하면 백그라운드 다운로드가 더 안정적으로 작동할 수 있습니다.",
"fileDeletionError": "파일을 삭제하지 못했습니다(수동으로 삭제한 후 다시 시도하세요): \"{}\"",
"foregroundService": "오베티움 포그라운드 서비스",
"foregroundServiceExplanation": "업데이트 확인을 위해 포그라운드 서비스 사용(안정성 향상, 전력 소비량 증가)",
"fgServiceNotice": "이 알림은 백그라운드 업데이트 확인에 필요합니다(OS 설정에서 숨길 수 있음).",
"excludeSecrets": "비밀 제외",
"removeAppQuestion": {
"one": "앱을 제거하시겠습니까?",
"other": "앱을 제거하시겠습니까?"

View File

@@ -1,398 +0,0 @@
{
"invalidURLForSource": "ഒരു സാധുവായ {} ആപ്പ് URL അല്ല",
"noReleaseFound": "അനുയോജ്യമായ റിലീസ് കണ്ടെത്താനായില്ല",
"noVersionFound": "റിലീസ് പതിപ്പ് നിർണ്ണയിക്കാനായില്ല",
"urlMatchesNoSource": "URL അറിയപ്പെടുന്ന ഒരു ഉറവിടവുമായും യോജിക്കുന്നില്ല",
"cantInstallOlderVersion": "ആപ്പിന്റെ പഴയ പതിപ്പ് ഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയില്ല.",
"appIdMismatch": "ഡൗൺലോഡ് ചെയ്ത പാക്കേജ് ഐഡി നിലവിലുള്ള ആപ്പ് ഐഡിയുമായി ചേരുന്നില്ല",
"functionNotImplemented": "ഈ ക്ലാസ് ഈ ഫംഗ്ഷൻ നടപ്പിലാക്കിയിട്ടില്ല",
"placeholder": "സ്ഥലസൂചകം",
"someErrors": "ചില പിശകുകൾ സംഭവിച്ചു",
"unexpectedError": "പ്രതീക്ഷിക്കാത്ത പിശക്",
"ok": "ശരി",
"and": "കൂടാതെ",
"githubPATLabel": "GitHub പേഴ്സണൽ ആക്സസ് ടോക്കൺ (നിരക്ക് പരിധി വർദ്ധിപ്പിക്കുന്നു)",
"includePrereleases": "പ്രീ-റിലീസുകൾ ഉൾപ്പെടുത്തുക",
"fallbackToOlderReleases": "പഴയ റിലീസുകളിലേക്ക് മടങ്ങുക",
"filterReleaseTitlesByRegEx": "റിലീസ് ശീർഷകങ്ങൾ റെഗുലർ എക്സ്പ്രഷൻ ഉപയോഗിച്ച് ഫിൽട്ടർ ചെയ്യുക",
"invalidRegEx": "സാധുവായ റെഗുലർ എക്സ്പ്രഷൻ അല്ല",
"noDescription": "വിവരണം ലഭ്യമല്ല",
"cancel": "റദ്ദാക്കുക",
"continue": "തുടരുക",
"requiredInBrackets": "(ആവശ്യമാണ്)",
"dropdownNoOptsError": "തെറ്റ്: ഡ്രോപ്പ്ഡൗണിന് കുറഞ്ഞത് ഒരു ഓപ്ഷനെങ്കിലും ഉണ്ടായിരിക്കണം",
"colour": "നിറം",
"standard": "സാധാരണ",
"custom": "ഇഷ്‌ടാനുസൃതം",
"useMaterialYou": "മെറ്റീരിയൽ യൂ ഉപയോഗിക്കുക",
"githubStarredRepos": "GitHub സ്റ്റാർ ചെയ്ത റെപ്പോസിറ്ററികൾ",
"uname": "ഉപയോക്തൃനാമം",
"wrongArgNum": "തെറ്റായ എണ്ണം ആർഗ്യുമെന്റുകൾ നൽകി",
"xIsTrackOnly": "{} ട്രാക്ക്-മാത്രം ആണ്",
"source": "ഉറവിടം",
"app": "ആപ്പ്",
"appsFromSourceAreTrackOnly": "ഈ ഉറവിടത്തിൽ നിന്നുള്ള ആപ്പുകൾ 'ട്രാക്ക്-മാത്രം' ആണ്.",
"youPickedTrackOnly": "നിങ്ങൾ 'ട്രാക്ക്-മാത്രം' ഓപ്ഷൻ തിരഞ്ഞെടുത്തു.",
"trackOnlyAppDescription": "ആപ്പ് അപ്‌ഡേറ്റുകൾക്കായി ട്രാക്ക് ചെയ്യപ്പെടും, പക്ഷേ ഒബ്‌റ്റേനിയത്തിന് അത് ഡൗൺലോഡ് ചെയ്യാനോ ഇൻസ്റ്റാൾ ചെയ്യാനോ കഴിയില്ല.",
"cancelled": "റദ്ദാക്കി",
"appAlreadyAdded": "ആപ്പ് ഇതിനകം കൂട്ടിച്ചേർത്തിട്ടുണ്ട്",
"alreadyUpToDateQuestion": "ആപ്പ് ഇതിനകം ഏറ്റവും പുതിയ പതിപ്പിലാണോ?",
"addApp": "ആപ്പ് ചേർക്കുക",
"appSourceURL": "ആപ്പ് ഉറവിട URL",
"error": "പിശക്",
"add": "ചേർക്കുക",
"searchSomeSourcesLabel": "തിരയുക (ചില ഉറവിടങ്ങളിൽ മാത്രം)",
"search": "തിരയുക",
"additionalOptsFor": "{} നായുള്ള അധിക ഓപ്ഷനുകൾ",
"supportedSources": "പിന്തുണയ്ക്കുന്ന ഉറവിടങ്ങൾ",
"trackOnlyInBrackets": "(ട്രാക്ക്-മാത്രം)",
"searchableInBrackets": "(തിരയാവുന്നത്)",
"appsString": "ആപ്പുകൾ",
"noApps": "ആപ്പുകളൊന്നുമില്ല",
"noAppsForFilter": "ഈ ഫിൽട്ടറിനായി ആപ്പുകളൊന്നുമില്ല",
"byX": "{} വഴി",
"percentProgress": "പുരോഗതി: {}%",
"pleaseWait": "ദയവായി കാത്തിരിക്കുക",
"updateAvailable": "അപ്‌ഡേറ്റ് ലഭ്യമാണ്",
"notInstalled": "ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ല",
"pseudoVersion": "സ്യൂഡോ-പതിപ്പ്",
"selectAll": "എല്ലാം തിരഞ്ഞെടുക്കുക",
"deselectX": "{} തിരഞ്ഞെടുക്കൽ റദ്ദാക്കുക",
"xWillBeRemovedButRemainInstalled": "{} ഒബ്‌റ്റേനിയത്തിൽ നിന്ന് നീക്കം ചെയ്യപ്പെടും, പക്ഷേ ഉപകരണത്തിൽ ഇൻസ്റ്റാൾ ചെയ്ത നിലയിൽ തുടരും.",
"removeSelectedAppsQuestion": "തിരഞ്ഞെടുത്ത ആപ്പുകൾ നീക്കം ചെയ്യണോ?",
"removeSelectedApps": "തിരഞ്ഞെടുത്ത ആപ്പുകൾ നീക്കം ചെയ്യുക",
"updateX": "{} അപ്‌ഡേറ്റ് ചെയ്യുക",
"installX": "{} ഇൻസ്റ്റാൾ ചെയ്യുക",
"markXTrackOnlyAsUpdated": "{}\n(ട്രാക്ക്-മാത്രം)\nഅപ്ഡേറ്റ് ചെയ്തതായി അടയാളപ്പെടുത്തുക",
"changeX": "{} മാറ്റുക",
"installUpdateApps": "ആപ്പുകൾ ഇൻസ്റ്റാൾ ചെയ്യുക/അപ്‌ഡേറ്റ് ചെയ്യുക",
"installUpdateSelectedApps": "തിരഞ്ഞെടുത്ത ആപ്പുകൾ ഇൻസ്റ്റാൾ ചെയ്യുക/അപ്‌ഡേറ്റ് ചെയ്യുക",
"markXSelectedAppsAsUpdated": "{} തിരഞ്ഞെടുത്ത ആപ്പുകൾ അപ്‌ഡേറ്റ് ചെയ്തതായി അടയാളപ്പെടുത്തണോ?",
"no": "ഇല്ല",
"yes": "അതെ",
"markSelectedAppsUpdated": "തിരഞ്ഞെടുത്ത ആപ്പുകൾ അപ്‌ഡേറ്റ് ചെയ്തതായി അടയാളപ്പെടുത്തുക",
"pinToTop": "മുകളിൽ പിൻ ചെയ്യുക",
"unpinFromTop": "മുകളിൽ നിന്ന് അൺപിൻ ചെയ്യുക",
"resetInstallStatusForSelectedAppsQuestion": "തിരഞ്ഞെടുത്ത ആപ്പുകളുടെ ഇൻസ്റ്റാൾ സ്റ്റാറ്റസ് റീസെറ്റ് ചെയ്യണോ?",
"installStatusOfXWillBeResetExplanation": "തിരഞ്ഞെടുത്ത ഏതെങ്കിലും ആപ്പുകളുടെ ഇൻസ്റ്റാൾ സ്റ്റാറ്റസ് റീസെറ്റ് ചെയ്യപ്പെടും.\n\nപരാജയപ്പെട്ട അപ്‌ഡേറ്റുകളോ മറ്റ് പ്രശ്നങ്ങളോ കാരണം ഒബ്‌റ്റേനിയത്തിൽ കാണിക്കുന്ന ആപ്പ് പതിപ്പ് തെറ്റായിരിക്കുമ്പോൾ ഇത് സഹായകമാകും.",
"customLinkMessage": "ഈ ലിങ്കുകൾ ഒബ്‌റ്റേനിയം ഇൻസ്റ്റാൾ ചെയ്ത ഉപകരണങ്ങളിൽ പ്രവർത്തിക്കും",
"shareAppConfigLinks": "ആപ്പ് കോൺഫിഗറേഷൻ HTML ലിങ്കായി പങ്കിടുക",
"shareSelectedAppURLs": "തിരഞ്ഞെടുത്ത ആപ്പ് URL-കൾ പങ്കിടുക",
"resetInstallStatus": "ഇൻസ്റ്റാൾ സ്റ്റാറ്റസ് റീസെറ്റ് ചെയ്യുക",
"more": "കൂടുതൽ",
"removeOutdatedFilter": "കാലഹരണപ്പെട്ട ആപ്പ് ഫിൽട്ടർ നീക്കം ചെയ്യുക",
"showOutdatedOnly": "കാലഹരണപ്പെട്ട ആപ്പുകൾ മാത്രം കാണിക്കുക",
"filter": "ഫിൽട്ടർ",
"filterApps": "ആപ്പുകൾ ഫിൽട്ടർ ചെയ്യുക",
"appName": "ആപ്പിന്റെ പേര്",
"author": "ഡെവലപ്പർ",
"upToDateApps": "ഏറ്റവും പുതിയ പതിപ്പിലുള്ള ആപ്പുകൾ",
"nonInstalledApps": "ഇൻസ്റ്റാൾ ചെയ്യാത്ത ആപ്പുകൾ",
"importExport": "ഇംപോർട്ട്/എക്സ്പോർട്ട്",
"settings": "ക്രമീകരണങ്ങൾ",
"exportedTo": "{} ലേക്ക് എക്സ്പോർട്ട് ചെയ്തു",
"obtainiumExport": "ഒബ്‌റ്റേനിയം എക്സ്പോർട്ട്",
"invalidInput": "തെറ്റായ ഇൻപുട്ട്",
"importedX": "{} ഇംപോർട്ട് ചെയ്തു",
"obtainiumImport": "ഒബ്‌റ്റേനിയം ഇംപോർട്ട്",
"importFromURLList": "URL ലിസ്റ്റിൽ നിന്ന് ഇംപോർട്ട് ചെയ്യുക",
"searchQuery": "തിരയൽ ചോദ്യം",
"appURLList": "ആപ്പ് URL ലിസ്റ്റ്",
"line": "വരി",
"searchX": "{} തിരയുക",
"noResults": "ഫലങ്ങളൊന്നും കണ്ടെത്തിയില്ല",
"importX": "{} ഇംപോർട്ട് ചെയ്യുക",
"importedAppsIdDisclaimer": "ഇംപോർട്ട് ചെയ്ത ആപ്പുകൾ \"ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ല\" എന്ന് തെറ്റായി കാണിച്ചേക്കാം.\nഇത് ശരിയാക്കാൻ, ഒബ്‌റ്റേനിയം വഴി അവ വീണ്ടും ഇൻസ്റ്റാൾ ചെയ്യുക.\nഇത് ആപ്പ് ഡാറ്റയെ ബാധിക്കില്ല.\n\nURL, മൂന്നാം കക്ഷി ഇംപോർട്ട് രീതികളെ മാത്രം ബാധിക്കുന്നു.",
"importErrors": "ഇംപോർട്ട് പിശകുകൾ",
"importedXOfYApps": "{} ആപ്പുകളിൽ {} എണ്ണം ഇംപോർട്ട് ചെയ്തു.",
"followingURLsHadErrors": "ഇനിപ്പറയുന്ന URL-കളിൽ പിശകുകൾ ഉണ്ടായിരുന്നു:",
"selectURL": "URL തിരഞ്ഞെടുക്കുക",
"selectURLs": "URL-കൾ തിരഞ്ഞെടുക്കുക",
"pick": "തിരഞ്ഞെടുക്കുക",
"theme": "തീം",
"dark": "ഇരുണ്ട",
"light": "ഇളം",
"followSystem": "സിസ്റ്റം പിന്തുടരുക",
"followSystemThemeExplanation": "സിസ്റ്റം തീം പിന്തുടരുന്നത് തേർഡ് പാർട്ടി ആപ്ലിക്കേഷനുകൾ ഉപയോഗിച്ച് മാത്രമേ സാധ്യമാകൂ",
"useBlackTheme": "തനി കറുപ്പ് തീം ഉപയോഗിക്കുക",
"appSortBy": "ആപ്പ് അടുക്കേണ്ട രീതി",
"authorName": "ഡെവലപ്പർ/പേര്",
"nameAuthor": "പേര്/ഡെവലപ്പർ",
"asAdded": "ചേർത്ത ക്രമത്തിൽ",
"appSortOrder": "ആപ്പ് അടുക്കേണ്ട ക്രമം",
"ascending": "ആരോഹണ ക്രമത്തിൽ",
"descending": "അവരോഹണ ക്രമത്തിൽ",
"bgUpdateCheckInterval": "ബാക്ക്ഗ്രൗണ്ട് അപ്‌ഡേറ്റ് പരിശോധന ഇടവേള",
"neverManualOnly": "ഒരിക്കലുമില്ല - സ്വമേധയാ മാത്രം",
"appearance": "രൂപം",
"showWebInAppView": "ആപ്പ് കാഴ്ചയിൽ ഉറവിട വെബ്പേജ് കാണിക്കുക",
"pinUpdates": "അപ്‌ഡേറ്റുകൾ ആപ്പ് കാഴ്ചയുടെ മുകളിൽ പിൻ ചെയ്യുക",
"updates": "അപ്‌ഡേറ്റുകൾ",
"sourceSpecific": "ഉറവിടം അടിസ്ഥാനമാക്കി",
"appSource": "ആപ്പ് ഉറവിടം",
"noLogs": "ലോഗുകളൊന്നുമില്ല",
"appLogs": "ആപ്പ് ലോഗുകൾ",
"close": "അടയ്ക്കുക",
"share": "പങ്കിടുക",
"appNotFound": "ആപ്പ് കണ്ടെത്തിയില്ല",
"obtainiumExportHyphenatedLowercase": "ഒബ്‌റ്റേനിയം-എക്സ്പോർട്ട്",
"pickAnAPK": "ഒരു APK തിരഞ്ഞെടുക്കുക",
"appHasMoreThanOnePackage": "{}-ന് ഒന്നിൽ കൂടുതൽ പാക്കേജുകൾ ഉണ്ട്:",
"deviceSupportsXArch": "നിങ്ങളുടെ ഉപകരണം {} CPU ആർക്കിടെക്ചറിനെ പിന്തുണയ്ക്കുന്നു.",
"deviceSupportsFollowingArchs": "നിങ്ങളുടെ ഉപകരണം ഇനിപ്പറയുന്ന CPU ആർക്കിടെക്ചറുകളെ പിന്തുണയ്ക്കുന്നു:",
"warning": "മുന്നറിയിപ്പ്",
"sourceIsXButPackageFromYPrompt": "ആപ്പ് ഉറവിടം '{}' ആണ്, പക്ഷേ റിലീസ് പാക്കേജ് '{}'-ൽ നിന്നാണ് വരുന്നത്. തുടരണോ?",
"updatesAvailable": "അപ്‌ഡേറ്റുകൾ ലഭ്യമാണ്",
"updatesAvailableNotifDescription": "ഒബ്‌റ്റേനിയം ട്രാക്ക് ചെയ്യുന്ന ഒന്നോ അതിലധികമോ ആപ്പുകൾക്ക് അപ്‌ഡേറ്റുകൾ ലഭ്യമാണെന്ന് ഉപയോക്താവിനെ അറിയിക്കുന്നു",
"noNewUpdates": "പുതിയ അപ്‌ഡേറ്റുകളൊന്നുമില്ല.",
"xHasAnUpdate": "{}-ന് ഒരു അപ്‌ഡേറ്റ് ഉണ്ട്.",
"appsUpdated": "ആപ്പുകൾ അപ്‌ഡേറ്റ് ചെയ്തു",
"appsNotUpdated": "ആപ്ലിക്കേഷനുകൾ അപ്‌ഡേറ്റ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
"appsUpdatedNotifDescription": "ഒന്നോ അതിലധികമോ ആപ്പുകളിലേക്കുള്ള അപ്‌ഡേറ്റുകൾ ബാക്ക്ഗ്രൗണ്ടിൽ പ്രയോഗിച്ചു എന്ന് ഉപയോക്താവിനെ അറിയിക്കുന്നു",
"xWasUpdatedToY": "{} {} ലേക്ക് അപ്‌ഡേറ്റ് ചെയ്തു.",
"xWasNotUpdatedToY": "{} {} ലേക്ക് അപ്‌ഡേറ്റ് ചെയ്യാൻ പരാജയപ്പെട്ടു.",
"errorCheckingUpdates": "അപ്‌ഡേറ്റുകൾ പരിശോധിക്കുന്നതിൽ പിശക്",
"errorCheckingUpdatesNotifDescription": "ബാക്ക്ഗ്രൗണ്ട് അപ്‌ഡേറ്റ് പരിശോധന പരാജയപ്പെടുമ്പോൾ കാണിക്കുന്ന അറിയിപ്പ്",
"appsRemoved": "ആപ്പുകൾ നീക്കം ചെയ്തു",
"appsRemovedNotifDescription": "ഒന്നോ അതിലധികമോ ആപ്പുകൾ ലോഡ് ചെയ്യുന്നതിൽ പിശകുകൾ കാരണം നീക്കം ചെയ്തു എന്ന് ഉപയോക്താവിനെ അറിയിക്കുന്നു",
"xWasRemovedDueToErrorY": "{} ഈ പിശക് കാരണം നീക്കം ചെയ്തു: {}",
"completeAppInstallation": "ആപ്പ് ഇൻസ്റ്റാളേഷൻ പൂർത്തിയാക്കുക",
"obtainiumMustBeOpenToInstallApps": "ആപ്പുകൾ ഇൻസ്റ്റാൾ ചെയ്യാൻ ഒബ്‌റ്റേനിയം തുറന്നിരിക്കണം",
"completeAppInstallationNotifDescription": "ഒരു ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്യുന്നത് പൂർത്തിയാക്കാൻ ഒബ്‌റ്റേനിയത്തിലേക്ക് മടങ്ങാൻ ഉപയോക്താവിനോട് ആവശ്യപ്പെടുന്നു",
"checkingForUpdates": "അപ്‌ഡേറ്റുകൾ പരിശോധിക്കുന്നു",
"checkingForUpdatesNotifDescription": "അപ്‌ഡേറ്റുകൾ പരിശോധിക്കുമ്പോൾ ദൃശ്യമാകുന്ന താൽക്കാലിക അറിയിപ്പ്",
"pleaseAllowInstallPerm": "ആപ്പുകൾ ഇൻസ്റ്റാൾ ചെയ്യാൻ ഒബ്‌റ്റേനിയത്തിന് അനുമതി നൽകുക",
"trackOnly": "ട്രാക്ക്-മാത്രം",
"errorWithHttpStatusCode": "പിശക് {}",
"versionCorrectionDisabled": "പതിപ്പ് തിരുത്തൽ പ്രവർത്തനരഹിതമാക്കി (പ്ലഗിൻ പ്രവർത്തിക്കുന്നതായി തോന്നുന്നില്ല)",
"unknown": "അജ്ഞാതം",
"none": "ഒന്നുമില്ല",
"all": "All",
"never": "ഒരിക്കലുമില്ല",
"latestVersionX": "ഏറ്റവും പുതിയത്: {}",
"installedVersionX": "ഇൻസ്റ്റാൾ ചെയ്തത്: {}",
"lastUpdateCheckX": "അവസാന അപ്‌ഡേറ്റ് പരിശോധന: {}",
"remove": "നീക്കം ചെയ്യുക",
"yesMarkUpdated": "അതെ, അപ്‌ഡേറ്റ് ചെയ്തതായി അടയാളപ്പെടുത്തുക",
"fdroid": "എഫ്-ഡ്രോയിഡ് ഒഫീഷ്യൽ",
"appIdOrName": "ആപ്പ് ഐഡി അല്ലെങ്കിൽ പേര്",
"appId": "ആപ്പ് ഐഡി",
"appWithIdOrNameNotFound": "ആ ഐഡിയിലോ പേരിലോ ആപ്പുകളൊന്നും കണ്ടെത്തിയില്ല",
"reposHaveMultipleApps": "റെപ്പോകളിൽ ഒന്നിലധികം ആപ്പുകൾ അടങ്ങിയിരിക്കാം",
"fdroidThirdPartyRepo": "എഫ്-ഡ്രോയിഡ് തേർഡ് പാർട്ടി റെപ്പോ",
"install": "ഇൻസ്റ്റാൾ ചെയ്യുക",
"markInstalled": "ഇൻസ്റ്റാൾ ചെയ്തതായി അടയാളപ്പെടുത്തുക",
"update": "അപ്‌ഡേറ്റ് ചെയ്യുക",
"markUpdated": "അപ്‌ഡേറ്റ് ചെയ്തതായി അടയാളപ്പെടുത്തുക",
"additionalOptions": "കൂടുതൽ ഓപ്ഷനുകൾ",
"disableVersionDetection": "പതിപ്പ് കണ്ടെത്തൽ പ്രവർത്തനരഹിതമാക്കുക",
"noVersionDetectionExplanation": "പതിപ്പ് കണ്ടെത്തൽ ശരിയായി പ്രവർത്തിക്കാത്ത ആപ്പുകൾക്ക് മാത്രമേ ഈ ഓപ്ഷൻ ഉപയോഗിക്കാവൂ.",
"downloadingX": "{} ഡൗൺലോഡ് ചെയ്യുന്നു",
"downloadX": "{} ഡൗൺലോഡ് ചെയ്യുക",
"downloadedX": "{} ഡൗൺലോഡ് ചെയ്തു",
"releaseAsset": "റിലീസ് അസറ്റ്",
"downloadNotifDescription": "ഒരു ആപ്പ് ഡൗൺലോഡ് ചെയ്യുന്നതിലെ പുരോഗതി ഉപയോക്താവിനെ അറിയിക്കുന്നു",
"noAPKFound": "APK കണ്ടെത്തിയില്ല",
"noVersionDetection": "പതിപ്പ് കണ്ടെത്തൽ ഇല്ല",
"categorize": "വിഭാഗീകരിക്കുക",
"categories": "വിഭാഗങ്ങൾ",
"category": "വിഭാഗം",
"noCategory": "വിഭാഗമൊന്നുമില്ല",
"noCategories": "വിഭാഗങ്ങളൊന്നുമില്ല",
"deleteCategoriesQuestion": "വിഭാഗങ്ങൾ ഇല്ലാതാക്കണോ?",
"categoryDeleteWarning": "ഇല്ലാതാക്കിയ വിഭാഗങ്ങളിലെ എല്ലാ ആപ്പുകളും വിഭാഗരഹിതമായി ക്രമീകരിക്കും.",
"addCategory": "വിഭാഗം ചേർക്കുക",
"label": "ലേബൽ",
"language": "ഭാഷ",
"copiedToClipboard": "ക്ലിപ്ബോർഡിലേക്ക് പകർത്തി",
"storagePermissionDenied": "സ്റ്റോറേജ് അനുമതി നിഷേധിച്ചു",
"selectedCategorizeWarning": "ഇത് തിരഞ്ഞെടുത്ത ആപ്പുകൾക്കായി നിലവിലുള്ള ഏതൊരു വിഭാഗ ക്രമീകരണങ്ങളെയും മാറ്റിസ്ഥാപിക്കും.",
"filterAPKsByRegEx": "റെഗുലർ എക്സ്പ്രഷൻ ഉപയോഗിച്ച് APK-കൾ ഫിൽട്ടർ ചെയ്യുക",
"removeFromObtainium": "ഒബ്‌റ്റേനിയത്തിൽ നിന്ന് നീക്കം ചെയ്യുക",
"uninstallFromDevice": "ഉപകരണത്തിൽ നിന്ന് അൺഇൻസ്റ്റാൾ ചെയ്യുക",
"onlyWorksWithNonVersionDetectApps": "പതിപ്പ് കണ്ടെത്തൽ പ്രവർത്തനരഹിതമാക്കിയ ആപ്പുകൾക്ക് മാത്രമേ ഇത് പ്രവർത്തിക്കൂ.",
"releaseDateAsVersion": "റിലീസ് തീയതി പതിപ്പ് സ്ട്രിംഗായി ഉപയോഗിക്കുക",
"releaseTitleAsVersion": "റിലീസ് ശീർഷകം പതിപ്പ് സ്ട്രിംഗായി ഉപയോഗിക്കുക",
"releaseDateAsVersionExplanation": "പതിപ്പ് കണ്ടെത്തൽ ശരിയായി പ്രവർത്തിക്കാത്തതും എന്നാൽ റിലീസ് തീയതി ലഭ്യമായതുമായ ആപ്പുകൾക്ക് മാത്രമേ ഈ ഓപ്ഷൻ ഉപയോഗിക്കാവൂ.",
"changes": "മാറ്റങ്ങൾ",
"releaseDate": "റിലീസ് തീയതി",
"importFromURLsInFile": "ഫയലിലെ URL-കളിൽ നിന്ന് ഇംപോർട്ട് ചെയ്യുക (OPML പോലെ)",
"versionDetectionExplanation": "കണ്ടെത്തിയ പതിപ്പ് സ്ട്രിംഗ് OS-ൽ നിന്ന് കണ്ടെത്തിയ പതിപ്പുമായി പൊരുത്തപ്പെടുത്തുക",
"versionDetection": "പതിപ്പ് കണ്ടെത്തൽ",
"standardVersionDetection": "സാധാരണ പതിപ്പ് കണ്ടെത്തൽ",
"groupByCategory": "വിഭാഗം തിരിച്ച് ഗ്രൂപ്പ് ചെയ്യുക",
"autoApkFilterByArch": "സാധ്യമെങ്കിൽ CPU ആർക്കിടെക്ചർ അനുസരിച്ച് APK-കൾ ഫിൽട്ടർ ചെയ്യാൻ ശ്രമിക്കുക",
"autoLinkFilterByArch": "സാധ്യമെങ്കിൽ CPU ആർക്കിടെക്ചർ അനുസരിച്ച് ലിങ്കുകൾ ഫിൽട്ടർ ചെയ്യാൻ ശ്രമിക്കുക",
"overrideSource": "ഉറവിടം അസാധുവാക്കുക",
"dontShowAgain": "ഇത് വീണ്ടും കാണിക്കരുത്",
"dontShowTrackOnlyWarnings": "'ട്രാക്ക്-മാത്രം' മുന്നറിയിപ്പുകൾ കാണിക്കരുത്",
"dontShowAPKOriginWarnings": "APK ഉറവിട മുന്നറിയിപ്പുകൾ കാണിക്കരുത്",
"moveNonInstalledAppsToBottom": "ഇൻസ്റ്റാൾ ചെയ്യാത്ത ആപ്പുകൾ ആപ്പ് കാഴ്ചയുടെ താഴേക്ക് മാറ്റുക",
"gitlabPATLabel": "GitLab പേഴ്സണൽ ആക്സസ് ടോക്കൺ",
"about": "വിവരങ്ങൾ",
"requiresCredentialsInSettings": "{}-ന് അധിക ക്രെഡൻഷ്യലുകൾ ആവശ്യമാണ് (ക്രമീകരണങ്ങളിൽ)",
"checkOnStart": "തുടങ്ങുമ്പോൾ അപ്‌ഡേറ്റുകൾക്കായി പരിശോധിക്കുക",
"tryInferAppIdFromCode": "സോഴ്സ് കോഡിൽ നിന്ന് ആപ്പ് ഐഡി അനുമാനിക്കാൻ ശ്രമിക്കുക",
"removeOnExternalUninstall": "പുറത്ത് നിന്ന് അൺഇൻസ്റ്റാൾ ചെയ്ത ആപ്പുകൾ സ്വയമേവ നീക്കം ചെയ്യുക",
"pickHighestVersionCode": "ഏറ്റവും ഉയർന്ന പതിപ്പ് കോഡ് APK സ്വയമേവ തിരഞ്ഞെടുക്കുക",
"checkUpdateOnDetailPage": "ഒരു ആപ്പ് വിശദാംശ പേജ് തുറക്കുമ്പോൾ അപ്‌ഡേറ്റുകൾക്കായി പരിശോധിക്കുക",
"disablePageTransitions": "പേജ് ട്രാൻസിഷൻ ആനിമേഷനുകൾ പ്രവർത്തനരഹിതമാക്കുക",
"reversePageTransitions": "പേജ് ട്രാൻസിഷൻ ആനിമേഷനുകൾ വിപരീതമാക്കുക",
"minStarCount": "കുറഞ്ഞ നക്ഷത്രങ്ങളുടെ എണ്ണം",
"addInfoBelow": "ഈ വിവരങ്ങൾ താഴെ ചേർക്കുക.",
"addInfoInSettings": "ഈ വിവരങ്ങൾ ക്രമീകരണങ്ങളിൽ ചേർക്കുക.",
"githubSourceNote": "API കീ ഉപയോഗിച്ച് GitHub നിരക്ക് പരിധി ഒഴിവാക്കാം.",
"sortByLastLinkSegment": "ലിങ്കിന്റെ അവസാന ഭാഗം മാത്രം ഉപയോഗിച്ച് അടുക്കുക",
"filterReleaseNotesByRegEx": "റെഗുലർ എക്സ്പ്രഷൻ ഉപയോഗിച്ച് റിലീസ് നോട്ടുകൾ ഫിൽട്ടർ ചെയ്യുക",
"customLinkFilterRegex": "റെഗുലർ എക്സ്പ്രഷൻ ഉപയോഗിച്ചുള്ള കസ്റ്റം APK ലിങ്ക് ഫിൽട്ടർ (സ്ഥിരസ്ഥിതി '.apk$')",
"appsPossiblyUpdated": "ആപ്പ് അപ്‌ഡേറ്റുകൾ ശ്രമിച്ചു",
"appsPossiblyUpdatedNotifDescription": "ഒന്നോ അതിലധികമോ ആപ്പുകളിലേക്കുള്ള അപ്‌ഡേറ്റുകൾ ബാക്ക്ഗ്രൗണ്ടിൽ പ്രയോഗിക്കാൻ സാധ്യതയുണ്ടെന്ന് ഉപയോക്താവിനെ അറിയിക്കുന്നു",
"xWasPossiblyUpdatedToY": "{} {} ലേക്ക് അപ്‌ഡേറ്റ് ചെയ്തിരിക്കാം.",
"enableBackgroundUpdates": "ബാക്ക്ഗ്രൗണ്ട് അപ്‌ഡേറ്റുകൾ പ്രവർത്തനക്ഷമമാക്കുക",
"backgroundUpdateReqsExplanation": "എല്ലാ ആപ്പുകൾക്കും ബാക്ക്ഗ്രൗണ്ട് അപ്‌ഡേറ്റുകൾ സാധ്യമായെന്ന് വരില്ല.",
"backgroundUpdateLimitsExplanation": "ബാക്ക്ഗ്രൗണ്ട് ഇൻസ്റ്റാളിന്റെ വിജയം ഒബ്‌റ്റേനിയം തുറക്കുമ്പോൾ മാത്രമേ നിർണ്ണയിക്കാൻ കഴിയൂ.",
"verifyLatestTag": "'ഏറ്റവും പുതിയ' ടാഗ് പരിശോധിക്കുക",
"intermediateLinkRegex": "സന്ദർശിക്കാൻ ഒരു 'ഇന്റർമീഡിയറ്റ്' ലിങ്കിനായി ഫിൽട്ടർ ചെയ്യുക",
"filterByLinkText": "ലിങ്ക് ടെക്സ്റ്റ് ഉപയോഗിച്ച് ലിങ്കുകൾ ഫിൽട്ടർ ചെയ്യുക",
"intermediateLinkNotFound": "ഇന്റർമീഡിയറ്റ് ലിങ്ക് കണ്ടെത്തിയില്ല",
"intermediateLink": "ഇന്റർമീഡിയറ്റ് ലിങ്ക്",
"exemptFromBackgroundUpdates": "ബാക്ക്ഗ്രൗണ്ട് അപ്‌ഡേറ്റുകളിൽ നിന്ന് ഒഴിവാക്കുക (പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെങ്കിൽ)",
"bgUpdatesOnWiFiOnly": "വൈഫൈയിൽ അല്ലാത്തപ്പോൾ ബാക്ക്ഗ്രൗണ്ട് അപ്‌ഡേറ്റുകൾ പ്രവർത്തനരഹിതമാക്കുക",
"bgUpdatesWhileChargingOnly": "ചാർജ് ചെയ്യാത്തപ്പോൾ ബാക്ക്ഗ്രൗണ്ട് അപ്‌ഡേറ്റുകൾ പ്രവർത്തനരഹിതമാക്കുക",
"autoSelectHighestVersionCode": "ഏറ്റവും ഉയർന്ന versionCode APK സ്വയമേവ തിരഞ്ഞെടുക്കുക",
"versionExtractionRegEx": "പതിപ്പ് സ്ട്രിംഗ് വേർതിരിച്ചെടുക്കുന്നതിനുള്ള റെഗുലർ എക്സ്പ്രഷൻ",
"trimVersionString": "റെഗുലർ എക്സ്പ്രഷൻ ഉപയോഗിച്ച് പതിപ്പ് സ്ട്രിംഗ് ട്രിം ചെയ്യുക",
"matchGroupToUseForX": "\"{}\" നായി ഉപയോഗിക്കേണ്ട ഗ്രൂപ്പ് മാച്ച് ചെയ്യുക",
"matchGroupToUse": "പതിപ്പ് സ്ട്രിംഗ് വേർതിരിച്ചെടുക്കുന്നതിനുള്ള റെഗുലർ എക്സ്പ്രഷനായി ഉപയോഗിക്കേണ്ട ഗ്രൂപ്പ് മാച്ച് ചെയ്യുക",
"highlightTouchTargets": "കുറഞ്ഞ വ്യക്തതയുള്ള ടച്ച് ടാർഗെറ്റുകൾ ഹൈലൈറ്റ് ചെയ്യുക",
"pickExportDir": "എക്സ്പോർട്ട് ഡയറക്ടറി തിരഞ്ഞെടുക്കുക",
"autoExportOnChanges": "മാറ്റങ്ങൾ വരുമ്പോൾ സ്വയമേവ എക്സ്പോർട്ട് ചെയ്യുക",
"includeSettings": "ക്രമീകരണങ്ങൾ ഉൾപ്പെടുത്തുക",
"filterVersionsByRegEx": "റെഗുലർ എക്സ്പ്രഷൻ ഉപയോഗിച്ച് പതിപ്പുകൾ ഫിൽട്ടർ ചെയ്യുക",
"trySelectingSuggestedVersionCode": "നിർദ്ദേശിച്ച versionCode APK തിരഞ്ഞെടുക്കാൻ ശ്രമിക്കുക",
"dontSortReleasesList": "API-യിൽ നിന്നുള്ള റിലീസ് ഓർഡർ നിലനിർത്തുക",
"reverseSort": "റിവേഴ്സ് സോർട്ടിംഗ്",
"takeFirstLink": "ആദ്യ ലിങ്ക് എടുക്കുക",
"skipSort": "സോർട്ടിംഗ് ഒഴിവാക്കുക",
"debugMenu": "ഡീബഗ് മെനു",
"bgTaskStarted": "ബാക്ക്ഗ്രൗണ്ട് ടാസ്ക് ആരംഭിച്ചു - ലോഗുകൾ പരിശോധിക്കുക.",
"runBgCheckNow": "ഇപ്പോൾ ബാക്ക്ഗ്രൗണ്ട് അപ്‌ഡേറ്റ് പരിശോധന പ്രവർത്തിപ്പിക്കുക",
"versionExtractWholePage": "മുഴുവൻ പേജിലും പതിപ്പ് സ്ട്രിംഗ് വേർതിരിച്ചെടുക്കുന്ന റെഗുലർ എക്സ്പ്രഷൻ പ്രയോഗിക്കുക",
"installing": "ഇൻസ്റ്റാൾ ചെയ്യുന്നു",
"skipUpdateNotifications": "അപ്‌ഡേറ്റ് അറിയിപ്പുകൾ ഒഴിവാക്കുക",
"updatesAvailableNotifChannel": "അപ്‌ഡേറ്റുകൾ ലഭ്യമാണ്",
"appsUpdatedNotifChannel": "ആപ്പുകൾ അപ്‌ഡേറ്റ് ചെയ്തു",
"appsPossiblyUpdatedNotifChannel": "ആപ്പ് അപ്‌ഡേറ്റുകൾ ശ്രമിച്ചു",
"errorCheckingUpdatesNotifChannel": "അപ്‌ഡേറ്റുകൾ പരിശോധിക്കുന്നതിൽ പിശക്",
"appsRemovedNotifChannel": "ആപ്പുകൾ നീക്കം ചെയ്തു",
"downloadingXNotifChannel": "{} ഡൗൺലോഡ് ചെയ്യുന്നു",
"completeAppInstallationNotifChannel": "ആപ്പ് ഇൻസ്റ്റാളേഷൻ പൂർത്തിയാക്കുക",
"checkingForUpdatesNotifChannel": "അപ്‌ഡേറ്റുകൾ പരിശോധിക്കുന്നു",
"onlyCheckInstalledOrTrackOnlyApps": "ഇൻസ്റ്റാൾ ചെയ്തതും ട്രാക്ക്-മാത്രം ആപ്പുകളും മാത്രം അപ്‌ഡേറ്റുകൾക്കായി പരിശോധിക്കുക",
"supportFixedAPKURL": "സ്ഥിരമായ APK URL-കളെ പിന്തുണയ്ക്കുക",
"selectX": "{} തിരഞ്ഞെടുക്കുക",
"parallelDownloads": "പാരലൽ ഡൗൺലോഡുകൾ അനുവദിക്കുക",
"useShizuku": "ഇൻസ്റ്റാൾ ചെയ്യാൻ ഷിസുകു അല്ലെങ്കിൽ സ്യൂ ഉപയോഗിക്കുക",
"shizukuBinderNotFound": "ഷിസുകു സേവനം പ്രവർത്തിക്കുന്നില്ല",
"shizukuOld": "പഴയ ഷിസുകു പതിപ്പ് (<11) - അത് അപ്‌ഡേറ്റ് ചെയ്യുക",
"shizukuOldAndroidWithADB": "ആൻഡ്രോയിഡ് < 8.1 ഉള്ള ഷിസുകു ADB ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്നു - ആൻഡ്രോയിഡ് അപ്‌ഡേറ്റ് ചെയ്യുക അല്ലെങ്കിൽ പകരം സ്യൂ ഉപയോഗിക്കുക",
"shizukuPretendToBeGooglePlay": "Google Play ഇൻസ്റ്റാളേഷൻ ഉറവിടമായി സജ്ജമാക്കുക (ഷിസുകു ഉപയോഗിക്കുകയാണെങ്കിൽ)",
"useSystemFont": "സിസ്റ്റം ഫോണ്ട് ഉപയോഗിക്കുക",
"useVersionCodeAsOSVersion": "ആപ്പ് versionCode OS-ൽ കണ്ടെത്തിയ പതിപ്പായി ഉപയോഗിക്കുക",
"requestHeader": "അഭ്യർത്ഥന തലക്കെട്ട്",
"useLatestAssetDateAsReleaseDate": "ഏറ്റവും പുതിയ അസറ്റ് അപ്‌ലോഡ് റിലീസ് തീയതിയായി ഉപയോഗിക്കുക",
"defaultPseudoVersioningMethod": "സ്ഥിരസ്ഥിതി സ്യൂഡോ-പതിപ്പ് രീതി",
"partialAPKHash": "ഭാഗിക APK ഹാഷ്",
"APKLinkHash": "APK ലിങ്ക് ഹാഷ്",
"directAPKLink": "നേരിട്ടുള്ള APK ലിങ്ക്",
"pseudoVersionInUse": "ഒരു സ്യൂഡോ-പതിപ്പ് ഉപയോഗത്തിലുണ്ട്",
"installed": "ഇൻസ്റ്റാൾ ചെയ്തത്",
"latest": "ഏറ്റവും പുതിയത്",
"invertRegEx": "റെഗുലർ എക്സ്പ്രഷൻ വിപരീതമാക്കുക",
"note": "ശ്രദ്ധിക്കുക",
"selfHostedNote": "ഏത് ഉറവിടത്തിന്റെയും സെൽഫ്-ഹോസ്റ്റ് ചെയ്ത/കസ്റ്റം ഇൻസ്റ്റൻസുകളിലേക്ക് എത്താൻ \"{}\" ഡ്രോപ്പ്ഡൗൺ ഉപയോഗിക്കാം.",
"badDownload": "APK പാഴ്സ് ചെയ്യാൻ കഴിഞ്ഞില്ല (അനുയോജ്യമല്ലാത്തതോ ഭാഗികമായ ഡൗൺലോഡോ)",
"beforeNewInstallsShareToAppVerifier": "പുതിയ ആപ്പുകൾ AppVerifier-ലേക്ക് പങ്കിടുക (ലഭ്യമെങ്കിൽ)",
"appVerifierInstructionToast": "AppVerifier-ലേക്ക് പങ്കിടുക, തുടർന്ന് തയ്യാറാകുമ്പോൾ ഇവിടെ തിരിച്ചെത്തുക.",
"wiki": "സഹായം/വിക്കി",
"crowdsourcedConfigsLabel": "ക്രൗഡ്‌സോഴ്‌സ് ചെയ്ത ആപ്പ് കോൺഫിഗറേഷനുകൾ (സ്വന്തം ഉത്തരവാദിത്തത്തിൽ ഉപയോഗിക്കുക)",
"crowdsourcedConfigsShort": "ക്രൗഡ്‌സോഴ്‌സ് ചെയ്ത ആപ്പ് കോൺഫിഗറേഷനുകൾ",
"allowInsecure": "സുരക്ഷിതമല്ലാത്ത HTTP അഭ്യർത്ഥനകൾ അനുവദിക്കുക",
"stayOneVersionBehind": "ഏറ്റവും പുതിയ പതിപ്പിന് ഒരു പതിപ്പ് പിന്നിൽ തുടരുക",
"useFirstApkOfVersion": "ഒന്നിലധികം APK-കളിൽ നിന്ന് ആദ്യത്തേത് സ്വയമേവ തിരഞ്ഞെടുക്കുക",
"refreshBeforeDownload": "ഡൗൺലോഡ് ചെയ്യുന്നതിന് മുമ്പ് ആപ്പ് വിവരങ്ങൾ പുതുക്കുക",
"tencentAppStore": "ടെൻസെന്റ് ആപ്പ് സ്റ്റോർ",
"coolApk": "കൂൾ APK",
"vivoAppStore": "വിവോ ആപ്പ് സ്റ്റോർ (CN)",
"name": "പേര്",
"smartname": "പേര് (സ്മാർട്ട്)",
"sortMethod": "അടുക്കുന്ന രീതി",
"welcome": "സ്വാഗതം",
"documentationLinksNote": "താഴെ ലിങ്ക് ചെയ്തിട്ടുള്ള ഒബ്‌റ്റേനിയം GitHub പേജിൽ ആപ്പ് എങ്ങനെ ഉപയോഗിക്കാമെന്ന് മനസ്സിലാക്കാൻ സഹായിക്കുന്ന വീഡിയോകൾ, ലേഖനങ്ങൾ, ചർച്ചകൾ, മറ്റ് വിഭവങ്ങൾ എന്നിവയുടെ ലിങ്കുകൾ അടങ്ങിയിരിക്കുന്നു.",
"batteryOptimizationNote": "ഒബ്‌റ്റേനിയത്തിനായുള്ള OS ബാറ്ററി ഒപ്റ്റിമൈസേഷനുകൾ പ്രവർത്തനരഹിതമാക്കുകയാണെങ്കിൽ ബാക്ക്ഗ്രൗണ്ട് ഡൗൺലോഡുകൾ കൂടുതൽ വിശ്വസനീയമായി പ്രവർത്തിച്ചേക്കാം എന്നത് ശ്രദ്ധിക്കുക.",
"fileDeletionError": "ഫയൽ ഇല്ലാതാക്കാൻ പരാജയപ്പെട്ടു (സ്വമേധയാ ഇല്ലാതാക്കാൻ ശ്രമിക്കുക, എന്നിട്ട് വീണ്ടും ശ്രമിക്കുക): \"{}\"",
"foregroundService": "Obtainium foreground service",
"foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
"fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
"excludeSecrets": "Exclude secrets",
"removeAppQuestion": {
"one": "ആപ്പ് നീക്കം ചെയ്യണോ?",
"other": "ആപ്പുകൾ നീക്കം ചെയ്യണോ?"
},
"tooManyRequestsTryAgainInMinutes": {
"one": "നിരവധി അഭ്യർത്ഥനകൾ (നിരക്ക് പരിമിതപ്പെടുത്തി) - {} മിനിറ്റിനുള്ളിൽ വീണ്ടും ശ്രമിക്കുക",
"other": "നിരവധി അഭ്യർത്ഥനകൾ (നിരക്ക് പരിമിതപ്പെടുത്തി) - {} മിനിറ്റുകൾക്കുള്ളിൽ വീണ്ടും ശ്രമിക്കുക"
},
"bgUpdateGotErrorRetryInMinutes": {
"one": "ബാക്ക്ഗ്രൗണ്ട് അപ്‌ഡേറ്റ് പരിശോധനയിൽ ഒരു {} നേരിട്ടു, {} മിനിറ്റിനുള്ളിൽ വീണ്ടും ശ്രമിക്കാൻ ക്രമീകരിക്കും",
"other": "ബാക്ക്ഗ്രൗണ്ട് അപ്‌ഡേറ്റ് പരിശോധനയിൽ ഒരു {} നേരിട്ടു, {} മിനിറ്റുകൾക്കുള്ളിൽ വീണ്ടും ശ്രമിക്കാൻ ക്രമീകരിക്കും"
},
"bgCheckFoundUpdatesWillNotifyIfNeeded": {
"one": "ബാക്ക്ഗ്രൗണ്ട് അപ്‌ഡേറ്റ് പരിശോധനയിൽ {} അപ്‌ഡേറ്റ് കണ്ടെത്തി - ആവശ്യമെങ്കിൽ ഉപയോക്താവിനെ അറിയിക്കും",
"other": "ബാക്ക്ഗ്രൗണ്ട് അപ്‌ഡേറ്റ് പരിശോധനയിൽ {} അപ്‌ഡേറ്റുകൾ കണ്ടെത്തി - ആവശ്യമെങ്കിൽ ഉപയോക്താവിനെ അറിയിക്കും"
},
"apps": {
"one": "{} ആപ്പ്",
"other": "{} ആപ്പുകൾ"
},
"url": {
"one": "{} URL",
"other": "{} URL-കൾ"
},
"minute": {
"one": "{} മിനിറ്റ്",
"other": "{} മിനിറ്റുകൾ"
},
"hour": {
"one": "{} മണിക്കൂർ",
"other": "{} മണിക്കൂർ"
},
"day": {
"one": "{} ദിവസം",
"other": "{} ദിവസങ്ങൾ"
},
"clearedNLogsBeforeXAfterY": {
"one": "{n} ലോഗ് മായ്ച്ചു (മുമ്പ് = {before}, ശേഷം = {after})",
"other": "{n} ലോഗുകൾ മായ്ച്ചു (മുമ്പ് = {before}, ശേഷം = {after})"
},
"xAndNMoreUpdatesAvailable": {
"one": "{} കൂടാതെ 1 ആപ്പിന് കൂടി അപ്‌ഡേറ്റുകൾ ലഭ്യമാണ്.",
"other": "{} കൂടാതെ {} ആപ്പുകൾക്ക് കൂടി അപ്‌ഡേറ്റുകൾ ലഭ്യമാണ്."
},
"xAndNMoreUpdatesInstalled": {
"one": "{} കൂടാതെ 1 ആപ്പ് കൂടി അപ്‌ഡേറ്റ് ചെയ്തു.",
"other": "{} കൂടാതെ {} ആപ്പുകൾ കൂടി അപ്‌ഡേറ്റ് ചെയ്തു."
},
"xAndNMoreUpdatesFailed": {
"one": "{} കൂടാതെ 1 ആപ്പ് കൂടി അപ്‌ഡേറ്റ് ചെയ്യാൻ പരാജയപ്പെട്ടു.",
"other": "{} കൂടാതെ {} ആപ്പുകൾ കൂടി അപ്‌ഡേറ്റ് ചെയ്യാൻ പരാജയപ്പെട്ടു."
},
"xAndNMoreUpdatesPossiblyInstalled": {
"one": "{} കൂടാതെ 1 ആപ്പ് കൂടി അപ്‌ഡേറ്റ് ചെയ്തിരിക്കാം.",
"other": "{} കൂടാതെ {} ആപ്പുകൾ കൂടി അപ്‌ഡേറ്റ് ചെയ്തിരിക്കാം."
},
"apk": {
"one": "{} APK",
"other": "{} APK-കൾ"
}
}

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Versiecorrectie uitgeschakeld (de plug-in lijkt niet te werken)",
"unknown": "Onbekend",
"none": "Geen",
"all": "Alle",
"never": "Nooit",
"latestVersionX": "Laatste versie: {}",
"installedVersionX": "Geïnstalleerde versie: {}",
@@ -314,7 +313,7 @@
"badDownload": "De APK kon niet worden verwerkt (incompatibele of gedeeltelijke download)",
"beforeNewInstallsShareToAppVerifier": "Nieuwe Apps delen met AppVerifier (indien beschikbaar)",
"appVerifierInstructionToast": "Deel het met AppVerifier en keer daarna hier terug.",
"wiki": "Help/wiki",
"wiki": "Help/Wiki",
"crowdsourcedConfigsLabel": "Crowdsourced App-configuraties (gebruik op eigen risico)",
"crowdsourcedConfigsShort": "App-configuraties door menigte",
"allowInsecure": "Onveilige HTTP-verzoeken toestaan",
@@ -331,10 +330,6 @@
"documentationLinksNote": "De GitHub pagina van Obtainium waarnaar hieronder wordt gelinkt bevat links naar video's, artikelen, discussies en andere bronnen die je zullen helpen begrijpen hoe je de app kunt gebruiken.",
"batteryOptimizationNote": "Merk op dat downloads op de achtergrond mogelijk betrouwbaarder werken als je de batterijoptimalisatie van het besturingssysteem voor Obtainium uitschakelt.",
"fileDeletionError": "Bestand is niet verwijderd (probeer het handmatig te verwijderen en probeer het opnieuw): \"{}\"",
"foregroundService": "Obtainium foreground service",
"foregroundServiceExplanation": "Gebruik een voorgronddienst voor het controleren van updates (betrouwbaarder, verbruikt meer stroom)",
"fgServiceNotice": "Deze melding is nodig voor het controleren van updates op de achtergrond (kan worden verborgen in de OS-instellingen)",
"excludeSecrets": "Geheimen uitsluiten",
"removeAppQuestion": {
"one": "App verwijderen?",
"other": "Apps verwijderen?"

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Korekta wersji wyłączona (wtyczka wydaje się nie działać)",
"unknown": "Nieznane",
"none": "Brak",
"all": "Wszystkie",
"never": "Nigdy",
"latestVersionX": "Najnowsza wersja: {}",
"installedVersionX": "Zainstalowana wersja: {}",
@@ -331,10 +330,6 @@
"documentationLinksNote": "Strona Obtainium GitHub, do której link znajduje się poniżej, zawiera linki do filmów, artykułów, dyskusji i innych zasobów, które pomogą ci zrozumieć, jak korzystać z aplikacji.",
"batteryOptimizationNote": "Należy pamiętać, że pobieranie w tle może działać bardziej niezawodnie po wyłączeniu optymalizacji baterii systemu operacyjnego dla Obtainium.",
"fileDeletionError": "Nie udało się usunąć pliku (spróbuj usunąć go ręcznie, a następnie spróbuj ponownie): \"{}\"",
"foregroundService": "Usługa nowej generacji Obtainium",
"foregroundServiceExplanation": "Używanie usługi pierwszoplanowej do sprawdzania aktualizacji (bardziej niezawodne, zużywa więcej energii)",
"fgServiceNotice": "To powiadomienie jest wymagane do sprawdzania aktualizacji w tle (można je ukryć w ustawieniach systemu operacyjnego).",
"excludeSecrets": "Wyklucz sekrety",
"removeAppQuestion": {
"one": "Usunąć aplikację?",
"few": "Usunąć aplikacje?",

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Correção de versão desativada (o plugin parece não funcionar)",
"unknown": "Desconhecido",
"none": "Nenhum",
"all": "Todos",
"never": "Nunca",
"latestVersionX": "Mais recente: {}",
"installedVersionX": "Instalado: {}",
@@ -331,10 +330,6 @@
"documentationLinksNote": "A página do Obtainium no GitHub visível abaixo contém links de vídeos, artigos, discussões, e outros recursos que podem te ajudar ao usar o app.",
"batteryOptimizationNote": "Observe que os downloads em segundo plano podem funcionar de forma mais confiável se você desativar as otimizações de bateria do sistema operacional para o Obtainium.",
"fileDeletionError": "Falha ao excluir o arquivo (tente excluí-lo manualmente e tente novamente): \"{}\"",
"foregroundService": "Serviço de primeiro plano do Obtainium",
"foregroundServiceExplanation": "Usar um serviço em primeiro plano para verificação de atualizações (mais confiável, consome mais energia)",
"fgServiceNotice": "Essa notificação é necessária para a verificação de atualizações em segundo plano (ela pode ser ocultada nas configurações do sistema operacional)",
"excludeSecrets": "Excluir segredos",
"removeAppQuestion": {
"one": "Remover app?",
"other": "Remover apps?"

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Correção de versão desativada (plugin parece não funcionar)",
"unknown": "Desconhecido",
"none": "Nenhum",
"all": "Todos",
"never": "Nunca",
"latestVersionX": "Última versão: {}",
"installedVersionX": "Versão instalada: {}",
@@ -331,10 +330,6 @@
"documentationLinksNote": "A página do Obtainium no GitHub com a ligação abaixo contém ligações para vídeos, artigos, discussões e outros recursos que o ajudarão a compreender como utilizar a aplicação.",
"batteryOptimizationNote": "Note que os downloads em segundo plano podem funcionar de forma mais fiável se desativar as optimizações da bateria do SO para o Obtainium.",
"fileDeletionError": "Falha ao eliminar o ficheiro (tente eliminá-lo manualmente e depois tente novamente): \"{}\"",
"foregroundService": "Serviço de primeiro plano Obtainium",
"foregroundServiceExplanation": "Utilizar um serviço em primeiro plano para verificação de actualizações (mais fiável, consome mais energia)",
"fgServiceNotice": "Esta notificação é necessária para a verificação de actualizações em segundo plano (pode ser ocultada nas definições do SO)",
"excludeSecrets": "Excluir segredos",
"removeAppQuestion": {
"one": "Remover aplicativo?",
"other": "Remover aplicativos?"
@@ -360,16 +355,16 @@
"other": "{} URLs"
},
"minute": {
"one": "{} minuto",
"other": "{} minutos"
"one": "{} Minuto",
"other": "{} Minutos"
},
"hour": {
"one": "{} hora",
"other": "{} horas"
"one": "{} Hora",
"other": "{} Horas"
},
"day": {
"one": "{} dia",
"other": "{} dias"
"one": "{} Dia",
"other": "{} Dias"
},
"clearedNLogsBeforeXAfterY": {
"one": "Foi limpo {n} log (antes = {antes}, depois = {depois})",

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Коррекция версий отключена (плагин, кажется, не работает)",
"unknown": "Неизвестно",
"none": "Отсутствует",
"all": "Все",
"never": "Никогда",
"latestVersionX": "Последняя версия: {}",
"installedVersionX": "Установленная версия: {}",
@@ -293,7 +292,7 @@
"selectX": "Выбрать {}",
"parallelDownloads": "Использовать параллельные загрузки",
"useShizuku": "Использовать Shizuku или Sui для установки",
"shizukuBinderNotFound": "Совместимая служба Shizuku не найдена, возможно, она не запущена",
"shizukuBinderNotFound": "Совместимый сервис Shizuku не найден, возможно он не запущен",
"shizukuOld": "Устаревшая версия Shizuku (<11), обновите",
"shizukuOldAndroidWithADB": "Shizuku работает на Android < 8.1 с ADB, обновите Android или используйте Sui",
"shizukuPretendToBeGooglePlay": "Указывать Google Play как источник установки (если используется Shizuku)",
@@ -331,10 +330,6 @@
"documentationLinksNote": "На странице Obtainium в GitHub, ссылка на которую приведена ниже, содержатся ссылки на видео, статьи, обсуждения и другие ресурсы, которые помогут вам понять, как пользоваться приложением.",
"batteryOptimizationNote": "Обратите внимание, что фоновая загрузка может работать более надёжно, если отключить оптимизацию батареи ОС для Obtainium.",
"fileDeletionError": "Не удалось удалить файл (попробуйте удалить его вручную, а затем повторите попытку): «{}»",
"foregroundService": "Приоритетная служба Obtainium",
"foregroundServiceExplanation": "Использовать приоритетную службу для проверки обновлений (надёжнее, энергозатратнее)",
"fgServiceNotice": "Это уведомление необходимо для фоновой проверки обновлений (оно может быть скрыто в настройках ОС)",
"excludeSecrets": "Исключить секреты",
"removeAppQuestion": {
"one": "Удалить приложение?",
"other": "Удалить приложения?"
@@ -350,6 +345,7 @@
"other": "При проверке обновлений в фоновом режиме возникла ошибка {}, повторная проверка будет через {} минут"
},
"bgCheckFoundUpdatesWillNotifyIfNeeded": {
"one": "При проверке в фоновом режиме было обнаружено {} обновление — пользователь будет уведомлен по необходимости",
"one": "При проверке в фоновом режиме было обнаружено {} обновления — пользователь будет уведомлен по необходимости",
"other": "При проверке в фоновом режиме было обнаружено {} обновлений — пользователь будет уведомлен по необходимости"
},

View File

@@ -16,11 +16,10 @@ const neverAutoTranslate = {
placeholder: ['pl'],
importExport: ['fr'],
url: ['fr'],
vivoAppStore: ['cs', 'ja', 'ko', 'vi'],
vivoAppStore: ['cs', 'ja', 'ko'],
coolapk: ['ja'],
obtainiumImport: ['nl'],
appLogs: ['nl'],
apks: ['vi'],
tencentAppStore: ['*']
}

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Versionskorrigering inaktiverat (plugin verkar inte fungera)",
"unknown": "Okänd",
"none": "Ingen",
"all": "Alla",
"never": "Aldrig",
"latestVersionX": "Senaste Version: {}",
"installedVersionX": "Installerad Version: {}",
@@ -331,10 +330,6 @@
"documentationLinksNote": "Obtainium GitHub-sidan som länkas nedan innehåller länkar till videor, artiklar, diskussioner och andra resurser som hjälper dig att förstå hur du använder appen.",
"batteryOptimizationNote": "Observera att nedladdningar i bakgrunden kan fungera mer tillförlitligt om du inaktiverar OS-batterioptimeringar för Obtainium.",
"fileDeletionError": "Misslyckades med att radera filen (försök radera den manuellt och försök sedan igen): \"{}\"",
"foregroundService": "Obtainium förgrundstjänst",
"foregroundServiceExplanation": "Använd en förgrundstjänst för uppdateringskontroll (mer tillförlitlig, förbrukar mer ström)",
"fgServiceNotice": "Detta meddelande krävs för bakgrundsuppdateringskontroll (det kan döljas i OS-inställningarna)",
"excludeSecrets": "Utesluta hemligheter",
"removeAppQuestion": {
"one": "Ta Bort App?",
"other": "Ta Bort Appar?"
@@ -360,16 +355,16 @@
"other": "{} URL:er"
},
"minute": {
"one": "{} minut",
"other": "{} minuter"
"one": "{} Minut",
"other": "{} Minuter"
},
"hour": {
"one": "{} timme",
"other": "{} timmar"
"one": "{} Timme",
"other": "{} Timmar"
},
"day": {
"one": "{} dag",
"other": "{} dagar"
"one": "{} Dag",
"other": "{} Dagar"
},
"clearedNLogsBeforeXAfterY": {
"one": "Rensade {n} logg (före = {before}, efter = {after})",

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Sürüm düzeltme devre dışı bırakıldı (eklenti çalışmıyor gibi görünüyor)",
"unknown": "Bilinmiyor",
"none": "Hiçbiri",
"all": "Tümü",
"never": "Asla",
"latestVersionX": "En Son Sürüm: {}",
"installedVersionX": "Yüklenen Sürüm: {}",
@@ -331,10 +330,6 @@
"documentationLinksNote": "Aşağıda bağlantısı verilen Obtainium GitHub sayfası, uygulamayı nasıl kullanacağınızı anlamanıza yardımcı olacak videolara, makalelere, tartışmalara ve diğer kaynaklara bağlantılar içerir.",
"batteryOptimizationNote": "Obtainium için işletim sistemi pil optimizasyonlarını devre dışı bırakırsanız arka planda indirmelerin daha güvenilir şekilde çalışabileceğini unutmayın.",
"fileDeletionError": "Dosya silinemedi (elle silmeyi deneyin ve sonra tekrar deneyin): \"{}\"",
"foregroundService": "Obtainium ön plan hizmeti",
"foregroundServiceExplanation": "Güncelleme denetimi için bir ön plan hizmeti kullanın (daha güvenilir, daha fazla güç tüketir)",
"fgServiceNotice": "Bu bildirim arka planda güncelleme kontrolü için gereklidir (işletim sistemi ayarlarından gizlenebilir)",
"excludeSecrets": "Sırları hariç tut",
"removeAppQuestion": {
"one": "Uygulamayı Kaldır?",
"other": "Uygulamaları Kaldır?"
@@ -360,16 +355,16 @@
"other": "{} URL"
},
"minute": {
"one": "{} dakika",
"other": "{} dakika"
"one": "{} Dakika",
"other": "{} Dakika"
},
"hour": {
"one": "{} saat",
"other": "{} saat"
"one": "{} Saat",
"other": "{} Saat"
},
"day": {
"one": "{} gün",
"other": "{} gün"
"one": "{} Gün",
"other": "{} Gün"
},
"clearedNLogsBeforeXAfterY": {
"one": "{n} log temizlendi (önce = {before}, sonra = {after})",

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Виправлення версії вимкнено (здається, плагін не працює)",
"unknown": "Невідомо",
"none": "Нічого",
"all": "Усе.",
"never": "Ніколи",
"latestVersionX": "Остання версія: {}",
"installedVersionX": "Встановлено: {}",
@@ -331,10 +330,6 @@
"documentationLinksNote": "Сторінка Obtainium на GitHub, посилання на яку наведено нижче, містить посилання на відео, статті, дискусії та інші ресурси, які допоможуть вам зрозуміти, як користуватися додатком.",
"batteryOptimizationNote": "Зауважте, що фонові завантаження можуть працювати надійніше, якщо ви вимкнете оптимізацію батареї ОС для Obtainium.",
"fileDeletionError": "Не вдалося видалити файл (спробуйте видалити його вручну, а потім спробуйте ще раз): \"{}\"",
"foregroundService": "Обслуговування переднього плану Obtainium",
"foregroundServiceExplanation": "Використовуйте службу переднього плану для перевірки оновлень (надійніша, споживає більше енергії)",
"fgServiceNotice": "Це сповіщення необхідне для фонової перевірки оновлень (його можна приховати в налаштуваннях ОС)",
"excludeSecrets": "Виключити секрети",
"removeAppQuestion": {
"one": "Видалити застосунок?",
"other": "Видалити застосунки?"

View File

@@ -113,7 +113,7 @@
"dark": "Tối",
"light": "Sáng",
"followSystem": "Theo hệ thống",
"followSystemThemeExplanation": "Việc áp dụng chủ đề hệ thống chỉ có thể thực hiện được thông qua việc sử dụng các ứng dụng của bên thứ ba.",
"followSystemThemeExplanation": "Following system theme is possible only by using third-party applications",
"useBlackTheme": "Nền đen",
"appSortBy": "Sắp xếp ứng dụng",
"authorName": "Tác giả",
@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "Tính năng sửa phiên bản bị vô hiệu hóa (plugin dường như không hoạt động)",
"unknown": "Không xác định",
"none": "Không",
"all": "Tất cả",
"never": "Không bao giờ",
"latestVersionX": "Phiên bản mới nhất: {}",
"installedVersionX": "Phiên bản đã cài đặt: {}",
@@ -212,7 +211,7 @@
"uninstallFromDevice": "Gỡ cài đặt khỏi thiết bị",
"onlyWorksWithNonVersionDetectApps": "Chỉ hoạt động với Ứng dụng đã tắt tính năng phát hiện phiên bản.",
"releaseDateAsVersion": "Sử dụng ngày phát hành làm phiên bản",
"releaseTitleAsVersion": "Sử dụng tiêu đề bản phát hành làm chuỗi phiên bản",
"releaseTitleAsVersion": "Use release title as version string",
"releaseDateAsVersionExplanation": "Chỉ nên sử dụng tùy chọn này cho Ứng dụng trong đó tính năng phát hiện phiên bản không hoạt động chính xác nhưng đã có ngày phát hành.",
"changes": "Thay đổi",
"releaseDate": "Ngày phát hành",
@@ -222,7 +221,7 @@
"standardVersionDetection": "Phát hiện phiên bản tiêu chuẩn",
"groupByCategory": "Nhóm theo danh mục",
"autoApkFilterByArch": "Cố gắng lọc APK theo kiến trúc CPU nếu có thể",
"autoLinkFilterByArch": "Cố gắng lọc các liên kết theo kiến trúc CPU nếu có thể.",
"autoLinkFilterByArch": "Attempt to filter links by CPU architecture if possible",
"overrideSource": "Ghi đè nguồn",
"dontShowAgain": "Đừng hiển thị thông tin này nữa",
"dontShowTrackOnlyWarnings": "Không hiển thị cảnh báo 'Chỉ theo dõi'",
@@ -258,7 +257,7 @@
"intermediateLink": "Liên kết trung gian",
"exemptFromBackgroundUpdates": "Miễn cập nhật nền (nếu được bật)",
"bgUpdatesOnWiFiOnly": "Tắt cập nhật nền khi không có Wi-Fi",
"bgUpdatesWhileChargingOnly": "Tắt cập nhật nền khi không sạc pin.",
"bgUpdatesWhileChargingOnly": "Disable background updates when not charging",
"autoSelectHighestVersionCode": "Tự động chọn APK mã phiên bản cao nhất",
"versionExtractionRegEx": "Trích xuất phiên bản RegEx",
"trimVersionString": "Trim Version String With RegEx",
@@ -296,7 +295,7 @@
"shizukuBinderNotFound": "Shizuku chưa khởi động",
"shizukuOld": "Phiên bản Shizuku lỗi thời (<11) - hãy cập nhật nó",
"shizukuOldAndroidWithADB": "Shizuku chạy trên Android < 8.1 với ADB - hãy cập nhật Android hoặc thay bằng Sui",
"shizukuPretendToBeGooglePlay": "Đặt Google Play làm nguồn cài đặt (nếu sử dụng Shizuku)",
"shizukuPretendToBeGooglePlay": "Set Google Play as the installation source (if Shizuku is used)",
"useSystemFont": "Sử dụng phông chữ hệ thống",
"useVersionCodeAsOSVersion": "Sử dụng Mã phiên bản ứng dụng làm phiên bản do hệ điều hành phát hiện",
"requestHeader": "Tiêu đề yêu cầu",
@@ -317,24 +316,20 @@
"wiki": "Trợ giúp/Wiki",
"crowdsourcedConfigsLabel": "Crowdsourced App Configurations (use at your own risk)",
"crowdsourcedConfigsShort": "Crowdsourced App Configurations",
"allowInsecure": "Cho phép các yêu cầu HTTP không an toàn",
"stayOneVersionBehind": "Luôn sử dụng phiên bản cũ hơn một phiên bản so với phiên bản mới nhất.",
"useFirstApkOfVersion": "Tự động chọn tệp APK đầu tiên trong danh sách nhiều tệp APK.",
"refreshBeforeDownload": "Cập nhật thông tin ứng dụng trước khi tải xuống",
"allowInsecure": "Allow insecure HTTP requests",
"stayOneVersionBehind": "Stay one version behind latest",
"useFirstApkOfVersion": "Auto-select first of multiple APKs",
"refreshBeforeDownload": "Refresh app details before download",
"tencentAppStore": "Tencent App Store",
"coolApk": "CoolApk",
"vivoAppStore": "vivo App Store (CN)",
"name": "Tên",
"name": "Name",
"smartname": "Name (Smart)",
"sortMethod": "Sort Method",
"welcome": "Chào mừng",
"documentationLinksNote": "Trang GitHub của Obtainium được liên kết bên dưới chứa các liên kết đến video, bài viết, thảo luận và các tài nguyên khác sẽ giúp bạn hiểu cách sử dụng ứng dụng.",
"welcome": "Welcome",
"documentationLinksNote": "The Obtainium GitHub page linked below contains links to videos, articles, discussions and other resources that will help you understand how to use the app.",
"batteryOptimizationNote": "Note that background downloads may work more reliably if you disable OS battery optimizations for Obtainium.",
"fileDeletionError": "Không thể xóa tệp (hãy thử xóa tệp thủ công rồi thử lại): \"{}\"",
"foregroundService": "Dịch vụ nền Obtainium",
"foregroundServiceExplanation": "Sử dụng dịch vụ nền trước để kiểm tra cập nhật (đáng tin cậy hơn, tiêu tốn nhiều pin hơn)",
"fgServiceNotice": "Thông báo này là bắt buộc để kiểm tra cập nhật nền (có thể ẩn trong cài đặt hệ điều hành).",
"excludeSecrets": "Loại trừ thông tin bí mật",
"fileDeletionError": "Failed to delete file (try deleting it manually then try again): \"{}\"",
"removeAppQuestion": {
"one": "Gỡ ứng dụng?",
"other": "Gỡ ứng dụng?"
@@ -360,15 +355,15 @@
"other": "{} URL"
},
"minute": {
"one": "{} phút",
"other": "{} phút"
"one": "{} Phút",
"other": "{} Phút"
},
"hour": {
"one": "{} giờ",
"other": "{} giờ"
"one": "{} Giờ",
"other": "{} Giờ"
},
"day": {
"one": "{} ngày",
"one": "{} Ngày",
"other": "{} ngày"
},
"clearedNLogsBeforeXAfterY": {

View File

@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "版本校正已停用(外掛程式似乎無法正常工作)",
"unknown": "未知",
"none": "無",
"all": "All",
"never": "從不",
"latestVersionX": "最新版本:{}",
"installedVersionX": "已安裝版本:{}",
@@ -331,10 +330,6 @@
"documentationLinksNote": "下方連結的 Obtainium GitHub 頁面包含影片、文章、討論及其他資源,能幫助你瞭解如何使用這款應用程式。",
"batteryOptimizationNote": "Note that background downloads may work more reliably if you disable OS battery optimizations for Obtainium.",
"fileDeletionError": "Failed to delete file (try deleting it manually then try again): \"{}\"",
"foregroundService": "Obtainium foreground service",
"foregroundServiceExplanation": "Use a foreground service for update checking (more reliable, consumes more power)",
"fgServiceNotice": "This notification is required for background update checking (it can be hidden in the OS settings)",
"excludeSecrets": "Exclude secrets",
"removeAppQuestion": {
"one": "移除應用程式?",
"other": "移除應用程式?"

View File

@@ -23,7 +23,7 @@
"dropdownNoOptsError": "错误:下拉菜单必须包含至少一个选项",
"colour": "配色",
"standard": "标准",
"custom": "自定义",
"custom": "定制",
"useMaterialYou": "使用 Material You",
"githubStarredRepos": "已星标的 GitHub 仓库",
"uname": "用户名",
@@ -50,7 +50,7 @@
"appsString": "应用列表",
"noApps": "无应用",
"noAppsForFilter": "没有符合条件的应用",
"byX": "开发者:{}",
"byX": "者:{}",
"percentProgress": "进度:{}%",
"pleaseWait": "请稍候",
"updateAvailable": "更新可用",
@@ -157,8 +157,8 @@
"appsRemovedNotifDescription": "当应用因加载出错而被删除时发送通知",
"xWasRemovedDueToErrorY": "“{}”由于以下错误被删除:{}",
"completeAppInstallation": "完成应用安装",
"obtainiumMustBeOpenToInstallApps": "必须启 Obtainium 才能安装应用",
"completeAppInstallationNotifDescription": "提示返回 Obtainium 以完成应用安装",
"obtainiumMustBeOpenToInstallApps": "必须启 Obtainium 才能安装应用",
"completeAppInstallationNotifDescription": "提示返回 Obtainium 以完成应用安装",
"checkingForUpdates": "正在检查更新",
"checkingForUpdatesNotifDescription": "检查更新时短暂显示的通知",
"pleaseAllowInstallPerm": "请授予 Obtainium 安装应用的权限",
@@ -167,7 +167,6 @@
"versionCorrectionDisabled": "禁用版本号更正(插件似乎未起作用)",
"unknown": "未知",
"none": "无",
"all": "全部",
"never": "从未",
"latestVersionX": "最新版本:{}",
"installedVersionX": "当前版本:{}",
@@ -200,7 +199,7 @@
"noCategory": "无类别",
"noCategories": "无类别",
"deleteCategoriesQuestion": "是否删除选中的类别?",
"categoryDeleteWarning": "被删除类别的应用将恢复为未分类状态。",
"categoryDeleteWarning": "被删除类别的应用将恢复为未分类状态。",
"addCategory": "添加类别",
"label": "标签",
"language": "语言",
@@ -212,7 +211,7 @@
"uninstallFromDevice": "从设备中卸载",
"onlyWorksWithNonVersionDetectApps": "仅适用于禁用版本检测的应用。",
"releaseDateAsVersion": "将发行日期作为版本号",
"releaseTitleAsVersion": "将发行标题作为版本字符串",
"releaseTitleAsVersion": "使用版本标题作为版本字符串",
"releaseDateAsVersionExplanation": "此选项应该仅用于无法进行版本检测但能够获取发行日期的应用。",
"changes": "更新日志",
"releaseDate": "发行日期",
@@ -221,8 +220,8 @@
"versionDetection": "版本检测",
"standardVersionDetection": "常规版本检测",
"groupByCategory": "按类别分组显示",
"autoApkFilterByArch": "尽可能按设备支持的 CPU 架构筛选 APK 文件",
"autoLinkFilterByArch": "尽可能按设备支持的 CPU 架构筛选链接",
"autoApkFilterByArch": "如果可能,尝试按设备支持的 CPU 架构筛选 APK 文件",
"autoLinkFilterByArch": "尽可能按 CPU 架构过滤链接",
"overrideSource": "覆盖来源",
"dontShowAgain": "不再显示",
"dontShowTrackOnlyWarnings": "忽略“仅追踪”模式警告",
@@ -250,7 +249,7 @@
"xWasPossiblyUpdatedToY": "已尝试将“{}”更新至 {}。",
"enableBackgroundUpdates": "启用全局后台更新",
"backgroundUpdateReqsExplanation": "后台更新未必适用于所有的应用。",
"backgroundUpdateLimitsExplanation": "只有在启 Obtainium 时才能确认是否安装成功。",
"backgroundUpdateLimitsExplanation": "只有在启 Obtainium 时才能确认安装是否成功。",
"verifyLatestTag": "验证“Latest”标签",
"intermediateLinkRegex": "筛选中转链接的正则表达式",
"filterByLinkText": "根据链接文本进行筛选",
@@ -258,12 +257,12 @@
"intermediateLink": "中转链接",
"exemptFromBackgroundUpdates": "禁用后台更新(仅此应用生效,即使已启用全局后台更新)",
"bgUpdatesOnWiFiOnly": "未连接 Wi-Fi 时禁用后台更新",
"bgUpdatesWhileChargingOnly": "充电时禁用后台更新",
"bgUpdatesWhileChargingOnly": "充电时禁用后台更新",
"autoSelectHighestVersionCode": "自动选择内部版本号最高的 APK 文件",
"versionExtractionRegEx": "提取版本号的正则表达式",
"trimVersionString": "修剪版本字符串的正则表达式",
"matchGroupToUseForX": "“{}”中引用的捕获组",
"matchGroupToUse": "“提取版本字符串的正则表达式”中引用的捕获组",
"trimVersionString": "使用 RegEx 修剪版本字符串",
"matchGroupToUseForX": "用于\"{}\"的匹配组",
"matchGroupToUse": "从上述匹配结果中引用的捕获组",
"highlightTouchTargets": "突出展示不明显的可交互区域",
"pickExportDir": "选择导出文件夹",
"autoExportOnChanges": "数据变更时自动导出",
@@ -315,33 +314,29 @@
"beforeNewInstallsShareToAppVerifier": "通过 AppVerifier 校验新应用(如果可用)",
"appVerifierInstructionToast": "分享至 AppVerifier完成后返回此处。",
"wiki": "帮助/Wiki",
"crowdsourcedConfigsLabel": "来自社区的应用配置(谨慎使用",
"crowdsourcedConfigsShort": "来自社区的应用配置",
"crowdsourcedConfigsLabel": "众包应用程序配置(使用风险自负",
"crowdsourcedConfigsShort": "众包应用程序配置",
"allowInsecure": "允许不安全的 HTTP 请求",
"stayOneVersionBehind": "始终延后一个版本进行更新",
"useFirstApkOfVersion": "存在多个 APK 文件时自动选择第一个",
"refreshBeforeDownload": "下载前刷新应用详情",
"stayOneVersionBehind": "比最新版本晚一个版本",
"useFirstApkOfVersion": "多个 APK 自动选择第一个",
"refreshBeforeDownload": "下载前刷新应用程序详细信息",
"tencentAppStore": "腾讯应用宝",
"coolApk": "酷安",
"vivoAppStore": "(中国)vivo应用商店",
"name": "发行名称",
"smartname": "发行名称(智能)",
"vivoAppStore": "vivo 应用商店(中国)",
"name": "名称",
"smartname": "姓名(智能)",
"sortMethod": "排序方法",
"welcome": "欢迎",
"documentationLinksNote": "下链接的 GitHub 页面包含关于 Obtainium 的视频、文章、讨论其他资源,可帮助您了解本应用的使用方法。",
"batteryOptimizationNote": "请注意,在设置中切换为“前台服务”,并/或关闭操作系统对 Obtainium 的电池优化,可能会让后台下载更稳定。",
"fileDeletionError": "删除文件失败(手动删除后再次尝试\"{}\"",
"foregroundService": "Obtainium 前台服务",
"foregroundServiceExplanation": "使用前台服务检查更新(更稳定,但也更耗电)",
"fgServiceNotice": "后台检查更新时需要此通知(可在操作系统设置中隐藏)",
"excludeSecrets": "排除机密",
"welcome": "欢迎光临",
"documentationLinksNote": "下链接的 Obtainium GitHub 页面包含视频、文章、讨论其他资源的链接,可帮助您了解如何使用该应用程序。",
"batteryOptimizationNote": "请注意,如果为 Obtainium 禁用操作系统电池优化功能,后台下载可能会更稳定。",
"fileDeletionError": "删除文件失败(尝试手动删除,然后再试一次\"{}\"",
"removeAppQuestion": {
"one": "是否删除应用?",
"other": "是否删除应用?"
},
"tooManyRequestsTryAgainInMinutes": {
"one": "请求过于频繁(API 速率限制)- 请在 {} 分钟后重试",
"other": "请求过于频繁(API 速率限制)- 请在 {} 分钟后重试"
"one": "API 请求过于频繁(速率限制)- 请在 {} 分钟后重试",
"other": "API 请求过于频繁(速率限制)- 请在 {} 分钟后重试"
},
"bgUpdateGotErrorRetryInMinutes": {
"one": "后台更新检查遇到了“{}”问题,将于 {} 分钟后重试",
@@ -372,27 +367,27 @@
"other": "{} 天"
},
"clearedNLogsBeforeXAfterY": {
"one": "清除了 {n} 日志(早于 {before}晚于 {after}",
"other": "清除了 {n} 日志(早于 {before}晚于 {after}"
"one": "清除了 {n} 日志({before} 之前{after} 之后",
"other": "清除了 {n} 日志({before} 之前{after} 之后"
},
"xAndNMoreUpdatesAvailable": {
"one": "“{}”和另外 1 个应用可以更新了。",
"other": "“{}”和另外 {} 个应用可以更新了。"
},
"xAndNMoreUpdatesInstalled": {
"one": "{}和另外 1 个应用已更新。",
"one": "{} 和另外 1 个应用已更新。",
"other": "“{}”和另外 {} 个应用已更新。"
},
"xAndNMoreUpdatesFailed": {
"one": "{}和另外 1 个应用更新失败。",
"other": "{}和另外 {} 个应用更新失败。"
"one": "{} 和另外 1 个应用更新失败。",
"other": "{} 和另外 {} 个应用更新失败。"
},
"xAndNMoreUpdatesPossiblyInstalled": {
"one": "已尝试更新“{}和另外 1 个应用。",
"other": "已尝试更新“{}”和另外 {} 个应用。"
"one": "{} 和另外 1 个应用已尝试更新。",
"other": "“{}”和另外 {} 个应用已尝试更新。"
},
"apk": {
"one": "{} 个 APK 文件",
"other": "{} 个 APK 文件"
"one": "{}APK",
"other": "{}APK"
}
}

View File

@@ -1,48 +0,0 @@
<p>Obtainium erlaubt Ihnen die Installation und Aktualisierung von Apps direkt von deren Veröffentlichungsseiten aus; Sie erhalten außerdem Benachrichtigungen, wenn neue Versionen verfügbar sind.</p>
<p>Lesen Sie das <a href="https://wiki.obtainium.imranr.dev/de/">Wiki</a></p>
<p>
<b>Derzeit unterstützte App-Quellen:</b>
</p>
<ul>
<li>
<p>Open Source Allgemein:</p>
<ul>
<li>GitHub</li>
<li>GitLab</li>
<li>Forgejo (Codeberg)</li>
<li>F-Droid</li>
<li>Third Party F-Droid Repos</li>
<li>IzzyOnDroid</li>
<li>SourceHut</li>
</ul>
</li>
<li>
<p>Andere Allgemein:</p>
<ul>
<li>APKPure</li>
<li>Aptoide</li>
<li>Uptodown</li>
<li>APKMirror (Track-Only)</li>
<li>Huawei AppGallery</li>
<li>Tencent App Store</li>
<li>CoolApk</li>
<li>vivo App Store (China)</li>
<li>Jenkins Jobs</li>
<li>RuStore</li>
</ul>
</li>
<li>
<p>Andere - App-Spezifisch:</p>
<ul>
<li>Telegram App</li>
<li>Neutron Code</li>
</ul>
</li>
<li><p>„HTML“ (Fallback): Jede andere URL, die eine HTML-Seite mit Links zu APK-Dateien zurückgibt.</p></li>
</ul>
<p>
<b>Einschränkungen:</b>
</p>
<p>
Bei einigen Quellen werden die Daten mit Hilfe von Web Scraping gesammelt und können aufgrund von Änderungen am Design der Website leicht beschädigt werden. In solchen Fällen sind zuverlässigere Methoden nicht verfügbar.
</p>

View File

@@ -1 +0,0 @@
… Android-App-Updates direkt von der Quelle erhalten

View File

@@ -1 +0,0 @@
Obtainium

View File

@@ -3,7 +3,7 @@ import 'package:obtainium/custom_errors.dart';
import 'package:obtainium/providers/source_provider.dart';
class Codeberg extends AppSource {
GitHub gh = GitHub(hostChanged: true);
GitHub gh = GitHub();
Codeberg() {
name = 'Forgejo (Codeberg)';
hosts = ['codeberg.org'];

View File

@@ -1,76 +0,0 @@
import 'dart:convert';
import 'package:html/parser.dart';
import 'package:obtainium/app_sources/html.dart';
import 'package:obtainium/custom_errors.dart';
import 'package:obtainium/providers/source_provider.dart';
class Farsroid extends AppSource {
Farsroid() {
hosts = ['farsroid.com'];
name = 'Farsroid';
}
@override
String sourceSpecificStandardizeURL(String url, {bool forSelection = false}) {
RegExp standardUrlRegEx = RegExp(
'^https?://([^\\.]+\\.)${getSourceRegex(hosts)}/[^/]+',
caseSensitive: false,
);
RegExpMatch? match = standardUrlRegEx.firstMatch(url);
if (match == null) {
throw InvalidURLError(name);
}
return match.group(0)!;
}
@override
Future<APKDetails> getLatestAPKDetails(
String standardUrl,
Map<String, dynamic> additionalSettings,
) async {
String appName = Uri.parse(standardUrl).pathSegments.last;
var res = await sourceRequest(standardUrl, additionalSettings);
if (res.statusCode != 200) {
throw getObtainiumHttpError(res);
}
var html = parse(res.body);
var dlinks = html.querySelectorAll('.download-links');
if (dlinks.isEmpty) {
throw NoReleasesError();
}
var postId = dlinks.first.attributes['data-post-id'] ?? '';
var version = dlinks.first.attributes['data-post-version'] ?? '';
if (postId.isEmpty || version.isEmpty) {
throw NoVersionError();
}
var res2 = await sourceRequest(
Uri.encodeFull(
'https://${hosts[0]}/api/download-box/?post_id=$postId&post_version=$version',
),
additionalSettings,
);
var html2 = jsonDecode(res2.body)?['data']?['content'] as String? ?? '';
if (html2.isEmpty) {
throw NoAPKError();
}
var apkLinks =
(await grabLinksCommon(html2, res2.request!.url, additionalSettings))
.map((l) => MapEntry(Uri.parse(l.key).pathSegments.last, l.key))
.where(
(l) => l.key.toLowerCase().startsWith(
'$appName-$version'.toLowerCase(),
),
)
.toList();
if (apkLinks.isEmpty) {
throw NoAPKError();
}
return APKDetails(version, apkLinks, AppNames(name, appName));
}
}

View File

@@ -112,17 +112,13 @@ class FDroid extends AppSource {
bool isGitHub = false;
bool isGitLab = false;
try {
GitHub(
hostChanged: true,
).sourceSpecificStandardizeURL(details.changeLog!);
GitHub().sourceSpecificStandardizeURL(details.changeLog!);
isGitHub = true;
} catch (e) {
//
}
try {
GitLab(
hostChanged: true,
).sourceSpecificStandardizeURL(details.changeLog!);
GitLab().sourceSpecificStandardizeURL(details.changeLog!);
isGitLab = true;
} catch (e) {
//

View File

@@ -13,11 +13,10 @@ import 'package:obtainium/providers/source_provider.dart';
import 'package:url_launcher/url_launcher_string.dart';
class GitHub extends AppSource {
GitHub({hostChanged = false}) {
GitHub() {
hosts = ['github.com'];
appIdInferIsOptional = true;
showReleaseDateAsVersionToggle = true;
this.hostChanged = hostChanged;
sourceConfigSettingFormItems = [
GeneratedFormTextField(

View File

@@ -12,11 +12,10 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:url_launcher/url_launcher_string.dart';
class GitLab extends AppSource {
GitLab({bool hostChanged = false}) {
GitLab() {
hosts = ['gitlab.com'];
canSearch = true;
showReleaseDateAsVersionToggle = true;
this.hostChanged = hostChanged;
sourceConfigSettingFormItems = [
GeneratedFormTextField(
@@ -145,7 +144,7 @@ class GitLab extends AppSource {
Map<String, dynamic> additionalSettings,
) async {
// Prepare request params
var names = GitHub(hostChanged: true).getAppNames(standardUrl);
var names = GitHub().getAppNames(standardUrl);
String projectUriComponent =
'${Uri.encodeComponent(names.author)}%2F${Uri.encodeComponent(names.name)}';
String? PAT = await getPATIfAny(hostChanged ? additionalSettings : {});

View File

@@ -113,23 +113,14 @@ List<MapEntry<String, String>> getLinksInLines(String lines) =>
// Given an HTTP response, grab some links according to the common additional settings
// (those that apply to intermediate and final steps)
Future<List<MapEntry<String, String>>> grabLinksCommonFromRes(
Future<List<MapEntry<String, String>>> grabLinksCommon(
Response res,
Map<String, dynamic> additionalSettings,
) async {
if (res.statusCode != 200) {
throw getObtainiumHttpError(res);
}
return grabLinksCommon(res.body, res.request!.url, additionalSettings);
}
// Note keys are URLs, values are filenames (opposite to the AppSource apkUrls)
Future<List<MapEntry<String, String>>> grabLinksCommon(
String rawBody,
Uri reqUrl,
Map<String, dynamic> additionalSettings,
) async {
var html = parse(rawBody);
var html = parse(res.body);
List<MapEntry<String, String>> allLinks = html
.querySelectorAll('a')
.map(
@@ -141,21 +132,21 @@ Future<List<MapEntry<String, String>>> grabLinksCommon(
),
)
.where((element) => element.key.isNotEmpty)
.map((e) => MapEntry(ensureAbsoluteUrl(e.key, reqUrl), e.value))
.map((e) => MapEntry(ensureAbsoluteUrl(e.key, res.request!.url), e.value))
.toList();
if (allLinks.isEmpty) {
allLinks = getLinksInLines(rawBody);
allLinks = getLinksInLines(res.body);
}
if (allLinks.isEmpty) {
// Getting desperate
try {
var jsonStrings = collectAllStringsFromJSONObject(jsonDecode(rawBody));
var jsonStrings = collectAllStringsFromJSONObject(jsonDecode(res.body));
allLinks = getLinksInLines(jsonStrings.join('\n'));
if (allLinks.isEmpty) {
allLinks = getLinksInLines(
jsonStrings
.map((l) {
return ensureAbsoluteUrl(l, reqUrl);
return ensureAbsoluteUrl(l, res.request!.url);
})
.join('\n'),
);
@@ -377,7 +368,7 @@ class HTML extends AppSource {
.where((l) => l['customLinkFilterRegex'].isNotEmpty == true)
.toList();
for (int i = 0; i < (additionalSettings['intermediateLink'].length); i++) {
var intLinks = await grabLinksCommonFromRes(
var intLinks = await grabLinksCommon(
await sourceRequest(currentUrl, additionalSettings),
additionalSettings['intermediateLink'][i],
);
@@ -401,7 +392,7 @@ class HTML extends AppSource {
.join('\n')
.split('\n')
.join('\\n');
links = await grabLinksCommonFromRes(res, additionalSettings);
links = await grabLinksCommon(res, additionalSettings);
links = filterApks(
links,
additionalSettings['apkFilterRegEx'],

View File

@@ -55,7 +55,7 @@ class Mullvad extends AppSource {
}
String? changeLog;
try {
changeLog = (await GitHub(hostChanged: true).getLatestAPKDetails(
changeLog = (await GitHub().getLatestAPKDetails(
'https://github.com/mullvad/mullvadvpn-app',
{'fallbackToOlderReleases': true},
)).changeLog;

View File

@@ -36,15 +36,13 @@ class RuStore extends AppSource {
return Uri.parse(standardUrl).pathSegments.last;
}
Future<dynamic> decodeJsonBody(Uint8List bytes) async {
Future<String> decodeString(String str) async {
try {
return jsonDecode((await CharsetDetector.autoDecode(bytes)).string);
return (await CharsetDetector.autoDecode(
Uint8List.fromList(str.codeUnits),
)).string;
} catch (e) {
try {
return jsonDecode(utf8.decode(bytes));
} catch (_) {
rethrow;
}
return str;
}
}
@@ -61,14 +59,14 @@ class RuStore extends AppSource {
if (res0.statusCode != 200) {
throw getObtainiumHttpError(res0);
}
var appDetails = (await decodeJsonBody(res0.bodyBytes))['body'];
var appDetails = jsonDecode(res0.body)['body'];
if (appDetails['appId'] == null) {
throw NoReleasesError();
}
String appName = appDetails['appName'] ?? tr('app');
String author = appDetails['companyName'] ?? name;
String? dateStr = appDetails['appVerUpdatedAt'];
String? dateStr = appDetails['updatedAt'];
String? version = appDetails['versionName'];
String? changeLog = appDetails['whatsNew'];
if (version == null) {
@@ -85,11 +83,15 @@ class RuStore extends AppSource {
followRedirects: false,
postBody: {"appId": appDetails['appId'], "firstInstall": true},
);
var downloadDetails = (await decodeJsonBody(res1.bodyBytes))['body'];
var downloadDetails = jsonDecode(res1.body)['body'];
if (res1.statusCode != 200 || downloadDetails['apkUrl'] == null) {
throw NoAPKError();
}
appName = await decodeString(appName);
author = await decodeString(author);
changeLog = changeLog != null ? await decodeString(changeLog) : null;
return APKDetails(
version,
getApkUrlsFromUrls([

View File

@@ -5,7 +5,6 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:obtainium/providers/logs_provider.dart';
import 'package:obtainium/providers/source_provider.dart';
import 'package:provider/provider.dart';
class ObtainiumError {
@@ -54,10 +53,7 @@ class UnsupportedURLError extends ObtainiumError {
}
class DowngradeError extends ObtainiumError {
DowngradeError(int currentVersionCode, int newVersionCode)
: super(
'${tr('cantInstallOlderVersion')} (versionCode $currentVersionCode$newVersionCode)',
);
DowngradeError() : super(tr('cantInstallOlderVersion'));
}
class InstallError extends ObtainiumError {
@@ -159,7 +155,6 @@ void showError(dynamic e, BuildContext context) {
}
String list2FriendlyString(List<String> list) {
var isUsingEnglish = isEnglish();
return list.length == 2
? '${list[0]} ${tr('and')} ${list[1]}'
: list
@@ -171,7 +166,7 @@ String list2FriendlyString(List<String> list) {
(e.key == list.length - 1
? ''
: e.key == list.length - 2
? '${isUsingEnglish ? ',' : ''} and '
? ' and '
: ', '),
)
.join('');

View File

@@ -12,7 +12,6 @@ import 'package:obtainium/providers/source_provider.dart';
import 'package:provider/provider.dart';
import 'package:dynamic_color/dynamic_color.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:background_fetch/background_fetch.dart';
import 'package:easy_localization/easy_localization.dart';
// ignore: implementation_imports
import 'package:easy_localization/src/easy_localization_controller.dart';
@@ -51,7 +50,6 @@ List<MapEntry<Locale, String>> supportedLocales = const [
MapEntry(Locale('ko'), '한국어'),
MapEntry(Locale('ca'), 'Català'),
MapEntry(Locale('ar'), 'العربية'),
MapEntry(Locale('ml'), 'മലയാളം'),
];
const fallbackLocale = Locale('en');
const localeDir = 'assets/translations';
@@ -86,19 +84,6 @@ Future<void> loadTranslations() async {
);
}
@pragma('vm:entry-point')
void backgroundFetchHeadlessTask(HeadlessTask task) async {
String taskId = task.taskId;
bool isTimeout = task.timeout;
if (isTimeout) {
print('BG update task timed out.');
BackgroundFetch.finish(taskId);
return;
}
await bgUpdateCheck(taskId, null);
BackgroundFetch.finish(taskId);
}
@pragma('vm:entry-point')
void startCallback() {
FlutterForegroundTask.setTaskHandler(MyTaskHandler());
@@ -166,7 +151,6 @@ void main() async {
),
),
);
BackgroundFetch.registerHeadlessTask(backgroundFetchHeadlessTask);
}
class Obtainium extends StatefulWidget {
@@ -182,9 +166,10 @@ class _ObtainiumState extends State<Obtainium> {
@override
void initState() {
super.initState();
initPlatformState();
// FlutterForegroundTask.addTaskDataCallback(onReceiveForegroundServiceData);
WidgetsBinding.instance.addPostFrameCallback((_) {
requestNonOptionalPermissions();
initForegroundService();
});
}
@@ -200,32 +185,28 @@ class _ObtainiumState extends State<Obtainium> {
}
void initForegroundService() {
// ignore: invalid_use_of_visible_for_testing_member
if (!FlutterForegroundTask.isInitialized) {
FlutterForegroundTask.init(
androidNotificationOptions: AndroidNotificationOptions(
channelId: 'bg_update',
channelName: tr('foregroundService'),
channelDescription: tr('foregroundService'),
onlyAlertOnce: true,
),
iosNotificationOptions: const IOSNotificationOptions(
showNotification: false,
playSound: false,
),
foregroundTaskOptions: ForegroundTaskOptions(
eventAction: ForegroundTaskEventAction.repeat(900000),
autoRunOnBoot: true,
autoRunOnMyPackageReplaced: true,
allowWakeLock: true,
allowWifiLock: true,
),
);
}
FlutterForegroundTask.init(
androidNotificationOptions: AndroidNotificationOptions(
channelId: 'bg_update',
channelName: tr('foregroundService'),
channelDescription: tr('foregroundService'),
onlyAlertOnce: true,
),
iosNotificationOptions: const IOSNotificationOptions(
showNotification: false,
playSound: false,
),
foregroundTaskOptions: ForegroundTaskOptions(
eventAction: ForegroundTaskEventAction.repeat(900000),
autoRunOnBoot: true,
autoRunOnMyPackageReplaced: true,
allowWakeLock: true,
allowWifiLock: true,
),
);
}
Future<ServiceRequestResult?> startForegroundService(bool restart) async {
initForegroundService();
if (await FlutterForegroundTask.isRunningService) {
if (restart) {
return FlutterForegroundTask.restartService();
@@ -262,31 +243,6 @@ class _ObtainiumState extends State<Obtainium> {
super.dispose();
}
Future<void> initPlatformState() async {
await BackgroundFetch.configure(
BackgroundFetchConfig(
minimumFetchInterval: 15,
stopOnTerminate: false,
startOnBoot: true,
enableHeadless: true,
requiresBatteryNotLow: false,
requiresCharging: false,
requiresStorageNotLow: false,
requiresDeviceIdle: false,
requiredNetworkType: NetworkType.ANY,
),
(String taskId) async {
await bgUpdateCheck(taskId, null);
BackgroundFetch.finish(taskId);
},
(String taskId) async {
context.read<LogsProvider>().add('BG update task timed out.');
BackgroundFetch.finish(taskId);
},
);
if (!mounted) return;
}
@override
Widget build(BuildContext context) {
SettingsProvider settingsProvider = context.watch<SettingsProvider>();
@@ -295,15 +251,8 @@ class _ObtainiumState extends State<Obtainium> {
NotificationsProvider notifs = context.read<NotificationsProvider>();
if (settingsProvider.updateInterval == 0) {
stopForegroundService();
BackgroundFetch.stop();
} else {
if (settingsProvider.useFGService) {
BackgroundFetch.stop();
startForegroundService(false);
} else {
stopForegroundService();
BackgroundFetch.start();
}
startForegroundService(false);
}
if (settingsProvider.prefs == null) {
settingsProvider.initializeSettings();

View File

@@ -312,10 +312,7 @@ class AddAppPageState extends State<AddAppPage> {
context: context,
builder: (BuildContext ctx) {
return SelectionModal(
title: tr(
'selectX',
args: [plural('source', 2).toLowerCase()],
),
title: tr('selectX', args: [plural('source', 2)]),
entries: sourceStrings,
selectedByDefault: true,
onlyOneSelectionAllowed: false,

View File

@@ -46,10 +46,7 @@ class _AppPageState extends State<AppPage> {
}
},
onNavigationRequest: (NavigationRequest request) =>
!(request.url.startsWith("http://") ||
request.url.startsWith("https://") ||
request.url.startsWith("ftp://") ||
request.url.startsWith("ftps://"))
request.url.startsWith("rustore://")
? NavigationDecision.prevent
: NavigationDecision.navigate,
),
@@ -232,10 +229,7 @@ class _AppPageState extends State<AppPage> {
: const EdgeInsetsDirectional.fromSTEB(0, 6, 0, 6),
margin: const EdgeInsetsDirectional.fromSTEB(0, 6, 0, 0),
child: Text(
tr(
'downloadX',
args: [lowerCaseIfEnglish(tr('releaseAsset'))],
),
tr('downloadX', args: [tr('releaseAsset').toLowerCase()]),
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.labelSmall!.copyWith(
decoration: TextDecoration.underline,

View File

@@ -1037,7 +1037,7 @@ class AppsPageState extends State<AppsPage> {
var exportJSON = encoder.convert(
appsProvider.generateExportJSON(
appIds: selectedApps.map((e) => e.id).toList(),
overrideExportSettings: 0,
overrideExportSettings: false,
),
);
String fn =
@@ -1072,10 +1072,7 @@ class AppsPageState extends State<AppsPage> {
Navigator.of(context).pop();
},
child: Text(
tr(
'downloadX',
args: [lowerCaseIfEnglish(tr('releaseAsset'))],
),
tr('downloadX', args: [tr('releaseAsset').toLowerCase()]),
),
),
const Divider(),

View File

@@ -14,6 +14,7 @@ import 'package:obtainium/pages/import_export.dart';
import 'package:obtainium/pages/settings.dart';
import 'package:obtainium/providers/apps_provider.dart';
import 'package:obtainium/providers/settings_provider.dart';
import 'package:obtainium/providers/source_provider.dart';
import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher_string.dart';
@@ -200,6 +201,14 @@ class _HomePageState extends State<HomePage> {
),
context,
);
await appsProvider
.checkUpdates(specificIds: result.key.map((e) => e.id).toList())
.catchError((e) {
if (e is Map && e['errors'] is MultiAppMultiError) {
showError(e['errors'].toString(), context);
}
return <App>[];
});
}
} else {
throw ObtainiumError(tr('unknown'));

View File

@@ -272,9 +272,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
showMessage(
tr(
'importedX',
args: [
plural('apps', selectedUrls.length).toLowerCase(),
],
args: [plural('apps', selectedUrls.length)],
),
context,
);
@@ -341,7 +339,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
showMessage(
tr(
'importedX',
args: [plural('apps', selectedUrls.length).toLowerCase()],
args: [plural('apps', selectedUrls.length)],
),
context,
);
@@ -396,7 +394,9 @@ class _ImportExportPageState extends State<ImportExportPage> {
Expanded(
child: TextButton(
style: outlineButtonStyle,
onPressed: importInProgress
onPressed:
appsProvider.apps.isEmpty ||
importInProgress
? null
: () {
runObtainiumExport(pickOnly: true);
@@ -412,7 +412,9 @@ class _ImportExportPageState extends State<ImportExportPage> {
child: TextButton(
style: outlineButtonStyle,
onPressed:
importInProgress || snapshot.data == null
appsProvider.apps.isEmpty ||
importInProgress ||
snapshot.data == null
? null
: runObtainiumExport,
child: Text(
@@ -455,17 +457,11 @@ class _ImportExportPageState extends State<ImportExportPage> {
),
],
[
GeneratedFormDropdown(
GeneratedFormSwitch(
'exportSettings',
[
MapEntry('0', tr('none')),
MapEntry('1', tr('excludeSecrets')),
MapEntry('2', tr('all')),
],
label: tr('includeSettings'),
defaultValue: settingsProvider
.exportSettings
.toString(),
defaultValue:
settingsProvider.exportSettings,
),
],
],
@@ -479,7 +475,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
}
if (value['exportSettings'] != null) {
settingsProvider.exportSettings =
int.parse(value['exportSettings']);
value['exportSettings'] == true;
}
}
},
@@ -501,7 +497,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
else
Column(
children: [
SizedBox(height: 32),
const Divider(height: 32),
Row(
children: [
Expanded(
@@ -516,11 +512,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
return SelectionModal(
title: tr(
'selectX',
args: [
tr(
'source',
).toLowerCase(),
],
args: [tr('source')],
),
entries: sourceStrings,
selectedByDefault: false,
@@ -545,7 +537,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
child: Text(
tr(
'searchX',
args: [lowerCaseIfEnglish(tr('source'))],
args: [tr('source').toLowerCase()],
),
),
),
@@ -712,12 +704,6 @@ class _SelectionModalState extends State<SelectionModal> {
}
}
void selectAll({bool deselect = false}) {
for (var e in entrySelections.keys) {
entrySelections[e] = !deselect;
}
}
@override
Widget build(BuildContext context) {
Map<MapEntry<String, List<String>>, bool> filteredEntrySelections = {};
@@ -739,32 +725,6 @@ class _SelectionModalState extends State<SelectionModal> {
}
});
}
getSelectAllButton() {
if (widget.onlyOneSelectionAllowed) {
return SizedBox.shrink();
}
var noneSelected = entrySelections.values.where((v) => v == true).isEmpty;
return noneSelected
? TextButton(
style: const ButtonStyle(visualDensity: VisualDensity.compact),
onPressed: () {
setState(() {
selectAll();
});
},
child: Text(tr('selectAll')),
)
: TextButton(
style: const ButtonStyle(visualDensity: VisualDensity.compact),
onPressed: () {
setState(() {
selectAll(deselect: true);
});
},
child: Text(tr('deselectX', args: [''])),
);
}
return AlertDialog(
scrollable: true,
title: Text(widget.title ?? tr('pick')),
@@ -934,7 +894,6 @@ class _SelectionModalState extends State<SelectionModal> {
],
),
actions: [
getSelectAllButton(),
TextButton(
onPressed: () {
Navigator.of(context).pop();

View File

@@ -138,7 +138,7 @@ class _SettingsPageState extends State<SettingsPage> {
ColorPickerType.wheel: tr('custom'),
},
title: Text(
tr('selectX', args: [tr('colour').toLowerCase()]),
tr('selectX', args: [tr('colour')]),
style: Theme.of(context).textTheme.titleLarge,
),
wheelDiameter: 192,
@@ -180,7 +180,7 @@ class _SettingsPageState extends State<SettingsPage> {
var colorPicker = ListTile(
dense: true,
contentPadding: EdgeInsets.zero,
title: Text(tr('selectX', args: [tr('colour').toLowerCase()])),
title: Text(tr('selectX', args: [tr('colour')])),
subtitle: Text(
"${ColorTools.nameThatColor(settingsProvider.themeColor)} "
"(${ColorTools.materialNameAndCode(settingsProvider.themeColor, colorSwatchNameMap: colorsNameMap)})",
@@ -381,27 +381,6 @@ class _SettingsPageState extends State<SettingsPage> {
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Flexible(
child: Text(
tr(
'foregroundServiceExplanation',
),
),
),
Switch(
value:
settingsProvider.useFGService,
onChanged: (value) {
settingsProvider.useFGService =
value;
},
),
],
),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,

View File

@@ -916,7 +916,7 @@ class AppsProvider with ChangeNotifier {
if (appInfo != null &&
newInfo.versionCode! < appInfo.versionCode! &&
!(await canDowngradeApps())) {
throw DowngradeError(appInfo.versionCode!, newInfo.versionCode!);
throw DowngradeError();
}
if (needsBGWorkaround) {
// The below 'await' will never return if we are in a background process
@@ -1025,19 +1025,13 @@ class AppsProvider with ChangeNotifier {
);
}
getHost(String url) {
if (url == 'placeholder') {
return null;
}
var temp = Uri.parse(url).host.split('.');
return temp.sublist(temp.length - 2).join('.');
}
// If the picked APK comes from an origin different from the source, get user confirmation (if context provided)
if (appFileUrl != null &&
![
getHost(app.url),
'placeholder',
].contains(getHost(appFileUrl.value)) &&
getHost(appFileUrl.value) != getHost(app.url) &&
context != null) {
if (!(settingsProvider.hideAPKOriginWarning) &&
await showDialog(
@@ -1083,9 +1077,7 @@ class AppsProvider with ChangeNotifier {
MapEntry<String, String>? apkUrl;
var trackOnly = apps[id]!.app.additionalSettings['trackOnly'] == true;
var refreshBeforeDownload =
apps[id]!.app.additionalSettings['refreshBeforeDownload'] == true ||
apps[id]!.app.apkUrls.isNotEmpty &&
apps[id]!.app.apkUrls.first.value == 'placeholder';
apps[id]!.app.additionalSettings['refreshBeforeDownload'] == true;
if (refreshBeforeDownload) {
await checkUpdate(apps[id]!.app.id);
}
@@ -1129,7 +1121,6 @@ class AppsProvider with ChangeNotifier {
obtainiumId,
strB: obtainiumTempId,
);
appsToInstall = moveStrToEnd(appsToInstall, '$obtainiumId.fdroid');
Future<void> installFn(
String id,
@@ -1309,8 +1300,7 @@ class AppsProvider with ChangeNotifier {
}
MapEntry<String, String>? fileUrl;
var refreshBeforeDownload =
apps[id]!.app.additionalSettings['refreshBeforeDownload'] == true ||
apps[id]!.app.apkUrls.first.value == 'placeholder';
apps[id]!.app.additionalSettings['refreshBeforeDownload'] == true;
if (refreshBeforeDownload) {
await checkUpdate(apps[id]!.app.id);
}
@@ -1974,7 +1964,7 @@ class AppsProvider with ChangeNotifier {
Map<String, dynamic> generateExportJSON({
List<String>? appIds,
int? overrideExportSettings,
bool? overrideExportSettings,
}) {
Map<String, dynamic> finalExport = {};
finalExport['apps'] = apps.values
@@ -1987,18 +1977,15 @@ class AppsProvider with ChangeNotifier {
})
.map((e) => e.app.toJson())
.toList();
int shouldExportSettings = settingsProvider.exportSettings;
bool shouldExportSettings = settingsProvider.exportSettings;
if (overrideExportSettings != null) {
shouldExportSettings = overrideExportSettings;
}
if (shouldExportSettings > 0) {
var settingsValueKeys = settingsProvider.prefs?.getKeys();
if (shouldExportSettings < 2) {
settingsValueKeys?.removeWhere((k) => k.endsWith('-creds'));
}
if (shouldExportSettings) {
finalExport['settings'] = Map<String, Object?>.fromEntries(
(settingsValueKeys
?.map((key) => MapEntry(key, settingsProvider.prefs?.get(key)))
(settingsProvider.prefs
?.getKeys()
.map((key) => MapEntry(key, settingsProvider.prefs?.get(key)))
.toList()) ??
[],
);
@@ -2165,7 +2152,7 @@ class _AppFilePickerState extends State<AppFilePicker> {
scrollable: true,
title: Text(
widget.pickAnyAsset
? tr('selectX', args: [lowerCaseIfEnglish(tr('releaseAsset'))])
? tr('selectX', args: [tr('releaseAsset').toLowerCase()])
: tr('pickAnAPK'),
),
content: Column(
@@ -2285,7 +2272,7 @@ class _APKOriginWarningDialogState extends State<APKOriginWarningDialog> {
///
Future<void> bgUpdateCheck(String taskId, Map<String, dynamic>? params) async {
// ignore: avoid_print
print('BG task started $taskId: ${params.toString()}');
print('Started $taskId: ${params.toString()}');
WidgetsFlutterBinding.ensureInitialized();
await EasyLocalization.ensureInitialized();
await loadTranslations();
@@ -2454,14 +2441,10 @@ Future<void> bgUpdateCheck(String taskId, Map<String, dynamic>? params) async {
// Filter out updates that will be installed silently (the rest go into toNotify)
for (var i = 0; i < updates.length; i++) {
var canInstallSilently = await appsProvider.canInstallSilently(
updates[i],
);
if (networkRestricted || chargingRestricted || !canInstallSilently) {
if (networkRestricted ||
chargingRestricted ||
!(await appsProvider.canInstallSilently(updates[i]))) {
if (updates[i].additionalSettings['skipUpdateNotifications'] != true) {
logs.add(
'BG update task notifying for ${updates[i].id} (networkRestricted $networkRestricted, chargingRestricted: $chargingRestricted, canInstallSilently: $canInstallSilently).',
);
toNotify.add(updates[i]);
}
}
@@ -2487,7 +2470,7 @@ Future<void> bgUpdateCheck(String taskId, Map<String, dynamic>? params) async {
logs.add('BG update task: Done checking for updates.');
if (toRetry.isNotEmpty) {
logs.add(
'BG update task $taskId: Will retry in $retryAfterXSeconds seconds (${toRetry.length} to retry, ${toInstall.length} to install).',
'BG update task $taskId: Will retry in $retryAfterXSeconds seconds.',
);
return await bgUpdateCheck(taskId, {
'toCheck': toRetry
@@ -2499,9 +2482,7 @@ Future<void> bgUpdateCheck(String taskId, Map<String, dynamic>? params) async {
});
} else {
// If there are no more update checks, call the function in install mode
logs.add(
'BG update task: Done checking for updates (${toRetry.length} to retry, ${toInstall.length} to install).',
);
logs.add('BG update task: Done checking for updates.');
return await bgUpdateCheck(taskId, {
'toCheck': [],
'toInstall': toInstall
@@ -2512,7 +2493,6 @@ Future<void> bgUpdateCheck(String taskId, Map<String, dynamic>? params) async {
} else {
// In install mode...
// If you haven't explicitly been given updates to install, grab all available silent updates
logs.add('BG install task: Started (${toInstall.length}).');
if (toInstall.isEmpty && !networkRestricted && !chargingRestricted) {
var temp = appsProvider.findExistingUpdates(installedOnly: true);
for (var i = 0; i < temp.length; i++) {
@@ -2524,10 +2504,8 @@ Future<void> bgUpdateCheck(String taskId, Map<String, dynamic>? params) async {
}
}
if (toInstall.isNotEmpty) {
var tempObtArr = toInstall.where(
(element) =>
element.key == obtainiumId || element.key == '$obtainiumId.fdroid',
);
logs.add('BG install task: Started (${toInstall.length}).');
var tempObtArr = toInstall.where((element) => element.key == obtainiumId);
if (tempObtArr.isNotEmpty) {
// Move obtainium to the end of the list as it must always install last
var obt = tempObtArr.first;

View File

@@ -453,19 +453,12 @@ class SettingsProvider with ChangeNotifier {
notifyListeners();
}
int get exportSettings {
try {
return prefs?.getInt('exportSettings') ??
1; // 0 for no, 1 for yes but no secrets, 2 for everything
} catch (e) {
var val = prefs?.getBool('exportSettings') == true ? 1 : 0;
prefs?.setInt('exportSettings', val);
return val;
}
bool get exportSettings {
return prefs?.getBool('exportSettings') ?? false;
}
set exportSettings(int val) {
prefs?.setInt('exportSettings', val > 2 || val < 0 ? 1 : val);
set exportSettings(bool val) {
prefs?.setBool('exportSettings', val);
notifyListeners();
}
@@ -505,13 +498,4 @@ class SettingsProvider with ChangeNotifier {
prefs?.setBool('shizukuPretendToBeGooglePlay', val);
notifyListeners();
}
bool get useFGService {
return prefs?.getBool('useFGService') ?? false;
}
set useFGService(bool val) {
prefs?.setBool('useFGService', val);
notifyListeners();
}
}

View File

@@ -16,7 +16,6 @@ import 'package:obtainium/app_sources/aptoide.dart';
import 'package:obtainium/app_sources/codeberg.dart';
import 'package:obtainium/app_sources/coolapk.dart';
import 'package:obtainium/app_sources/directAPKLink.dart';
import 'package:obtainium/app_sources/farsroid.dart';
import 'package:obtainium/app_sources/fdroid.dart';
import 'package:obtainium/app_sources/fdroidrepo.dart';
import 'package:obtainium/app_sources/github.dart';
@@ -64,13 +63,11 @@ class APKDetails {
});
}
List<List<String>> stringMapListTo2DList(
List<MapEntry<String, String>> mapList,
) => mapList.map((e) => [e.key, e.value]).toList();
List<List<String>> stringMapListTo2DList(List<MapEntry<String, String>> mapList) =>
mapList.map((e) => [e.key, e.value]).toList();
List<MapEntry<String, String>> assumed2DlistToStringMapList(
List<dynamic> arr,
) => arr.map((e) => MapEntry(e[0] as String, e[1] as String)).toList();
List<MapEntry<String, String>> assumed2DlistToStringMapList(List<dynamic> arr) =>
arr.map((e) => MapEntry(e[0] as String, e[1] as String)).toList();
// App JSON schema has changed multiple times over the many versions of Obtainium
// This function takes an App JSON and modifies it if needed to conform to the latest (current) version
@@ -1052,9 +1049,6 @@ List<MapEntry<String, String>> filterApks(
return apkUrls;
}
bool isEnglish() => tr('and') == 'and'; // Quick hack, find a better way
String lowerCaseIfEnglish(String str) => isEnglish() ? str.toLowerCase() : str;
bool isVersionPseudo(App app) =>
app.additionalSettings['trackOnly'] == true ||
(app.installedVersion != null &&
@@ -1080,7 +1074,6 @@ class SourceProvider {
Jenkins(),
APKMirror(),
RuStore(),
Farsroid(),
TelegramApp(),
NeutronCode(),
DirectAPKLink(),

View File

@@ -96,10 +96,10 @@ packages:
dependency: "direct main"
description:
name: background_fetch
sha256: e767745c31f71660063985c982497995d0a71755d3f1b0c8e8c96988d64d3003
sha256: "442e82f508708be89fd0cc7e1dc3b27bc7c6c8c39a47967ccb7ed1c57b9108b5"
url: "https://pub.dev"
source: hosted
version: "1.4.0"
version: "1.3.8"
battery_plus:
dependency: "direct main"
description:
@@ -240,10 +240,10 @@ packages:
dependency: "direct main"
description:
name: easy_localization
sha256: "2ccdf9db8fe4d9c5a75c122e6275674508fd0f0d49c827354967b8afcc56bbed"
sha256: "0f5239c7b8ab06c66440cfb0e9aa4b4640429c6668d5a42fe389c5de42220b12"
url: "https://pub.dev"
source: hosted
version: "3.0.8"
version: "3.0.7+1"
easy_logger:
dependency: transitive
description:
@@ -288,10 +288,10 @@ packages:
dependency: "direct main"
description:
name: file_picker
sha256: "13ba4e627ef24503a465d1d61b32596ce10eb6b8903678d362a528f9939b4aa8"
sha256: ef9908739bdd9c476353d6adff72e88fd00c625f5b959ae23f7567bd5137db0a
url: "https://pub.dev"
source: hosted
version: "10.2.1"
version: "10.2.0"
fixnum:
dependency: transitive
description:
@@ -341,18 +341,18 @@ packages:
dependency: transitive
description:
name: flutter_charset_detector_android
sha256: "617345b0f78ad56c2633ea6132e57c2e374f6970792afbe9743237f683eeae8e"
sha256: "443145e8fc8515b3b32aee375691e40dd59197a86a2ae153166bc88c8200d83b"
url: "https://pub.dev"
source: hosted
version: "3.1.1"
version: "3.0.0"
flutter_charset_detector_darwin:
dependency: transitive
description:
name: flutter_charset_detector_darwin
sha256: "8cf51c3e16c2fb4ec4e309f16f6046a0ddf1ff57d1b6b696410d077a9ffbfb15"
sha256: daac20390275efb92fbb14350fe11286c5e29c7b80d6b0867f52d760f0d69763
url: "https://pub.dev"
source: hosted
version: "1.2.1"
version: "1.1.0"
flutter_charset_detector_platform_interface:
dependency: transitive
description:
@@ -716,10 +716,10 @@ packages:
dependency: "direct main"
description:
name: permission_handler
sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1
sha256: "2d070d8684b68efb580a5997eb62f675e8a885ef0be6e754fb9ef489c177470f"
url: "https://pub.dev"
source: hosted
version: "12.0.1"
version: "12.0.0+1"
permission_handler_android:
dependency: transitive
description:
@@ -955,10 +955,10 @@ packages:
dependency: transitive
description:
name: sqflite_common
sha256: "6ef422a4525ecc601db6c0a2233ff448c731307906e92cabc9ba292afaae16a6"
sha256: "84731e8bfd8303a3389903e01fb2141b6e59b5973cacbb0929021df08dddbe8b"
url: "https://pub.dev"
source: hosted
version: "2.5.6"
version: "2.5.5"
sqflite_darwin:
dependency: transitive
description:
@@ -1051,10 +1051,10 @@ packages:
dependency: "direct main"
description:
name: url_launcher
sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8
sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603"
url: "https://pub.dev"
source: hosted
version: "6.3.2"
version: "6.3.1"
url_launcher_android:
dependency: transitive
description:
@@ -1155,26 +1155,26 @@ packages:
dependency: transitive
description:
name: webview_flutter_android
sha256: "9573ad97890d199ac3ab32399aa33a5412163b37feb573eb5b0a76b35e9ffe41"
sha256: f6e6afef6e234801da77170f7a1847ded8450778caf2fe13979d140484be3678
url: "https://pub.dev"
source: hosted
version: "4.8.2"
version: "4.7.0"
webview_flutter_platform_interface:
dependency: transitive
description:
name: webview_flutter_platform_interface
sha256: "63d26ee3aca7256a83ccb576a50272edd7cfc80573a4305caa98985feb493ee0"
sha256: f0dc2dc3a2b1e3a6abdd6801b9355ebfeb3b8f6cde6b9dc7c9235909c4a1f147
url: "https://pub.dev"
source: hosted
version: "2.14.0"
version: "2.13.1"
webview_flutter_wkwebview:
dependency: transitive
description:
name: webview_flutter_wkwebview
sha256: "71523b9048cf510cfa1fd4e0a3fa5e476a66e0884d5df51d59d5023dba237107"
sha256: a3d461fe3467014e05f3ac4962e5fdde2a4bf44c561cb53e9ae5c586600fdbc3
url: "https://pub.dev"
source: hosted
version: "3.22.1"
version: "3.22.0"
win32:
dependency: transitive
description:

View File

@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.2.3+2319
version: 1.1.58+2315
environment:
sdk: ^3.8.1