mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-08-16 19:58:09 +02:00
Compare commits
75 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
e8f9159571 | ||
|
d8cd17c858 | ||
|
01f423a741 | ||
|
77e764e76a | ||
|
a37509c5a3 | ||
|
cb9ac4cba0 | ||
|
9524148de7 | ||
|
d6d3623c63 | ||
|
58c1bdbd00 | ||
|
f2b7b196a8 | ||
|
73746bcb52 | ||
|
7262750124 | ||
|
851c228e76 | ||
|
aa3b874733 | ||
|
04c4f0c291 | ||
|
8eedafe4cf | ||
|
6d136808e0 | ||
|
0f726889c8 | ||
|
3e73156f78 | ||
|
89d853a948 | ||
|
8f9978aadd | ||
|
8204a16e90 | ||
|
75430573f3 | ||
|
f71e97f6e2 | ||
|
93380f4229 | ||
|
6495987248 | ||
|
69904265c9 | ||
|
85e05b75ee | ||
|
c5b077e395 | ||
|
bafd27f1e5 | ||
|
ae537758aa | ||
|
6c995df40a | ||
|
14d1c71d7e | ||
|
e2e6038291 | ||
|
cb18cd360c | ||
|
b203934f10 | ||
|
64e49a1129 | ||
|
bc8f4bfe70 | ||
|
4f3b517aaf | ||
|
71bf23a110 | ||
|
544a1d6711 | ||
|
d43370e7f5 | ||
|
c3c0525ab6 | ||
|
4680401808 | ||
|
48a8ebabbb | ||
|
a3f0805b8e | ||
|
cdca4f765c | ||
|
84a1ec492c | ||
|
ae69931896 | ||
|
a6f348c334 | ||
|
f17d729a2a | ||
|
dcdf7046a6 | ||
|
9ebbb43dc0 | ||
|
58c24ec6de | ||
|
3636e287fd | ||
|
f2c80e38dc | ||
|
4490da37c9 | ||
|
e9a24a46c7 | ||
|
660fc2b9fe | ||
|
19a4489d4f | ||
|
98e4ae1921 | ||
|
cdff0613b3 | ||
|
0f803b963f | ||
|
b9fffed625 | ||
|
918091ba54 | ||
|
09d729261c | ||
|
e50e9e40fc | ||
|
3f1ca3b957 | ||
|
8d95da46b1 | ||
|
a11de53c97 | ||
|
cf088f15ae | ||
|
6055ae6a69 | ||
|
2223616f2a | ||
|
dab5e4246b | ||
|
6e631684fb |
2
.flutter
2
.flutter
Submodule .flutter updated: 6fba2447e9...edada7c56e
5
.gitignore
vendored
5
.gitignore
vendored
@@ -11,7 +11,8 @@
|
||||
.svn/
|
||||
.swiftpm/
|
||||
migrate_working_dir/
|
||||
.vscode/
|
||||
.vscode/*
|
||||
!.vscode/launch.json
|
||||
|
||||
# IntelliJ related
|
||||
*.iml
|
||||
@@ -46,6 +47,8 @@ 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
Normal file
28
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
// 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" ]
|
||||
}
|
||||
]
|
||||
}
|
@@ -33,6 +33,7 @@ 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:
|
||||
|
@@ -61,6 +61,13 @@
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:permission="android.permission.INTERACT_ACROSS_USERS_FULL" />
|
||||
<service
|
||||
android:name="com.pravera.flutter_foreground_task.service.ForegroundService"
|
||||
android:foregroundServiceType="specialUse"
|
||||
android:exported="false" />
|
||||
<meta-data
|
||||
android:name="dev.imranr.obtainium.service.NOTIFICATION_ICON"
|
||||
android:resource="@drawable/ic_notification" />
|
||||
</application>
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||
@@ -74,6 +81,8 @@
|
||||
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="29" />
|
||||
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
|
||||
<!-- Required to query activities that can process text, see:
|
||||
https://developer.android.com/training/package-visibility and
|
||||
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"versionCorrectionDisabled": "تعطيل تصحيح الإصدار (يبدو أن الملحق لا يعمل)",
|
||||
"unknown": "غير معروف",
|
||||
"none": "لا شيء",
|
||||
"all": "الكل",
|
||||
"never": "أبدًا",
|
||||
"latestVersionX": "الأحدث: {}",
|
||||
"installedVersionX": "المثبت: {}",
|
||||
@@ -330,6 +331,10 @@
|
||||
"documentationLinksNote": "تحتوي صفحة Obtainium على GitHub المرتبطة أدناه على روابط لمقاطع فيديو، مقالات، مناقشات وموارد أخرى ستساعدك على فهم كيفية استخدام التطبيق.",
|
||||
"batteryOptimizationNote": "لاحظ أن التنزيلات في الخلفية قد تعمل بشكل أكثر موثوقية إذا قمت بتعطيل تحسينات بطارية النظام لـ Obtainium.",
|
||||
"fileDeletionError": "فشل حذف الملف (حاول حذفه يدويًا ثم حاول مرة أخرى): \"{}\"",
|
||||
"foregroundService": "الحصول على خدمة الحصول على خدمة المقدمة",
|
||||
"foregroundServiceExplanation": "استخدام خدمة مقدمة للتحقق من التحديثات (أكثر موثوقية وتستهلك طاقة أكبر)",
|
||||
"fgServiceNotice": "هذا الإشعار مطلوب للتحقق من التحديث في الخلفية (يمكن إخفاؤه في إعدادات نظام التشغيل)",
|
||||
"excludeSecrets": "استبعاد الأسرار",
|
||||
"removeAppQuestion": {
|
||||
"one": "إزالة التطبيق؟",
|
||||
"other": "إزالة التطبيقات؟"
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"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: {}",
|
||||
@@ -327,9 +328,13 @@
|
||||
"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?"
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"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: {}",
|
||||
@@ -318,11 +319,11 @@
|
||||
"crowdsourcedConfigsShort": "Configuració de les aplicacions crowdsourcing",
|
||||
"allowInsecure": "Permet les sol·licituds HTTP insegures",
|
||||
"stayOneVersionBehind": "Roman a la versió anterior a l'última",
|
||||
"useFirstApkOfVersion": "Auto-select first of multiple APKs",
|
||||
"useFirstApkOfVersion": "Tria automàticament la primera aplicació entre moltes",
|
||||
"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ó",
|
||||
@@ -330,6 +331,10 @@
|
||||
"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?"
|
||||
@@ -355,16 +360,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})",
|
||||
|
@@ -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": "Vyskytly se nějaké chyby",
|
||||
"someErrors": "Došlo k chybám",
|
||||
"unexpectedError": "Neočekávaná chyba",
|
||||
"ok": "Ok",
|
||||
"ok": "OK",
|
||||
"and": "a",
|
||||
"githubPATLabel": "GitHub Personal Access Token (zvyšuje limit rychlosti)",
|
||||
"includePrereleases": "Zahrnout předběžné verze",
|
||||
"githubPATLabel": "Osobní přístupový token GitHub (zvyšuje limit požadavků)",
|
||||
"includePrereleases": "Zahrnout předběžná vydání",
|
||||
"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": "(Požadované)",
|
||||
"dropdownNoOptsError": "ERROR: DROPDOWN MUSÍ MÍT AŽ JEDNU MOŽNOST",
|
||||
"colour": "Barva",
|
||||
"requiredInBrackets": "(vyžadováno)",
|
||||
"dropdownNoOptsError": "CHYBA: ROZBALOVACÍ NABÍDKA MUSÍ MÍT ALESPOŇ JEDNU MOŽNOST",
|
||||
"colour": "Barvu",
|
||||
"standard": "Standardní",
|
||||
"custom": "Vlastní",
|
||||
"useMaterialYou": "Použijte materiál, který jste",
|
||||
"githubStarredRepos": "GitHub označená hvězdičkou",
|
||||
"useMaterialYou": "Použít Material You",
|
||||
"githubStarredRepos": "Repozitáře na GitHubu 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 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.",
|
||||
"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.",
|
||||
"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 stopy)",
|
||||
"trackOnlyInBrackets": "(pouze sledování)",
|
||||
"searchableInBrackets": "(s možností vyhledávání)",
|
||||
"appsString": "Apky",
|
||||
"appsString": "Aplikace",
|
||||
"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": "{} deselected",
|
||||
"xWillBeRemovedButRemainInstalled": "{} bude odstraněn z Obtainium, ale zůstane nainstalován v zařízení.",
|
||||
"removeSelectedAppsQuestion": "Odebrat vybrané aplikace?",
|
||||
"removeSelectedApps": "Odebrat vybrané aplikace",
|
||||
"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",
|
||||
"updateX": "Aktualizovat {}",
|
||||
"installX": "Instalovat {}",
|
||||
"markXTrackOnlyAsUpdated": "Označit {}\n(Jen sledované)\njako aktualizované",
|
||||
"markXTrackOnlyAsUpdated": "Označit aplikaci {}\n(pouze sledování)\njako aktualizovanou",
|
||||
"changeX": "Změnit {}",
|
||||
"installUpdateApps": "Instalovat/aktualizovat aplikace",
|
||||
"installUpdateSelectedApps": "Instalovat/aktualizovat vybrané aplikace",
|
||||
"markXSelectedAppsAsUpdated": "Označit {} vybrané aplikace jako aktuální?",
|
||||
"markXSelectedAppsAsUpdated": "Označit {} vybraných aplikací 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. 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ů.",
|
||||
"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ů.",
|
||||
"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í",
|
||||
"removeOutdatedFilter": "Odstranit filtr neaktuálních aplikací",
|
||||
"showOutdatedOnly": "Zobrazovat pouze zastaralé aplikace",
|
||||
"filter": "Filtr",
|
||||
"filterApps": "Filtrovat aplikace",
|
||||
"appName": "Název aplikace",
|
||||
"author": "Autor",
|
||||
"upToDateApps": "Aktuální apky",
|
||||
"nonInstalledApps": "Neinstalované apky",
|
||||
"importExport": "Import Export",
|
||||
"upToDateApps": "Aktuální aplikace",
|
||||
"nonInstalledApps": "Nenainstalované aplikace",
|
||||
"importExport": "Import/export",
|
||||
"settings": "Nastavení",
|
||||
"exportedTo": "Exportováno do {}",
|
||||
"obtainiumExport": "Export obtainia",
|
||||
"obtainiumExport": "Export aplikace Obtainium",
|
||||
"invalidInput": "Neplatný vstup",
|
||||
"importedX": "Importováno {}",
|
||||
"obtainiumImport": "Dovoz obtainia",
|
||||
"importFromURLList": "Import ze seznamu URL",
|
||||
"obtainiumImport": "Import aplikace Obtainium",
|
||||
"importFromURLList": "Importovat ze seznamu adres",
|
||||
"searchQuery": "Vyhledávací dotaz",
|
||||
"appURLList": "Seznam adres aplikací",
|
||||
"line": "Linka",
|
||||
"searchX": "Vyhledávání {}",
|
||||
"noResults": "Nebyly nalezeny žádné výsledky",
|
||||
"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.",
|
||||
"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.",
|
||||
"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": "Téma",
|
||||
"theme": "Motiv",
|
||||
"dark": "Tmavé",
|
||||
"light": "Světlé",
|
||||
"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",
|
||||
"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",
|
||||
"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": "Záznamy apky",
|
||||
"appLogs": "Protokoly aplikace",
|
||||
"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í je z '{}'. Pokračovat?",
|
||||
"sourceIsXButPackageFromYPrompt": "Zdroj aplikace je „{}“, ale balíček pro vydání pochází 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": "{} byla aktualizována na {}",
|
||||
"xWasUpdatedToY": "Aplikace {} 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,25 +161,26 @@
|
||||
"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 Obtainium instalovat aplikace",
|
||||
"trackOnly": "Jen sledovat",
|
||||
"pleaseAllowInstallPerm": "Povolte prosím aplikaci Obtainium instalovat aplikace",
|
||||
"trackOnly": "Pouze 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 aktualizace: {}",
|
||||
"lastUpdateCheckX": "Poslední kontrola aktualizací: {}",
|
||||
"remove": "Odebrat",
|
||||
"yesMarkUpdated": "Ano, označit jako aktualizované",
|
||||
"fdroid": "Oficiální repozitář F-Droid",
|
||||
"appIdOrName": "ID nebo název apky",
|
||||
"appIdOrName": "ID nebo název aplikace",
|
||||
"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": "Nainstalujte",
|
||||
"install": "Instalovat",
|
||||
"markInstalled": "Označit jako nainstalovaný",
|
||||
"update": "Aktualizovat",
|
||||
"markUpdated": "Označit jako aktuální",
|
||||
@@ -189,7 +190,7 @@
|
||||
"downloadingX": "Stáhnout {}",
|
||||
"downloadX": "Stáhnout {}",
|
||||
"downloadedX": "Staženo {}",
|
||||
"releaseAsset": "Vydání aktiva",
|
||||
"releaseAsset": "Soubor vydání",
|
||||
"downloadNotifDescription": "Informuje uživatele o průběhu stahování aplikace",
|
||||
"noAPKFound": "Žádná APK nebyla nalezena",
|
||||
"noVersionDetection": "Žádná detekce verze",
|
||||
@@ -201,17 +202,17 @@
|
||||
"deleteCategoriesQuestion": "Smazat kategorie?",
|
||||
"categoryDeleteWarning": "Všechny aplikace v odstraněných kategoriích budou nastaveny na nekategorizované.",
|
||||
"addCategory": "Přidat kategorii",
|
||||
"label": "Štítek",
|
||||
"label": "Popisek",
|
||||
"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 Obtainium",
|
||||
"removeFromObtainium": "Odebrat z Obtainia",
|
||||
"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 verze jako řetězec verze",
|
||||
"releaseTitleAsVersion": "Použít název vydání 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í",
|
||||
@@ -221,16 +222,16 @@
|
||||
"standardVersionDetection": "Standardní detekce verze",
|
||||
"groupByCategory": "Seskupit podle kategorie",
|
||||
"autoApkFilterByArch": "Pokud je to možné, pokuste se filtrovat soubory APK podle architektury procesoru",
|
||||
"autoLinkFilterByArch": "Pokus o filtrování odkazů podle architektury procesoru, pokud je to možné.",
|
||||
"autoLinkFilterByArch": "Pokusit se filtrovat odkazy podle architektury procesoru, pokud je to možné",
|
||||
"overrideSource": "Přepsat zdroj",
|
||||
"dontShowAgain": "Nezobrazovat znovu",
|
||||
"dontShowTrackOnlyWarnings": "Nezobrazovat varování pro 'Jen sledované'",
|
||||
"dontShowAPKOriginWarnings": "Nezobrazovat varování pro původ APK",
|
||||
"dontShowTrackOnlyWarnings": "Nezobrazovat varování pro „pouze sledované“",
|
||||
"dontShowAPKOriginWarnings": "Nezobrazovat varování o původu APK",
|
||||
"moveNonInstalledAppsToBottom": "Přesunout nenainstalované aplikace na konec zobrazení Aplikace",
|
||||
"gitlabPATLabel": "Osobní přístupový token GitLab",
|
||||
"about": "O",
|
||||
"requiresCredentialsInSettings": "{}: Vyžaduje další pověření (v nastavení)",
|
||||
"checkOnStart": "Zkontrolovat jednou při spuštění",
|
||||
"about": "Informace",
|
||||
"requiresCredentialsInSettings": "{} vyžaduje další pověření (v nastavení)",
|
||||
"checkOnStart": "Zkontrolovat aktualizace 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",
|
||||
@@ -240,28 +241,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": "Omezení rychlosti GitHub lze obejít pomocí klíče API.",
|
||||
"githubSourceNote": "Limit požadavků služby GitHub lze obejít pomocí klíče API.",
|
||||
"sortByLastLinkSegment": "Seřadit pouze podle poslední části odkazu",
|
||||
"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$')",
|
||||
"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$“)",
|
||||
"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": "Zkontrolovat značku latest",
|
||||
"intermediateLinkRegex": "Filtrovat mezipropojení, které by mělo být navštíveno jako první",
|
||||
"verifyLatestTag": "Ověřit značku „latest“",
|
||||
"intermediateLinkRegex": "Filtr pro návštěvu „prostředního“ odkazu",
|
||||
"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": "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",
|
||||
"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",
|
||||
"versionExtractionRegEx": "Extrakce verze pomocí RegEx",
|
||||
"trimVersionString": "Oříznutí řetězce verze pomocí příkazu RegEx",
|
||||
"matchGroupToUseForX": "Skupina shody, která se použije pro \"{}\"",
|
||||
"trimVersionString": "Oříznutí řetězce verze pomocí RegEx",
|
||||
"matchGroupToUseForX": "Shoda se skupinou k použití pro „{}“",
|
||||
"matchGroupToUse": "Odpovídá použité skupině",
|
||||
"highlightTouchTargets": "Zvýraznit méně zjevné cíle dotyku",
|
||||
"pickExportDir": "Vybrat adresář pro export",
|
||||
@@ -280,111 +281,128 @@
|
||||
"installing": "Instaluji",
|
||||
"skipUpdateNotifications": "Neposkytovat oznámení o aktualizaci",
|
||||
"updatesAvailableNotifChannel": "Dostupné aktualizace",
|
||||
"appsUpdatedNotifChannel": "Apky aktualizovány",
|
||||
"appsUpdatedNotifChannel": "Aplikace aktualizovány",
|
||||
"appsPossiblyUpdatedNotifChannel": "Byly provedeny pokusy o aktualizace aplikací",
|
||||
"errorCheckingUpdatesNotifChannel": "Chyba při kontrole aktualizací",
|
||||
"appsRemovedNotifChannel": "Odstraněné apky",
|
||||
"appsRemovedNotifChannel": "Aplikace odstraněny",
|
||||
"downloadingXNotifChannel": "Stáhnout {}",
|
||||
"completeAppInstallationNotifChannel": "Dokončit instalaci aplikace",
|
||||
"checkingForUpdatesNotifChannel": "Zkontrolovat aktualizace",
|
||||
"onlyCheckInstalledOrTrackOnlyApps": "Na aktualizace kontrolovat pouze nainstalované aplikace a aplikace označené Track only",
|
||||
"onlyCheckInstalledOrTrackOnlyApps": "Aktualizace kontrolovat pouze u nainstalovaných a sledovaných aplikací",
|
||||
"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žijte Shizuku nebo Sui",
|
||||
"useShizuku": "K instalaci použít 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": "Nastavení Google Play jako zdroje instalace (pokud se používá Shizuku)",
|
||||
"shizukuPretendToBeGooglePlay": "Nastavit Google Play jako zdroj 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é dílo jako datum vydání",
|
||||
"useLatestAssetDateAsReleaseDate": "Použít poslední nahraný soubor 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": "Instalováno",
|
||||
"installed": "Nainstalováno",
|
||||
"latest": "Nejnovější",
|
||||
"invertRegEx": "Invertovat regulární výraz",
|
||||
"note": "Poznámka",
|
||||
"selfHostedNote": "Rozbalovací seznam \"{}\" lze použít k dosažení vlastních/obvyklých instancí libovolného zdroje.",
|
||||
"selfHostedNote": "Rozbalovací seznam „{}“ lze použít pro přístup k vlastním instancím libovolného zdroje.",
|
||||
"badDownload": "APK nelze analyzovat (nekompatibilní nebo částečné stažení)",
|
||||
"beforeNewInstallsShareToAppVerifier": "Sdílení nových aplikací s aplikací AppVerifier (pokud je k dispozici)",
|
||||
"beforeNewInstallsShareToAppVerifier": "Sdílet nové aplikace 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": "Konfigurace aplikací s využitím crowdsourcingu (použití na vlastní nebezpečí)",
|
||||
"crowdsourcedConfigsLabel": "Komunitní konfigurace aplikací (použití na vlastní nebezpečí)",
|
||||
"crowdsourcedConfigsShort": "Konfigurace aplikací s využitím crowdsourcingu",
|
||||
"allowInsecure": "Povolení nezabezpečených požadavků HTTP",
|
||||
"allowInsecure": "Povolit nezabezpečené 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": "Obnovení údajů o aplikaci před stažením",
|
||||
"refreshBeforeDownload": "Obnovit údaje o aplikaci před stažením",
|
||||
"tencentAppStore": "Tencent App Store",
|
||||
"coolApk": "CoolApk",
|
||||
"vivoAppStore": "vivo App Store (CN)",
|
||||
"name": "Název",
|
||||
"smartname": "Název (Smart)",
|
||||
"smartname": "Název (chytrý)",
|
||||
"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": "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): \"{}\"",
|
||||
"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í",
|
||||
"removeAppQuestion": {
|
||||
"one": "Odstranit Apku?",
|
||||
"other": "Odstranit Apky?"
|
||||
"one": "Odstranit aplikaci?",
|
||||
"other": "Odstranit aplikace?"
|
||||
},
|
||||
"tooManyRequestsTryAgainInMinutes": {
|
||||
"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"
|
||||
"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"
|
||||
},
|
||||
"bgUpdateGotErrorRetryInMinutes": {
|
||||
"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"
|
||||
"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"
|
||||
},
|
||||
"bgCheckFoundUpdatesWillNotifyIfNeeded": {
|
||||
"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"
|
||||
"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"
|
||||
},
|
||||
"apps": {
|
||||
"one": "{} Apka",
|
||||
"other": "{} Apky"
|
||||
"one": "{} aplikace",
|
||||
"few": "{} aplikace",
|
||||
"other": "{} aplikací"
|
||||
},
|
||||
"url": {
|
||||
"one": "{} Adresa",
|
||||
"other": "{} Adres"
|
||||
"one": "{} adresa",
|
||||
"few": "{} adresy",
|
||||
"other": "{} adres"
|
||||
},
|
||||
"minute": {
|
||||
"one": "{} Minuta",
|
||||
"other": "{} Minut"
|
||||
"one": "{} minuta",
|
||||
"few": "{} minuty",
|
||||
"other": "{} minut"
|
||||
},
|
||||
"hour": {
|
||||
"one": "{} Hodina",
|
||||
"other": "{} Hodin"
|
||||
"one": "{} hodina",
|
||||
"few": "{} hodiny",
|
||||
"other": "{} hodin"
|
||||
},
|
||||
"day": {
|
||||
"one": "{} Den",
|
||||
"other": "{} Dnů"
|
||||
"one": "{} den",
|
||||
"few": "{} dny",
|
||||
"other": "{} dní"
|
||||
},
|
||||
"clearedNLogsBeforeXAfterY": {
|
||||
"one": "{n} Záznam vymazán (před = {before}, po = {after})",
|
||||
"other": "{n} Záznamů vymazáno (před = {before}, po = {after})"
|
||||
"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})"
|
||||
},
|
||||
"xAndNMoreUpdatesAvailable": {
|
||||
"one": "{} a 1 další aplikace mají aktualizace.",
|
||||
"other": "{} a {} další aplikace mají aktualizace."
|
||||
"few": "{} a {} další aplikace mají aktualizace.",
|
||||
"other": "{} a {} dalších aplikací má aktualizace."
|
||||
},
|
||||
"xAndNMoreUpdatesInstalled": {
|
||||
"one": "{} a 1 další aplikace mají aktualizace.",
|
||||
"other": "{} a {} další aplikace byly aktualizovány."
|
||||
"one": "{} a 1 další aplikace byly aktualizovány.",
|
||||
"few": "{} a {} další aplikace byly aktualizovány.",
|
||||
"other": "{} a {} dalších aplikací bylo aktualizováno."
|
||||
},
|
||||
"xAndNMoreUpdatesFailed": {
|
||||
"one": "Nepodařilo se aktualizovat {} a 1 další aplikaci.",
|
||||
"other": "Nepodařilo se aktualizovat {} a {} další aplikace."
|
||||
"few": "Nepodařilo se aktualizovat {} a {} další aplikace.",
|
||||
"other": "Nepodařilo se aktualizovat {} a {} dalších aplikací."
|
||||
},
|
||||
"xAndNMoreUpdatesPossiblyInstalled": {
|
||||
"one": "{} a 1 další aplikace možno aktualizovat",
|
||||
"other": "{} a {} další aplikace mohou být aktualizovány."
|
||||
"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."
|
||||
},
|
||||
"apk": {
|
||||
"one": "{} APK",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"versionCorrectionDisabled": "Versionskorrektion deaktiveret (plugin ser ikke ud til at virke)",
|
||||
"unknown": "Ukendt",
|
||||
"none": "Ingen",
|
||||
"all": "Alle",
|
||||
"never": "Aldrig",
|
||||
"latestVersionX": "Seneste: {}",
|
||||
"installedVersionX": "Installeret: {}",
|
||||
@@ -330,6 +331,10 @@
|
||||
"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?"
|
||||
@@ -355,16 +360,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})",
|
||||
|
@@ -19,7 +19,7 @@
|
||||
"noDescription": "Keine Beschreibung",
|
||||
"cancel": "Abbrechen",
|
||||
"continue": "Weiter",
|
||||
"requiredInBrackets": "(wird benötigt)",
|
||||
"requiredInBrackets": "(notwendig)",
|
||||
"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": "Du hast die Option „Nur nachverfolgen“ gewählt.",
|
||||
"youPickedTrackOnly": "Sie haben 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": "Linie",
|
||||
"line": "Zeile",
|
||||
"searchX": "{} suchen",
|
||||
"noResults": "Keine Ergebnisse gefunden",
|
||||
"importX": "{} importieren",
|
||||
"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.",
|
||||
"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.",
|
||||
"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": "Design",
|
||||
"theme": "Erscheinungsbild",
|
||||
"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": "Hrsg./Name",
|
||||
"nameAuthor": "Name/Hrsg.",
|
||||
"authorName": "Herausgebende/Name",
|
||||
"nameAuthor": "Name/Herausgebende",
|
||||
"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": "Dein Gerät unterstützt die CPU-Architektur {}.",
|
||||
"deviceSupportsFollowingArchs": "Dein Gerät unterstützt die folgenden CPU-Architekturen:",
|
||||
"deviceSupportsXArch": "Ihr Gerät unterstützt die CPU-Architektur {}.",
|
||||
"deviceSupportsFollowingArchs": "Ihr 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 verfolgte Apps verfügbar sind",
|
||||
"updatesAvailableNotifDescription": "Benachrichtigt, wenn Aktualisierungen für eine oder mehrere von Obtainium überwachte Apps verfügbar sind",
|
||||
"noNewUpdates": "Keine neuen Aktualisierungen.",
|
||||
"xHasAnUpdate": "{} hat eine Aktualisierung.",
|
||||
"appsUpdated": "App wurde aktualisiert",
|
||||
@@ -161,12 +161,13 @@
|
||||
"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 erlaube Obtainium die Installation von Apps",
|
||||
"pleaseAllowInstallPerm": "Bitte erlauben Sie 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: {}",
|
||||
@@ -189,8 +190,8 @@
|
||||
"downloadingX": "{} wird heruntergeladen",
|
||||
"downloadX": "{} herunterladen",
|
||||
"downloadedX": "{} heruntergeladen",
|
||||
"releaseAsset": "Release-Asset",
|
||||
"downloadNotifDescription": "Zeigt den Fortschritt beim Herunterladen einer App",
|
||||
"releaseAsset": "Release-Anhang",
|
||||
"downloadNotifDescription": "Fortschrittsanzeige beim Herunterladen einer App",
|
||||
"noAPKFound": "Keine APK gefunden",
|
||||
"noVersionDetection": "Keine Versionserkennung",
|
||||
"categorize": "Kategorisieren",
|
||||
@@ -221,18 +222,18 @@
|
||||
"standardVersionDetection": "Standardversionserkennung",
|
||||
"groupByCategory": "Nach Kategorie gruppieren",
|
||||
"autoApkFilterByArch": "Nach Möglichkeit versuchen, APKs nach CPU-Architektur zu filtern",
|
||||
"autoLinkFilterByArch": "Versuchen Sie, Links nach CPU-Architektur zu filtern, wenn möglich",
|
||||
"autoLinkFilterByArch": "Nach Möglichkeit versuchen, APKs nach CPU-Architektur zu filtern",
|
||||
"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": "Über",
|
||||
"about": "Weitere Informationen",
|
||||
"requiresCredentialsInSettings": "{}: Benötigt zusätzliche Anmeldedaten (in den Einstellungen)",
|
||||
"checkOnStart": "Einmalig beim Start überprüfen",
|
||||
"checkOnStart": "Einmalig beim Start auf Aktualisierungen prüfen",
|
||||
"tryInferAppIdFromCode": "Versuchen, die App-ID aus dem Quellcode zu ermitteln",
|
||||
"removeOnExternalUninstall": "Extern deinstallierte Apps automatische entfernen",
|
||||
"removeOnExternalUninstall": "Extern deinstallierte Apps automatisch 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",
|
||||
@@ -246,7 +247,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 eventuell auf Version {} aktualisiert.",
|
||||
"xWasPossiblyUpdatedToY": "{} wurde möglicherweise 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.",
|
||||
@@ -287,19 +288,19 @@
|
||||
"downloadingXNotifChannel": "{} herunterladen",
|
||||
"completeAppInstallationNotifChannel": "App-Installation abschließen",
|
||||
"checkingForUpdatesNotifChannel": "Nach Aktualisierungen suchen",
|
||||
"onlyCheckInstalledOrTrackOnlyApps": "Nur installierte und mit „Nur nachverfolgen“ markierte Apps auf Aktualisierungen prüfen",
|
||||
"onlyCheckInstalledOrTrackOnlyApps": "Nur mit „Nur nachverfolgen“ markierte und installierte 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 aktualisiere sie",
|
||||
"shizukuOldAndroidWithADB": "Shizuku läuft auf Android < 8.1 mit ADB - aktualisiere die Android-Version oder verwende stattdessen Sui",
|
||||
"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",
|
||||
"shizukuPretendToBeGooglePlay": "(Mittels Shizuku) Google Play als Installationsquelle registrieren",
|
||||
"useSystemFont": "Systemschriftart verwenden",
|
||||
"useVersionCodeAsOSVersion": "Versionscode (versionCode) als erkannte Version vom Betriebssystem verwenden",
|
||||
"useVersionCodeAsOSVersion": "Versionscode (versionCode) als vom Betriebssystem erkannte Version verwenden",
|
||||
"requestHeader": "Kopfzeile („Header“) anfordern",
|
||||
"useLatestAssetDateAsReleaseDate": "Letzten Asset-Upload als Veröffentlichungsdatum verwenden",
|
||||
"useLatestAssetDateAsReleaseDate": "Letzten Upload eines Release-Anhangs als Veröffentlichungsdatum verwenden",
|
||||
"defaultPseudoVersioningMethod": "Standardmäßiges Verfahren zur Pseudo-Versionierung",
|
||||
"partialAPKHash": "Partieller APK-Hash",
|
||||
"APKLinkHash": "APK-Link-Hash",
|
||||
@@ -314,15 +315,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": "Crowdsourced App-Konfigurationen (Verwendung auf eigene Gefahr)",
|
||||
"crowdsourcedConfigsShort": "Crowdsourced App-Konfigurationen",
|
||||
"crowdsourcedConfigsLabel": "Komplexe Appkonfigurationen (Verwendung auf eigene Gefahr)",
|
||||
"crowdsourcedConfigsShort": "Komplexe Appkonfigurationen",
|
||||
"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 (CN)",
|
||||
"vivoAppStore": "vivo App Store (China)",
|
||||
"name": "Name",
|
||||
"smartname": "Name (Smart)",
|
||||
"sortMethod": "Sortierverfahren",
|
||||
@@ -330,13 +331,17 @@
|
||||
"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) – versuche es in {} Minute erneut",
|
||||
"other": "Zu viele Anfragen (Rate begrenzt) – versuche es in {} Minuten erneut"
|
||||
"one": "Zu viele Anfragen (Rate begrenzt) – versuchen Sie es in {} Minute erneut",
|
||||
"other": "Zu viele Anfragen (Rate begrenzt) – versuchen Sie es in {} Minuten erneut"
|
||||
},
|
||||
"bgUpdateGotErrorRetryInMinutes": {
|
||||
"one": "Bei der Aktualisierungsprüfung im Hintergrund wurde ein {} festgestellt, eine erneute Prüfung wird in {} Minute geplant",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"versionCorrectionDisabled": "Versiokorekto malaktivigita (ŝajnas, ke la kromaĵo ne funkcias)",
|
||||
"unknown": "Nekonata",
|
||||
"none": "Nenio",
|
||||
"all": "All",
|
||||
"never": "Neniam",
|
||||
"latestVersionX": "Lasta versio: {}",
|
||||
"installedVersionX": "Instalita versio: {}",
|
||||
@@ -327,9 +328,13 @@
|
||||
"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?"
|
||||
@@ -355,16 +360,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})",
|
||||
|
@@ -25,7 +25,7 @@
|
||||
"standard": "Standard",
|
||||
"custom": "Custom",
|
||||
"useMaterialYou": "Use Material You",
|
||||
"githubStarredRepos": "GitHub starred repos",
|
||||
"githubStarredRepos": "GitHub starred repositories",
|
||||
"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,6 +167,7 @@
|
||||
"versionCorrectionDisabled": "Version correction disabled (plugin doesn't seem to work)",
|
||||
"unknown": "Unknown",
|
||||
"none": "None",
|
||||
"all": "All",
|
||||
"never": "Never",
|
||||
"latestVersionX": "Latest: {}",
|
||||
"installedVersionX": "Installed: {}",
|
||||
@@ -313,7 +314,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",
|
||||
@@ -327,9 +328,13 @@
|
||||
"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 disable OS battery optimizations for Obtainium.",
|
||||
"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.",
|
||||
"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?"
|
||||
@@ -355,16 +360,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})",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"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: {}",
|
||||
@@ -330,6 +331,10 @@
|
||||
"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?"
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"versionCorrectionDisabled": "تصحیح نسخه غیرفعال شد (به نظر می رسد افزونه کار نمی کند)",
|
||||
"unknown": "ناشناخته",
|
||||
"none": "هیچ",
|
||||
"all": "All",
|
||||
"never": "هرگز",
|
||||
"latestVersionX": "آخرین نسخه: {}",
|
||||
"installedVersionX": "نسخه نصب شده: {}",
|
||||
@@ -327,9 +328,13 @@
|
||||
"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": "برنامه ها حذف شوند؟"
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"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 : {}",
|
||||
@@ -330,6 +331,10 @@
|
||||
"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 ?"
|
||||
@@ -355,16 +360,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})",
|
||||
|
@@ -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 OPCIÓVAL KELL RENDELKEZNIE",
|
||||
"dropdownNoOptsError": "HIBA: A LEGÖRDÜLŐ LISTÁNAK LEGALÁBB EGY KIVÁLASZTHATÓ BEÁLLÍTÁSSAL 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” opciót választotta.",
|
||||
"youPickedTrackOnly": "„Csak nyomon követés” beállítást 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": "Használjon teljesen fekete sötét témát",
|
||||
"useBlackTheme": "Teljesen fekete sötét téma használata",
|
||||
"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 egy APK-t",
|
||||
"pickAnAPK": "Válasszon ki 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,9 +164,10 @@
|
||||
"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ó: {}",
|
||||
@@ -174,25 +175,25 @@
|
||||
"remove": "Eltávolítás",
|
||||
"yesMarkUpdated": "Igen, megjelölés frissítettként",
|
||||
"fdroid": "F-Droid hivatalos",
|
||||
"appIdOrName": "Az alkalmazás-azonosító vagy név",
|
||||
"appIdOrName": "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": "A tárolók több alkalmazást is tartalmazhatnak",
|
||||
"fdroidThirdPartyRepo": "F-Droid harmadik féltől származó tároló",
|
||||
"reposHaveMultipleApps": "Egyes tárolók több alkalmazást is tartalmazhatnak",
|
||||
"fdroidThirdPartyRepo": "F-Droid-tároló (harmadik fél)",
|
||||
"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",
|
||||
@@ -206,34 +207,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": "Az APK-k szűrése reguláris kifejezéssel",
|
||||
"filterAPKsByRegEx": "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": "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.",
|
||||
"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.",
|
||||
"changes": "Változáslista",
|
||||
"releaseDate": "Kiadás dátuma",
|
||||
"importFromURLsInFile": "Importálás fájlban található webcímből (pl. OPML)",
|
||||
"importFromURLsInFile": "Importálás fájlban található webcímből (például: 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": "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",
|
||||
"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",
|
||||
"overrideSource": "Forrás felülírása",
|
||||
"dontShowAgain": "Ne jelenítse meg ezt többé",
|
||||
"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",
|
||||
"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",
|
||||
"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": "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",
|
||||
"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",
|
||||
"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",
|
||||
@@ -258,18 +259,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": "A legmagasabb verziókódú APK automatikus kiválasztása",
|
||||
"autoSelectHighestVersionCode": "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": "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",
|
||||
"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",
|
||||
"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": "Az API-ból származó kiadási sorrend megőrzése",
|
||||
"dontSortReleasesList": "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",
|
||||
@@ -278,7 +279,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": "A frissítési értesítések kihagyása",
|
||||
"skipUpdateNotifications": "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",
|
||||
@@ -288,22 +289,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 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",
|
||||
"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",
|
||||
"requestHeader": "Kérelemfejléc",
|
||||
"useLatestAssetDateAsReleaseDate": "A kiadás dátumaként használja a legutóbbi csomagfeltöltést",
|
||||
"useLatestAssetDateAsReleaseDate": "Legutóbbi csomagfeltöltés használata a kiadás dátumaként",
|
||||
"defaultPseudoVersioningMethod": "Alapértelmezett pszeudoverziós módszer",
|
||||
"partialAPKHash": "Részleges APK hasító értéke",
|
||||
"APKLinkHash": "APK hivatkozás hasító értéke",
|
||||
"directAPKLink": "Közvetlen APK hivatkozás",
|
||||
"partialAPKHash": "Részleges APK-hasítóérték",
|
||||
"APKLinkHash": "APK-hivatkozás-hasítóérték",
|
||||
"directAPKLink": "Közvetlen APK-hivatkozás",
|
||||
"pseudoVersionInUse": "Egy pszeudoverzió van használatban",
|
||||
"installed": "Telepített",
|
||||
"latest": "Legújabb",
|
||||
@@ -318,11 +319,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": "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",
|
||||
"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",
|
||||
"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",
|
||||
@@ -330,6 +331,10 @@
|
||||
"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?"
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"versionCorrectionDisabled": "Koreksi versi dinonaktifkan (sepertinya plugin tidak berfungsi)",
|
||||
"unknown": "Tidak diketahui",
|
||||
"none": "Tidak ada",
|
||||
"all": "Semua",
|
||||
"never": "Tidak pernah",
|
||||
"latestVersionX": "Terbaru: {}",
|
||||
"installedVersionX": "Terpasang: {}",
|
||||
@@ -330,6 +331,10 @@
|
||||
"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?"
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"versionCorrectionDisabled": "Correzione della versione disattivata (il plugin sembra non funzionare)",
|
||||
"unknown": "Sconosciuto",
|
||||
"none": "Nessuno",
|
||||
"all": "Tutti",
|
||||
"never": "Mai",
|
||||
"latestVersionX": "Ultima versione: {}",
|
||||
"installedVersionX": "Versione installata: {}",
|
||||
@@ -330,6 +331,10 @@
|
||||
"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?"
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"versionCorrectionDisabled": "バージョン補正無効 (プラグインが動作していません)",
|
||||
"unknown": "不明",
|
||||
"none": "なし",
|
||||
"all": "すべて",
|
||||
"never": "しない",
|
||||
"latestVersionX": "最新のバージョン: {}",
|
||||
"installedVersionX": "インストールされたバージョン: {}",
|
||||
@@ -221,7 +222,7 @@
|
||||
"standardVersionDetection": "標準のバージョン検出",
|
||||
"groupByCategory": "カテゴリ別にグループ化する",
|
||||
"autoApkFilterByArch": "可能であれば、CPUアーキテクチャによるAPKのフィルタリングを試みる",
|
||||
"autoLinkFilterByArch": "可能であれば、CPUアーキテクチャによるリンクのフィルタリングを試みる。",
|
||||
"autoLinkFilterByArch": "可能であれば、CPUアーキテクチャによるリンクのフィルタリングを試みる",
|
||||
"overrideSource": "ソースの上書き",
|
||||
"dontShowAgain": "二度と表示しない",
|
||||
"dontShowTrackOnlyWarnings": "「追跡のみ」の警告を表示しない",
|
||||
@@ -321,15 +322,19 @@
|
||||
"useFirstApkOfVersion": "複数のAPKから最初のAPKを自動選択する",
|
||||
"refreshBeforeDownload": "ダウンロード前にアプリの詳細を更新する",
|
||||
"tencentAppStore": "Tencent App Store",
|
||||
"coolApk": "クールApk",
|
||||
"coolApk": "Cool 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": "アプリを削除しますか?"
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"versionCorrectionDisabled": "버전 수정 비활성화됨 (플러그인이 작동하지 않는 것 같습니다)",
|
||||
"unknown": "알 수 없음",
|
||||
"none": "없음",
|
||||
"all": "모두",
|
||||
"never": "절대",
|
||||
"latestVersionX": "최신: {}",
|
||||
"installedVersionX": "설치됨: {}",
|
||||
@@ -330,6 +331,10 @@
|
||||
"documentationLinksNote": "아래에 링크된 Obtainium 깃허브 페이지에는 앱 사용 방법을 이해하는 데 도움이 되는 동영상, 기사, 토론 및 기타 리소스에 대한 링크가 포함되어 있습니다.",
|
||||
"batteryOptimizationNote": "Obtainium의 OS 배터리 최적화를 비활성화하면 백그라운드 다운로드가 더 안정적으로 작동할 수 있습니다.",
|
||||
"fileDeletionError": "파일을 삭제하지 못했습니다(수동으로 삭제한 후 다시 시도하세요): \"{}\"",
|
||||
"foregroundService": "오베티움 포그라운드 서비스",
|
||||
"foregroundServiceExplanation": "업데이트 확인을 위해 포그라운드 서비스 사용(안정성 향상, 전력 소비량 증가)",
|
||||
"fgServiceNotice": "이 알림은 백그라운드 업데이트 확인에 필요합니다(OS 설정에서 숨길 수 있음).",
|
||||
"excludeSecrets": "비밀 제외",
|
||||
"removeAppQuestion": {
|
||||
"one": "앱을 제거하시겠습니까?",
|
||||
"other": "앱을 제거하시겠습니까?"
|
||||
|
398
assets/translations/ml.json
Normal file
398
assets/translations/ml.json
Normal file
@@ -0,0 +1,398 @@
|
||||
{
|
||||
"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-കൾ"
|
||||
}
|
||||
}
|
@@ -167,6 +167,7 @@
|
||||
"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: {}",
|
||||
@@ -313,7 +314,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",
|
||||
@@ -330,6 +331,10 @@
|
||||
"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?"
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"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: {}",
|
||||
@@ -330,6 +331,10 @@
|
||||
"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?",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"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: {}",
|
||||
@@ -330,6 +331,10 @@
|
||||
"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?"
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"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: {}",
|
||||
@@ -330,6 +331,10 @@
|
||||
"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?"
|
||||
@@ -355,16 +360,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})",
|
||||
|
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"invalidURLForSource": "Неверный URL-адрес приложения: {}",
|
||||
"noReleaseFound": "Не удалось найти подходящий релиз",
|
||||
"noVersionFound": "Не удалось определить версию релиза",
|
||||
"noReleaseFound": "Не удалось найти подходящий выпуск",
|
||||
"noVersionFound": "Не удалось определить версию выпуска",
|
||||
"urlMatchesNoSource": "URL-адрес не соответствует известному источнику",
|
||||
"cantInstallOlderVersion": "Невозможно установить более старую версию приложения",
|
||||
"appIdMismatch": "ID загруженного пакета не совпадает с существующим ID приложения",
|
||||
@@ -9,12 +9,12 @@
|
||||
"placeholder": "Заполнитель",
|
||||
"someErrors": "Возникли некоторые ошибки",
|
||||
"unexpectedError": "Неожиданная ошибка",
|
||||
"ok": "Ок",
|
||||
"ok": "OK",
|
||||
"and": "и",
|
||||
"githubPATLabel": "Персональный токен доступа GitHub\n(увеличивает лимит запросов)",
|
||||
"includePrereleases": "Включить предварительные релизы",
|
||||
"includePrereleases": "Включать предварительные выпуски",
|
||||
"fallbackToOlderReleases": "Откатываться к предыдущей версии",
|
||||
"filterReleaseTitlesByRegEx": "Фильтровать заголовки релизов\n(регулярное выражение)",
|
||||
"filterReleaseTitlesByRegEx": "Фильтровать заголовки выпусков\n(регулярное выражение)",
|
||||
"invalidRegEx": "Неверное регулярное выражение",
|
||||
"noDescription": "Нет описания",
|
||||
"cancel": "Отмена",
|
||||
@@ -32,13 +32,13 @@
|
||||
"source": "Источник",
|
||||
"app": "Приложение",
|
||||
"appsFromSourceAreTrackOnly": "Приложения из этого источника настроены только для отслеживания",
|
||||
"youPickedTrackOnly": "Вы выбрали опцию 'Только для отслеживания'",
|
||||
"youPickedTrackOnly": "Выбрана настройка «только для отслеживания»",
|
||||
"trackOnlyAppDescription": "Приложение будет отслеживаться на предмет обновлений, но Obtainium не сможет загрузить или установить его",
|
||||
"cancelled": "Отменено",
|
||||
"appAlreadyAdded": "Приложение уже добавлено",
|
||||
"alreadyUpToDateQuestion": "Приложение уже обновлено?",
|
||||
"addApp": "Добавить",
|
||||
"appSourceURL": "URL-источник приложения",
|
||||
"appSourceURL": "URL-адрес источника приложения",
|
||||
"error": "Ошибка",
|
||||
"add": "Добавить",
|
||||
"searchSomeSourcesLabel": "Поиск (в некоторых источниках)",
|
||||
@@ -63,10 +63,10 @@
|
||||
"removeSelectedApps": "Удалить выбранные приложения",
|
||||
"updateX": "Обновить {}",
|
||||
"installX": "Установить {}",
|
||||
"markXTrackOnlyAsUpdated": "Отметить {}\n(Только для отслеживания)\nкак обновленное",
|
||||
"markXTrackOnlyAsUpdated": "Отметить {}\n(только для отслеживания)\nкак обновлённое",
|
||||
"changeX": "Изменить {}",
|
||||
"installUpdateApps": "Установить/Обновить приложения",
|
||||
"installUpdateSelectedApps": "Установить/Обновить выбранные приложения",
|
||||
"installUpdateApps": "Установить/обновить приложения",
|
||||
"installUpdateSelectedApps": "Установить/обновить выбранные приложения",
|
||||
"markXSelectedAppsAsUpdated": "Выбрано приложений: {}. Отметить как обновлённые?",
|
||||
"no": "Нет",
|
||||
"yes": "Да",
|
||||
@@ -74,10 +74,10 @@
|
||||
"pinToTop": "Закрепить сверху",
|
||||
"unpinFromTop": "Открепить",
|
||||
"resetInstallStatusForSelectedAppsQuestion": "Сбросить статус установки для выбранных приложений?",
|
||||
"installStatusOfXWillBeResetExplanation": "Статус установки для выбранных приложений будет сброшен.\n\nЭто может помочь, если версия приложения, отображаемая в Obtainium, некорректная — из-за неудачных обновлений или других проблем",
|
||||
"installStatusOfXWillBeResetExplanation": "Статус установки для выбранных приложений будет сброшен.\n\nЭто может помочь, если версия приложения, отображаемая в Obtainium, некорректная (из-за неудачных обновлений или других проблем).",
|
||||
"customLinkMessage": "Эти ссылки работают на устройствах с установленным Obtainium",
|
||||
"shareAppConfigLinks": "Поделиться конфигурацией приложения в виде HTML-ссылки",
|
||||
"shareSelectedAppURLs": "Поделиться выбранными URL-адресами приложений",
|
||||
"shareSelectedAppURLs": "Поделиться URL-адресами выбранных приложений",
|
||||
"resetInstallStatus": "Сбросить статус установки",
|
||||
"more": "Ещё",
|
||||
"removeOutdatedFilter": "Удалить фильтр для устаревших приложений",
|
||||
@@ -86,7 +86,7 @@
|
||||
"filterApps": "Фильтровать приложения",
|
||||
"appName": "Название приложения",
|
||||
"author": "Автор",
|
||||
"upToDateApps": "Приложения со свежими обновлениями",
|
||||
"upToDateApps": "Приложения с обновлениями",
|
||||
"nonInstalledApps": "Неустановленные приложения",
|
||||
"importExport": "Данные",
|
||||
"settings": "Настройки",
|
||||
@@ -97,12 +97,12 @@
|
||||
"obtainiumImport": "Импорт в Obtainium",
|
||||
"importFromURLList": "Импорт из списка URL-адресов",
|
||||
"searchQuery": "Поисковый запрос",
|
||||
"appURLList": "Список URL приложений",
|
||||
"appURLList": "Список URL-адресов приложений",
|
||||
"line": "Строка",
|
||||
"searchX": "Поиск {}",
|
||||
"noResults": "Результатов не найдено",
|
||||
"noResults": "Ничего не найдено",
|
||||
"importX": "Импорт {}",
|
||||
"importedAppsIdDisclaimer": "Импортированные приложения могут неверно отображаться как неустановленные.\nДля исправления этой проблемы повторно установите их через Obtainium.\nЭто не должно повлиять на данные приложения.\n\nПроблемы возникают только при импорте из URL-адреса и сторонних источников",
|
||||
"importedAppsIdDisclaimer": "Импортированные приложения могут неверно отображаться как неустановленные.\nДля исправления этой проблемы повторно установите их через Obtainium.\nЭто не должно повлиять на данные приложения.\n\nПроблемы возникают только при импорте из URL-адреса и сторонних источников.",
|
||||
"importErrors": "Ошибка импорта",
|
||||
"importedXOfYApps": "Импортировано приложений: {} из {}",
|
||||
"followingURLsHadErrors": "При импорте следующие URL-адреса содержали ошибки:",
|
||||
@@ -112,12 +112,12 @@
|
||||
"theme": "Тема",
|
||||
"dark": "Тёмная",
|
||||
"light": "Светлая",
|
||||
"followSystem": "Системная",
|
||||
"followSystem": "Как в системе",
|
||||
"followSystemThemeExplanation": "Следование системной теме возможно только при использовании сторонних приложений",
|
||||
"useBlackTheme": "Использовать чёрную тему",
|
||||
"appSortBy": "Сортировка приложений",
|
||||
"authorName": "Автор/Название",
|
||||
"nameAuthor": "Название/Автор",
|
||||
"authorName": "Автор/название",
|
||||
"nameAuthor": "Название/автор",
|
||||
"asAdded": "В порядке добавления",
|
||||
"appSortOrder": "Порядок",
|
||||
"ascending": "По возрастанию",
|
||||
@@ -126,12 +126,12 @@
|
||||
"neverManualOnly": "Никогда — только вручную",
|
||||
"appearance": "Внешний вид",
|
||||
"showWebInAppView": "Показывать исходную веб-страницу на странице приложения",
|
||||
"pinUpdates": "Отображать обновления приложений сверху списка",
|
||||
"pinUpdates": "Показывать обновления приложений сверху списка",
|
||||
"updates": "Обновления",
|
||||
"sourceSpecific": "Настройки источников",
|
||||
"appSource": "Источник",
|
||||
"noLogs": "Нет журналов",
|
||||
"appLogs": "Логи",
|
||||
"appLogs": "Журналы",
|
||||
"close": "Закрыть",
|
||||
"share": "Поделиться",
|
||||
"appNotFound": "Приложение не найдено",
|
||||
@@ -141,21 +141,21 @@
|
||||
"deviceSupportsXArch": "Ваше устройство поддерживает архитектуру процессора {}",
|
||||
"deviceSupportsFollowingArchs": "Ваше устройство поддерживает следующие архитектуры процессора:",
|
||||
"warning": "Предупреждение",
|
||||
"sourceIsXButPackageFromYPrompt": "Источник приложения — '{}', но пакет для установки получен из '{}'. Продолжить?",
|
||||
"sourceIsXButPackageFromYPrompt": "Источник приложения — «{}», но пакет для установки получен из «{}». Продолжить?",
|
||||
"updatesAvailable": "Доступны обновления",
|
||||
"updatesAvailableNotifDescription": "Уведомляет о наличии обновлений для одного или нескольких приложений в Obtainium",
|
||||
"noNewUpdates": "Нет новых обновлений",
|
||||
"xHasAnUpdate": "{} есть обновление",
|
||||
"noNewUpdates": "Нет обновлений",
|
||||
"xHasAnUpdate": "Для {} есть обновление",
|
||||
"appsUpdated": "Приложения обновлены",
|
||||
"appsNotUpdated": "Не удалось обновить приложения",
|
||||
"appsUpdatedNotifDescription": "Уведомляет об обновлении одного или нескольких приложений в фоновом режиме",
|
||||
"xWasUpdatedToY": "{} была обновлена до версии {}",
|
||||
"xWasUpdatedToY": "{} обновлено до версии {}",
|
||||
"xWasNotUpdatedToY": "Не удалось обновить {} до версии {}",
|
||||
"errorCheckingUpdates": "Ошибка при проверке обновлений",
|
||||
"errorCheckingUpdatesNotifDescription": "Уведомление о завершении проверки обновлений в фоновом режиме с ошибкой",
|
||||
"appsRemoved": "Приложение удалено",
|
||||
"appsRemovedNotifDescription": "Уведомление об удалении одного или несколько приложений из-за ошибок при их загрузке",
|
||||
"xWasRemovedDueToErrorY": "{} был удален из-за ошибки: {}",
|
||||
"xWasRemovedDueToErrorY": "{} удалено из-за ошибки: {}",
|
||||
"completeAppInstallation": "Завершение установки приложения",
|
||||
"obtainiumMustBeOpenToInstallApps": "Obtainium должен быть открыт для установки приложений",
|
||||
"completeAppInstallationNotifDescription": "Уведомление о необходимости открыть Obtainium для завершения установки приложения",
|
||||
@@ -167,12 +167,13 @@
|
||||
"versionCorrectionDisabled": "Коррекция версий отключена (плагин, кажется, не работает)",
|
||||
"unknown": "Неизвестно",
|
||||
"none": "Отсутствует",
|
||||
"all": "Все",
|
||||
"never": "Никогда",
|
||||
"latestVersionX": "Последняя версия: {}",
|
||||
"installedVersionX": "Установленная версия: {}",
|
||||
"lastUpdateCheckX": "Последняя проверка: {}",
|
||||
"remove": "Удалить",
|
||||
"yesMarkUpdated": "Да, отметить как обновленное",
|
||||
"yesMarkUpdated": "Да, отметить как обновлённое",
|
||||
"fdroid": "Официальные репозитории F-Droid",
|
||||
"appIdOrName": "ID или название приложения",
|
||||
"appId": "ID приложения",
|
||||
@@ -180,39 +181,39 @@
|
||||
"reposHaveMultipleApps": "В хранилище несколько приложений",
|
||||
"fdroidThirdPartyRepo": "Сторонние репозитории F-Droid",
|
||||
"install": "Установить",
|
||||
"markInstalled": "Пометить как установленное",
|
||||
"markInstalled": "Отметить установленным",
|
||||
"update": "Обновить",
|
||||
"markUpdated": "Отметить обновлённым",
|
||||
"additionalOptions": "Дополнительные настройки",
|
||||
"disableVersionDetection": "Отключить обнаружение версии",
|
||||
"noVersionDetectionExplanation": "Эта настройка должна использоваться только для приложений, где обнаружение версии не работает корректно",
|
||||
"disableVersionDetection": "Отключить определение версии",
|
||||
"noVersionDetectionExplanation": "Эта настройка должна использоваться только для приложений, где определение версии не работает корректно",
|
||||
"downloadingX": "Загрузка {}",
|
||||
"downloadX": "Скачать {}",
|
||||
"downloadX": "Загрузить {}",
|
||||
"downloadedX": "Загружено {}",
|
||||
"releaseAsset": "Релизный объект",
|
||||
"releaseAsset": "Объект выпуска",
|
||||
"downloadNotifDescription": "Уведомляет пользователя о прогрессе загрузки приложения",
|
||||
"noAPKFound": "APK не найден",
|
||||
"noVersionDetection": "Обнаружение версий отключено",
|
||||
"noAPKFound": "APK-файл не найден",
|
||||
"noVersionDetection": "Определение версий отключено",
|
||||
"categorize": "Категоризировать",
|
||||
"categories": "Категории",
|
||||
"category": "Категория",
|
||||
"noCategory": "Без категории",
|
||||
"noCategories": "Без категорий",
|
||||
"deleteCategoriesQuestion": "Удалить категории?",
|
||||
"categoryDeleteWarning": "Все приложения в удаленных категориях будут помечены как без категории",
|
||||
"categoryDeleteWarning": "Все приложения в удалённых категориях будут помечены как «без категории»",
|
||||
"addCategory": "Добавить категорию",
|
||||
"label": "Метка",
|
||||
"language": "Язык",
|
||||
"copiedToClipboard": "Скопировано в буфер обмена",
|
||||
"storagePermissionDenied": "Отказано в доступе к хранилищу",
|
||||
"selectedCategorizeWarning": "Это заменит все текущие настройки категорий для выбранных приложений",
|
||||
"filterAPKsByRegEx": "Отфильтровать APK-файлы\n(регулярное выражение)",
|
||||
"filterAPKsByRegEx": "Фильтровать APK-файлы\n(регулярное выражение)",
|
||||
"removeFromObtainium": "Удалить из Obtainium",
|
||||
"uninstallFromDevice": "Удалить с устройства",
|
||||
"onlyWorksWithNonVersionDetectApps": "Работает только для приложений с отключенным определением версии",
|
||||
"releaseDateAsVersion": "Дата выпуска вместо версии",
|
||||
"releaseTitleAsVersion": "Используйте название релиза в качестве строки версии",
|
||||
"releaseDateAsVersionExplanation": "Этот параметр следует использовать только для приложений, в которых определение версии не работает правильно, но имеется дата выпуска",
|
||||
"onlyWorksWithNonVersionDetectApps": "Работает только для приложений с отключённым определением версии",
|
||||
"releaseDateAsVersion": "Использовать дату выпуска в качестве версии",
|
||||
"releaseTitleAsVersion": "Использовать название выпуска в качестве версии",
|
||||
"releaseDateAsVersionExplanation": "Эта настройка должна использоваться только для приложений, в которых определение версии не работает правильно, но имеется дата выпуска",
|
||||
"changes": "Изменения",
|
||||
"releaseDate": "Дата выпуска",
|
||||
"importFromURLsInFile": "Импорт из файла URL-адресов (например: OPML)",
|
||||
@@ -220,56 +221,56 @@
|
||||
"versionDetection": "Определение версии",
|
||||
"standardVersionDetection": "Стандартное",
|
||||
"groupByCategory": "Группировать по категориям",
|
||||
"autoApkFilterByArch": "Попытаться отфильтровать APK-файлы по архитектуре процессора",
|
||||
"autoLinkFilterByArch": "Попытайтесь отфильтровать ссылки по архитектуре процессора, если это возможно",
|
||||
"autoApkFilterByArch": "Пытаться фильтровать APK по архитектуре процессора",
|
||||
"autoLinkFilterByArch": "Пытаться фильтровать ссылки по архитектуре процессора, если это возможно",
|
||||
"overrideSource": "Переопределить источник",
|
||||
"dontShowAgain": "Не показывать снова",
|
||||
"dontShowTrackOnlyWarnings": "Не показывать предупреждения о только отслеживаемых приложениях",
|
||||
"dontShowAPKOriginWarnings": "Не показывать предупреждения об отличающемся источнике APK-файлов",
|
||||
"moveNonInstalledAppsToBottom": "Отображать неустановленные приложения внизу списка",
|
||||
"moveNonInstalledAppsToBottom": "Показывать неустановленные приложения внизу списка",
|
||||
"gitlabPATLabel": "Персональный токен доступа GitLab",
|
||||
"about": "Описание",
|
||||
"requiresCredentialsInSettings": "{}: Для этого требуются дополнительные учетные данные (в настройках)",
|
||||
"requiresCredentialsInSettings": "{}: для этого требуются дополнительные учётные данные (в настройках)",
|
||||
"checkOnStart": "Проверять наличие обновлений при запуске",
|
||||
"tryInferAppIdFromCode": "Попытаться определить ID приложения из исходного кода",
|
||||
"removeOnExternalUninstall": "Автоматически убирать из списка удаленные извне приложения",
|
||||
"tryInferAppIdFromCode": "Пытаться определить ID приложения из исходного кода",
|
||||
"removeOnExternalUninstall": "Автоматически убирать из списка удалённые извне приложения",
|
||||
"pickHighestVersionCode": "Автовыбор актуальной версии кода APK",
|
||||
"checkUpdateOnDetailPage": "Проверять наличие обновлений при открытии страницы приложения",
|
||||
"disablePageTransitions": "Отключить анимацию перехода между страницами",
|
||||
"reversePageTransitions": "Реверс анимации перехода между страницами",
|
||||
"minStarCount": "Минимальное количество звёзд",
|
||||
"addInfoBelow": "Добавьте эту информацию ниже",
|
||||
"addInfoInSettings": "Добавьте эту информацию в Настройки",
|
||||
"githubSourceNote": "Используя ключ API можно обойти лимит запросов GitHub",
|
||||
"addInfoInSettings": "Добавьте эту информацию в «Настройки»",
|
||||
"githubSourceNote": "Используя ключ API, можно обойти ограничение запросов GitHub",
|
||||
"sortByLastLinkSegment": "Сортировать только по последнему сегменту ссылки",
|
||||
"filterReleaseNotesByRegEx": "Фильтровать примечания к выпуску\n(регулярное выражение)",
|
||||
"customLinkFilterRegex": "Пользовательский фильтр ссылок APK\n(регулярное выражение, по умолчанию: '.apk$')",
|
||||
"customLinkFilterRegex": "Пользовательский фильтр ссылок APK\n(регулярное выражение, по умолчанию: «.apk$»)",
|
||||
"appsPossiblyUpdated": "Попытки обновления приложений",
|
||||
"appsPossiblyUpdatedNotifDescription": "Уведомление о возможных обновлениях одного или нескольких приложений в фоновом режиме",
|
||||
"xWasPossiblyUpdatedToY": "{} возможно был обновлен до {}",
|
||||
"xWasPossiblyUpdatedToY": "{} возможно был обновлён до {}",
|
||||
"enableBackgroundUpdates": "Включить обновления в фоне",
|
||||
"backgroundUpdateReqsExplanation": "Фоновые обновления могут быть возможны не для всех приложений",
|
||||
"backgroundUpdateLimitsExplanation": "Успешность фоновой установки можно определить только после открытия Obtainium",
|
||||
"verifyLatestTag": "Проверять тег 'latest'",
|
||||
"intermediateLinkRegex": "Фильтр для \"промежуточной\" ссылки для посещения",
|
||||
"verifyLatestTag": "Проверять метку «latest»",
|
||||
"intermediateLinkRegex": "Фильтр для «промежуточной» ссылки для посещения",
|
||||
"filterByLinkText": "Фильтрация ссылок по тексту ссылки",
|
||||
"intermediateLinkNotFound": "Промежуточная ссылка не найдена",
|
||||
"intermediateLink": "Промежуточная ссылка",
|
||||
"exemptFromBackgroundUpdates": "Исключить из фоновых обновлений (если включено)",
|
||||
"bgUpdatesOnWiFiOnly": "Отключить фоновые обновления, если нет соединения с Wi-Fi",
|
||||
"bgUpdatesWhileChargingOnly": "Отключение фоновых обновлений при отсутствии зарядки",
|
||||
"autoSelectHighestVersionCode": "Автоматически выбирать APK с актуальной версией кода",
|
||||
"versionExtractionRegEx": "Регулярное выражение для извлечения версии",
|
||||
"trimVersionString": "Обрезка строки версии с помощью RegEx",
|
||||
"matchGroupToUseForX": "Группа соответствия, которую следует использовать для \"{}\"",
|
||||
"matchGroupToUse": "Выберите группу для использования",
|
||||
"highlightTouchTargets": "Выделить менее очевидные элементы управления касанием",
|
||||
"bgUpdatesOnWiFiOnly": "Отключить фоновые обновления, если нет подключения к Wi-Fi",
|
||||
"bgUpdatesWhileChargingOnly": "Отключить фоновые обновления, если не идёт зарядка",
|
||||
"autoSelectHighestVersionCode": "Автовыбор APK с актуальной версией кода",
|
||||
"versionExtractionRegEx": "Извлечение версии\n(регулярное выражение)",
|
||||
"trimVersionString": "Обрезка строки версии\n(регулярное выражение)",
|
||||
"matchGroupToUseForX": "Группа соответствия для «{}»",
|
||||
"matchGroupToUse": "Выбрать группу соответствия",
|
||||
"highlightTouchTargets": "Выделять менее очевидные элементы управления касанием",
|
||||
"pickExportDir": "Выбрать каталог для экспорта",
|
||||
"autoExportOnChanges": "Автоэкспорт при изменениях",
|
||||
"includeSettings": "Включить настройки",
|
||||
"filterVersionsByRegEx": "Фильтровать версии по регулярному выражению",
|
||||
"trySelectingSuggestedVersionCode": "Попробуйте выбрать предложенный код версии APK",
|
||||
"dontSortReleasesList": "Сохранить порядок релизов от API",
|
||||
"trySelectingSuggestedVersionCode": "Пробовать выбрать предложенный код версии APK",
|
||||
"dontSortReleasesList": "Сохранить порядок выпусков от API",
|
||||
"reverseSort": "Обратная сортировка",
|
||||
"takeFirstLink": "Взять первую ссылку",
|
||||
"skipSort": "Пропустить сортировку",
|
||||
@@ -290,18 +291,18 @@
|
||||
"onlyCheckInstalledOrTrackOnlyApps": "Проверять обновления только у установленных или отслеживаемых приложений",
|
||||
"supportFixedAPKURL": "Поддержка фиксированных URL-адресов APK",
|
||||
"selectX": "Выбрать {}",
|
||||
"parallelDownloads": "Разрешить параллельные загрузки",
|
||||
"parallelDownloads": "Использовать параллельные загрузки",
|
||||
"useShizuku": "Использовать Shizuku или Sui для установки",
|
||||
"shizukuBinderNotFound": "Совместимый сервис Shizuku не найден, возможно он не запущен",
|
||||
"shizukuBinderNotFound": "Совместимая служба Shizuku не найдена, возможно, она не запущена",
|
||||
"shizukuOld": "Устаревшая версия Shizuku (<11), обновите",
|
||||
"shizukuOldAndroidWithADB": "Shizuku работает на Android < 8.1 с ADB, обновите Android или используйте Sui",
|
||||
"shizukuPretendToBeGooglePlay": "Указать Google Play как источник установки (если используется Shizuku)",
|
||||
"shizukuPretendToBeGooglePlay": "Указывать Google Play как источник установки (если используется Shizuku)",
|
||||
"useSystemFont": "Использовать системный шрифт",
|
||||
"useVersionCodeAsOSVersion": "Использовать код версии приложения как версию, обнаруженную ОС",
|
||||
"requestHeader": "Заголовок запроса",
|
||||
"useLatestAssetDateAsReleaseDate": "Использовать последнюю загрузку ресурса в качестве даты выпуска",
|
||||
"useLatestAssetDateAsReleaseDate": "Использовать последнюю загрузку объекта в качестве даты выпуска",
|
||||
"defaultPseudoVersioningMethod": "Метод псевдоверсионирования по умолчанию",
|
||||
"partialAPKHash": "Частичный хэш APK",
|
||||
"partialAPKHash": "Частичный хеш APK",
|
||||
"APKLinkHash": "Хеш ссылки APK",
|
||||
"directAPKLink": "Прямая ссылка на APK",
|
||||
"pseudoVersionInUse": "Используется псевдоверсия",
|
||||
@@ -309,17 +310,17 @@
|
||||
"latest": "Последний",
|
||||
"invertRegEx": "Инвертировать регулярное выражение",
|
||||
"note": "Примечание",
|
||||
"selfHostedNote": "Выпадающий список \"{}\" можно использовать для доступа к самостоятельно размещенным/настроенным экземплярам любого источника.",
|
||||
"badDownload": "APK не удалось разобрать (несовместимая или неполная загрузка)",
|
||||
"beforeNewInstallsShareToAppVerifier": "Поделитесь новыми приложениями с AppVerifier (если доступно)",
|
||||
"selfHostedNote": "Выпадающий список «{}» можно использовать для доступа к самостоятельно размещённым/настроенным экземплярам любого источника.",
|
||||
"badDownload": "Не удалось разобрать APK (несовместимая или неполная загрузка)",
|
||||
"beforeNewInstallsShareToAppVerifier": "Делиться новыми приложениями с AppVerifier (если доступно)",
|
||||
"appVerifierInstructionToast": "Поделитесь с AppVerifier, а затем вернитесь сюда, когда будете готовы.",
|
||||
"wiki": "Помощь/Вики",
|
||||
"crowdsourcedConfigsLabel": "Конфигурации приложений на основе краудсорсинга (используйте на свой страх и риск)",
|
||||
"crowdsourcedConfigsShort": "Конфиги приложений с помощью краудсорсинга",
|
||||
"crowdsourcedConfigsShort": "Краудсорсинг конфигураций приложений",
|
||||
"allowInsecure": "Разрешить небезопасные HTTP-запросы",
|
||||
"stayOneVersionBehind": "Не отставайте от последней версии",
|
||||
"useFirstApkOfVersion": "Автоматический выбор первого из нескольких APK",
|
||||
"refreshBeforeDownload": "Обновляйте информацию о приложении перед загрузкой",
|
||||
"stayOneVersionBehind": "Оставаться на одну версию ниже последней",
|
||||
"useFirstApkOfVersion": "Автовыбор первого из нескольких APK",
|
||||
"refreshBeforeDownload": "Обновлять информацию о приложении перед загрузкой",
|
||||
"tencentAppStore": "Tencent App Store",
|
||||
"coolApk": "CoolApk",
|
||||
"vivoAppStore": "vivo App Store (CN)",
|
||||
@@ -327,67 +328,83 @@
|
||||
"smartname": "Имя (умное)",
|
||||
"sortMethod": "Метод сортировки",
|
||||
"welcome": "Добро пожаловать",
|
||||
"documentationLinksNote": "На странице Obtainium GitHub, ссылка на которую приведена ниже, содержатся ссылки на видео, статьи, обсуждения и другие ресурсы, которые помогут вам понять, как пользоваться приложением.",
|
||||
"batteryOptimizationNote": "Обратите внимание, что фоновая загрузка может работать более надежно, если отключить оптимизацию батареи ОС для Obtainium.",
|
||||
"fileDeletionError": "Не удалось удалить файл (попробуйте удалить его вручную, а затем повторите попытку): \"{}\"",
|
||||
"documentationLinksNote": "На странице Obtainium в GitHub, ссылка на которую приведена ниже, содержатся ссылки на видео, статьи, обсуждения и другие ресурсы, которые помогут вам понять, как пользоваться приложением.",
|
||||
"batteryOptimizationNote": "Обратите внимание, что фоновая загрузка может работать более надёжно, если отключить оптимизацию батареи ОС для Obtainium.",
|
||||
"fileDeletionError": "Не удалось удалить файл (попробуйте удалить его вручную, а затем повторите попытку): «{}»",
|
||||
"foregroundService": "Приоритетная служба Obtainium",
|
||||
"foregroundServiceExplanation": "Использовать приоритетную службу для проверки обновлений (надёжнее, энергозатратнее)",
|
||||
"fgServiceNotice": "Это уведомление необходимо для фоновой проверки обновлений (оно может быть скрыто в настройках ОС)",
|
||||
"excludeSecrets": "Исключить секреты",
|
||||
"removeAppQuestion": {
|
||||
"one": "Удалить приложение?",
|
||||
"other": "Удалить приложения?"
|
||||
},
|
||||
"tooManyRequestsTryAgainInMinutes": {
|
||||
"one": "Слишком много запросов (ограничение скорости) — попробуйте снова через {} минуту",
|
||||
"other": "Слишком много запросов (ограничение скорости) — попробуйте снова через {} минуты"
|
||||
"few": "Слишком много запросов (ограничение скорости) — попробуйте снова через {} минуты",
|
||||
"other": "Слишком много запросов (ограничение скорости) — попробуйте снова через {} минут"
|
||||
},
|
||||
"bgUpdateGotErrorRetryInMinutes": {
|
||||
"one": "При проверке обновлений в фоновом режиме возникла ошибка {}, повторная проверка будет запланирована через {} минуту",
|
||||
"other": "При проверке обновлений в фоновом режиме возникла ошибка {}, повторная проверка будет запланирована через {} минуты"
|
||||
"one": "При проверке обновлений в фоновом режиме возникла ошибка {}, повторная проверка будет через {} минуту",
|
||||
"few": "При проверке обновлений в фоновом режиме возникла ошибка {}, повторная проверка будет через {} минуты",
|
||||
"other": "При проверке обновлений в фоновом режиме возникла ошибка {}, повторная проверка будет через {} минут"
|
||||
},
|
||||
"bgCheckFoundUpdatesWillNotifyIfNeeded": {
|
||||
"one": "В ходе проверки обновления в фоновом режиме было обнаружено {} обновление — Пользователю будет отправлено уведомление, если это необходимо",
|
||||
"other": "В ходе проверки обновления в фоновом режиме было обнаружено {} обновлений — Пользователю будет отправлено уведомление, если это необходимо"
|
||||
"one": "При проверке в фоновом режиме было обнаружено {} обновления — пользователь будет уведомлен по необходимости",
|
||||
"other": "При проверке в фоновом режиме было обнаружено {} обновлений — пользователь будет уведомлен по необходимости"
|
||||
},
|
||||
"apps": {
|
||||
"one": "{} приложение",
|
||||
"few": "{} приложения",
|
||||
"other": "{} приложений"
|
||||
},
|
||||
"url": {
|
||||
"one": "{} URL-адрес",
|
||||
"other": "{} URL-адреса"
|
||||
"few": "{} URL-адреса",
|
||||
"other": "{} URL-адресов"
|
||||
},
|
||||
"minute": {
|
||||
"one": "{} минута",
|
||||
"other": "{} минуты"
|
||||
"few": "{} минуты",
|
||||
"other": "{} минут"
|
||||
},
|
||||
"hour": {
|
||||
"one": "{} час",
|
||||
"few": "{} часа",
|
||||
"other": "{} часов"
|
||||
},
|
||||
"day": {
|
||||
"one": "{} день",
|
||||
"few": "{} дня",
|
||||
"other": "{} дней"
|
||||
},
|
||||
"clearedNLogsBeforeXAfterY": {
|
||||
"one": "Очищен {n} журнал (до = {before}, после = {after})",
|
||||
"few": "Очищены {n} журнала (до = {before}, после = {after})",
|
||||
"other": "Очищено {n} журналов (до = {before}, после = {after})"
|
||||
},
|
||||
"xAndNMoreUpdatesAvailable": {
|
||||
"one": "У {} и еще 1 приложения есть обновление",
|
||||
"one": "У {} и ещё 1 приложения есть обновление",
|
||||
"other": "У {} и ещё {} приложений есть обновления"
|
||||
},
|
||||
"xAndNMoreUpdatesInstalled": {
|
||||
"one": "{} и ещё 1 приложение были обновлены",
|
||||
"few": "{} и ещё {} приложения были обновлены",
|
||||
"other": "{} и ещё {} приложений были обновлены"
|
||||
},
|
||||
"xAndNMoreUpdatesFailed": {
|
||||
"one": "Не удалось обновить {} и ещё 1 приложение",
|
||||
"few": "Не удалось обновить {} и ещё {} приложения",
|
||||
"other": "Не удалось обновить {} и ещё {} приложений"
|
||||
},
|
||||
"xAndNMoreUpdatesPossiblyInstalled": {
|
||||
"one": "{} и ещё 1 приложение могли быть обновлены",
|
||||
"few": "{} и ещё {} приложения могли быть обновлены",
|
||||
"other": "{} и ещё {} приложений могли быть обновлены"
|
||||
},
|
||||
"apk": {
|
||||
"one": "{} APK",
|
||||
"other": "{} APKи"
|
||||
"one": "{} APK-файл",
|
||||
"few": "{} APK-файла",
|
||||
"other": "{} APK-файлов"
|
||||
}
|
||||
}
|
||||
|
@@ -16,10 +16,11 @@ const neverAutoTranslate = {
|
||||
placeholder: ['pl'],
|
||||
importExport: ['fr'],
|
||||
url: ['fr'],
|
||||
vivoAppStore: ['cs', 'ja', 'ko'],
|
||||
vivoAppStore: ['cs', 'ja', 'ko', 'vi'],
|
||||
coolapk: ['ja'],
|
||||
obtainiumImport: ['nl'],
|
||||
appLogs: ['nl'],
|
||||
apks: ['vi'],
|
||||
tencentAppStore: ['*']
|
||||
}
|
||||
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"versionCorrectionDisabled": "Versionskorrigering inaktiverat (plugin verkar inte fungera)",
|
||||
"unknown": "Okänd",
|
||||
"none": "Ingen",
|
||||
"all": "Alla",
|
||||
"never": "Aldrig",
|
||||
"latestVersionX": "Senaste Version: {}",
|
||||
"installedVersionX": "Installerad Version: {}",
|
||||
@@ -330,6 +331,10 @@
|
||||
"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?"
|
||||
@@ -355,16 +360,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})",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"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: {}",
|
||||
@@ -330,6 +331,10 @@
|
||||
"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?"
|
||||
@@ -355,16 +360,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})",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"versionCorrectionDisabled": "Виправлення версії вимкнено (здається, плагін не працює)",
|
||||
"unknown": "Невідомо",
|
||||
"none": "Нічого",
|
||||
"all": "Усе.",
|
||||
"never": "Ніколи",
|
||||
"latestVersionX": "Остання версія: {}",
|
||||
"installedVersionX": "Встановлено: {}",
|
||||
@@ -330,6 +331,10 @@
|
||||
"documentationLinksNote": "Сторінка Obtainium на GitHub, посилання на яку наведено нижче, містить посилання на відео, статті, дискусії та інші ресурси, які допоможуть вам зрозуміти, як користуватися додатком.",
|
||||
"batteryOptimizationNote": "Зауважте, що фонові завантаження можуть працювати надійніше, якщо ви вимкнете оптимізацію батареї ОС для Obtainium.",
|
||||
"fileDeletionError": "Не вдалося видалити файл (спробуйте видалити його вручну, а потім спробуйте ще раз): \"{}\"",
|
||||
"foregroundService": "Обслуговування переднього плану Obtainium",
|
||||
"foregroundServiceExplanation": "Використовуйте службу переднього плану для перевірки оновлень (надійніша, споживає більше енергії)",
|
||||
"fgServiceNotice": "Це сповіщення необхідне для фонової перевірки оновлень (його можна приховати в налаштуваннях ОС)",
|
||||
"excludeSecrets": "Виключити секрети",
|
||||
"removeAppQuestion": {
|
||||
"one": "Видалити застосунок?",
|
||||
"other": "Видалити застосунки?"
|
||||
|
@@ -113,7 +113,7 @@
|
||||
"dark": "Tối",
|
||||
"light": "Sáng",
|
||||
"followSystem": "Theo hệ thống",
|
||||
"followSystemThemeExplanation": "Following system theme is possible only by using third-party applications",
|
||||
"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.",
|
||||
"useBlackTheme": "Nền đen",
|
||||
"appSortBy": "Sắp xếp ứng dụng",
|
||||
"authorName": "Tác giả",
|
||||
@@ -167,6 +167,7 @@
|
||||
"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: {}",
|
||||
@@ -211,7 +212,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": "Use release title as version string",
|
||||
"releaseTitleAsVersion": "Sử dụng tiêu đề bản phát hành làm chuỗi phiên bản",
|
||||
"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",
|
||||
@@ -221,7 +222,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": "Attempt to filter links by CPU architecture if possible",
|
||||
"autoLinkFilterByArch": "Cố gắng lọc các liên kết theo kiến trúc CPU nếu có thể.",
|
||||
"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'",
|
||||
@@ -257,7 +258,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": "Disable background updates when not charging",
|
||||
"bgUpdatesWhileChargingOnly": "Tắt cập nhật nền khi không sạc pin.",
|
||||
"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",
|
||||
@@ -295,7 +296,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": "Set Google Play as the installation source (if Shizuku is used)",
|
||||
"shizukuPretendToBeGooglePlay": "Đặt Google Play làm nguồn cài đặt (nếu sử dụng Shizuku)",
|
||||
"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",
|
||||
@@ -316,20 +317,24 @@
|
||||
"wiki": "Trợ giúp/Wiki",
|
||||
"crowdsourcedConfigsLabel": "Crowdsourced App Configurations (use at your own risk)",
|
||||
"crowdsourcedConfigsShort": "Crowdsourced App Configurations",
|
||||
"allowInsecure": "Allow insecure HTTP requests",
|
||||
"stayOneVersionBehind": "Stay one version behind latest",
|
||||
"useFirstApkOfVersion": "Auto-select first of multiple APKs",
|
||||
"refreshBeforeDownload": "Refresh app details before download",
|
||||
"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",
|
||||
"tencentAppStore": "Tencent App Store",
|
||||
"coolApk": "CoolApk",
|
||||
"vivoAppStore": "vivo App Store (CN)",
|
||||
"name": "Name",
|
||||
"name": "Tên",
|
||||
"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.",
|
||||
"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.",
|
||||
"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): \"{}\"",
|
||||
"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",
|
||||
"removeAppQuestion": {
|
||||
"one": "Gỡ ứng dụng?",
|
||||
"other": "Gỡ ứng dụng?"
|
||||
@@ -355,15 +360,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": {
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"versionCorrectionDisabled": "版本校正已停用(外掛程式似乎無法正常工作)",
|
||||
"unknown": "未知",
|
||||
"none": "無",
|
||||
"all": "All",
|
||||
"never": "從不",
|
||||
"latestVersionX": "最新版本:{}",
|
||||
"installedVersionX": "已安裝版本:{}",
|
||||
@@ -330,6 +331,10 @@
|
||||
"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": "移除應用程式?"
|
||||
|
@@ -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,6 +167,7 @@
|
||||
"versionCorrectionDisabled": "禁用版本号更正(插件似乎未起作用)",
|
||||
"unknown": "未知",
|
||||
"none": "无",
|
||||
"all": "全部",
|
||||
"never": "从未",
|
||||
"latestVersionX": "最新版本:{}",
|
||||
"installedVersionX": "当前版本:{}",
|
||||
@@ -199,7 +200,7 @@
|
||||
"noCategory": "无类别",
|
||||
"noCategories": "无类别",
|
||||
"deleteCategoriesQuestion": "是否删除选中的类别?",
|
||||
"categoryDeleteWarning": "被删除类别的应用将恢复为未分类状态。",
|
||||
"categoryDeleteWarning": "被删除类别下的应用将恢复为未分类状态。",
|
||||
"addCategory": "添加类别",
|
||||
"label": "标签",
|
||||
"language": "语言",
|
||||
@@ -211,7 +212,7 @@
|
||||
"uninstallFromDevice": "从设备中卸载",
|
||||
"onlyWorksWithNonVersionDetectApps": "仅适用于禁用版本检测的应用。",
|
||||
"releaseDateAsVersion": "将发行日期作为版本号",
|
||||
"releaseTitleAsVersion": "使用版本标题作为版本字符串",
|
||||
"releaseTitleAsVersion": "将发行标题作为版本字符串",
|
||||
"releaseDateAsVersionExplanation": "此选项应该仅用于无法进行版本检测但能够获取发行日期的应用。",
|
||||
"changes": "更新日志",
|
||||
"releaseDate": "发行日期",
|
||||
@@ -220,8 +221,8 @@
|
||||
"versionDetection": "版本检测",
|
||||
"standardVersionDetection": "常规版本检测",
|
||||
"groupByCategory": "按类别分组显示",
|
||||
"autoApkFilterByArch": "如果可能,尝试按设备支持的 CPU 架构筛选 APK 文件",
|
||||
"autoLinkFilterByArch": "尽可能按 CPU 架构过滤链接",
|
||||
"autoApkFilterByArch": "尽可能按设备支持的 CPU 架构筛选 APK 文件",
|
||||
"autoLinkFilterByArch": "尽可能按设备支持的 CPU 架构筛选链接",
|
||||
"overrideSource": "覆盖来源",
|
||||
"dontShowAgain": "不再显示",
|
||||
"dontShowTrackOnlyWarnings": "忽略“仅追踪”模式警告",
|
||||
@@ -249,7 +250,7 @@
|
||||
"xWasPossiblyUpdatedToY": "已尝试将“{}”更新至 {}。",
|
||||
"enableBackgroundUpdates": "启用全局后台更新",
|
||||
"backgroundUpdateReqsExplanation": "后台更新未必适用于所有的应用。",
|
||||
"backgroundUpdateLimitsExplanation": "只有在启动 Obtainium 时才能确认安装是否成功。",
|
||||
"backgroundUpdateLimitsExplanation": "只有在开启 Obtainium 时才能确认是否安装成功。",
|
||||
"verifyLatestTag": "验证“Latest”标签",
|
||||
"intermediateLinkRegex": "筛选中转链接的正则表达式",
|
||||
"filterByLinkText": "根据链接文本进行筛选",
|
||||
@@ -257,12 +258,12 @@
|
||||
"intermediateLink": "中转链接",
|
||||
"exemptFromBackgroundUpdates": "禁用后台更新(仅此应用生效,即使已启用全局后台更新)",
|
||||
"bgUpdatesOnWiFiOnly": "未连接 Wi-Fi 时禁用后台更新",
|
||||
"bgUpdatesWhileChargingOnly": "不充电时禁用后台更新",
|
||||
"bgUpdatesWhileChargingOnly": "未充电时禁用后台更新",
|
||||
"autoSelectHighestVersionCode": "自动选择内部版本号最高的 APK 文件",
|
||||
"versionExtractionRegEx": "提取版本号的正则表达式",
|
||||
"trimVersionString": "使用 RegEx 修剪版本字符串",
|
||||
"matchGroupToUseForX": "用于\"{}\"的匹配组",
|
||||
"matchGroupToUse": "从上述匹配结果中引用的捕获组",
|
||||
"trimVersionString": "修剪版本字符串的正则表达式",
|
||||
"matchGroupToUseForX": "“{}”中引用的捕获组",
|
||||
"matchGroupToUse": "“提取版本字符串的正则表达式”中引用的捕获组",
|
||||
"highlightTouchTargets": "突出展示不明显的可交互区域",
|
||||
"pickExportDir": "选择导出文件夹",
|
||||
"autoExportOnChanges": "数据变更时自动导出",
|
||||
@@ -314,29 +315,33 @@
|
||||
"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": "下面链接的 Obtainium GitHub 页面包含视频、文章、讨论和其他资源的链接,可帮助您了解如何使用该应用程序。",
|
||||
"batteryOptimizationNote": "请注意,如果为 Obtainium 禁用操作系统电池优化功能,后台下载可能会更稳定。",
|
||||
"fileDeletionError": "删除文件失败(尝试手动删除,然后再试一次):\"{}\"",
|
||||
"welcome": "欢迎",
|
||||
"documentationLinksNote": "下方链接的 GitHub 页面中包含关于 Obtainium 的视频、文章、讨论及其他资源,可帮助您了解本应用的使用方法。",
|
||||
"batteryOptimizationNote": "请注意,在设置中切换为“前台服务”,并/或关闭操作系统对 Obtainium 的电池优化,可能会让后台下载更稳定。",
|
||||
"fileDeletionError": "删除文件失败(请手动删除后再次尝试):\"{}\"",
|
||||
"foregroundService": "Obtainium 前台服务",
|
||||
"foregroundServiceExplanation": "使用前台服务检查更新(更稳定,但也更耗电)",
|
||||
"fgServiceNotice": "后台检查更新时需要此通知(可在操作系统设置中隐藏)",
|
||||
"excludeSecrets": "排除机密",
|
||||
"removeAppQuestion": {
|
||||
"one": "是否删除应用?",
|
||||
"other": "是否删除应用?"
|
||||
},
|
||||
"tooManyRequestsTryAgainInMinutes": {
|
||||
"one": "API 请求过于频繁(速率限制)- 请在 {} 分钟后重试",
|
||||
"other": "API 请求过于频繁(速率限制)- 请在 {} 分钟后重试"
|
||||
"one": "请求过于频繁(API 速率限制)- 请在 {} 分钟后重试",
|
||||
"other": "请求过于频繁(API 速率限制)- 请在 {} 分钟后重试"
|
||||
},
|
||||
"bgUpdateGotErrorRetryInMinutes": {
|
||||
"one": "后台更新检查遇到了“{}”问题,将于 {} 分钟后重试",
|
||||
@@ -367,27 +372,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 文件"
|
||||
}
|
||||
}
|
||||
|
48
fastlane/metadata/android/de/full_description.txt
Normal file
48
fastlane/metadata/android/de/full_description.txt
Normal file
@@ -0,0 +1,48 @@
|
||||
<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>
|
1
fastlane/metadata/android/de/short_description.txt
Normal file
1
fastlane/metadata/android/de/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
… Android-App-Updates direkt von der Quelle erhalten
|
1
fastlane/metadata/android/de/title.txt
Normal file
1
fastlane/metadata/android/de/title.txt
Normal file
@@ -0,0 +1 @@
|
||||
Obtainium
|
@@ -3,7 +3,7 @@ import 'package:obtainium/custom_errors.dart';
|
||||
import 'package:obtainium/providers/source_provider.dart';
|
||||
|
||||
class Codeberg extends AppSource {
|
||||
GitHub gh = GitHub();
|
||||
GitHub gh = GitHub(hostChanged: true);
|
||||
Codeberg() {
|
||||
name = 'Forgejo (Codeberg)';
|
||||
hosts = ['codeberg.org'];
|
||||
|
76
lib/app_sources/farsroid.dart
Normal file
76
lib/app_sources/farsroid.dart
Normal file
@@ -0,0 +1,76 @@
|
||||
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));
|
||||
}
|
||||
}
|
@@ -112,13 +112,17 @@ class FDroid extends AppSource {
|
||||
bool isGitHub = false;
|
||||
bool isGitLab = false;
|
||||
try {
|
||||
GitHub().sourceSpecificStandardizeURL(details.changeLog!);
|
||||
GitHub(
|
||||
hostChanged: true,
|
||||
).sourceSpecificStandardizeURL(details.changeLog!);
|
||||
isGitHub = true;
|
||||
} catch (e) {
|
||||
//
|
||||
}
|
||||
try {
|
||||
GitLab().sourceSpecificStandardizeURL(details.changeLog!);
|
||||
GitLab(
|
||||
hostChanged: true,
|
||||
).sourceSpecificStandardizeURL(details.changeLog!);
|
||||
isGitLab = true;
|
||||
} catch (e) {
|
||||
//
|
||||
|
@@ -13,10 +13,11 @@ import 'package:obtainium/providers/source_provider.dart';
|
||||
import 'package:url_launcher/url_launcher_string.dart';
|
||||
|
||||
class GitHub extends AppSource {
|
||||
GitHub() {
|
||||
GitHub({hostChanged = false}) {
|
||||
hosts = ['github.com'];
|
||||
appIdInferIsOptional = true;
|
||||
showReleaseDateAsVersionToggle = true;
|
||||
this.hostChanged = hostChanged;
|
||||
|
||||
sourceConfigSettingFormItems = [
|
||||
GeneratedFormTextField(
|
||||
|
@@ -12,10 +12,11 @@ import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:url_launcher/url_launcher_string.dart';
|
||||
|
||||
class GitLab extends AppSource {
|
||||
GitLab() {
|
||||
GitLab({bool hostChanged = false}) {
|
||||
hosts = ['gitlab.com'];
|
||||
canSearch = true;
|
||||
showReleaseDateAsVersionToggle = true;
|
||||
this.hostChanged = hostChanged;
|
||||
|
||||
sourceConfigSettingFormItems = [
|
||||
GeneratedFormTextField(
|
||||
@@ -144,7 +145,7 @@ class GitLab extends AppSource {
|
||||
Map<String, dynamic> additionalSettings,
|
||||
) async {
|
||||
// Prepare request params
|
||||
var names = GitHub().getAppNames(standardUrl);
|
||||
var names = GitHub(hostChanged: true).getAppNames(standardUrl);
|
||||
String projectUriComponent =
|
||||
'${Uri.encodeComponent(names.author)}%2F${Uri.encodeComponent(names.name)}';
|
||||
String? PAT = await getPATIfAny(hostChanged ? additionalSettings : {});
|
||||
|
@@ -113,14 +113,23 @@ 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>>> grabLinksCommon(
|
||||
Future<List<MapEntry<String, String>>> grabLinksCommonFromRes(
|
||||
Response res,
|
||||
Map<String, dynamic> additionalSettings,
|
||||
) async {
|
||||
if (res.statusCode != 200) {
|
||||
throw getObtainiumHttpError(res);
|
||||
}
|
||||
var html = parse(res.body);
|
||||
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);
|
||||
List<MapEntry<String, String>> allLinks = html
|
||||
.querySelectorAll('a')
|
||||
.map(
|
||||
@@ -132,21 +141,21 @@ Future<List<MapEntry<String, String>>> grabLinksCommon(
|
||||
),
|
||||
)
|
||||
.where((element) => element.key.isNotEmpty)
|
||||
.map((e) => MapEntry(ensureAbsoluteUrl(e.key, res.request!.url), e.value))
|
||||
.map((e) => MapEntry(ensureAbsoluteUrl(e.key, reqUrl), e.value))
|
||||
.toList();
|
||||
if (allLinks.isEmpty) {
|
||||
allLinks = getLinksInLines(res.body);
|
||||
allLinks = getLinksInLines(rawBody);
|
||||
}
|
||||
if (allLinks.isEmpty) {
|
||||
// Getting desperate
|
||||
try {
|
||||
var jsonStrings = collectAllStringsFromJSONObject(jsonDecode(res.body));
|
||||
var jsonStrings = collectAllStringsFromJSONObject(jsonDecode(rawBody));
|
||||
allLinks = getLinksInLines(jsonStrings.join('\n'));
|
||||
if (allLinks.isEmpty) {
|
||||
allLinks = getLinksInLines(
|
||||
jsonStrings
|
||||
.map((l) {
|
||||
return ensureAbsoluteUrl(l, res.request!.url);
|
||||
return ensureAbsoluteUrl(l, reqUrl);
|
||||
})
|
||||
.join('\n'),
|
||||
);
|
||||
@@ -368,7 +377,7 @@ class HTML extends AppSource {
|
||||
.where((l) => l['customLinkFilterRegex'].isNotEmpty == true)
|
||||
.toList();
|
||||
for (int i = 0; i < (additionalSettings['intermediateLink'].length); i++) {
|
||||
var intLinks = await grabLinksCommon(
|
||||
var intLinks = await grabLinksCommonFromRes(
|
||||
await sourceRequest(currentUrl, additionalSettings),
|
||||
additionalSettings['intermediateLink'][i],
|
||||
);
|
||||
@@ -392,7 +401,7 @@ class HTML extends AppSource {
|
||||
.join('\n')
|
||||
.split('\n')
|
||||
.join('\\n');
|
||||
links = await grabLinksCommon(res, additionalSettings);
|
||||
links = await grabLinksCommonFromRes(res, additionalSettings);
|
||||
links = filterApks(
|
||||
links,
|
||||
additionalSettings['apkFilterRegEx'],
|
||||
|
@@ -55,7 +55,7 @@ class Mullvad extends AppSource {
|
||||
}
|
||||
String? changeLog;
|
||||
try {
|
||||
changeLog = (await GitHub().getLatestAPKDetails(
|
||||
changeLog = (await GitHub(hostChanged: true).getLatestAPKDetails(
|
||||
'https://github.com/mullvad/mullvadvpn-app',
|
||||
{'fallbackToOlderReleases': true},
|
||||
)).changeLog;
|
||||
|
@@ -36,13 +36,15 @@ class RuStore extends AppSource {
|
||||
return Uri.parse(standardUrl).pathSegments.last;
|
||||
}
|
||||
|
||||
Future<String> decodeString(String str) async {
|
||||
Future<dynamic> decodeJsonBody(Uint8List bytes) async {
|
||||
try {
|
||||
return (await CharsetDetector.autoDecode(
|
||||
Uint8List.fromList(str.codeUnits),
|
||||
)).string;
|
||||
return jsonDecode((await CharsetDetector.autoDecode(bytes)).string);
|
||||
} catch (e) {
|
||||
return str;
|
||||
try {
|
||||
return jsonDecode(utf8.decode(bytes));
|
||||
} catch (_) {
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,14 +61,14 @@ class RuStore extends AppSource {
|
||||
if (res0.statusCode != 200) {
|
||||
throw getObtainiumHttpError(res0);
|
||||
}
|
||||
var appDetails = jsonDecode(res0.body)['body'];
|
||||
var appDetails = (await decodeJsonBody(res0.bodyBytes))['body'];
|
||||
if (appDetails['appId'] == null) {
|
||||
throw NoReleasesError();
|
||||
}
|
||||
|
||||
String appName = appDetails['appName'] ?? tr('app');
|
||||
String author = appDetails['companyName'] ?? name;
|
||||
String? dateStr = appDetails['updatedAt'];
|
||||
String? dateStr = appDetails['appVerUpdatedAt'];
|
||||
String? version = appDetails['versionName'];
|
||||
String? changeLog = appDetails['whatsNew'];
|
||||
if (version == null) {
|
||||
@@ -83,15 +85,11 @@ class RuStore extends AppSource {
|
||||
followRedirects: false,
|
||||
postBody: {"appId": appDetails['appId'], "firstInstall": true},
|
||||
);
|
||||
var downloadDetails = jsonDecode(res1.body)['body'];
|
||||
var downloadDetails = (await decodeJsonBody(res1.bodyBytes))['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([
|
||||
|
@@ -5,6 +5,7 @@ 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 {
|
||||
@@ -53,7 +54,10 @@ class UnsupportedURLError extends ObtainiumError {
|
||||
}
|
||||
|
||||
class DowngradeError extends ObtainiumError {
|
||||
DowngradeError() : super(tr('cantInstallOlderVersion'));
|
||||
DowngradeError(int currentVersionCode, int newVersionCode)
|
||||
: super(
|
||||
'${tr('cantInstallOlderVersion')} (versionCode $currentVersionCode ➔ $newVersionCode)',
|
||||
);
|
||||
}
|
||||
|
||||
class InstallError extends ObtainiumError {
|
||||
@@ -155,6 +159,7 @@ 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
|
||||
@@ -166,7 +171,7 @@ String list2FriendlyString(List<String> list) {
|
||||
(e.key == list.length - 1
|
||||
? ''
|
||||
: e.key == list.length - 2
|
||||
? ' and '
|
||||
? '${isUsingEnglish ? ',' : ''} and '
|
||||
: ', '),
|
||||
)
|
||||
.join('');
|
||||
|
250
lib/main.dart
250
lib/main.dart
@@ -9,7 +9,6 @@ import 'package:obtainium/providers/native_provider.dart';
|
||||
import 'package:obtainium/providers/notifications_provider.dart';
|
||||
import 'package:obtainium/providers/settings_provider.dart';
|
||||
import 'package:obtainium/providers/source_provider.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:dynamic_color/dynamic_color.dart';
|
||||
import 'package:device_info_plus/device_info_plus.dart';
|
||||
@@ -19,6 +18,7 @@ import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:easy_localization/src/easy_localization_controller.dart';
|
||||
// ignore: implementation_imports
|
||||
import 'package:easy_localization/src/localization.dart';
|
||||
import 'package:flutter_foreground_task/flutter_foreground_task.dart';
|
||||
|
||||
List<MapEntry<Locale, String>> supportedLocales = const [
|
||||
MapEntry(Locale('en'), 'English'),
|
||||
@@ -51,6 +51,7 @@ 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';
|
||||
@@ -98,6 +99,34 @@ void backgroundFetchHeadlessTask(HeadlessTask task) async {
|
||||
BackgroundFetch.finish(taskId);
|
||||
}
|
||||
|
||||
@pragma('vm:entry-point')
|
||||
void startCallback() {
|
||||
FlutterForegroundTask.setTaskHandler(MyTaskHandler());
|
||||
}
|
||||
|
||||
class MyTaskHandler extends TaskHandler {
|
||||
static const String incrementCountCommand = 'incrementCount';
|
||||
|
||||
@override
|
||||
Future<void> onStart(DateTime timestamp, TaskStarter starter) async {
|
||||
print('onStart(starter: ${starter.name})');
|
||||
bgUpdateCheck('bg_check', null);
|
||||
}
|
||||
|
||||
@override
|
||||
void onRepeatEvent(DateTime timestamp) {
|
||||
bgUpdateCheck('bg_check', null);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> onDestroy(DateTime timestamp, bool isTimeout) async {
|
||||
print('Foreground service onDestroy(isTimeout: $isTimeout)');
|
||||
}
|
||||
|
||||
@override
|
||||
void onReceiveData(Object data) {}
|
||||
}
|
||||
|
||||
void main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
try {
|
||||
@@ -119,6 +148,7 @@ void main() async {
|
||||
}
|
||||
final np = NotificationsProvider();
|
||||
await np.initialize();
|
||||
FlutterForegroundTask.initCommunicationPort();
|
||||
runApp(
|
||||
MultiProvider(
|
||||
providers: [
|
||||
@@ -153,6 +183,83 @@ class _ObtainiumState extends State<Obtainium> {
|
||||
void initState() {
|
||||
super.initState();
|
||||
initPlatformState();
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
requestNonOptionalPermissions();
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> requestNonOptionalPermissions() async {
|
||||
final NotificationPermission notificationPermission =
|
||||
await FlutterForegroundTask.checkNotificationPermission();
|
||||
if (notificationPermission != NotificationPermission.granted) {
|
||||
await FlutterForegroundTask.requestNotificationPermission();
|
||||
}
|
||||
if (!await FlutterForegroundTask.isIgnoringBatteryOptimizations) {
|
||||
await FlutterForegroundTask.requestIgnoreBatteryOptimization();
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Future<ServiceRequestResult?> startForegroundService(bool restart) async {
|
||||
initForegroundService();
|
||||
if (await FlutterForegroundTask.isRunningService) {
|
||||
if (restart) {
|
||||
return FlutterForegroundTask.restartService();
|
||||
}
|
||||
} else {
|
||||
return FlutterForegroundTask.startService(
|
||||
serviceTypes: [ForegroundServiceTypes.specialUse],
|
||||
serviceId: 666,
|
||||
notificationTitle: tr('foregroundService'),
|
||||
notificationText: tr('fgServiceNotice'),
|
||||
notificationIcon: NotificationIcon(
|
||||
metaDataName: 'dev.imranr.obtainium.service.NOTIFICATION_ICON',
|
||||
),
|
||||
callback: startCallback,
|
||||
);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
stopForegroundService() async {
|
||||
if (await FlutterForegroundTask.isRunningService) {
|
||||
return FlutterForegroundTask.stopService();
|
||||
}
|
||||
}
|
||||
|
||||
// void onReceiveForegroundServiceData(Object data) {
|
||||
// print('onReceiveTaskData: $data');
|
||||
// }
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
// Remove a callback to receive data sent from the TaskHandler.
|
||||
// FlutterForegroundTask.removeTaskDataCallback(onReceiveForegroundServiceData);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
Future<void> initPlatformState() async {
|
||||
@@ -186,15 +293,25 @@ class _ObtainiumState extends State<Obtainium> {
|
||||
AppsProvider appsProvider = context.read<AppsProvider>();
|
||||
LogsProvider logs = context.read<LogsProvider>();
|
||||
NotificationsProvider notifs = context.read<NotificationsProvider>();
|
||||
|
||||
if (settingsProvider.updateInterval == 0) {
|
||||
stopForegroundService();
|
||||
BackgroundFetch.stop();
|
||||
} else {
|
||||
if (settingsProvider.useFGService) {
|
||||
BackgroundFetch.stop();
|
||||
startForegroundService(false);
|
||||
} else {
|
||||
stopForegroundService();
|
||||
BackgroundFetch.start();
|
||||
}
|
||||
}
|
||||
if (settingsProvider.prefs == null) {
|
||||
settingsProvider.initializeSettings();
|
||||
} else {
|
||||
bool isFirstRun = settingsProvider.checkAndFlipFirstRun();
|
||||
if (isFirstRun) {
|
||||
logs.add('This is the first ever run of Obtainium.');
|
||||
// If this is the first run, ask for notification permissions and add Obtainium to the Apps list
|
||||
Permission.notification.request();
|
||||
// If this is the first run, add Obtainium to the Apps list
|
||||
if (!fdroid) {
|
||||
getInstalledInfo(obtainiumId)
|
||||
.then((value) {
|
||||
@@ -236,68 +353,71 @@ class _ObtainiumState extends State<Obtainium> {
|
||||
notifs.checkLaunchByNotif();
|
||||
});
|
||||
|
||||
return DynamicColorBuilder(
|
||||
builder: (ColorScheme? lightDynamic, ColorScheme? darkDynamic) {
|
||||
// Decide on a colour/brightness scheme based on OS and user settings
|
||||
ColorScheme lightColorScheme;
|
||||
ColorScheme darkColorScheme;
|
||||
if (lightDynamic != null &&
|
||||
darkDynamic != null &&
|
||||
settingsProvider.useMaterialYou) {
|
||||
lightColorScheme = lightDynamic.harmonized();
|
||||
darkColorScheme = darkDynamic.harmonized();
|
||||
} else {
|
||||
lightColorScheme = ColorScheme.fromSeed(
|
||||
seedColor: settingsProvider.themeColor,
|
||||
return WithForegroundTask(
|
||||
child: DynamicColorBuilder(
|
||||
builder: (ColorScheme? lightDynamic, ColorScheme? darkDynamic) {
|
||||
// Decide on a colour/brightness scheme based on OS and user settings
|
||||
ColorScheme lightColorScheme;
|
||||
ColorScheme darkColorScheme;
|
||||
if (lightDynamic != null &&
|
||||
darkDynamic != null &&
|
||||
settingsProvider.useMaterialYou) {
|
||||
lightColorScheme = lightDynamic.harmonized();
|
||||
darkColorScheme = darkDynamic.harmonized();
|
||||
} else {
|
||||
lightColorScheme = ColorScheme.fromSeed(
|
||||
seedColor: settingsProvider.themeColor,
|
||||
);
|
||||
darkColorScheme = ColorScheme.fromSeed(
|
||||
seedColor: settingsProvider.themeColor,
|
||||
brightness: Brightness.dark,
|
||||
);
|
||||
}
|
||||
|
||||
// set the background and surface colors to pure black in the amoled theme
|
||||
if (settingsProvider.useBlackTheme) {
|
||||
darkColorScheme = darkColorScheme
|
||||
.copyWith(surface: Colors.black)
|
||||
.harmonized();
|
||||
}
|
||||
|
||||
if (settingsProvider.useSystemFont) NativeFeatures.loadSystemFont();
|
||||
|
||||
return MaterialApp(
|
||||
title: 'Obtainium',
|
||||
localizationsDelegates: context.localizationDelegates,
|
||||
supportedLocales: context.supportedLocales,
|
||||
locale: context.locale,
|
||||
navigatorKey: globalNavigatorKey,
|
||||
debugShowCheckedModeBanner: false,
|
||||
theme: ThemeData(
|
||||
useMaterial3: true,
|
||||
colorScheme: settingsProvider.theme == ThemeSettings.dark
|
||||
? darkColorScheme
|
||||
: lightColorScheme,
|
||||
fontFamily: settingsProvider.useSystemFont
|
||||
? 'SystemFont'
|
||||
: 'Montserrat',
|
||||
),
|
||||
darkTheme: ThemeData(
|
||||
useMaterial3: true,
|
||||
colorScheme: settingsProvider.theme == ThemeSettings.light
|
||||
? lightColorScheme
|
||||
: darkColorScheme,
|
||||
fontFamily: settingsProvider.useSystemFont
|
||||
? 'SystemFont'
|
||||
: 'Montserrat',
|
||||
),
|
||||
home: Shortcuts(
|
||||
shortcuts: <LogicalKeySet, Intent>{
|
||||
LogicalKeySet(LogicalKeyboardKey.select):
|
||||
const ActivateIntent(),
|
||||
},
|
||||
child: const HomePage(),
|
||||
),
|
||||
);
|
||||
darkColorScheme = ColorScheme.fromSeed(
|
||||
seedColor: settingsProvider.themeColor,
|
||||
brightness: Brightness.dark,
|
||||
);
|
||||
}
|
||||
|
||||
// set the background and surface colors to pure black in the amoled theme
|
||||
if (settingsProvider.useBlackTheme) {
|
||||
darkColorScheme = darkColorScheme
|
||||
.copyWith(surface: Colors.black)
|
||||
.harmonized();
|
||||
}
|
||||
|
||||
if (settingsProvider.useSystemFont) NativeFeatures.loadSystemFont();
|
||||
|
||||
return MaterialApp(
|
||||
title: 'Obtainium',
|
||||
localizationsDelegates: context.localizationDelegates,
|
||||
supportedLocales: context.supportedLocales,
|
||||
locale: context.locale,
|
||||
navigatorKey: globalNavigatorKey,
|
||||
debugShowCheckedModeBanner: false,
|
||||
theme: ThemeData(
|
||||
useMaterial3: true,
|
||||
colorScheme: settingsProvider.theme == ThemeSettings.dark
|
||||
? darkColorScheme
|
||||
: lightColorScheme,
|
||||
fontFamily: settingsProvider.useSystemFont
|
||||
? 'SystemFont'
|
||||
: 'Montserrat',
|
||||
),
|
||||
darkTheme: ThemeData(
|
||||
useMaterial3: true,
|
||||
colorScheme: settingsProvider.theme == ThemeSettings.light
|
||||
? lightColorScheme
|
||||
: darkColorScheme,
|
||||
fontFamily: settingsProvider.useSystemFont
|
||||
? 'SystemFont'
|
||||
: 'Montserrat',
|
||||
),
|
||||
home: Shortcuts(
|
||||
shortcuts: <LogicalKeySet, Intent>{
|
||||
LogicalKeySet(LogicalKeyboardKey.select): const ActivateIntent(),
|
||||
},
|
||||
child: const HomePage(),
|
||||
),
|
||||
);
|
||||
},
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -312,7 +312,10 @@ class AddAppPageState extends State<AddAppPage> {
|
||||
context: context,
|
||||
builder: (BuildContext ctx) {
|
||||
return SelectionModal(
|
||||
title: tr('selectX', args: [plural('source', 2)]),
|
||||
title: tr(
|
||||
'selectX',
|
||||
args: [plural('source', 2).toLowerCase()],
|
||||
),
|
||||
entries: sourceStrings,
|
||||
selectedByDefault: true,
|
||||
onlyOneSelectionAllowed: false,
|
||||
|
@@ -46,7 +46,10 @@ class _AppPageState extends State<AppPage> {
|
||||
}
|
||||
},
|
||||
onNavigationRequest: (NavigationRequest request) =>
|
||||
request.url.startsWith("rustore://")
|
||||
!(request.url.startsWith("http://") ||
|
||||
request.url.startsWith("https://") ||
|
||||
request.url.startsWith("ftp://") ||
|
||||
request.url.startsWith("ftps://"))
|
||||
? NavigationDecision.prevent
|
||||
: NavigationDecision.navigate,
|
||||
),
|
||||
@@ -229,7 +232,10 @@ 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: [tr('releaseAsset').toLowerCase()]),
|
||||
tr(
|
||||
'downloadX',
|
||||
args: [lowerCaseIfEnglish(tr('releaseAsset'))],
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
style: Theme.of(context).textTheme.labelSmall!.copyWith(
|
||||
decoration: TextDecoration.underline,
|
||||
|
@@ -1037,7 +1037,7 @@ class AppsPageState extends State<AppsPage> {
|
||||
var exportJSON = encoder.convert(
|
||||
appsProvider.generateExportJSON(
|
||||
appIds: selectedApps.map((e) => e.id).toList(),
|
||||
overrideExportSettings: false,
|
||||
overrideExportSettings: 0,
|
||||
),
|
||||
);
|
||||
String fn =
|
||||
@@ -1072,7 +1072,10 @@ class AppsPageState extends State<AppsPage> {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(
|
||||
tr('downloadX', args: [tr('releaseAsset').toLowerCase()]),
|
||||
tr(
|
||||
'downloadX',
|
||||
args: [lowerCaseIfEnglish(tr('releaseAsset'))],
|
||||
),
|
||||
),
|
||||
),
|
||||
const Divider(),
|
||||
|
@@ -14,7 +14,6 @@ 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';
|
||||
|
||||
@@ -201,14 +200,6 @@ 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'));
|
||||
|
@@ -272,7 +272,9 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
||||
showMessage(
|
||||
tr(
|
||||
'importedX',
|
||||
args: [plural('apps', selectedUrls.length)],
|
||||
args: [
|
||||
plural('apps', selectedUrls.length).toLowerCase(),
|
||||
],
|
||||
),
|
||||
context,
|
||||
);
|
||||
@@ -339,7 +341,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
||||
showMessage(
|
||||
tr(
|
||||
'importedX',
|
||||
args: [plural('apps', selectedUrls.length)],
|
||||
args: [plural('apps', selectedUrls.length).toLowerCase()],
|
||||
),
|
||||
context,
|
||||
);
|
||||
@@ -394,9 +396,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
||||
Expanded(
|
||||
child: TextButton(
|
||||
style: outlineButtonStyle,
|
||||
onPressed:
|
||||
appsProvider.apps.isEmpty ||
|
||||
importInProgress
|
||||
onPressed: importInProgress
|
||||
? null
|
||||
: () {
|
||||
runObtainiumExport(pickOnly: true);
|
||||
@@ -412,9 +412,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
||||
child: TextButton(
|
||||
style: outlineButtonStyle,
|
||||
onPressed:
|
||||
appsProvider.apps.isEmpty ||
|
||||
importInProgress ||
|
||||
snapshot.data == null
|
||||
importInProgress || snapshot.data == null
|
||||
? null
|
||||
: runObtainiumExport,
|
||||
child: Text(
|
||||
@@ -457,11 +455,17 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
||||
),
|
||||
],
|
||||
[
|
||||
GeneratedFormSwitch(
|
||||
GeneratedFormDropdown(
|
||||
'exportSettings',
|
||||
[
|
||||
MapEntry('0', tr('none')),
|
||||
MapEntry('1', tr('excludeSecrets')),
|
||||
MapEntry('2', tr('all')),
|
||||
],
|
||||
label: tr('includeSettings'),
|
||||
defaultValue:
|
||||
settingsProvider.exportSettings,
|
||||
defaultValue: settingsProvider
|
||||
.exportSettings
|
||||
.toString(),
|
||||
),
|
||||
],
|
||||
],
|
||||
@@ -475,7 +479,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
||||
}
|
||||
if (value['exportSettings'] != null) {
|
||||
settingsProvider.exportSettings =
|
||||
value['exportSettings'] == true;
|
||||
int.parse(value['exportSettings']);
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -497,7 +501,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
||||
else
|
||||
Column(
|
||||
children: [
|
||||
const Divider(height: 32),
|
||||
SizedBox(height: 32),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
@@ -512,7 +516,11 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
||||
return SelectionModal(
|
||||
title: tr(
|
||||
'selectX',
|
||||
args: [tr('source')],
|
||||
args: [
|
||||
tr(
|
||||
'source',
|
||||
).toLowerCase(),
|
||||
],
|
||||
),
|
||||
entries: sourceStrings,
|
||||
selectedByDefault: false,
|
||||
@@ -537,7 +545,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
||||
child: Text(
|
||||
tr(
|
||||
'searchX',
|
||||
args: [tr('source').toLowerCase()],
|
||||
args: [lowerCaseIfEnglish(tr('source'))],
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -704,6 +712,12 @@ 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 = {};
|
||||
@@ -725,6 +739,32 @@ 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')),
|
||||
@@ -894,6 +934,7 @@ class _SelectionModalState extends State<SelectionModal> {
|
||||
],
|
||||
),
|
||||
actions: [
|
||||
getSelectAllButton(),
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
|
@@ -138,7 +138,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
||||
ColorPickerType.wheel: tr('custom'),
|
||||
},
|
||||
title: Text(
|
||||
tr('selectX', args: [tr('colour')]),
|
||||
tr('selectX', args: [tr('colour').toLowerCase()]),
|
||||
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')])),
|
||||
title: Text(tr('selectX', args: [tr('colour').toLowerCase()])),
|
||||
subtitle: Text(
|
||||
"${ColorTools.nameThatColor(settingsProvider.themeColor)} "
|
||||
"(${ColorTools.materialNameAndCode(settingsProvider.themeColor, colorSwatchNameMap: colorsNameMap)})",
|
||||
@@ -381,6 +381,27 @@ 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,
|
||||
|
@@ -916,7 +916,7 @@ class AppsProvider with ChangeNotifier {
|
||||
if (appInfo != null &&
|
||||
newInfo.versionCode! < appInfo.versionCode! &&
|
||||
!(await canDowngradeApps())) {
|
||||
throw DowngradeError();
|
||||
throw DowngradeError(appInfo.versionCode!, newInfo.versionCode!);
|
||||
}
|
||||
if (needsBGWorkaround) {
|
||||
// The below 'await' will never return if we are in a background process
|
||||
@@ -1025,13 +1025,19 @@ 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(appFileUrl.value) != getHost(app.url) &&
|
||||
![
|
||||
getHost(app.url),
|
||||
'placeholder',
|
||||
].contains(getHost(appFileUrl.value)) &&
|
||||
context != null) {
|
||||
if (!(settingsProvider.hideAPKOriginWarning) &&
|
||||
await showDialog(
|
||||
@@ -1077,7 +1083,9 @@ 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.additionalSettings['refreshBeforeDownload'] == true ||
|
||||
apps[id]!.app.apkUrls.isNotEmpty &&
|
||||
apps[id]!.app.apkUrls.first.value == 'placeholder';
|
||||
if (refreshBeforeDownload) {
|
||||
await checkUpdate(apps[id]!.app.id);
|
||||
}
|
||||
@@ -1121,6 +1129,7 @@ class AppsProvider with ChangeNotifier {
|
||||
obtainiumId,
|
||||
strB: obtainiumTempId,
|
||||
);
|
||||
appsToInstall = moveStrToEnd(appsToInstall, '$obtainiumId.fdroid');
|
||||
|
||||
Future<void> installFn(
|
||||
String id,
|
||||
@@ -1300,7 +1309,8 @@ class AppsProvider with ChangeNotifier {
|
||||
}
|
||||
MapEntry<String, String>? fileUrl;
|
||||
var refreshBeforeDownload =
|
||||
apps[id]!.app.additionalSettings['refreshBeforeDownload'] == true;
|
||||
apps[id]!.app.additionalSettings['refreshBeforeDownload'] == true ||
|
||||
apps[id]!.app.apkUrls.first.value == 'placeholder';
|
||||
if (refreshBeforeDownload) {
|
||||
await checkUpdate(apps[id]!.app.id);
|
||||
}
|
||||
@@ -1964,7 +1974,7 @@ class AppsProvider with ChangeNotifier {
|
||||
|
||||
Map<String, dynamic> generateExportJSON({
|
||||
List<String>? appIds,
|
||||
bool? overrideExportSettings,
|
||||
int? overrideExportSettings,
|
||||
}) {
|
||||
Map<String, dynamic> finalExport = {};
|
||||
finalExport['apps'] = apps.values
|
||||
@@ -1977,15 +1987,18 @@ class AppsProvider with ChangeNotifier {
|
||||
})
|
||||
.map((e) => e.app.toJson())
|
||||
.toList();
|
||||
bool shouldExportSettings = settingsProvider.exportSettings;
|
||||
int shouldExportSettings = settingsProvider.exportSettings;
|
||||
if (overrideExportSettings != null) {
|
||||
shouldExportSettings = overrideExportSettings;
|
||||
}
|
||||
if (shouldExportSettings) {
|
||||
if (shouldExportSettings > 0) {
|
||||
var settingsValueKeys = settingsProvider.prefs?.getKeys();
|
||||
if (shouldExportSettings < 2) {
|
||||
settingsValueKeys?.removeWhere((k) => k.endsWith('-creds'));
|
||||
}
|
||||
finalExport['settings'] = Map<String, Object?>.fromEntries(
|
||||
(settingsProvider.prefs
|
||||
?.getKeys()
|
||||
.map((key) => MapEntry(key, settingsProvider.prefs?.get(key)))
|
||||
(settingsValueKeys
|
||||
?.map((key) => MapEntry(key, settingsProvider.prefs?.get(key)))
|
||||
.toList()) ??
|
||||
[],
|
||||
);
|
||||
@@ -2152,7 +2165,7 @@ class _AppFilePickerState extends State<AppFilePicker> {
|
||||
scrollable: true,
|
||||
title: Text(
|
||||
widget.pickAnyAsset
|
||||
? tr('selectX', args: [tr('releaseAsset').toLowerCase()])
|
||||
? tr('selectX', args: [lowerCaseIfEnglish(tr('releaseAsset'))])
|
||||
: tr('pickAnAPK'),
|
||||
),
|
||||
content: Column(
|
||||
@@ -2272,7 +2285,7 @@ class _APKOriginWarningDialogState extends State<APKOriginWarningDialog> {
|
||||
///
|
||||
Future<void> bgUpdateCheck(String taskId, Map<String, dynamic>? params) async {
|
||||
// ignore: avoid_print
|
||||
print('Started $taskId: ${params.toString()}');
|
||||
print('BG task started $taskId: ${params.toString()}');
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await EasyLocalization.ensureInitialized();
|
||||
await loadTranslations();
|
||||
@@ -2441,10 +2454,14 @@ 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++) {
|
||||
if (networkRestricted ||
|
||||
chargingRestricted ||
|
||||
!(await appsProvider.canInstallSilently(updates[i]))) {
|
||||
var canInstallSilently = await appsProvider.canInstallSilently(
|
||||
updates[i],
|
||||
);
|
||||
if (networkRestricted || chargingRestricted || !canInstallSilently) {
|
||||
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]);
|
||||
}
|
||||
}
|
||||
@@ -2470,7 +2487,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.',
|
||||
'BG update task $taskId: Will retry in $retryAfterXSeconds seconds (${toRetry.length} to retry, ${toInstall.length} to install).',
|
||||
);
|
||||
return await bgUpdateCheck(taskId, {
|
||||
'toCheck': toRetry
|
||||
@@ -2482,7 +2499,9 @@ 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.');
|
||||
logs.add(
|
||||
'BG update task: Done checking for updates (${toRetry.length} to retry, ${toInstall.length} to install).',
|
||||
);
|
||||
return await bgUpdateCheck(taskId, {
|
||||
'toCheck': [],
|
||||
'toInstall': toInstall
|
||||
@@ -2493,6 +2512,7 @@ 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++) {
|
||||
@@ -2504,8 +2524,10 @@ Future<void> bgUpdateCheck(String taskId, Map<String, dynamic>? params) async {
|
||||
}
|
||||
}
|
||||
if (toInstall.isNotEmpty) {
|
||||
logs.add('BG install task: Started (${toInstall.length}).');
|
||||
var tempObtArr = toInstall.where((element) => element.key == obtainiumId);
|
||||
var tempObtArr = toInstall.where(
|
||||
(element) =>
|
||||
element.key == obtainiumId || element.key == '$obtainiumId.fdroid',
|
||||
);
|
||||
if (tempObtArr.isNotEmpty) {
|
||||
// Move obtainium to the end of the list as it must always install last
|
||||
var obt = tempObtArr.first;
|
||||
|
@@ -453,12 +453,19 @@ class SettingsProvider with ChangeNotifier {
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
bool get exportSettings {
|
||||
return prefs?.getBool('exportSettings') ?? false;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
set exportSettings(bool val) {
|
||||
prefs?.setBool('exportSettings', val);
|
||||
set exportSettings(int val) {
|
||||
prefs?.setInt('exportSettings', val > 2 || val < 0 ? 1 : val);
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
@@ -498,4 +505,13 @@ 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();
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@ 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';
|
||||
@@ -63,11 +64,13 @@ 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
|
||||
@@ -1049,6 +1052,9 @@ 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 &&
|
||||
@@ -1074,6 +1080,7 @@ class SourceProvider {
|
||||
Jenkins(),
|
||||
APKMirror(),
|
||||
RuStore(),
|
||||
Farsroid(),
|
||||
TelegramApp(),
|
||||
NeutronCode(),
|
||||
DirectAPKLink(),
|
||||
|
70
pubspec.lock
70
pubspec.lock
@@ -96,18 +96,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: background_fetch
|
||||
sha256: "442e82f508708be89fd0cc7e1dc3b27bc7c6c8c39a47967ccb7ed1c57b9108b5"
|
||||
sha256: e767745c31f71660063985c982497995d0a71755d3f1b0c8e8c96988d64d3003
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.8"
|
||||
version: "1.4.0"
|
||||
battery_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: battery_plus
|
||||
sha256: a0409fe7d21905987eb1348ad57c634f913166f14f0c8936b73d3f5940fac551
|
||||
sha256: fb794c34cee2e4ea31005fb17ff15e1d904951ec7f15eedead741021870ee834
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.2.1"
|
||||
version: "6.2.2"
|
||||
battery_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -216,18 +216,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: device_info_plus
|
||||
sha256: "0c6396126421b590089447154c5f98a5de423b70cfb15b1578fd018843ee6f53"
|
||||
sha256: "98f28b42168cc509abc92f88518882fd58061ea372d7999aecc424345c7bff6a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.4.0"
|
||||
version: "11.5.0"
|
||||
device_info_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: device_info_plus_platform_interface
|
||||
sha256: "0b04e02b30791224b31969eb1b50d723498f402971bff3630bca2ba839bd1ed2"
|
||||
sha256: e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.2"
|
||||
version: "7.0.3"
|
||||
dynamic_color:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -240,10 +240,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: easy_localization
|
||||
sha256: "0f5239c7b8ab06c66440cfb0e9aa4b4640429c6668d5a42fe389c5de42220b12"
|
||||
sha256: "2ccdf9db8fe4d9c5a75c122e6275674508fd0f0d49c827354967b8afcc56bbed"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.7+1"
|
||||
version: "3.0.8"
|
||||
easy_logger:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -288,10 +288,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: file_picker
|
||||
sha256: ef9908739bdd9c476353d6adff72e88fd00c625f5b959ae23f7567bd5137db0a
|
||||
sha256: "13ba4e627ef24503a465d1d61b32596ce10eb6b8903678d362a528f9939b4aa8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.2.0"
|
||||
version: "10.2.1"
|
||||
fixnum:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -341,18 +341,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_charset_detector_android
|
||||
sha256: "443145e8fc8515b3b32aee375691e40dd59197a86a2ae153166bc88c8200d83b"
|
||||
sha256: "617345b0f78ad56c2633ea6132e57c2e374f6970792afbe9743237f683eeae8e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
version: "3.1.1"
|
||||
flutter_charset_detector_darwin:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_charset_detector_darwin
|
||||
sha256: daac20390275efb92fbb14350fe11286c5e29c7b80d6b0867f52d760f0d69763
|
||||
sha256: "8cf51c3e16c2fb4ec4e309f16f6046a0ddf1ff57d1b6b696410d077a9ffbfb15"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
version: "1.2.1"
|
||||
flutter_charset_detector_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -377,6 +377,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.1"
|
||||
flutter_foreground_task:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_foreground_task
|
||||
sha256: "9f1b25a81db95d7119d2c5cffc654048cbdd49d4056183e1beadc1a6a38f3e29"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.1.0"
|
||||
flutter_keyboard_visibility:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -708,10 +716,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: permission_handler
|
||||
sha256: "2d070d8684b68efb580a5997eb62f675e8a885ef0be6e754fb9ef489c177470f"
|
||||
sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "12.0.0+1"
|
||||
version: "12.0.1"
|
||||
permission_handler_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -947,10 +955,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_common
|
||||
sha256: "84731e8bfd8303a3389903e01fb2141b6e59b5973cacbb0929021df08dddbe8b"
|
||||
sha256: "6ef422a4525ecc601db6c0a2233ff448c731307906e92cabc9ba292afaae16a6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.5"
|
||||
version: "2.5.6"
|
||||
sqflite_darwin:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -995,10 +1003,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: synchronized
|
||||
sha256: "0669c70faae6270521ee4f05bffd2919892d42d1276e6c495be80174b6bc0ef6"
|
||||
sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.3.1"
|
||||
version: "3.4.0"
|
||||
term_glyph:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1043,10 +1051,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: url_launcher
|
||||
sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603"
|
||||
sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.1"
|
||||
version: "6.3.2"
|
||||
url_launcher_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1147,26 +1155,26 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: webview_flutter_android
|
||||
sha256: f6e6afef6e234801da77170f7a1847ded8450778caf2fe13979d140484be3678
|
||||
sha256: "9573ad97890d199ac3ab32399aa33a5412163b37feb573eb5b0a76b35e9ffe41"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.7.0"
|
||||
version: "4.8.2"
|
||||
webview_flutter_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: webview_flutter_platform_interface
|
||||
sha256: f0dc2dc3a2b1e3a6abdd6801b9355ebfeb3b8f6cde6b9dc7c9235909c4a1f147
|
||||
sha256: "63d26ee3aca7256a83ccb576a50272edd7cfc80573a4305caa98985feb493ee0"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.13.1"
|
||||
version: "2.14.0"
|
||||
webview_flutter_wkwebview:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: webview_flutter_wkwebview
|
||||
sha256: a3d461fe3467014e05f3ac4962e5fdde2a4bf44c561cb53e9ae5c586600fdbc3
|
||||
sha256: "71523b9048cf510cfa1fd4e0a3fa5e476a66e0884d5df51d59d5023dba237107"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.22.0"
|
||||
version: "3.22.1"
|
||||
win32:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1201,4 +1209,4 @@ packages:
|
||||
version: "6.3.0"
|
||||
sdks:
|
||||
dart: ">=3.8.1 <4.0.0"
|
||||
flutter: ">=3.27.0"
|
||||
flutter: ">=3.29.0"
|
||||
|
@@ -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.1.58+2315
|
||||
version: 1.2.3+2319
|
||||
|
||||
environment:
|
||||
sdk: ^3.8.1
|
||||
@@ -94,6 +94,7 @@ dependencies:
|
||||
# package. See that file for information about deactivating specific lint
|
||||
# rules and activating additional ones.
|
||||
flutter_lints: ^6.0.0
|
||||
flutter_foreground_task: ^9.1.0
|
||||
|
||||
flutter_launcher_icons:
|
||||
android: "ic_launcher"
|
||||
|
Reference in New Issue
Block a user